From https://msdn.microsoft.com/en-us/library/windows/desktop/dd797815%28v=vs.85%29.aspx
In the constraints, you read that "The maximum guaranteed resolution for DXVA acceleration is 1920 × 1088 pixels; at higher resolutions, decoding is done with DXVA, if it is supported by the underlying hardware, otherwise, decoding is done with software."
Is there a way to detect that decoding is done in software?
We have issues with AMD graphic controllers when attempting to decode 4K H264 video.
We know that the hardware doesn't support 4K decoding and in theory it should fall back to software. However, we found that regardless of what it's supposed to do, we gets lots of corrupted or black frames.
I'm hoping that we could detect if DXVA has fallen back to SW decoding, in which case we don't attempt to use DXVA at all and use instead a full software path.
Thank you
The H264 MFT doesn't expose whether it is using DXVA for decoding or not.
It uses IDirectXVideoDecoderService::CreateVideoDecoder
to create DXVA decoders, so you can make a manual call to this function to see if it succeeds or not.
I added a full explanation (and apitrace log) for this in Mozilla bug 1193547