Freigeben über


DXVA_ConfigPictureDecode-Struktur (dxva.h)

Die DXVA_ConfigPictureDecode Struktur wird vom Hostdecoder an den Accelerator gesendet, um die Konfiguration für die Decodierung komprimierter Bilder festzulegen.

Syntax

typedef struct _DXVA_ConfigPictureDecode {
  DXVA_ConfigQueryOrReplyFunc dwFunction;
  DWORD                       dwReservedBits[3];
  GUID                        guidConfigBitstreamEncryption;
  GUID                        guidConfigMBcontrolEncryption;
  GUID                        guidConfigResidDiffEncryption;
  BYTE                        bConfigBitstreamRaw;
  BYTE                        bConfigMBcontrolRasterOrder;
  BYTE                        bConfigResidDiffHost;
  BYTE                        bConfigSpatialResid8;
  BYTE                        bConfigResid8Subtraction;
  BYTE                        bConfigSpatialHost8or9Clipping;
  BYTE                        bConfigSpatialResidInterleaved;
  BYTE                        bConfigIntraResidUnsigned;
  BYTE                        bConfigResidDiffAccelerator;
  BYTE                        bConfigHostInverseScan;
  BYTE                        bConfigSpecificIDCT;
  BYTE                        bConfig4GroupedCoefs;
} DXVA_ConfigPictureDecode, *LPDXVA_ConfigPictureDecode;

Member

dwFunction

Gibt den Typ der Abfrage oder Antwort an, wenn Sie Probing- und Sperrbefehle verwenden. Die wichtigste 24 Bit von dwFunction ist die DXVA_ConfigQueryOrReplyFlag Variable.

Die am wenigsten signifikanten 4 Bits der DXVA_ConfigQueryOrReplyFlag Variablen enthalten status Indikatoren für die ausgeführte Abfrage oder Antwort.

Die geringste bedeutungslose 8 Bit von dwFunction ist die bDXVA_Func Variable , die in diesem Fall gleich 1 ist.

dwReservedBits[3]

Reservierte Bits, die zum Packen und Ausrichten verwendet werden. Diese Bits sind 0.

guidConfigBitstreamEncryption

Gibt eine GUID an, die dem Verschlüsselungsprotokolltyp für Bitstreamdatenpuffer zugeordnet ist. Der Wert DXVA_NoEncrypt (ein in dxva.h definierter GUID-Name) gibt an, dass die Verschlüsselung nicht angewendet wird. Dies ist DXVA_NoEncrypt, wenn bConfigBitstreamRaw null ist.

guidConfigMBcontrolEncryption

Gibt eine GUID an, die dem Verschlüsselungsprotokolltyp für Makroblocksteuerungspuffer zugeordnet ist. Der Wert DXVA_NoEncrypt (ein in dxva.h definierter GUID-Name) gibt an, dass die Verschlüsselung nicht angewendet wird. Dies ist DXVA_NoEncrypt, wenn bConfigBitstreamRaw 1 ist.

guidConfigResidDiffEncryption

Gibt eine GUID an, die dem Verschlüsselungsprotokolltyp für Restdifferenzdecodierungsdatenpuffer zugeordnet ist (Puffer, die Räumliche Domänendaten oder Sätze von Transformationsdomänenkoeffizienten für acceleratorbasierte IDCT enthalten). Dies ist DXVA_NoEncrypt, wenn bConfigBitstreamRaw 1 ist. (DXVA_NoEncrypt ist eine GUID, die in dxva.h definiert ist und angibt, dass die Verschlüsselung nicht angewendet wird.)

bConfigBitstreamRaw

Enthält den Bitstromverarbeitungsindikator. Der Wert 1 gibt an, dass die Bilddaten in Bitstreampuffern als roher Bitstreaminhalt gesendet werden. Der Wert null gibt an, dass Bilddaten mithilfe von Makroblock-Steuerungsbefehlpuffern gesendet werden.

Dies ist null, wenn bConfigResidDiffHost 1 oder bConfigResidDiffAccelerator 1 ist. Der Wert 0 wird als grundlegende Unterstützungsebene betrachtet. Die zusätzliche Unterstützung von Ebene 1 wird bevorzugt.

bConfigMBcontrolRasterOrder

Gibt an, ob Makroblock-Steuerelementbefehle in der Rasterscanreihenfolge oder in beliebiger Reihenfolge ausgeführt werden. Der Wert 1 gibt an, dass die Makroblock-Steuerelementbefehle innerhalb jedes Makroblock-Steuerelementbefehlspuffers sich in der Rasterscanreihenfolge befinden, und der Wert null gibt eine beliebige Reihenfolge an. Derzeit kann ein Treiber die Unterstützung auf die Reihenfolge der Rasterscans einschränken. Ein Treiber sollte jedoch sowohl die beliebige als auch die Rasterscanreihenfolge unterstützen.

bConfigResidDiffHost

Enthält die Host-Restdifferenzkonfiguration (weitere Informationen finden Sie unter Makroblock-orientierte Bildcodierung ). Der Wert 1 gibt an, dass Daten zur Decodierung von Restunterschieden als Blöcke in der räumlichen Domäne vom Host gesendet werden können. Der Wert null gibt an, dass räumliche Domänendaten nicht gesendet werden. Dieser Member ist 0, wenn bConfigBitstreamRaw 1 ist. Es wird bevorzugt, dass ein Accelerator sowohl null als auch 1 unterstützt.

bConfigSpatialResid8

Gibt die Wortgröße an, die verwendet wird, um räumliche Differenzblöcke für vorhergesagte Bilder (nonintra) darzustellen, wenn die hostbasierte Restdifferenzdecodierung verwendet wird (wenn bConfigResidDiffHost gleich 1 ist).

Wenn bConfigSpatialResid8 1 und bConfigResidDiffHost 1 ist, sendet der Host Blöcke für räumliche Differenzen für Nicht-Intra-Makroblocks mit 8-Bit-Beispielen und für Intra-Makroblocks in vorhergesagten (nonintra)-Bildern in einem Format in Abhängigkeit von bConfigIntraResidUnsigned wie folgt:

  • Wenn bConfigIntraResidUnsigned null ist, werden räumliche Domänenblöcke für intra makroblocks als 8-Bit-Ganzzahlwerte mit Vorzeichen im Verhältnis zu einem konstanten Referenzwert von 128 gesendet.
  • Wenn bConfigIntraResidUnsigned 1 ist, werden räumliche Domänenblöcke für intra makroblocks als 8-Bit-Ganzzahlwerte ohne Vorzeichen relativ zu einem konstanten Verweiswert von null gesendet.
Wenn bConfigSpatialResid8 null und bConfigResidDiffHost 1 ist, sendet der Host Blöcke der räumlichen Domänendaten für Nicht-Intra-Makroblocks mit 16-Bit-Vorzeichen und für Intra-Makroblocks in vorhergesagten (nonintra)-Bildern in einem Format in Abhängigkeit von bConfigIntraResidUnsigned wie folgt:
  • Wenn bConfigIntraResidUnsigned null ist, werden räumliche Domänenblöcke für intra makroblocks als ganzzahlige 16-Bit-Werte mit Vorzeichen im Verhältnis zu einem konstanten Referenzwert von 2(BPP-1) gesendet, wobei BPP die Anzahl der Bits pro Beispiel für das nicht komprimierte Video (in der Regel ein Wert von 8) darstellt.
  • Wenn bConfigIntraResidUnsigned 1 ist, werden räumliche Domänenblöcke für Intra-Makroblocks als 16-Bit-Ganzzahlwerte ohne Vorzeichen relativ zu einem konstanten Referenzwert von null gesendet.
Das bConfigSpatialResid8-Element muss 0 sein, wenn bConfigResidDiffHost 0 ist. Es gibt keine Präferenz für einen bestimmten Wert von bConfigSpatialResid8 , wenn bConfigResidDiffHost 1 ist.
Hinweis Für Intrabilder mit BPP gleich 8 müssen räumliche Domänenblöcke mithilfe von 8-Bit-Beispielen gesendet werden. Für Intrabilder mit einem BPP größer als 8 müssen räumliche Domänenblöcke mithilfe von 16-Bit-Beispielen gesendet werden. (Die BPP-Variable ist die Anzahl der Bits pro Beispiel für das nicht komprimierte Video, in der Regel ein Wert von 8.)

Wenn bConfigIntraResidUnsigned null ist, werden diese Beispiele als ganzzahlige Vorzeichenwerte relativ zu einem konstanten Referenzwert von 2(BPP-1) gesendet. Wenn bConfigIntraResidUnsigned 1 ist, werden diese Beispiele als ganzzahlige Werte ohne Vorzeichen relativ zu einem konstanten Verweiswert von 0 gesendet.

 

bConfigResid8Subtraction

Wenn gleich 1, gibt an, dass 8-Bit-Differenzüberlaufblöcke subtrahiert und nicht hinzugefügt werden. Muss null sein, es sei denn , bConfigSpatialResid8 ist 1. Der bevorzugte Wert für die Unterstützung eines Accelerators ist 1, wenn bConfigSpatialResid8 1 ist. Die Möglichkeit, Unterschiede zu subtrahieren, anstatt sie hinzuzufügen, ermöglicht es, dass die 8-Bit-Differenzencodierung vollständig mit dem vollständigen Wertbereich von +/-255 kompatibel ist, der in den Spezifikationen für Videodecoder erforderlich ist. Dies liegt daran, dass +255 nicht als Addition von zwei signierten 8-Bit-Zahlen dargestellt werden kann, aber jede Zahl im Bereich +/-255 als Unterschied zwischen zwei signierten 8-Bit-Zahlen dargestellt werden kann (+255 entspricht +127 minus âˆ'128).

bConfigSpatialHost8or9Clipping

Gibt bei gleich 1 an, dass räumliche Domänenblöcke für Intra-Makroblocks in einen 8-Bit-Bereich auf dem Host abgeschnitten werden und dass räumliche Domänenblöcke für Nicht-Intra-Makroblocks in einen 9-Bit-Bereich auf dem Host gekappt werden. Der Wert 0 gibt an, dass keine solche Abschneidung vom Host ausgeführt wird. Muss 0 sein, es sei denn , bConfigSpatialResid8 ist gleich 0 und bConfigResidDiffHost gleich 1. Der bevorzugte Wert für eine Beschleunigerunterstützung ist 0.

bConfigSpatialResidInterleaved

Wenn gleich 1, gibt an, dass alle Restdifferenzdaten der räumlichen Domäne in einer Chrominance-Interleaved-Form gesendet werden, die dem Chrominanzinterleavingmuster im YUV-Format entspricht. Muss null sein, es sei denn , bConfigResidDiffHost ist 1 und das YUV-Format ist NV12 oder NV21. Der bevorzugte Wert für eine Beschleunigerunterstützung ist 0.

bConfigIntraResidUnsigned

Gibt die Methode der Darstellung von räumlichen Domänenblöcken von Restdifferenzdaten für intra-Blöcke an, wenn die hostbasierte Differenzdecodierung verwendet wird (wenn bConfigResidDiffHost gleich 1 ist).

Wenn bConfigIntraResidUnsigned gleich 0 und bConfigResidDiffHost gleich 1 ist, werden die Restdifferenzdatenblöcke für intra makroblocks wie folgt gesendet:

  • Wenn bConfigSpatialResid8 null ist, werden die Datenblöcke der räumlichen Domänendifferenz für intra macroblocks als ganzzahlige 16-Bit-Werte mit Vorzeichen im Verhältnis zu einem konstanten Referenzwert von 2 (BPP-1) gesendet, wobei BPP die Anzahl der Bits pro Beispiel für das nicht komprimierte Video (in der Regel ein Wert von 8) ist.
  • In einem Nonintra-Bild, wenn bConfigSpatialResid8 1 ist, und in einem Intra-Bild, wenn BPP gleich 8 ist (unabhängig vom Wert von bConfigSpatialResid8), werden die Restdifferenzdatenblöcke der räumlichen Domäne für intra makroblocks als ganzzahlige 8-Bit-Werte mit Vorzeichen im Verhältnis zu einem konstanten Referenzwert von 128 gesendet.
Wenn bConfigIntraResidUnsigned gleich 1 und bConfigResidDiffHost gleich 1 ist, werden die Datenblöcke der Räumlichen Domänen-Restdifferenz für intra makroblocks wie folgt gesendet:
  • Wenn bConfigSpatialResid8 null ist, werden die Datenblöcke der räumlichen Differenz für intra makroblocks als 16-Bit-Ganzzahlwerte ohne Vorzeichen relativ zu einem konstanten Referenzwert von null gesendet.
  • In einem Nonintra-Bild, wenn bConfigSpatialResid8 1 ist, und in einem intra-Bild, wenn BPP gleich 8 ist (unabhängig vom Wert von bConfigSpatialResid8), werden die Räumlichen Domänen-Restdifferenzdatenblöcke für intra makroblocks als 8-Bit-Ganzzahlwerte ohne Vorzeichen im Verhältnis zu einem konstanten Referenzwert von null gesendet.
Das bConfigIntraResidUnsigned-Element muss 0 sein, es sei denn , bConfigResidDiffHost ist 1.

Der bevorzugte Wert für eine Beschleunigerunterstützung ist null für bConfigIntraResidUnsigned.

bConfigResidDiffAccelerator

Enthält die Restdifferenzkonfiguration des Accelerators. Der Wert 1 gibt an, dass Transformationsdomänenblöcke von Koeffizientendaten vom Host für acceleratorbasierte IDCT gesendet werden können. Der Wert null gibt an, dass die Beschleunigerbasierte IDCT nicht verwendet wird. Wenn bConfigResidDiffHost und bConfigResidDiffAccelerator 1 sind, erfolgt die Restdifferenzdecodierung auf dem Host und einige auf dem Accelerator, wie in Steuerelementbefehlen auf Makroblockebene angegeben. Dieser Member muss 0 sein, wenn bConfigBitstreamRaw 1 ist.

Der bevorzugte Wert für die Unterstützung eines Accelerators ist 1 für bConfigResidDiffAccelerator.

Wenn bConfigResidDiffAccelerator und bConfigResidDiffHost gleich 1 sind, kann die Restdifferenzdecodierung zwischen host und accelerator auf Makroblockbasis gemeinsam genutzt werden. Dies wird als eine noch höhere Stufe der Beschleunigungsfunktion betrachtet, als wenn bConfigResidDiffAccelerator gleich 1 und bConfigResidDiffHost gleich 0 ist.

bConfigHostInverseScan

Gibt an, ob der umgekehrte Scan für die Verarbeitung von Transformationsdomänenblöcken auf dem Host oder im Accelerator ausgeführt wird. Der Wert 1 gibt an, dass der umgekehrte Scan für die Verarbeitung von Transformationsdomänenblöcken auf dem Host ausgeführt wird, und stattdessen absolute Indizes für alle Transformationskoeffizienten gesendet werden. Der Wert 0 gibt an, dass der umgekehrte Scan auf dem Accelerator ausgeführt wird. Dieser Member muss 0 sein, wenn bConfigResidDiffAccelerator 0 ist oder wenn bConfig4GroupedCoefs 1 ist.

Der bevorzugte Wert für eine Acceleratorunterstützung ist 1, wenn bConfigResidDiffAccelerator 1 ist.

bConfigSpecificIDCT

Gibt die Verwendung einer bestimmten IDCT-Methode für IDCT außerhalb des Hosts an. Der Wert 1 gibt die Verwendung des IDCT gemäß Anhang W der EMPFEHLUNG H.263 an. Der Wert 0 gibt an, dass eine beliebige kompatible IDCT für idCT außerhalb des Hosts verwendet werden kann. (Andere Werte als 0 und 1 sind für die zukünftige Verwendung reserviert.)

Dieser Member muss 0 sein, wenn bConfigResidDiffAccelerator 0 ist (einfach hostbasierte Restdifferenzdecodierung).

Hinweis Anhang W der ITU-T-Empfehlung H.263 entspricht nicht den IDCT-Anforderungen von MPEG-2 corrigendum 2 und daher darf bConfigSpecificIDCT nicht für die Verwendung mit MPEG-2-Video sein.
 

bConfig4GroupedCoefs

Der Wert 1 gibt an, dass Transformationskoeffizienten für idCT außerhalb des Hosts mithilfe der DXVA_TCoef4Group-Struktur und nicht mit der DXVA_TCoefSingle-Struktur gesendet werden. Dies ist 0, wenn bConfigResidDiffAccelerator 0 ist oder wenn bConfigHostInverseScan 1 ist.

Der bevorzugte Wert für eine Beschleunigerunterstützung ist 0, wenn bConfigResidDiffAccelerator 1 ist.

Hinweise

Für einige Arten von Bitstreams erhöht das Erzwingen von Makroblock-Steuerelementbefehlen innerhalb jedes Makroblock-Steuerelementbefehlspuffers die Rasterreihenfolge entweder erheblich die Anzahl der erforderlichen Puffer, die verarbeitet werden müssen, oder erfordert eine Neuanordnung der Steuerelementinformationen durch den Host. Die Unterstützung beliebiger Reihenfolge kann daher für den Decodierungsprozess von Vorteil sein. Beispielsweise kann die H.261-Decodierung mit CIF-Auflösung 36 Makroblocksteuerungspuffer pro Bild erfordern, wenn die Rasterscanreihenfolge innerhalb jedes Puffers erforderlich ist (die beliebige Slicereihenfolge und die rechteckigen Slice-Modi von H.263 Annex K haben schwerwiegendere Auswirkungen und erfordern möglicherweise eine extrem große Anzahl von Puffern.)

Anforderungen

Anforderung Wert
Header dxva.h (einschließlich Dxva.h)

Weitere Informationen

DXVA_MBctrl_I_HostResidDiff_1

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_MBctrl_P_HostResidDiff_1

DXVA_MBctrl_P_OffHostIDCT_1

DXVA_TCoef4Group

DXVA_TCoefSingle