I'm trying to decode the following interlaced video using sample_decode.exe. The video looks terrible (blocks of video missing etc), but it looks fine when using a different decoder (NVIDIA for example). If I look at the mfxFrameData information, many of the frames are marked as corrupt. Any ideas? Is this a problem with the decoder, or is the information I'm giving it formatted in such a way that is unsupported?
- Development Tools
- Intel® Media SDK
- Intel® Media Server Studio
- Media Processing
Did you try with following command? I am not sure if this could give you different quality.
# sample_decode.exe h264 -i input.h264 -r -f 25
Our decoder is a hardware, it is very hard to correct corruptions after pipeline is created. There are generally 3 options:
- The software can reset the pipeline by watching the corrupt flag
- The software can check the bit stream header before it inputs to the decoder.
- The software can bypass the HW decder and switch to software codec or 3rd party solutions.
Hope this helps.
I tried with that command and it did not make any difference. Also, I'm using the software decoder not the hardware decoder.
Which corruption flag are you referring to? The corruption flag in mfxFrameData?
There are several things you can check in the reference manual:
1. At page 46, MFXVideoDECODE_DecodeFrameAsync() will return MFX_WRN_VIDEO_PARAM_CHANGED or MFX_ERR_INCOMPATIBLE_VIDEO_PARAM.
2. At page 45, you can also call MFXVideoDECODE_GetStat() to check the decode status, the returned structure mfxDecodeStat has fields in page 52 which you can track how many frames were skipped.
Let me know if this helps.