Please Can someone clarify what is the usage of mfxIMPL datastructure?
Decoding sample app has a code line:
mfxIMPL impl = MFX_IMPL_HARDWARE;
Does this means the decoder runs on the GPU only.
If I change the MFX_IMPL_HARDWARE to MFX_IMPL_SOFTWARE, will the decoder run on CPU only?
The Media SDK provides APIs that can be executed on either core (SW implementation), or on the GPU/fixed-function-logic (HW-accelerated Implementation), depending on the system and its capabilities.
"mfxIMPL impl" -> Use software, or hardware or best available implementation. We recommend using MFX_IMPL_HARDWARE, or MFX_IMPL_AUTO if you are unsure of the underlying driver support. If MFX_IMPL_AUTO is specified on a system that does not support HW acceleration, then the SW impl is automatically used as default. Hope this helps.
Can you tell HW implementation uses what technology under the hood, openCL or DirectX?
and, Does specifying mfxIMPL as HW ensures the decoder is running on GPU/Accelerated device?
On Windows, HW Impl uses DirectX, and for Linux it uses VAAPI. If the underlying system supports HW decode, then yes, specifying mfxIMPL as HW will run on the hardware, You can use the mediasdk_system_analyzer_64 tool in the tools/ folder to check if your system has the necessary HW required underneath. It prints information as attached.
If you would like to use OpenCL, you have to use it as a plugin today. You can find the sample here - https://software.intel.com/en-us/intel-media-server-studio-support/code-samples