Freigeben über


DXVA_MBctrl_I_OffHostIDCT_1 Struktur (dxva.h)

Die DXVA_MBctrl_I_OffHostIDCT_1 Struktur wird einmal pro Makroblock durch den Hostdecoder an die Zugriffstaste gesendet, um Makroblock-Steuerelementbefehle für 4:2:0 Intra-Bilder bei Verwendung von Offhost-IDCT anzugeben.

Syntax

typedef struct _DXVA_MBctrl_I_OffHostIDCT_1 {
  WORD  wMBaddress;
  WORD  wMBtype;
  DWORD dwMB_SNL;
  WORD  wPatternCode;
  BYTE  bNumCoef[DXVA_NumBlocksPerMB_420];
} DXVA_MBctrl_I_OffHostIDCT_1;

Angehörige

wMBaddress

Gibt die Makroblockadresse des aktuellen Makroblocks in der Rasterscanreihenfolge an. Beispiele für Makroblockadressen finden Sie unter Makroblockadressen.

wMBtype

Gibt den Typ des zu verarbeitenden Makroblocks an. Die folgenden Bits definieren die Makroblockverarbeitung.

Bits Beschreibung
15 bis 12 MvertFieldSel_3 (Bit 15, das wichtigste Bit) bis MvertFieldSel_0 (Bit 12)
Muss null sein.
11 Reservierte Bit-
Muss null sein.
10 HostResidDiff-
Gibt an, ob decodierte Blöcke für räumliche Domänen gesendet werden oder ob Transformationskoeffizienten für off-host IDCT für den aktuellen Makroblock gesendet werden.
Das HostResidDiff-Flag ist immer gleich Null in dieser Struktur. Dieses Flag muss null sein, wenn bConfigResidDiffHost null ist. Dieses Flag muss 1 sein, wenn bConfigResidDiffAccelerator null ist. Die Elemente "bConfigResidDiffHost" und "bConfigResidDiffAccelerator" sind in der DXVA_ConfigPictureDecode Struktur enthalten.
9 und 8 MotionType-
Dies gilt nicht für Intrabilder. Beide Bits müssen null sein.
7 und 6 MBscanMethod-
Gibt die Scanmethode des Makroblock-Steuerelementbefehls an. Dies muss bPicScanMethod entsprechen, wenn bPicScanFixed 1 ist.
Wenn bConfigHostInverseScan null ist, ist MBscanMethod einer der folgenden Werte:
  • Zero âˆ' Zickzackscan (MPEG-2 Abbildung 7-2)
  • 1 âˆ' alternativer vertikaler Scan (MPEG-2 Abbildung 7-3)
  • 2 âˆ' alternativer horizontaler Scan (H.263 Abbildung I.2 Teil a)
Wenn bConfigHostInverseScan 1 ist, ist MBscanMethod gleich 3, bei dem es sich um einen beliebigen Scan mit absoluter Koeffizientenadresse handelt. bPicScanMethod und bPicScanFixed sind Member von DXVA_PictureParameters . bConfigHostInverseScan ist ein Mitglied von DXVA_ConfigPictureDecode.
5 FieldResidual-
Gibt an, ob die Restdifferenzblöcke eine Feld-IDCT-Struktur verwenden, wie in MPEG-2 angegeben.
Muss 1 sein, wenn das bPicStructure-Mitglied von DXVA_PictureParameters 1 oder 2 ist. Bei Verwendung für MPEG-2 muss FieldResidual null sein, wenn das frame_pred_frame_DCT Flag in der MPEG-2-Syntax 1 ist und gleich dem dct_type Element der MPEG-2-Syntax sein muss, wenn dct_type für den Makroblock vorhanden ist.
4 H261LoopFilter-
Muss null sein.
3 Motion4MV-
Muss null sein.
2 MotionBackward-
Muss null sein.
1 MotionForward-
Muss null sein.
0 IntraMacroblock-
Muss 1 sein.

dwMB_SNL

wPatternCode

Gibt an, ob Restdifferenzdaten für jeden Block im Makroblock gesendet werden. In einem Intrabild werden Restdifferenzdaten für jeden Block im Makroblock gesendet. Die Bits in wPatternCode-, die auf alle Blöcke des aktuellen Makroblocks verweisen, müssen in DXVA_MBctrl_I_OffHostIDCT_1 1 sein.

Bit (11-i) von wPatternCode- (wobei Bit 0 das am wenigsten signifikante Bit ist) gibt an, ob Restdifferenzdaten für Block-igesendet werden, wobei i der Index des Blocks innerhalb des Makroblocks ist, wie in MPEG-2 Abbildungen 6-10 angegeben, 6-11 und 6-12 (Rasterscanreihenfolge für Y, gefolgt von 4:2:0-Blöcken von Cb in Rasterscanreihenfolge, gefolgt von 4:2:0-Blöcken von Cr, gefolgt von 4:2:2-Blöcken von Cb, gefolgt von 4:2:2-Blöcken von Cr, gefolgt von 4:4:4-Blöcken von Cb, gefolgt von 4:4:4-Blöcken von Cr). Die Daten für die codierten Blöcke (diese Blöcke mit Bit (11-i) gleich 1) befinden sich im Restcodierungspuffer in derselben Indizierungsreihenfolge (erhöhung i). Bei 4:2:0 MPEG-2-Daten entspricht der Wert von wPatternCode dem Verschieben des decodierten Werts von CBP (codiertes Blockmuster) um sechs Bitpositionen nach links (die niedrigeren Bitpositionen werden für 4:2:2 und 4:4:4 Chroma-Formate verwendet).

bNumCoef[DXVA_NumBlocksPerMB_420]

Jeder Wert im bNumCoef Array gibt die Anzahl der Koeffizienten im Restdifferenzdatenpuffer für jeden Block i des Makroblocks an.

Das array subscript i ist der Index des Blocks innerhalb des Makroblocks, wie in MPEG-2 Video Abbildungen 6-10, 6-11 und 6-12 angegeben (Rasterscanreihenfolge für Y, gefolgt von Cb, gefolgt von Cr).

Dieses Element wird nur verwendet, wenn das HostResidDiff Flag (Bit 10 in wMBtype) null ist und bChromaFormat- 1 (4:2:0) ist. Wenn sie in 4:2:2- oder 4:4:4-Formaten verwendet wird, würde sie die Größe typischer Makroblock-Steuerelementbefehle über eine kritische Speicherausrichtungsgrenze hinaus erhöhen. Daher wird das TCoefEOB Bit innerhalb der DXVA_TCoefSingle Struktur verwendet, um die Anzahl der Koeffizienten in jedem Block in Nicht-4:2:0-Fällen zu bestimmen.

Der Zweck bNumCoef ist die Angabe der Datenmenge, die für jeden Block im Restdifferenzdatenpuffer vorhanden ist, ausgedrückt als Die Anzahl der vorhandenen Koeffizienten. Wenn die bConfig4GroupedCoefs Element der DXVA_ConfigPictureDecode Struktur 1 ist, kann bNumCoef entweder die tatsächliche Anzahl der für den Block gesendeten Koeffizienten enthalten oder dieser Wert auf ein Vielfaches von vier aufgerundet ist. Die Daten für diese Koeffizienten werden im Restdifferenzpuffer in derselben Reihenfolge gefunden.

Bemerkungen

Übersprungene Makroblocks werden nicht von intragrafiken verwendet, sodass die MBskipsFollowing Variable null sein muss. Die MBdataLocation- Variable muss null für den ersten Makroblock im Makroblock-Befehlspuffer sein. Weitere Informationen dazu, wie übersprungene Makroblocks generiert werden, finden Sie unter Generieren von übersprungenen Makroblocks.

Anforderungen

Anforderung Wert
Header- dxva.h (include Dxva.h)

Siehe auch

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_HostResidDiff_1

DXVA_PictureParameters

DXVA_TCoefSingle