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 bloque de macros al acelerador para especificar comandos de control de macroblock para imágenes intra 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 bloqueo de macros del bloque de macros actual en orden de examen de trama. Para obtener ejemplos de direcciones de bloqueo de macros, vea direcciones de bloqueo de macros.

wMBtype

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

Bits 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
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:
  • Exploración en zigzag de cero ∠' (MPEG-2 Figura 7-2)
  • 1'âˆ' digitalización vertical alternativa (MPEG-2 Figura 7-3)
  • 2 âˆ' recorrido 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 se envían datos de diferencia residual 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 macroblock, tal y como se especifica en las figuras MPEG-2 de 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 de 4:2:0 MPEG-2, el valor de wPatternCode corresponde a cambiar el valor descodificado de BLOB (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).

bNumCoef[DXVA_NumBlocksPerMB_420]

Cada valor de la matriz 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 macrobloque, tal y como se especifica en el vídeo MPEG-2 Figuras 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 macroblock típicos más allá de un límite crítico de alineación de memoria. Como resultado, el bit TCoefEOB 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 miembro bConfig4GroupedCoefs de la estructura DXVA_ConfigPictureDecode es 1, bNumCoef puede contener el número real de coeficientes enviados para el bloque o ese valor redondeado para ser un múltiplo de cuatro. Los datos de estos coeficientes se encuentran en el búfer de diferencias residuales en el mismo orden.

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 del búfer de comandos de control de macroblock. Para obtener más información sobre cómo se generan los macroblocks omitidos, vea Generar macroblocks omitidos.

Requisitos

Requisito Valor
Header dxva.h (incluir Dxva.h)

Consulte también

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_HostResidDiff_1

DXVA_PictureParameters

DXVA_TCoefSingle