DXVA_MBctrl_P_HostResidDiff_1 Struktur (dxva.h)
Die DXVA_MBctrl_P_HostResidDiff_1 Struktur wird einmal pro Makroblock vom Hostdecoder an die Zugriffstaste gesendet, um Makroblock-Steuerelementbefehle für die meisten Nichtintra-Bildfälle anzugeben, wenn hostbasierte IDCT-verwendet wird.
Syntax
typedef struct _DXVA_MBctrl_P_HostResidDiff_1 {
WORD wMBaddress;
WORD wMBtype;
DWORD dwMB_SNL;
WORD wPatternCode;
WORD wPC_Overflow;
DWORD dwReservedBits2;
DXVA_MVvalue MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off];
} DXVA_MBctrl_P_HostResidDiff_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 den Inhalt wMBtype-.
Bits | Beschreibung |
---|---|
15 bis 12 | MvertFieldSel_3 (Bit 15, das wichtigste Bit) bis MvertFieldSel_0 (Bit 12) Gibt die vertikale Feldauswahl für entsprechende Bewegungsvektoren an, die später im Makroblock-Steuerelementbefehl gesendet werden. Bei framebasierten Bewegungen mit einer Rahmenbildstruktur (z. B. für H.261 und H.263) müssen diese Bits alle null sein. Die Verwendung dieser Bits entspricht dem für die entsprechenden Bits in Abschnitt 6.3.17.2 von MPEG-2 angegebenen Bits. |
11 | Reserviertes 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 HostResidDif-Flag ist immer gleich 1 in dieser Struktur. Dieses Flag muss null sein, wenn bConfigResidDiffHost null ist. Dieses Flag muss 1 sein, wenn bConfigResidDiffAccelerator null ist. |
9 und 8 |
MotionType- Gibt den Animationstyp im Bild an. Bei framebasierten Bewegungen mit einer Framebildstruktur (wie in H.261) muss Bit 9 beispielsweise 1 und Bit 8 null sein. Die Verwendung dieser Bits entspricht direkt der Verwendung von frame_motion_type oder field_motion_type Bits in Abschnitt 6.3.17.1 und Den Tabellen 6-17 und 6-18 von MPEG-2-Video, wenn diese Bits in MPEG-2 vorhanden sind. Die Verwendung dieser Bits wird im folgenden Abschnitt "Hinweise" weiter erläutert. |
7 und 6 |
MBscanMethod- Diese Variable hat keine Bedeutung, und diese Bits sollten in dieser Struktur auf Null festgelegt werden. |
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 die frame_pred_frame_DCT Variable in der MPEG-2-Syntax 1 lautet und gleich der dct_type Variable in der MPEG-2-Syntax sein muss, wenn dct_type für den Makroblock vorhanden ist. |
4 |
H261LoopFilter- Gibt an, ob der H.261-Schleifenfilter (Abschnitt 3.2.3 von H.261) für die aktuelle Makroblockvorhersage aktiv ist. Der H.261-Schleifenfilter ist ein separierbarer 1/4-, 1/2-, 1/4-Filter, der sowohl horizontal als auch vertikal auf alle sechs Blöcke in einem H.261-Makroblock angewendet wird, außer bei Blockkanten, bei denen einer der Tipper außerhalb des Blocks liegt. In solchen Fällen wird der Filter geändert, um Koeffizienten 0, 1, 0 zu haben. Die vollständige arithmetische Genauigkeit wird mit Rundung auf 8-Bit-Ganzzahlen bei der Ausgabe des 2D-Filterprozesses beibehalten (halbzahlige oder höhere Werte, die aufgerundet werden). |
3 |
Motion4MV- Eine Variable, die angibt, dass Vorwärtsbewegung einen eindeutigen Bewegungsvektor für jeden der vier Leuchtdichteblöcke im Makroblock verwendet, wie in den Anhängen H.263 F und J. Motion4MV muss null sein, wenn MotionForward null ist oder wenn das bPic4MVallowed-Element von DXVA_PictureParameters null ist. |
2 |
MotionBackward- Wird in der für die entsprechenden macroblock_motion_backward Variablen in MPEG-2 angegebenen Weise verwendet. Wenn das bPicBackwardPrediction-Mitglied von DXVA_PictureParameters null ist, muss MotionBackward null sein. Die Verwendung dieses Bits wird weiter im folgenden Abschnitt "Hinweise" erläutert. |
1 |
MotionForward- Wird für die entsprechende macroblock_motion_forward Variable in MPEG-2 verwendet. Die Verwendung dieses Bits wird weiter im folgenden Abschnitt "Hinweise" erläutert. |
0 |
IntraMacroblock- Gibt an, dass der Makroblock als intracodiert ist und keine Bewegungsvektoren für den aktuellen Makroblock verwendet werden. Entspricht macroblock_intrain MPEG-2. Die Verwendung dieses Bits wird weiter im folgenden Abschnitt "Hinweise" erläutert. |
dwMB_SNL
Gibt die Anzahl der übersprungenen Makroblocks an, die nach dem aktuellen Makroblock generiert werden sollen, und gibt die Position der Restdifferenzdaten für die Blöcke des aktuellen Makroblocks an. Dieses Element enthält zwei Variablen: MBskipsFollowing in den wichtigsten 8 Bits und MBdataLocation- in den am wenigsten signifikanten 24 Bit. MBskipsFollowing gibt die Anzahl der übersprungenen Makroblocks an, die nach dem aktuellen Makroblock generiert werden sollen. MBdataLocation- ist ein Index im Restdifferenz-Blockdatenpuffer. 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 aktuellen Makroblock gesendet werden.
Bit (11-i) von wPatternCode- (wobei Bit Null die am wenigsten signifikanten Bits 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 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). Für 4:2:0 MPEG-2-Daten entspricht der Wert von wPatternCode dem Verschieben des decodierten Werts des CBP (codiertes Blockmuster) nach links um sechs Bitpositionen (die niedrigeren Bitpositionen werden für 4:2:2 und 4:4:4 Chroma-Formate verwendet).
Wenn das bConfigSpatialResidInterleaved Member von DXVA_ConfigPictureDecode 1 ist, werden hostbasierte Restunterschiede in einer farbübergreifenden Form gesendet, die dem verwendeten YUV-Pixelformat entspricht. In diesem Fall wird jedes Cb- und raumbezogene Cr-Blöckepaar als einzelne Restdifferenzstruktureinheit behandelt. Dadurch wird der Wert oder die Bedeutung von wPatternCode-nicht geändert, aber es impliziert, dass beide Elemente der einzelnen Cb- und Cr-Datenblöcke gesendet werden, wenn eine dieser Datenblöcke den entsprechenden Bitsatz in wPatternCodehat. Wenn das Bit in wPatternCode- für einen bestimmten Datenblock null ist, müssen die entsprechenden Restdifferenzdatenwerte als Null gesendet werden, wenn bei dieser Kopplung ein Restunterschiedsdatenblock für einen Block mit einem wPatternCode Bit gleich Null gesendet werden muss.
wPC_Overflow
Gibt an, welche Blöcke des Makroblocks Restdifferenzdaten verwenden.
Bei Verwendung der hostbasierten Restdifferenzdecodierung mit den bPicOverflowBlocks Member von DXVA_PictureParameters gleich 1 und IntraMacroblock gleich Null (die 8-8-Überlaufmethode) enthält wPC_Overflow den Mustercode der Überlaufblöcke. (Der Mustercode wird auf die gleiche Weise wie für wPatternCode-angegeben.) Die Daten für die codierten Überlaufblöcke (diese Blöcke mit Bit (11-i) gleich 1) werden im Restcodierungspuffer in derselben Indizierungsreihenfolge (erhöhen i) gefunden.
dwReservedBits2
Reservierte Bits, die für Verpackung und Ausrichtung verwendet werden. Muss null sein.
MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off]
Ein Array, das den Wert des Bewegungsvektors für den Makroblock enthält, wird jeder Bewegungsvektor durch eine DXVA_MVvalue Struktur dargestellt.
Bemerkungen
Jeder von MBskipsFollowing angegebene übersprungene Makroblock muss auf eine Weise generiert werden, die mathematisch dem Erhöhen des Werts von wMBaddress entspricht und dann denselben Makroblock-Steuerelementbefehl wiederholt.
Der Inhalt eines Makroblock-Steuerelementbefehls mit einem Wert ungleich Null für MBskipsFollowing entspricht (mit Ausnahme des Werts von MBskipsFollowing) dem Inhalt der ersten Reihe von übersprungenen Makroblocks. Wenn also MBskipsFollow ing nicht null ist, müssen die folgenden Strukturelemente und Variablen gleich Null sein: Motion4MV, IntraMacroblock, wPatternCodeund wPC_Overflow. Jeder nachfolgende übersprungene Makroblock wird dann auf die gleiche Weise wie der erste generiert, mit Ausnahme der Inkrementierung des Werts von wMBaddress.
MBdataLocation- muss für den ersten Makroblock im Befehlspuffer des Makroblock-Steuerelements null sein. Bei Makroblocks außer dem ersten Makroblock im Befehlspuffer des Makroblock-Steuerelements kann MBdataLocation- beliebige Werte enthalten, wenn wPatternCode- null ist. Wenn wPatternCode null ist, werden Decoder empfohlen, aber nicht erforderlich, um diesen Wert entweder auf Null oder auf denselben Wert wie im nächsten Makroblock-Steuerelementbefehl festzulegen.
Weitere Informationen dazu, wie übersprungene Makroblocks generiert werden, finden Sie unter Generieren von übersprungenen Makroblocks.
Gültige Kombinationen aus IntraMacroblock, MotionForward, MotionBackward, MotionType, MvertFieldSelund MVector werden in den Tabellen in Ersten Teil der Makroblock-Befehlsstrukturangezeigt.
Anforderungen
Anforderung | Wert |
---|---|
Header- | dxva.h (include Dxva.h) |