Correspondência operacional com driver de dispositivo de compensação de movimento

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Esta seção contém uma descrição do lado do driver de dispositivo de Compensação de Movimento da interface do DirectX VA. (Reference:Windows 2000 DDK - Graphics Drivers - Design Guide - 3.0 DirectDraw DDI - 3.12 Motion Compensation. Consulte o DDK do Windows para obter documentação sobre as estruturas em negrito.)

Os seguintes itens referem-se a entradas acessadas por meio da estrutura DD_MOTIONCOMPCALLBACKS :

  1. No início do processamento relevante, o DdMoCompCreate do driver de dispositivo é usado para notificar o driver de que o decodificador de software começará a usar um objeto de aceleração de vídeo.
  2. OS GUIDs recebidos de IAMVideoAccelerator::GetVideoAcceleratorGUIDs são originados dos DdMoCompGetGUIDs do driver de dispositivo.
  3. Uma chamada para o IAMVideoAccelerator do pino de entrada downstream::GetUncompFormatsSupported retorna dados do DdMoCompGetFormats do driver de dispositivo.
  4. A estrutura de dados DXVA_ConnectMode do IAMVideoAcceleratorNotify::GetCreateVideoAcceleratorData do decodificador é passada para ddMoCompCreate do driver de dispositivo.
  5. Os dados retornados de IAMVideoAccelerator::GetCompBufferInfo são provenientes do DdMoCompGetBuffInfo do driver de dispositivo.
  6. Os buffers enviados usando IAMVideoAccelerator::Execute são recebidos pelo DdMoCompRender do driver de dispositivo.
  7. O uso de IAMVideoAccelerator::QueryRenderStatus invoca o DdMoCompQueryStatus do driver de dispositivo. Um código de retorno de DDERR_WASSTILLDRAWING de DdMoCompQueryStatus será visto pelo decodificador de host como um código de retorno de E_PENDING de IAMVideoAccelerator::QueryRenderStatus.
  8. Os dados enviados para IAMVideoAccelerator::BeginFrame são recebidos pelo DdMoCompBeginFrame do driver de dispositivo. Um código de retorno de E_PENDING é necessário de DdMoCompBeginFrame para que E_PENDING seja visto pelo decodificador de host em resposta a IAMVideoAccelerator::BeginFrame.
  9. Os dados enviados para IAMVideoAccelerator::EndFrame são recebidos pelo DdMoCompEndFrame do driver de dispositivo.
  10. No final do processamento relevante, o DdMoCompDestroy do driver de dispositivo é usado para notificar o driver de que o objeto de aceleração de vídeo atual não será mais usado, para que o driver possa executar qualquer limpeza necessária.