I implement a pipeline VPP + ENC. VPP converts RGB4 data to NV12 and ENC encodes NV12 to JPEG, and I put libmfxsw.dll in the same directory as the execution file. It works on the most of Intel graphic platform. But I have an old platform, its graphic is Intel HD Graphics 3000 and Intel Media SDK version is 1.4. If I call MFXInitEx() with MFX_IMPL_HARDWARE_ANY, it failed when calling mfxENC->QueryIOSurf() the error code is MFX_ERR_UNSUPPORTED. If I call MFXInitEx() with MFX_IMPL_SOFTWARE, it failed on calling mfxVPP->Init (), the error code is MFX_ERR_INVALID_VIDEO_PARAM. I found the Media SDK doesn't load the libmfxsw.dll but load libmfxhw.dll. The libmfxhw.dll locates at c:\Program Files(x86)\Intel\Media SDK\ . If I remove the libmfxhw.dll then everything works fine. I also try to load libmfxsw.dll before calling MFXInitEx, it doesn't work.
How can I force the SDK to load the libmfxsw.dll even the Intel Media SDK is installed?
Because of your platform and MSDK version is so old, it is hardly get support for each new version will be added new fixes.
By this issue, I think you may try to study mfx_dispatch, it is in charge the dll loading, and it is opensouce can be found in MSDK install direction.
Help it can help.