Betriebskorrespondenz mit Motion Compensation Device Driver
[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]
Dieser Abschnitt enthält eine Beschreibung der Treiberseite des Motion Compensation-Geräts der DirectX VA-Schnittstelle. (Referenz:Windows 2000 DDK – Grafiktreiber – Entwurfshandbuch – 3.0 DirectDraw DDI – 3.12 Bewegungskompensation. Die Dokumentation zu den Strukturen in Fettschrift finden Sie im Windows DDK.)
Die folgenden Elemente beziehen sich auf Einträge, auf die über die DD_MOTIONCOMPCALLBACKS-Struktur zugegriffen wird:
- Zu Beginn der relevanten Verarbeitung wird der DdMoCompCreate des Gerätetreibers verwendet, um den Treiber zu benachrichtigen, dass der Softwaredecoder mit der Verwendung eines Videobeschleunigungsobjekts beginnt.
- GUIDs, die von IAMVideoAccelerator::GetVideoAcceleratorGUIDs empfangen werden, stammen von den DdMoCompGetGUIDs des Gerätetreibers.
- Ein Aufruf des IAMVideoAccelerator::GetUncompFormatsSupported des Downstreameingabepins gibt Daten aus den DdMoCompGetFormats des Gerätetreibers zurück.
- Die DXVA_ConnectMode Datenstruktur aus dem IAMVideoAcceleratorNotify::GetCreateVideoAcceleratorData des Decoders wird an den DdMoCompCreate des Gerätetreibers übergeben.
- Von IAMVideoAccelerator::GetCompBufferInfo zurückgegebene Daten stammen aus dem DdMoCompGetBuffInfo des Gerätetreibers.
- Puffer, die mit IAMVideoAccelerator::Execute gesendet werden, werden vom DdMoCompRender des Gerätetreibers empfangen.
- Die Verwendung von IAMVideoAccelerator::QueryRenderStatus ruft den DdMoCompQueryStatus des Gerätetreibers auf. Ein Rückgabecode von DDERR_WASSTILLDRAWING aus DdMoCompQueryStatus wird vom Hostdecoder als Rückgabecode von E_PENDING aus IAMVideoAccelerator::QueryRenderStatus angezeigt.
- Daten, die an IAMVideoAccelerator::BeginFrame gesendet werden, werden vom DdMoCompBeginFrame des Gerätetreibers empfangen. Ein Rückgabecode von E_PENDING wird von DdMoCompBeginFrame benötigt, damit E_PENDING vom Hostdecoder als Reaktion auf IAMVideoAccelerator::BeginFrame angezeigt wird.
- Daten, die an IAMVideoAccelerator::EndFrame gesendet werden, werden vom DdMoCompEndFrame des Gerätetreibers empfangen.
- Am Ende der relevanten Verarbeitung wird der DdMoCompDestroy des Gerätetreibers verwendet, um den Treiber zu benachrichtigen, dass das aktuelle Videobeschleunigungsobjekt nicht mehr verwendet wird, sodass der Treiber alle erforderlichen Bereinigungen durchführen kann.