Correspondance opérationnelle avec le pilote de périphérique de compensation de mouvement
[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]
Cette section contient une description du côté pilote du périphérique de compensation de mouvement de l’interface Va DirectX. (Référence :Windows 2000 DDK - Pilotes graphiques - Guide de conception - 3.0 DirectDraw DDI - Compensation de mouvement 3.12. Consultez le DDK Windows pour obtenir de la documentation sur les structures en gras.)
Les éléments suivants font référence aux entrées accessibles via la structure DD_MOTIONCOMPCALLBACKS :
- Au début du traitement approprié, le DdMoCompCreate du pilote de périphérique est utilisé pour informer le pilote que le décodeur logiciel commencera à utiliser un objet d’accélération vidéo.
- Les GUID reçus à partir d’IAMVideoAccelerator::GetVideoAcceleratorGUID proviennent des DdMoCompGetGUIDs du pilote de périphérique.
- Un appel à la broche d’entrée en aval IAMVideoAccelerator::GetUncompFormatsSupported retourne des données à partir du DdMoCompGetFormats du pilote de périphérique.
- La structure de données DXVA_ConnectMode du décodeur IAMVideoAcceleratorNotify::GetCreateVideoAcceleratorData est passée au DdMoCompCreate du pilote de périphérique.
- Les données retournées par IAMVideoAccelerator::GetCompBufferInfo proviennent du DdMoCompGetBuffInfo du pilote de périphérique.
- Les mémoires tampons envoyées à l’aide d’IAMVideoAccelerator::Execute sont reçues par le DdMoCompRender du pilote de périphérique.
- 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.
- Les données envoyées à IAMVideoAccelerator::BeginFrame sont reçues par le DdMoCompBeginFrame du pilote de périphérique. Un code de retour de E_PENDING est nécessaire à partir de DdMoCompBeginFrame pour que E_PENDING soient visibles par le décodeur hôte en réponse à IAMVideoAccelerator::BeginFrame.
- Les données envoyées à IAMVideoAccelerator::EndFrame sont reçues par le DdMoCompEndFrame du pilote de périphérique.
- À 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.