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:
|
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) |