Compartir a través de


estructura DXVA_MBctrl_I_OffHostIDCT_1 (dxva.h)

El descodificador del host envía la estructura DXVA_MBctrl_I_OffHostIDCT_1 una vez por cada bloque de macros al acelerador para especificar comandos de control de macrobloqueo para imágenes 4:2:0 al usar IDCT fuera del host.

Sintaxis

typedef struct _DXVA_MBctrl_I_OffHostIDCT_1 {
  WORD  wMBaddress;
  WORD  wMBtype;
  DWORD dwMB_SNL;
  WORD  wPatternCode;
  BYTE  bNumCoef[DXVA_NumBlocksPerMB_420];
} DXVA_MBctrl_I_OffHostIDCT_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 procesamiento de macrobloqueos.

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)
Debe ser cero.
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 HostResidDiff siempre es igual a cero 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
Esto no se aplica a las imágenes intra. Ambos bits deben ser cero.
7 y 6 MBscanMethod
Especifica el método scan del comando de control macroblock. Debe ser igual a bPicScanMethod si bPicScanFixed es 1.
Si bConfigHostInverseScan es cero, MBscanMethod es uno de los siguientes valores:
  • Examen de zigzag cero (MPEG-2 Figura 7-2)
  • 1 âˆ' digitalización vertical alternativa (MPEG-2 Figura 7-3)
  • 2 âˆ' examen horizontal alternativo (H.263 Figura I.2 Parte a)
Si bConfigHostInverseScan es 1, MBscanMethod es igual a 3, que es un examen arbitrario con una dirección de coeficiente absoluta. bPicScanMethod y bPicScanFixed son miembros de DXVA_PictureParameters . bConfigHostInverseScan es miembro de DXVA_ConfigPictureDecode.
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 frame_pred_frame_DCT en la sintaxis MPEG-2 es 1 y debe ser igual al elemento dct_type de la sintaxis MPEG-2 si dct_type está presente para el bloque de macros.
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

wPatternCode

Indica si los datos de diferencia residual se envían para cada bloque del bloque macroblock. En una imagen intra, 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 DXVA_MBctrl_I_OffHostIDCT_1.

Bit (11-i) de wPatternCode (donde bit 0 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 bloque macroblock tal como se especifica en las figuras MPEG-2 6-10, 6-11 y 6-12 (orden de examen de trama 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 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 de 4:2:2 y 4:4:4).

bNumCoef[DXVA_NumBlocksPerMB_420]

Cada valor de la matriz de bNumCoef indica el número de coeficientes en el búfer de datos de diferencia residual para cada bloque i del bloque macroblock.

El subíndice de matriz i es el índice del bloque dentro del bloque macrobloque, tal como se especifica en las ilustraciones de vídeo MPEG-2 6-10, 6-11 y 6-12 (orden de examen de trama para Y, seguido de Cb, seguido de Cr).

Este miembro solo se usa cuando la marca HostResidDiff (bit 10 en wMBtype) es cero y bChromaFormat es 1 (4:2:0). Si se usa en formatos 4:2:2 o 4:4:4, aumentaría el tamaño de los comandos de control de macrobloque típicos más allá de un límite crítico de alineación de memoria. Como resultado, el TCoefEOB bit dentro de la estructura DXVA_TCoefSingle se usa para determinar el número de coeficientes de cada bloque en casos no 4:2:0.

El propósito de bNumCoef es indicar la cantidad de datos presentes para cada bloque en el búfer de datos de diferencia residual, expresado como el número de coeficientes presentes. Cuando el bConfig4GroupedCoefs miembro de la estructura de DXVA_ConfigPictureDecode es 1, bNumCoef puede contener el número real de coeficientes enviados para el bloque o ese valor redondeado hasta ser un múltiplo de cuatro. Los datos de estos coeficientes se encuentran en el búfer de diferencia residual en el mismo orden.

Observaciones

Los macrobloqueos omitidos no se usan en imágenes intra, por lo que el MBskipsFollowing variable debe ser cero. La variable MBdataLocation debe ser cero para el primer bloque de macros del búfer de comandos de control de macrobloqueo. Para obtener más información sobre cómo se generan los bloques de macro omitidos, vea Generar bloques de macro omitidos.

Requisitos

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

Consulte también

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_HostResidDiff_1

DXVA_PictureParameters

DXVA_TCoefSingle