DXVA_MBctrl_I_OffHostIDCT_1-Struktur (dxva.h)

Die DXVA_MBctrl_I_OffHostIDCT_1 Struktur wird einmal pro Makroblock vom Hostdecoder an den Accelerator gesendet, um Makroblocksteuerungsbefehle für 4:2:0-Intra-Bilder anzugeben, wenn idCT außerhalb des Hosts verwendet wird.

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;

Member

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 Reserviertes Bit
Muss Null sein.
10 HostResidDiff
Gibt an, ob räumliche Domänen-Restdifferenzen decodierte Blöcke gesendet werden oder ob Transformationskoeffizienten für idCT außerhalb des Hosts für den aktuellen Makroblock gesendet werden.
Das HostResidDiff-Flag ist in dieser Struktur immer gleich 0. Dieses Flag muss 0 sein, wenn bConfigResidDiffHost 0 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 0 sein.
7 und 6 MBscanMethod
Gibt die Scanmethode des Makroblock-Steuerelementbefehls an. Dies muss gleich bPicScanMethod sein, wenn bPicScanFixed 1 ist.
Wenn bConfigHostInverseScan null ist, ist MBscanMethod einer der folgenden Werte:
  • Null âˆ' 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. Dies ist ein beliebiger Scan mit absoluter Koeffizientenadresse. bPicScanMethod und bPicScanFixed sind Mitglieder von DXVA_PictureParameters . bConfigHostInverseScan ist ein Mitglied von DXVA_ConfigPictureDecode.
5 FieldResidual
Gibt an, ob die Restdifferenzblöcke eine IDCT-Feldstruktur verwenden, wie in MPEG-2 angegeben.
Muss 1 sein, wenn das bPicStructure-Element 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 muss dem dct_type-Element der MPEG-2-Syntax entsprechen, 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 Für jeden Block im Makroblock Restdifferenzdaten gesendet werden. In einem intra-Bild werden Restdifferenzdaten für jeden Block im Makroblock gesendet. Die Bits in wPatternCode , die auf alle Blöcke des aktuellen Makroblocks verweisen, müssen 1 in DXVA_MBctrl_I_OffHostIDCT_1 sein.

Bit (11-i) von wPatternCode (wobei Bit 0 das geringste signifikante Bit ist) gibt an, ob Restdifferenzdaten für Block i gesendet werden, wobei i der Index des Blocks innerhalb des Makroblocks ist, wie in MPEG-2 Abbildungen 6-10, 6-11 und 6-12 angegeben (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) nach links um sechs Bitpositionen (diese niedrigeren Bitpositionen werden für die Farbformate 4:2:2 und 4:4:4 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-Subskript i ist der Index des Blocks innerhalb des Makroblocks, wie in MPEG-2 VideoFiguren 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 und bChromaFormat 1 (4:2:0) ist. Bei Verwendung im Format 4:2:2 oder 4:4:4 würde die Größe typischer Makroblock-Steuerungsbefehle über eine kritische Speicherausrichtungsgrenze hinaus vergrößert werden. 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 von bNumCoef besteht darin, die Menge der Daten anzugeben, die für jeden Block im Datenpuffer der Restdifferenz vorhanden sind, ausgedrückt als anzahl der vorhandenen Koeffizienten. Wenn das bConfig4GroupedCoefs-Element der DXVA_ConfigPictureDecode-Struktur 1 ist, kann bNumCoef entweder die tatsächliche Anzahl von Koeffizienten enthalten, die für den Block gesendet werden, oder der Wert, der auf ein Vielfaches von vier aufgerundet wird. Die Daten für diese Koeffizienten befinden sich im Restdifferenzpuffer in der gleichen Reihenfolge.

Hinweise

Übersprungene Makroblocks werden von intra-Bildern nicht verwendet, sodass die MBskipsFollowing-Variable 0 sein muss. Die MBdataLocation-Variable muss für den ersten Makroblock im Makroblock-Steuerungsbefehlpuffer null sein. Weitere Informationen zum Generieren übersprungener Makroblocks finden Sie unter Generieren übersprungener Makroblocks.

Anforderungen

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

Weitere Informationen

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_HostResidDiff_1

DXVA_PictureParameters

DXVA_TCoefSingle