Оперативное соответствие с драйвером устройства компенсации движения

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

В этом разделе содержится описание стороны драйвера устройства компенсации движения интерфейса DirectX VA. (Справочник:Windows 2000 DDK — графические драйверы — руководство по проектированию — 3.0 DirectDraw DDI — компенсация движения 3.12. Документацию по структурам, выделенным полужирным шрифтом, см. в разделе Windows DDK.)

Следующие элементы относятся к записям, доступ к которые осуществляется через структуру DD_MOTIONCOMPCALLBACKS :

  1. В начале соответствующей обработки DdMoCompCreate драйвера устройства используется для уведомления драйвера о том, что программный декодер начнет использовать объект ускорения видео.
  2. Идентификаторы GUID, полученные от IAMVideoAccelerator::GetVideoAcceleratorGUIDs , исходят из идентификаторов DdMoCompGetGUID драйвера устройства.
  3. Вызов подчиненного входного контакта IAMVideoAccelerator::GetUncompFormatsSupported возвращает данные из DdMoCompGetFormats драйвера устройства.
  4. Структура данных DXVA_ConnectMode из IAMVideoAcceleratorNotify::GetCreateVideoAcceleratorData декодера передается в DdMoCompCreate драйвера устройства.
  5. Данные, возвращаемые из IAMVideoAccelerator::GetCompBufferInfo , исходят из DdMoCompGetBuffInfo драйвера устройства.
  6. Буферы, отправленные с помощью IAMVideoAccelerator::Execute , получаются DdMoCompRender драйвера устройства.
  7. Использование IAMVideoAccelerator::QueryRenderStatus вызывает DdMoCompQueryStatus драйвера устройства. Код возврата DDERR_WASSTILLDRAWING из DdMoCompQueryStatus будет рассматриваться декодером узла как код возврата E_PENDING из IAMVideoAccelerator::QueryRenderStatus.
  8. Данные, отправляемые в IAMVideoAccelerator::BeginFrame , принимаются DdMoCompBeginFrame драйвера устройства. Код возврата E_PENDING требуется из DdMoCompBeginFrame, чтобы E_PENDING видели декодером узла в ответ на IAMVideoAccelerator::BeginFrame.
  9. Данные, отправляемые в IAMVideoAccelerator::EndFrame , принимаются DdMoCompEndFrame драйвера устройства.
  10. В конце соответствующей обработки DdMoCompDeвестрой драйвера устройства используется для уведомления драйвера о том, что текущий объект ускорения видео больше не будет использоваться, чтобы драйвер смог выполнить любую необходимую очистку.