Media (Intel® oneAPI Video Processing Library, Intel Media SDK)
Access community support with transcoding, decoding, and encoding in applications using media tools from Intel. This includes Intel® oneAPI Video Processing Library and Intel® Media SDK.
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!

mfxVPP.Init + MFX_IMPL_VIA_D3D11 => MFX_ERR_INVALID_VIDEO_PARAM

celli4
New Contributor I
132 Views

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

0 Kudos
3 Replies
celli4
New Contributor I
132 Views

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_async_vppresize' works fine on Windows 7, it also works fine on Win 8.1 with D3D9, it does not work on Win 8.1 when using D3D11.

celli4
New Contributor I
132 Views

WORKAROUND FOUND:

PROBLEM SUMMARY:  IMSDK tutorial samples fails when switching from D3D9 to D3D11 [yes, on Win 8.1]

SAMPLE: intel_media_sdk_tutorial_041813  \ simple_transcode_opaque_async_vppresize 

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.

 

Anthony_P_Intel
Employee
132 Views

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

Reply