Как определить, что декодер DXVA вернулся к программному декодированию?
С https://msdn.microsoft.com/en-us/library/windows/desktop/dd797815%28v=vs.85%29.aspx
В ограничениях вы читаете, что "Максимальное гарантированное разрешение для ускорения DXVA составляет 1920 × 1088 пикселей; при более высоких разрешениях декодирование выполняется с помощью DXVA, если оно поддерживается базовым оборудованием, в противном случае декодирование выполняется с помощью программного обеспечения".
Есть ли способ обнаружить, что декодирование выполняется программно?
У нас проблемы с графическими контроллерами AMD при попытке декодирования видео 4K H264.
Мы знаем, что аппаратное обеспечение не поддерживает декодирование 4K, и теоретически оно должно использовать программное обеспечение. Однако мы обнаружили, что независимо от того, что он должен делать, мы получаем много искаженных или черных кадров.
Я надеюсь, что мы могли бы определить, отказался ли DXVA от SW-декодирования, и в этом случае мы вообще не пытаемся использовать DXVA и вместо этого использовать полный программный путь.
Спасибо
2 ответа
H264 MFT не раскрывает, использует ли он DXVA для декодирования или нет.
Оно использует IDirectXVideoDecoderService::CreateVideoDecoder
для создания декодеров DXVA, так что вы можете сделать ручной вызов этой функции, чтобы увидеть, успешно она или нет.
Я добавил полное объяснение (и журнал apitrace) для этого в баге Mozilla 1193547
Вы пытались запустить приложение через mftrace (входит в Windows SDK)? Вывод mftrace очень подробный и обычно позволяет узнать, какой MFT используется для кодирования. Возможно, вам удастся определить, какой другой MFT используется, когда доступно аппаратное кодирование.
Например, при кодировании H264 аппаратный кодировщик Intel MFT будет использоваться вместо стандартного кода Microsoft, когда его поддерживает системное оборудование.