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