Nasty bugs in Intel Media SDK

It might be an “old” version of Intel Media SDK runtime but still it is expected that software is running fine in older environments as well.

MFXVideoVPP_Reset API is available since SDK API 1.0, there is nothing new with it. In certain scenario I use the API to change resolution of the processed video and
I respectively update mfxVideoParam structure then MFXVideoVPP_Reset, MFXVideoVPP_Query, MFXVideoVPP_QueryIOSurf all succeed – nice.

The system is an i7-3571U laptop, that is equipped with Intel 3rd Gen CPU. MFX version reported is 1.11.

When the reset sequence succeeds as expected, however further MFXVideoVPP_GetVideoParam reports unchanged properties… Hey, come on!

I quote below feedback from Intel I just found on a seemingly similar matter, enjoy:

for some algorithm, MFXVideoVPP_Reset is not supported, and it will return MFX_ERR_NONE but no effect.
you can try replace MFXVideoVPP_Reset with MFXVideoVPP_Close & MFXVideoVPP_Init to make it work.

Just for the record the runtime there is producing weird D3D11 errors with a pretty straightforward texture scaling operation:

D3D11_VIDEO_PROCESSOR_DEVICE_CAPS:
RateConversionCapsCount: 1
MaxInputStreams: 8
MaxStreamStates: 8
D3D11_VIDEO_PROCESSOR_FILTER_CAPS_BRIGHTNESS: -1000 – 1000, 0, 0.100000
D3D11_VIDEO_PROCESSOR_FILTER_CAPS_CONTRAST: 0 – 1000, 100, 0.010000
D3D11_VIDEO_PROCESSOR_FILTER_CAPS_HUE: -1800 – 1800, 0, 0.100000
D3D11_VIDEO_PROCESSOR_FILTER_CAPS_SATURATION: 0 – 1000, 100, 0.010000
D3D11_VIDEO_PROCESSOR_FILTER_CAPS_NOISE_REDUCTION: 0 – 64, 0, 1.000000
D3D11_VIDEO_PROCESSOR_FILTER_CAPS_EDGE_ENHANCEMENT: 0 – 64, 44, 1.000000
D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS:
CustomRateCount: 0
FutureFrames: 1
PastFrames: 1
103 is supported as input
103 is supported as output
107 is supported as input
107 is supported as output
106 is supported as input
106 is supported as output
87 is supported as input
87 is supported as output
DESCRIPTION
InputFrameFormat: 0
InputFrameRate: -16843010 -16843010
InputWidth: 352 InputHeight: 288
OutputFrameRate: -16843010 -16843010
OutputWidth: 1920 OutputHeight: 1080
Usage: 0
RATE CONV CAPS
PastFrames: 1
FutureFrames: 1
ProcessorCaps: 31
ITelecineCaps: 511
CustomRateCount: 0
D3D11_VIDEO_PROCESSOR_DEVICE_CAPS:
RateConversionCapsCount: 1
MaxInputStreams: 8
MaxStreamStates: 8
D3D11_VIDEO_PROCESSOR_FILTER_CAPS_BRIGHTNESS: -1000 – 1000, 0, 0.100000
D3D11_VIDEO_PROCESSOR_FILTER_CAPS_CONTRAST: 0 – 1000, 100, 0.010000
D3D11_VIDEO_PROCESSOR_FILTER_CAPS_HUE: -1800 – 1800, 0, 0.100000
D3D11_VIDEO_PROCESSOR_FILTER_CAPS_SATURATION: 0 – 1000, 100, 0.010000
D3D11_VIDEO_PROCESSOR_FILTER_CAPS_NOISE_REDUCTION: 0 – 64, 0, 1.000000
D3D11_VIDEO_PROCESSOR_FILTER_CAPS_EDGE_ENHANCEMENT: 0 – 64, 44, 1.000000
D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS:
CustomRateCount: 0
FutureFrames: 1
PastFrames: 1
103 is supported as input
103 is supported as output
107 is supported as input
107 is supported as output
106 is supported as input
106 is supported as output
87 is supported as input
87 is supported as output
DESCRIPTION
InputFrameFormat: 0
InputFrameRate: 50000 1000
InputWidth: 1280 InputHeight: 720
OutputFrameRate: 50000 1000
OutputWidth: 1920 OutputHeight: 1080
Usage: 0
RATE CONV CAPS
PastFrames: 1
FutureFrames: 1
ProcessorCaps: 31
ITelecineCaps: 511
CustomRateCount: 0
D3D11 ERROR: ID3D11DeviceContext::CreateVideoProcessorEnumerator: Invalid input frame rate specified.  The numerator is non-zero, but the denominator is zero! [ STATE_CREATION ERROR #3145795: CREATEVIDEOPROCESSORENUMERATOR_INVALIDINPUTFRAMERATE]

1920×1080 and 1280×720 are mine, it is okay. Where the heck 352×288 comes from? With a frame rate built out of values from uninitialized memory… It is not only debug output, it is also a _com_error E_INVALIDARG exception in d3d11.dll, but MFX runtime plays this game internally and produces no failure on its application requested activity though.

A really good thing in Intel Media SDK in MFX_ERR_GPU_HANG status code. “Oh yeah, it’s our bug, sorry for this”. I appreciate it.

Leave a Reply