Compartir a través de


estructura DXVA_MBctrl_P_HostResidDiff_1 (dxva.h)

El descodificador del host envía la estructura DXVA_MBctrl_P_HostResidDiff_1 una vez por cada bloque de macros al acelerador para especificar comandos de control de macrobloqueo para la mayoría de los casos de imagen que no son de entrada al usar IDCT basado en host.

Sintaxis

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;

Miembros

wMBaddress

Especifica la dirección de macrobloqueo del bloque de macros actual en orden de examen de trama. Para obtener ejemplos de direcciones de macrobloqueo, consulte direcciones de macrobloqueo.

wMBtype

Especifica el tipo de macroblock que se está procesando. Los bits siguientes definen el contenido de wMBtype.

bits de 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 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. El uso de estos bits es el mismo que el especificado para los bits correspondientes de la sección 6.3.17.2 de MPEG-2.
11 Bit reservado. Debe ser cero.
10 hostResidDiff de
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.
La marca HostResidDif 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.
9 y 8 MotionType
Especifica el tipo de movimiento de la imagen. Por ejemplo, para el movimiento basado en fotogramas con una estructura de imagen de marco (como en H.261), el bit 9 debe ser 1 y el bit 8 debe ser cero.
El uso de estos bits corresponde directamente al uso de frame_motion_type o field_motion_type bits en la sección 6.3.17.1 y las tablas 6-17 y 6-18 de vídeo MPEG-2 cuando estos bits están presentes en MPEG-2. El uso de estos bits se explica más en la sección Comentarios siguiente.
7 y 6 MBscanMethod
Esta variable no tiene significado y estos bits deben establecerse en cero en esta estructura.
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 variable frame_pred_frame_DCT en la sintaxis MPEG-2 es 1 y debe ser igual a la variable dct_type en la sintaxis MPEG-2 si dct_type está presente para el bloque de macros.
4 H261LoopFilter
Especifica si el filtro de bucle H.261 (sección 3.2.3 de H.261) está activo para la predicción actual de macrobloqueo. El filtro de bucle H.261 es un filtro separado de 1/4, 1/2, 1/4 aplicado horizontal y verticalmente a los seis bloques de un macrobloque H.261, excepto en los bordes del bloque donde uno de los grifos caería fuera del bloque. En tales casos, el filtro se cambia para tener coeficientes 0, 1, 0. La precisión aritmética completa se conserva con redondeo a enteros de 8 bits en la salida del proceso de filtro 2D (valores enteros medio o superior que se redondean hacia arriba).
3 Motion4MV
Variable que indica que el movimiento hacia delante usa un vector de movimiento distinto para cada uno de los cuatro bloques de luminancia del macrobloque, como se usa en los anexos H.263 F y J. Motion4MV debe ser cero si MotionForward es cero o si el miembro bPic4MVallowed de DXVA_PictureParameters es cero.
2 MotionBackward
Se usa de la manera especificada para la variable de macroblock_motion_backward correspondiente en MPEG-2. Si el miembro bPicBackwardPrediction de DXVA_PictureParameters es cero, MotionBackward debe ser cero. El uso de este bit se explica aún más en la sección Comentarios siguiente.
1 MotionForward
Se usa para la variable de macroblock_motion_forward correspondiente en MPEG-2. El uso de este bit se explica aún más en la sección Comentarios siguiente.
0 IntraMacroblock
Indica que el bloque de macros está codificado como intra y que no se usan vectores de movimiento para el bloque de macros actual. Corresponde a macroblock_intrain MPEG-2. El uso de este bit se explica aún más en la sección Comentarios siguiente.

dwMB_SNL

Especifica el número de bloques de macro 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 macros 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 macrobloqueos 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 de datos de diferencia residual se envía para cada bloque del bloque actual.

Bit (11-i) de wPatternCode (donde bit cero es el bits 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 bloque macroblock tal como se especifica en las figuras MPEG-2 6-10, 6-11 y 6-12 (orden de examen ráster para Y, seguido de 4:2:0 bloques de Cb en orden de examen de trama, 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 (11-i) 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 de la CBP (patrón de bloque codificado) a la izquierda por seis posiciones de bits (esas posiciones de bits inferiores que se usan para formatos cromáticos 4:2 y 4:4:4).

Si el bConfigSpatialResidInterleaved miembro 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 cr y correspondiente espacialmente correspondiente de bloques se trata como una única 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 cualquiera 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 wPatternCode bit igual a cero.

wPC_Overflow

Especifica qué bloques del bloque de macros usan datos de diferencia residual de desbordamiento.

Cuando se usa la descodificación residual basada en host con el bPicOverflowBlocks miembro de DXVA_PictureParameters igual a 1 e IntraMacroblock igual a cero (el método de desbordamiento 8-8), wPC_Overflow contiene el código de patrón de los bloques de desbordamiento. (El código de patrón se especifica de la misma manera que para wPatternCode). Los datos de los bloques de desbordamiento codificados (esos bloques que tienen bit (11-i) igual a 1) se encuentran en el búfer de codificación residual en el mismo orden de indexación (aumentando i).

dwReservedBits2

Bits reservados usados para empaquetar y alinear. Debe ser cero.

MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off]

Matriz que contiene el valor de los vectores de movimiento para el bloque de macros, cada vector de movimiento se representa mediante una estructura DXVA_MVvalue.

Observaciones

Cada macroblock omitido especificado por MBskipsFollowing debe generarse de forma matemáticamente equivalente a incrementar el valor de wMBaddress y, a continuación, repetir el mismo comando de control de macrobloqueo.

El contenido de un comando de control de macrobloqueo con un valor distinto de cero para MBskipsFollowing es equivalente (excepto el valor de MBskipsFollowing) al contenido de la primera serie de macrobloqueos omitidos. Por lo tanto, siempre que MBskipsFollowing no sea cero, los siguientes miembros de estructura y variables deben ser iguales a cero: Motion4MV, IntraMacroblock, wPatternCodey wPC_Overflow. Cada macroblock omitido posterior se genera de la misma manera que la primera, excepto para incrementar el valor de wMBaddress.

MBdataLocation debe ser cero para el primer bloque de macros en el búfer de comandos de control de macrobloqueo. En el caso de los macrobloqueos distintos del primer bloque de macros del búfer de comandos de control de macrobloqueo, MBdataLocation puede contener cualquier valor si wPatternCode es cero. Cuando wPatternCode es cero, se recomiendan descodificadores, pero no es necesario establecer este valor en cero o en el mismo valor que en el siguiente comando de control de macroblock.

Para obtener más información sobre cómo se generan los bloques de macro omitidos, vea Generar bloques de macro omitidos.

Las combinaciones válidas de IntraMacroblock, MotionForward, MotionBackward, MotionType, MvertFieldSely MVector se muestran en las tablas de primera parte de la estructura de comandos de control de macrobloque.

Requisitos

Requisito Valor
encabezado de dxva.h (include Dxva.h)

Consulte también

DXVA_ConfigPictureDecode

DXVA_MBctrl_P_OffHostIDCT_1

DXVA_MVvalue

DXVA_PictureParameters