Partager via


Rappels de compensation de mouvement

DirectX Video Acceleration utilise les fonctions de rappel de compensation de mouvement suivantes fournies dans les pilotes DirectDraw pour l’accélération du traitement du décodage vidéo numérique, avec prise en charge du mélange alpha à des fins telles que la prise en charge de la sous-image dvd :

DdMoCompBeginFrame

DdMoCompCreate

DdMoCompDestroy

DdMoCompEndFrame

DdMoCompGetBuffInfo

DdMoCompGetFormats

DdMoCompGetGuids

DdMoCompGetInternalInfo

DdMoCompQueryStatus

DdMoCompRender

Les fonctions de rappel de compensation de mouvement comprennent le côté pilote de périphérique de l’interface d’accélération vidéo DirectX. Les fonctions de rappel de compensation de mouvement sont spécifiées par les membres de la structure DD_MOTIONCOMPCALLBACKS . Les étapes suivantes montrent comment accéder aux fonctions de rappel de compensation de mouvement :

  1. Les GUID reçus d’IAMVideoAccelerator::GetVideoAcceleratorGUID proviennent du DdMoCompGetGuids du pilote de périphérique.

  2. Un appel à la broche d’entrée en aval IAMVideoAccelerator::GetUncompFormatsSupported retourne des données à partir du DdMoCompGetFormats du pilote de périphérique.

  3. Au début du traitement approprié, la structure de données DXVA_ConnectMode de la broche de sortie du décodeur IAMVideoAcceleratorNotify::GetCreateVideoAcceleratorData est passée au DdMoCompCreate du pilote de périphérique, qui informe le décodeur de l’objet d’accélération vidéo.

  4. Les données retournées par IAMVideoAccelerator::GetCompBufferInfo proviennent du DdMoCompGetBuffInfo du pilote de périphérique.

  5. Les mémoires tampons envoyées à l’aide d’IAMVideoAccelerator::Execute sont reçues par le DdMoCompRender du pilote de périphérique.

  6. L’utilisation d’IAMVideoAccelerator::QueryRenderStatus appelle le DdMoCompQueryStatus du pilote de périphérique. Un code de retour de DDERR_WASSTILLDRAWING de DdMoCompQueryStatus sera vu par le décodeur hôte comme un code de retour de E_PENDING à partir d’IAMVideoAccelerator::QueryRenderStatus.

  7. Les données envoyées à IAMVideoAccelerator::BeginFrame sont reçues par le DdMoCompBeginFrame du pilote de périphérique. Un code de retour de DDERR_WASSTILLDRAWING est nécessaire à partir de DdMoCompBeginFrame pour que E_PENDING soient visibles par le décodeur hôte en réponse à IAMVideoAccelerator::BeginFrame.

  8. Les données envoyées à IAMVideoAccelerator::EndFrame sont reçues par le DdMoCompEndFrame du pilote de périphérique.

  9. À la fin du traitement approprié, le DdMoCompDestroy du pilote de périphérique est utilisé pour informer le pilote que l’objet d’accélération vidéo actuel ne sera plus utilisé, afin que le pilote puisse effectuer tout nettoyage nécessaire.