- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Ok, quick backstory:
I have a Win8.1 box I am testing on.
sample_multi_transcode -i::h264 in.264 -o::h264 out.264 -hw -d3d11 # WORKS OK
Also, out of the box from the intel_media_sdk_tutorial_041813 tutorial pack, the following works OK:
simple_transcode_opaque_async_vppresize in.264 out.264 # WORKS OK
But, if I change the following line of code in simple_transcode_opaque_async_vppresize.cpp
ORIGINAL: mfxIMPL impl = MFX_IMPL_AUTO_ANY;
MODIFIED: mfxIMPL impl = MFX_IMPL_VIA_D3D11 | MFX_IMPL_HARDWARE;
If I make that change, simple_transcode_opaque_async_vppresize fails on line 283:
sts = mfxVPP.Init(&VPPParams);
[The above returns -15 MFX_ERR_INVALID_VIDEO_PARAM, when I try to force MFX_IMPL_VIA_D3D11 ]
Any ideas, Petter, or anybody why MFXVideoVPP_Init(..) might fail with MFX_ERR_INVALID_VIDEO_PARAM when I try to force MFX_IMPL_VIA_D3D11 ??
Thanks in advance!
Cameron
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This may be related to opaque surfaces, I will update as I discover more.
Just in case the original message was not clear enough:
The tutorial sample, 'simple_transcode_opaque_
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
WORKAROUND FOUND:
PROBLEM SUMMARY: IMSDK tutorial samples fails when switching from D3D9 to D3D11 [yes, on Win 8.1]
SAMPLE: intel_media_sdk_tutorial_
TO CREATE ISSUE CHANGE ORIGINAL LINE TO MODIFIED:
ORIGINAL: mfxIMPL impl = MFX_IMPL_AUTO_ANY;
MODIFIED: mfxIMPL impl = MFX_IMPL_VIA_D3D11 | MFX_IMPL_HARDWARE;
Tutorial sample will now fail at line 287 with sts=-15
WORKAROUND, IS CHANGE ORDER OF VPP, ENC, DEC INIT:
// original, non-working order with D3D11 sts = mfxDEC.Init(&mfxDecParams); sts = mfxENC.Init(&mfxEncParams); sts = mfxVPP.Init(&VPPParams); // re-ordered working work-around solution with D3D11 sts = mfxVPP.Init(&VPPParams); sts = mfxDEC.Init(&mfxDecParams); sts = mfxENC.Init(&mfxEncParams);
I do not know why this works, but it seems to solve the problem for now.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you for the clear explanation of the issue you observed.
The reason the VPP component behaves different when explicitly using D3D11 model and opaque memory is related to the type of memory the session uses for 'opaque' purposes. Details will be documented in future releases, but your work-around makes sense. We recommend that VPP is the first component initialized to ensure proper opaque usage.
Thanks again
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page