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:
|
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) |