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)

Weitere Informationen

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_PictureParameters

DXVA_TCoefSingle