DXVA_MBctrl_I_HostResidDiff_1-Struktur (dxva.h)
Die DXVA_MBctrl_I_HostResidDiff_1 Struktur wird einmal pro Makroblock vom Hostdecoder an die Zugriffstaste gesendet, um Makroblocksteuerungsbefehle für ein bildinternes Bild anzugeben.
Syntax
typedef struct _DXVA_MBctrl_I_HostResidDiff_1 {
WORD wMBaddress;
WORD wMBtype;
DWORD dwMB_SNL;
WORD wPatternCode;
WORD wPC_Overflow;
DWORD dwReservedBits2;
} DXVA_MBctrl_I_HostResidDiff_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 bedeutendste Bit) bis MvertFieldSel_0 (Bit 12) Gibt die vertikale Feldauswahl für die entsprechenden Bewegungsvektoren an, die später im Makroblock-Steuerelementbefehl gesendet werden. Für framebasierte Bewegungen mit einer Framebildstruktur (z. B. für H.261 und H.263) müssen diese Bits alle null sein. Die Bits in MvertFieldSel_0, MvertFieldSel_1, MvertFieldSel_2 und MvertFieldSel_3 entsprechen den motion_vertical_field_select[r][s]Bits in Abschnitt 6.3.17.2 von MPEG-2. |
11 | Reserviertes Bit Muss Null sein. |
10 | HostResidDiff Gibt an, ob für den aktuellen Makroblock entschlüsselte Blöcke für die Restdifferenz der räumlichen Domäne gesendet werden oder ob Transformationskoeffizienten für off-host IDCT gesendet werden. HostResidDiff ist in dieser Struktur immer gleich 1. Dieses Flag muss null sein, wenn bConfigResidDiffHost 0 ist. Dieses Flag muss 1 sein, wenn bConfigResidDiffAccelerator null ist. Die Member bConfigResidDiffHost und bConfigResidDiffAccelerator sind in der DXVA_ConfigPictureDecode-Struktur enthalten. |
9 und 8 | MotionType Muss Null sein. |
7 und 6 | MBscanMethod Diese Bits haben keine Bedeutung und sollten auf 0 (null) festgelegt werden. |
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 flag frame_pred_frame_DCT in der MPEG-2-Syntax 1 ist, und muss gleich der dct_type Variable der MPEG-2-Syntax sein, 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
Gibt die Anzahl der übersprungenen Makroblocks an, die nach dem aktuellen Makroblock generiert werden sollen, und gibt den Speicherort der Restdifferenzdaten für die Blöcke des aktuellen Makroblocks an. Dieser Member enthält zwei Variablen: MBskipsFollowing in den wichtigsten 8 Bits und MBdataLocation in den am wenigsten signifikanten 24 Bits. MBskipsFollowing gibt die Anzahl der übersprungenen Makroblocks an, die nach dem aktuellen Makroblock generiert werden sollen. MBdataLocation ist ein Index in den Restdifferenzblockdatenpuffer. Dieser Index gibt die Position der Restdifferenzdaten für die Blöcke des aktuellen Makroblocks an, ausgedrückt als Vielfaches von 32 Bits.
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 dieser Struktur 1 sein.
Bit (11-i) von wPatternCode (wobei Bit null das am wenigsten 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 (die Blöcke mit Bit (11i) gleich 1) befinden sich im Restcodierungspuffer in derselben Indizierungsreihenfolge (mit i erhöhend). Bei 4:2:0 MPEG-2-Daten entspricht der Wert von wPatternCode dem Verschieben des decodierten Werts des CBP (codierten Blockmusters) nach links um sechs Bitpositionen (die unteren Bitpositionen, die für die Chroma-Formate 4:2:2 und 4:4:4 verwendet werden).
Wenn das bConfigSpatialResidInterleaved-Element der DXVA_ConfigPictureDecode-Struktur 1 ist, werden hostbasierte Restunterschiede in einer chroma-verschachtelten Form gesendet, die der des verwendeten YUV-Pixelformats entspricht. In diesem Fall wird jedes Cb- und das räumlich entsprechende Cr-Blöckepaar als einzelne Restdifferenzstruktureinheit behandelt. Dies ändert den Wert oder die Bedeutung von wPatternCode nicht, impliziert aber, dass beide Member jedes Paars von Cb- und Cr-Datenblöcken gesendet werden, wenn einer dieser Datenblöcke das entsprechende Bit in wPatternCode festgelegt hat. Wenn das Bit in wPatternCode für einen bestimmten Datenblock 0 (null) ist, müssen die entsprechenden Datenwerte der Restdifferenz als 0 gesendet werden, wenn diese Kopplung das Senden eines Restdifferenzdatenblocks für einen Block mit einem wPatternCode-Bit gleich 0 erfordert.
wPC_Overflow
Muss Null sein.
dwReservedBits2
Reservierte Bits, die zum Verpacken und Ausrichten verwendet werden. Muss Null sein.
Hinweise
Übersprungene Makroblocks werden von intra-Bildern nicht verwendet, sodass die MBskipsFollowing-Variable null sein muss. Die MBdataLocation-Variable muss für den ersten Makroblock im Befehlspuffer der Makroblocksteuerung null sein. Weitere Informationen dazu, wie übersprungene Makroblocks generiert werden, finden Sie unter Generieren übersprungener Makroblocks.
Anforderungen
Anforderung | Wert |
---|---|
Header | dxva.h (dxva.h einschließen) |