Corrispondenza operativa con il driver del dispositivo di compensazione del movimento

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, FMMediaEngine e Audio/Video Capture in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Questa sezione contiene una descrizione del lato driver del dispositivo Di compensazione movimento dell'interfaccia DirectX VA. (Riferimento:Windows 2000 DDK - Driver grafici - Guida alla progettazione - 3.0 DirectDraw DDI - 3.12 Compensazione movimento. Vedere la documentazione di Windows DDK sulle strutture in grassetto.

Gli elementi seguenti fanno riferimento alle voci accessibili tramite la struttura di DD_MOTIONCOMPCALLBACKS :

  1. All'inizio dell'elaborazione pertinente, il driver del dispositivo DdMoCompCreate viene usato per notificare al driver che il decodificatore software inizierà a usare un oggetto accelerazione video.
  2. GUID ricevuti da IAMVideoAccelerator::GetVideoAcceleratorGUID provengono da DdMoCompGetGUID del driver di dispositivo.
  3. Una chiamata al pin di input downstream IAMVideoAccelerator::GetUncompFormatsSupported restituisce dati da DdMoCompGetFormats del driver di dispositivo.
  4. La struttura di dati DXVA_ConnectMode del decodificatore IAMVideoAcceleratorNotify::GetCreateVideoAcceleratorData viene passata al DdMoCompCreate del driver di dispositivo.
  5. I dati restituiti da IAMVideoAccelerator::GetCompBufferInfo provengono da DdMoCompGetBuffInfo del driver di dispositivo.
  6. I buffer inviati tramite IAMVideoAccelerator::Execute vengono ricevuti dal driver di dispositivo DdMoCompRender.
  7. L'uso di IAMVideoAccelerator::QueryRenderStatus richiama il DdMoCompQueryStatus del driver del dispositivo. Un codice restituito di DDERR_WASSTILLDRAWING da DdMoCompQueryStatus verrà visualizzato dal decodificatore host come codice restituito di E_PENDING da IAMVideoAccelerator::QueryRenderStatus.
  8. I dati inviati a IAMVideoAccelerator::BeginFrame vengono ricevuti dal DdMoCompBeginFrame del driver del dispositivo. È necessario un codice restituito di E_PENDING da DdMoCompBeginFrame per poter visualizzare E_PENDING dal decodificatore host in risposta a IAMVideoAccelerator::BeginFrame.
  9. I dati inviati a IAMVideoAccelerator::EndFrame vengono ricevuti dal DdMoCompEndFrame del driver del dispositivo.
  10. Alla fine dell'elaborazione pertinente, il driver del dispositivo DdMoCompDestroy viene usato per notificare al driver che l'oggetto di accelerazione video corrente non verrà più usato, in modo che il driver possa eseguire qualsiasi pulizia necessaria.