I have read the SDK manual, and it seems that if I initialize with MFX_IMPL_AUTO_ANY then QuickSync hardware acceleration will be used if it is available. I can check if hardware acceleration is being used by calling MFXQueryIMPL() and if it returns MFX_IMPL_SOFTWARE then hardware acceleration is not available.
There appear to be 2 reasons why MFXQueryIMPL() would return MFX_IMPL_SOFTWARE:
1. The Intel QuickSync graphics adaptor is present but the application's affinity had been set to a different adaptor, or
2. The CPU is a model which does not have QuickSync capabilities (and may not even be an Intel model)
I need to be able to display a correct message for the user, which tells them that their CPU is not QuickSync capable; or which tells them that their CPU does have QuickSync capability but it is not available and they should check and correct the affinity setting for my program so that it is in the Intel graphics adaptor afinity list.
The question is, how can I tell the difference between cause 1 and 2 ?
I suspect that if I get MFX_IMPL_SOFTWARE then I need to do this:
if CPU is QuickSync capable then
tell user to check and correct the affinity setting for this program
tell user thier CPU is not QuickSync cabable and processing will continue in software
But how do I tell whether the CPU is QuickSync capable ?
Is there any other situation which might cause MFX_IMPL_AUTO_ANY to return as MFX_IMPL_SOFTWARE that I might have missed ?