Требования к декодировщикам

[Функция, связанная с этой страницей, DirectShow, является устаревшей функцией. Его заменили MediaPlayer, IMFMediaEngineи захват аудио и видео в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Microsoft настоятельно рекомендует в новом коде использовать MediaPlayer, IMFMediaEngine и захват аудио/видео в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]

Декодеры, которые доставляют образцы в VMR, должны соблюдать следующие правила:

  • Для каждого кадра видео должен быть один кадр подпиктуры, доставленный в VMR. Два кадра должны иметь одинаковые метки времени.
  • Если подкартинка не изменилась, примените флаг AM_GBF_NOTASYNCPOINT в методе IMemAllocator::GetBuffer, чтобы заставить выделитель вернуть буфер, содержащий последний кадр, переданный в VMR. Просто нанесите новую метку времени на образец и снова доставьте его в VMR. Если кадр подизображения пуст, вы все равно должны его доставить. VmR обнаружит пустой кадр и не будет смешивать его с видео. Этот тест выполняется микросхемой VGA и не влияет на производительность воспроизведения.
  • Все образцы, за исключением живых трансляций, должны иметь допустимые метки времени начала и окончания. (DVD-диск не является живой трансляцией.)
  • Примеры меток времени мультимедиа должны быть смежными
  • Декодатор должен идентифицировать себя как поддерживающий VMR для использования построителями графов.
  • Поток подпиктюр теперь должен содержать внедренные альфа-значения для каждого пикселя. Тип поверхности ARGB4444 идеально подходит для субкартинок.
  • Не считайте, что шаг подпиктуры идентичен ширине поверхности. В случае с VMR это происходит не всегда.

О ускорении видео DirectX