I am writing a gstreamer AVC decoder plugin for intel HW decoder. It is working fine on Haswell PCs but on Skylake machines I am randomly getting empty output frame buffers(which leads to green frames) even though decoder returns MFX_ERR_NONE. Few of the observations are as below.
1. It is working fine on Haswell PCs with MFX v1.19
2. It started working on the skylake PCs when I downgraded the driver version so that it installs MFX v1.17. After that I made few experiments and observed that AVC HW decoder is fine with MFX v1.16 and 1.17 and has issues with v1.19, 1.21 and 1.23 (I tested only these version).
3. We figured out that it is working fine when we replace the "C:\Program Files\Intel\Media SDK\libmfxhw64.dll" with MFX v1.17 dll.
4. I also tried to copy libmfxhw64.dll (MFX v1.17) to my application folder so that it loads the local dll instead of the one present in the "Intel\Media SDK" folder. But it still loaded the dll present in "Intel\Media SDK" and loads the local dll only if "Intel\Media SDK" folder does not exist (I understand we are not supposed to redistribute libmfxhw64.dll but was trying for a workaround)
Any help is appreciated.
Put together reproducer as described on front page. As easier to reproduce your environment as faster help you will get
To get the best support possible, please include the following information in your post:
- Product version
- Platform you are building on – Processor, OS, graphic driver, driver version
- Clear explanation of your issue
- How to reproduce your problem
I was able to fix the issue by disabling GPUCopy while initializing the decoder. I was facing issue with Intel HD Graphics 520. Looks like decoder is using GPU for copying frames from Video memory to System memory and GPU is serving old frames when same pointer is provided to the SDK.
Thanks a lot for the suggestions.