Freigeben über


DXVA_DeinterlaceBobDeviceClass::D einterlaceBltEx-Methode

Die DeinterlaceBltEx-Beispielfunktion führt eine Deinterlace- oder Frameratekonvertierung durch, kombiniert das konvertierte Deinterlaced- oder Framerate-Video mit den bereitgestellten Videounterstreams und schreibt die kombinierte Ausgabe auf eine Zieloberfläche.

Syntax

HRESULT DeinterlaceBltEx(
  [in] REFERENCE_TIME      rtTargetFrame,
  [in] LPRECT              lprcTargetRect,
  [in] DXVA_AYUVsample2    BackgroundColor,
  [in] DWORD               dwDestinationFormat,
  [in] DWORD               dwDestinationFlags,
  [in] LPDDSURFACE         lpDDSDstSurface,
  [in] LPDXVA_VideoSample2 lpDDSrcSurfaces,
  [in] DWORD               dwNumSurfaces,
  [in] FLOAT               fAlpha
);

Parameter

rtTargetFrame [in] Stellt die Position des Ausgabeframes innerhalb der Sequenz der Eingabeframes bereit. Wenn das reine Deinterlacing ausgeführt wird, sollte die Zielzeit mit einer der rtStart - oder Midpoint-Zeiten (d. h. (rtStart+rtEnd)/2) eines Beispiels übereinstimmen, wie in der DXVA_VideoSample2-Struktur definiert.

Wenn eine Konvertierung mit Framerate angefordert wird, kann sich die rtTargetFrame-Zeit von den rtStart - oder Midpoint-Zeiten der Beispiele unterscheiden.

lprcTargetRect [in] Stellt einen Zeiger auf eine RECT-Struktur bereit, der die Position innerhalb der Zieloberfläche beschreibt, auf die DeinterlaceBltEx schreiben muss. Der Treiber verwendet lprcTargetRect , um zu bestimmen, in welche Pixel geschrieben werden soll. Beachten Sie, dass das Ausgabebild auf die Pixel innerhalb des Rechtecks bei lprcTargetRect beschränkt ist. Das heißt, jedes Pixel innerhalb des Rechtecks bei lprcTargetRect muss in geschrieben werden, und Pixel außerhalb des Rechtecks bei lprcTargetRect dürfen nicht geändert werden.

BackgroundColor [in] Stellt eine DXVA_AYUVsample2-Struktur bereit, die die Farb- und Deckkraftebene des Hintergrunds angibt, auf dem alle Videostreams und Teilströme zusammengesetzt sind. Für Microsoft Windows Server 2003 SP1 und Windows XP SP2 wird die Deckkraftebene nicht verwendet und sollte vom Treiber ignoriert werden.

dwDestinationFormat [in] Stellt Formatinformationen für die Zieloberfläche bereit, die im Zeiger bei lpDDSDstSurface angegeben wird. Für Windows Server 2003 SP1 und Windows XP SP2 ist dieser Parameter auf 0 festgelegt.

dwDestinationFlags [in] Stellt eine Auflistung von Flags bereit, die Änderungen der aktuellen Zieloberfläche gegenüber der vorherigen Zieloberfläche anzeigen. Dieser Parameter ist ein bitweiser OR eines oder mehrerer Flags im DXVA_DestinationFlags Enumerationstyp. Sie können diese Flags verwenden, um Ihren Treibercode zu optimieren. Anders ausgedrückt: Ihr Code ist nicht erforderlich, um Vorgänge auf der aktuellen Zieloberfläche auszuführen, wenn von der vorherigen Zieloberfläche keine Änderungen vorgenommen wurden.

lpDDSDstSurface [in] Stellt einen Zeiger auf die Zieloberfläche bereit. Die Zieloberfläche ist eine offscreen-einfache Oberfläche, die sich im Videospeicher befindet. Das Pixelformat der Zieloberfläche wird im d3dOutputFormat-Element der DXVA_DeinterlaceCaps-Struktur angegeben. Das Pixelformat muss sich im YUV-Farbraum befinden.

lpDDSrcSurfaces [in] Stellt einen Zeiger auf ein Array von DXVA_VideoSample2 Strukturen bereit, die die Videoquellenreferenzbeispiele und Teilstreambeispiele beschreiben, die für die Bitblockübertragung erforderlich sind.

dwNumSurfaces [in] Stellt die Anzahl der Stichproben im array lpDDSrcSurfaces bereit.

fAlpha [in] Stellt den Wert der planaren Transparenz bereit, den der Treiber auf das Ausgabezieloberflächenbild anwenden soll, das eine Kombination aus Hintergrundfarbe, Videostream und Videounterstreams ist. Für Windows Server 2003 SP1 und Windows XP SP2 ist dieser Wert immer 1,0F, was angibt, dass das Gesamtbild undurchsichtig ist und keine Alphamischung für das Gesamtimage erforderlich ist.

Rückgabewert

Gibt bei erfolgreicher Ausführung 0 (S_OK oder DD_OK) zurück. Gibt andernfalls einen Fehlercode zurück. Eine vollständige Liste der Fehlercodes finden Sie unter ddraw.h .

Hinweise

Die DeinterlaceBltEx-Funktion führt den Deinterlace- oder Framerate-Konvertierungsvorgang aus und kombiniert gleichzeitig die bereitgestellten Video-Substreams mit dem konvertierten Deinterlace- oder Framerate-Video. Die DeinterlaceBltEx-Funktion schreibt die Ausgabe dann auf die Zieloberfläche. Beachten Sie, dass DeinterlaceBltEx mit einem progressiven Videobeispiel aufgerufen werden kann. In diesem Fall sollte der Treiber keinen Deinterlace-Vorgang ausführen. Der Treiber sollte das Video mit den bereitgestellten Video-Teilstreams kombinieren und jeden Stream konvertieren, wie durch die Parameter lprcTargetRect und BackgroundColor sowie die rcSrc - und rcDst-Member der DXVA_VideoSample2 Strukturen in dem Array, das im pDDSrcSurfaces-Parameter übergeben wird.

Wenn ein Deinterlace-Modus, der mehrere Verweisdatenströme erfordert, mit progressivem Video verwendet wird, werden die mehreren Frames weiterhin an den Treiber gesendet, obwohl diese Frames nicht erforderlich sind, um die Ausgabe zu erzeugen. Weitere Informationen finden Sie unter Beispiel 5 der Eingabepufferreihenfolge.

Für die Referenzvideobeispiele im Array, das im pDDSrcSurfaces-Parameter übergeben wird, geben die RtStart - und rtEnd-Member der DXVA_VideoSample2-Struktur für die Beispiele die zeitliche Position der Beispiele an. Für jedes Videounterstrombeispiel im Array werden die RtStart - und rtEnd-Elemente der DXVA_VideoSample2 Struktur für jedes Beispiel auf 0 gelöscht.

Dem Treiber können nur Video-Substreams mit den FOURCC-Pixelformaten AI44, IA44 und AYUV zur Verfügung gestellt werden. Weitere Informationen finden Sie unter Bereitstellen von Video-Substream- und Zieloberflächen.

Bei palettenisierten Video-Substream-Pixelformaten enthält das Palette-Element der DXVA_VideoSample2-Struktur für jeden Videounterstrom ein Array von 16 Paletteneinträgen, die der Treiber beim Kompositing des Teilstreambeispiels verwenden sollte. Bei nichtpalletisierten Pixelformaten werden die Paletteneinträge auf Null gelöscht und können ignoriert werden.

Das SampleFlags-Element der DXVA_VideoSample2-Struktur für jedes Eingabebeispiel enthält eine Auflistung von Flags, die Änderungen im aktuellen Beispiel aus dem vorherigen Beispiel anzeigen. Die Flags spiegeln Änderungen an der Palette, den Farbdaten, dem Quellrechteck und dem Zielrechteck des Beispiels wider. Sie können diese Flags verwenden, um Ihren Treibercode zu optimieren. Mit anderen Worten, Ihr Code ist nicht erforderlich, um Vorgänge für den aktuellen Beispielframe auszuführen, wenn keine Änderungen aus dem vorherigen Beispielframe vorgenommen wurden.

Der dwNumSurfaces-Parameter gibt die Anzahl der Elemente im array lpDDSrcSurface an. Die Videoreferenzbeispiele befinden sich zuerst im Array, gefolgt von den Videounterstreams in Z-Reihenfolge. Weitere Informationen finden Sie unter Eingabepufferreihenfolge. Die Anzahl der Videounterströme, die der Treiber empfängt, kann zwischen 0 und 15 liegen. Wenn DeinterlaceBltEx aufgerufen wird, empfängt der Treiber in der Regel 0 oder 1 Video-Substreams. Der Treiber muss jedoch implementiert werden, damit er mehrere Videounterströme verarbeiten kann.

Die DeinterlaceBltEx-Funktion wird direkt einem Aufruf des RenderMoComp-Members der DD_MOTIONCOMPCALLBACKS-Struktur zugeordnet. Das RenderMoComp-Element verweist auf eine vom Anzeigetreiber bereitgestellte Funktion, die auf die DD_RENDERMOCOMPDATA-Struktur verweist. Die DD_RENDERMOCOMPDATA Struktur wird wie folgt ausgefüllt.

Mitglied Wert

dwNumBuffers

Gibt die Anzahl der Einträge im Array an, auf das von lpBufferInfo verwiesen wird. Diese Zahl ist 1 plus die Anzahl der Quellbeispiele.

lpBufferInfo

Zeigt auf ein Array von DDMOCOMPBUFFERINFO-Strukturen , eine für jedes Eingabereferenzquellen- oder Substreambeispiel und eine für das Zielbeispiel. Das Zielbeispiel ist das erste Element des Arrays.

dwFunction

Gibt die indxva.h definierte DXVA_DeinterlaceBltExFnCode-Konstante an.

lpInputData

Zeigt auf eine ausgefüllte DXVA_DeinterlaceBltEx Struktur.

lpOutputData

Legen Sie auf NULL fest, derzeit nicht verwendet.

Für das DirectX VA-Gerät, das zum Deinterlacing verwendet wird, wird der vom Treiber bereitgestellte Rückruf aufgerufen, auf den renderMoComp verweist, ohne die vom Anzeigetreiber bereitgestellte BeginMoCompFrame - oder EndMoCompFrame-Funktion aufzurufen.

Anforderungen

Zielplattform

Desktop

Version

Versionen:Nur Windows Server 2003 SP1 und höher und Windows XP SP2 und höhere Versionen.

Siehe auch

DXVA_AYUVsample2

DXVA_DeinterlaceBltEx

DXVA_DeinterlaceCaps

DXVA_DestinationFlags

DXVA_VideoSample2

DDMOCOMPBUFFERINFO

DD_MOTIONCOMPCALLBACKS

DD_RENDERMOCOMPDATA