Condividi tramite


Callback compensazione movimento

L'accelerazione video DirectX usa le seguenti funzioni di callback di compensazione del movimento fornite nei driver DirectDraw per l'accelerazione dell'elaborazione di decodifica video digitale, con il supporto della fusione alfa per scopi quali il supporto per le sottopicture DVD:

DdMoCompBeginFrame

DdMoCompCreate

DdMoCompDestroy

DdMoCompEndFrame

DdMoCompGetBuffInfo

DdMoCompGetFormats

DdMoCompGetGuids

DdMoCompGetInternalInfo

DdMoCompQueryStatus

DdMoCompRender

Le funzioni di callback di compensazione del movimento comprendono il lato driver del dispositivo dell'interfaccia di accelerazione video DirectX. Le funzioni di callback di compensazione movimento vengono specificate dai membri della struttura DD_MOTIONCOMPCALLBACKS . I passaggi seguenti illustrano come vengono accessibili le funzioni di callback di compensazione del movimento:

  1. I GUID ricevuti da IAMVideoAccelerator::GetVideoAcceleratorGUID provengono da DdMoCompGetGuids del driver di dispositivo.

  2. Una chiamata al pin di input downstream IAMVideoAccelerator::GetUncompFormatsSupported restituisce i dati dal DdMoCompGetFormats del driver di dispositivo.

  3. All'inizio dell'elaborazione pertinente, la struttura dei dati DXVA_ConnectMode dal pin di output del decodificatore IAMVideoAcceleratorNotify::GetCreateVideoAcceleratorData viene passata al DdMoCompCreate del driver del dispositivo, che notifica al decodificatore l'oggetto accelerazione video.

  4. I dati restituiti da IAMVideoAccelerator::GetCompBufferInfo provengono da DdMoCompGetBuffInfo del driver di dispositivo.

  5. I buffer inviati tramite IAMVideoAccelerator::Execute vengono ricevuti dal DdMoCompRender del driver di dispositivo.

  6. L'uso di IAMVideoAccelerator::QueryRenderStatus chiama il DdMoCompQueryStatus del driver di dispositivo. Un codice restituito di DDERR_WASSTILLDRAWING da DdMoCompQueryStatus verrà visualizzato dal decodificatore host come codice restituito di E_PENDING da IAMVideoAccelerator::QueryRenderStatus.

  7. I dati inviati a IAMVideoAccelerator::BeginFrame vengono ricevuti dal DdMoCompBeginFrame del driver di dispositivo. È necessario un codice restituito di DDERR_WASSTILLDRAWING da DdMoCompBeginFrame affinché E_PENDING venga visualizzato dal decodificatore host in risposta a IAMVideoAccelerator::BeginFrame.

  8. I dati inviati a IAMVideoAccelerator::EndFrame vengono ricevuti dal DdMoCompEndFrame del driver di dispositivo.

  9. Al termine dell'elaborazione pertinente, il driver di dispositivo DdMoCompDestroy viene usato per notificare al driver che l'oggetto di accelerazione video corrente non verrà più utilizzato, in modo che il driver possa eseguire qualsiasi pulizia necessaria.