estructura DXVA_MBctrl_I_HostResidDiff_1 (dxva.h)
El descodificador host envía una vez por cada macroblock a la estructura de DXVA_MBctrl_I_HostResidDiff_1 para especificar comandos de control de macroblock para una imagen interna.
Sintaxis
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;
Miembros
wMBaddress
Especifica la dirección de bloqueo de macros del bloque de macros actual en orden de examen de trama. Para obtener ejemplos de direcciones de macroblock, consulte Direcciones de bloqueo de macros.
wMBtype
Especifica el tipo de macroblock que se está procesando. Los bits siguientes definen el procesamiento de macrobloqueos.
Bits | Descripción |
---|---|
De 15 a 12 | MvertFieldSel_3 (bit 15, el bit más significativo) a través de MvertFieldSel_0 (bit 12) Especifica la selección de campo vertical para los vectores de movimiento correspondientes enviados más adelante en el comando de control de macroblock. Para el movimiento basado en fotogramas con una estructura de imagen de marco (por ejemplo, para H.261 y H.263), estos bits deben ser cero. Los bits de MvertFieldSel_0, MvertFieldSel_1, MvertFieldSel_2 y MvertFieldSel_3 corresponden a los bits de motion_vertical_field_select[r][s] de la sección 6.3.17.2 de MPEG-2. |
11 | Bit reservado Debe ser cero. |
10 | HostResidDiff Especifica si se envían bloques descodificados de diferencia residual de dominio espacial o si se envían coeficientes de transformación para idCT fuera del host para el bloque de macros actual. HostResidDiff siempre es igual a 1 en esta estructura. Esta marca debe ser cero si bConfigResidDiffHost es cero. Esta marca debe ser 1 si bConfigResidDiffAccelerator es cero. Los miembros bConfigResidDiffHost y bConfigResidDiffAccelerator se encuentran en la estructura DXVA_ConfigPictureDecode . |
9 y 8 | MotionType Debe ser cero. |
7 y 6 | MBscanMethod Estos bits no tienen significado y deben establecerse en cero. |
5 | FieldResidual Indica si los bloques de diferencia residual usan una estructura IDCT de campo como se especifica en MPEG-2. Debe ser 1 si el miembro bPicStructure de DXVA_PictureParameters es 1 o 2. Cuando se usa para MPEG-2, FieldResidual debe ser cero si la marca de frame_pred_frame_DCT en la sintaxis MPEG-2 es 1 y debe ser igual a la variable dct_type de la sintaxis MPEG-2 si dct_type está presente para el macroblock. |
4 | H261LoopFilter Debe ser cero. |
3 | Motion4MV Debe ser cero. |
2 | MotionBackward Debe ser cero. |
1 | MotionForward Debe ser cero. |
0 | IntraMacroblock Debe ser 1. |
dwMB_SNL
Especifica el número de macroblocks omitidos que se van a generar después del bloque de macros actual e indica la ubicación de los datos de diferencia residual para los bloques del bloque de macroblock actual. Este miembro contiene dos variables: MBskipsFollowing en los 8 bits más significativos y MBdataLocation en los 24 bits menos significativos. MBskipsFollowing indica el número de macroblocks omitidos que se van a generar después del bloque de macros actual. MBdataLocation es un índice en el búfer de datos de bloque de diferencia residual. Este índice indica la ubicación de los datos de diferencia residual para los bloques del bloque de macrobloque actual, expresado como múltiplo de 32 bits.
wPatternCode
Indica si se envían datos de diferencia residual para cada bloque del macroblock. En una imagen interna, los datos de diferencia residual se envían para cada bloque del bloque macroblock. Los bits de wPatternCode que hacen referencia a todos los bloques del bloque de macros actual deben ser 1 en esta estructura.
Bit (11-i) de wPatternCode (donde el bit cero es el bit menos significativo) indica si los datos de diferencia residual se envían para el bloque i, donde i es el índice del bloque dentro del macroblock según se especifica en las figuras MPEG-2 6-10, 6-11 y 6-12 (orden de análisis de ráster para Y, seguido de 4:2:0 bloques de Cb en orden de examen ráster, seguido de 4:2:0 bloques de Cr, seguidos de 4:2:2 bloques de Cb, seguidos de 4:2:2 bloques de Cr, seguidos de 4:4:4 bloques de Cb, seguidos de 4:4:4:4 bloques de Cr). Los datos de los bloques codificados (esos bloques que tienen bit (11i) igual a 1) se encuentran en el búfer de codificación residual en el mismo orden de indexación ( aumentando i). Para los datos MPEG-2 de 4:2:0, el valor de wPatternCode corresponde a cambiar el valor descodificado del CBP (patrón de bloque codificado) a la izquierda por seis posiciones de bits (esas posiciones de bits inferiores que se usan para formatos de cromática 4:2:2 y 4:4:4).
Si el miembro bConfigSpatialResidInterleaved de la estructura de DXVA_ConfigPictureDecode es 1, las diferencias residuales basadas en host se envían en una forma intercalada cromática que coincida con la del formato de píxel YUV en uso. En este caso, cada par cb y cr correspondiente espacialmente de bloques se trata como una sola unidad de estructura de diferencia residual. Esto no modifica el valor ni el significado de wPatternCode, pero implica que ambos miembros de cada par de bloques de datos Cb y Cr se envían siempre que alguno de estos bloques de datos tenga el bit correspondiente establecido en wPatternCode. Si el bit de wPatternCode para un bloque de datos determinado es cero, los valores de datos de diferencia residual correspondientes se deben enviar como cero siempre que este emparejamiento requiera enviar un bloque de datos de diferencia residual para un bloque con un bit wPatternCode igual a cero.
wPC_Overflow
Debe ser cero.
dwReservedBits2
Bits reservados usados para empaquetar y alinear. Debe ser cero.
Comentarios
Las macroblocks omitidas no se usan en imágenes intra, por lo que la variable MBskipsFollowing debe ser cero. La variable MBdataLocation debe ser cero para el primer bloque de macros en el búfer del comando de control de macroblock. Para obtener más información sobre cómo se generan los macroblocks omitidos, consulte Generación de macros omitidas.
Requisitos
Requisito | Valor |
---|---|
Header | dxva.h (include Dxva.h) |