DXVA_BufferDescription Struktur (dxva.h)
Die DXVA_BufferDescription-Struktur wird vom Hostdecoder an die Zugriffstaste gesendet, um Informationen zum Puffer bereitzustellen, der derzeit vom Host an die Zugriffstaste übergeben wird.
Syntax
typedef struct _DXVA_BufferDescription {
DWORD dwTypeIndex;
DWORD dwBufferIndex;
DWORD dwDataOffset;
DWORD dwDataSize;
DWORD dwFirstMBaddress;
DWORD dwNumMBsInBuffer;
DWORD dwWidth;
DWORD dwHeight;
DWORD dwStride;
DWORD dwReservedBits;
} DXVA_BufferDescription, *LPDXVA_BufferDescription;
Angehörige
dwTypeIndex
Gibt den Typ des Puffers an, der an die Zugriffstaste übergeben wird. In der folgenden Tabelle sind die numerischen Bezeichner und der zugeordnete Puffertyp aufgeführt.
Wert | Puffertyp- |
---|---|
1 | Bilddecodierungsparameterpuffer. |
2 | Makroblock-Steuerelementbefehlspuffer (eng mit 1:1-Entsprechungen mit Restunterschied-Blockdatenpuffern verknüpft). |
3 | Restdifferenz-Blockdatenpuffer. Weitere Informationen finden Sie unter Macroblock-Oriented Bilddecodierung. |
4 | Deblocking filter control command buffers (with or without a restriction on the effect of the filter). |
5 | Inverse-Quantization-Matrixpuffer (nur bei off-host-VLD-Verarbeitung verwendet). |
6 | Slice-Control-Puffer (eng mit 1:1-Entsprechungen mit Bitstreamdatenpuffern verknüpft). |
7 | Bitstream-Datenpuffer. |
8 | AYUV-Alpha-Blending-Beispielpuffer. |
9 | IA44/AI44 alpha-blendende Oberflächenpuffer. |
10 | DPXD-Alpha-Blendungsoberflächenpuffer. |
11 | Hervorheben von Datenpuffern |
12 | DCCMD-Datenpuffer. |
13 | Alpha-Blend-Kombinationspuffer. |
14 | Bild-Resampling-Steuerelementpuffer. |
15 | Read-back-Befehlspuffer mit Befehlen zum Lesen von Makroblocks des resultierenden Bilds zurück zum Host. |
dwBufferIndex
Gibt die Sequenznummer des Puffers innerhalb der Puffer desselben Typs an, die in derselben Pufferbeschreibungslisteübergeben wurden.
dwDataOffset
Gibt den Offset der relevanten Daten vom Anfang des Puffers in Bytes an. Die Verwendung dieses Elements ist derzeit auf den Wert Null beschränkt.
dwDataSize
Gibt die Menge der relevanten Daten im Puffer in Byte an. Die Position des letzten Byte des Inhalts im Puffer ist dwDataOffsetund dwDataSize minus 1.
dwFirstMBaddress
Gibt die Makroblockadresse des ersten Makroblocks im Puffer an, der an die Zugriffstaste übergeben wird. Die Makroblockadresse wird in der Rasterscanreihenfolge angegeben. Die Adresse wird durch die Mitglieder von DXVA_PictureParametersbestimmt. Beispiele für Makroblockadressen sind wie folgt.
Makroblock- | Adresse |
---|---|
oben links | Null |
oben rechts | wPicWidthInMBminus1 |
unten links | wPicHeightInMBminus1 x (wPicWidthInMBminus1+1) |
unten rechts | (wPicHeightInMBminus1+1) x (wPicWidthInMBminus1+1)-1 |
Dieses Element muss null sein, wenn der Datenpuffer zu den folgenden Typen gehört: Bilddecodierungsparameter, Umgekehrte Quantisierungsmatrix, Segmentsteuerelement, Bitstreamdaten, AYUV, IA44/AI44, DPXD, Highlight und DCCMD.
Wenn der Datenpuffer ein Restunterschied-Blockdatenpuffer ist, muss dwFirstMBaddress denselben Wert wie für den entsprechenden Makroblock-Steuerelement-Befehlspuffer aufweisen. Weitere Informationen finden Sie unter Macroblock-Oriented Bilddecodierung.
dwNumMBsInBuffer
Gibt die Anzahl der Makroblocks von Daten im Puffer an. Diese Anzahl enthält übersprungene Makroblocks. Muss null sein, wenn der Datenpuffer zu den folgenden Typen gehört: Bilddecodierungsparameter, Inverse-Quantisierungsmatrix, AYUV, IA44/AI44, DPXD, Highlight oder DCCMD.
Der Wert für dwNumMBsInBuffer hängt vom Typ des verwendeten Datenpuffers ab, wie in der folgenden Tabelle gezeigt.
Puffertyp- | Wert der dwNumMBsInBuffer- |
---|---|
Makroblock-Steuerelementbefehl | Muss gleich der Summe aller Werte für MBskipsFollowing sein, die der Anzahl der Makroblock-Steuerelementbefehle im Makroblock-Befehlspuffer hinzugefügt wird. |
Restdifferenzblock | Muss denselben Wert wie für den entsprechenden Makroblock-Befehlspuffer aufweisen. |
Befehl "Segmentsteuerelement" | Muss dem Wert des wNumberMBsInSlice-Elements der DXVA_SliceInfo Struktur im Datenschnittsteuerelementpuffer entsprechen. |
Bitstream | Muss denselben Wert wie für den entsprechenden Datenschnittsteuerelement-Befehlspuffer aufweisen. |
dwWidth
Gibt die Breite der Daten im Puffer als Anzahl der Einheiten von Bits für die folgenden Datentypen an: AYUV (Daten werden in 32-Bit-Einheiten angegeben), IA44/AI44 (Daten werden in 8-Bit-Einheiten angegeben) oder DPXD (Daten werden in 2-Bit-Einheiten angegeben). Dieses Element muss null sein, wenn der Datenpuffer nicht zu den vorherigen Typen gehört.
dwHeight
Gibt die Höhe der Daten im Puffer als Anzahl der Einheiten von Bits für die folgenden Datentypen an: AYUV (Daten werden in 32-Bit-Einheiten angegeben), IA44/AI44 (Daten werden in 8-Bit-Einheiten angegeben) oder DPXD (Daten werden in 2-Bit-Einheiten angegeben). Dieses Element muss null sein, wenn der Datenpuffer nicht zu den vorherigen Typen gehört.
dwStride
Gibt die Stride der Daten im Puffer als Anzahl der Einheiten von Bits für die folgenden Datentypen an: AYUV (Daten werden in 32-Bit-Einheiten angegeben), IA44/AI44 (Daten werden in 8-Bit-Einheiten angegeben) oder DPXD (Daten werden in 2-Bit-Einheiten angegeben). Die Stride für die anwendbaren Puffertypen wird aus dem Pufferzuweisungssetup bestimmt, das von der Zugriffstaste ausgeführt wird. Dieses Element muss null sein, wenn der Datenpuffer nicht zu den vorherigen Typen gehört.
dwReservedBits
Reservierte Bits, die für Verpackung und Ausrichtung verwendet werden. Muss null sein.
Bemerkungen
Ein Array von DXVA_BufferDescription Strukturen wird als Pufferbeschreibungsliste bezeichnet. Wenn eine Reihe von Puffern vom Hostdecode an den Hardwarebeschleuniger gesendet wird, wird eine Pufferbeschreibungsliste gesendet, um die Puffer zu beschreiben. Die Liste der Pufferbeschreibungen enthält eine DXVA_BufferDescription Struktur für jeden Puffer in diesem Satz. Die Liste der Pufferbeschreibung beginnt mit einer DXVA_BufferDescription Struktur für den ersten Puffer des ersten Typs, gefolgt von einer DXVA_BufferDescription Struktur für den nächsten Puffer desselben Typs usw. Die Pufferbeschreibungsliste wird dann mit einer DXVA_BufferDescription Struktur für den ersten Puffer des nächsten Typs usw. fortgesetzt.
Anforderungen
Anforderung | Wert |
---|---|
Header- | dxva.h (include Dxva.h) |