estructura DXVA_PictureParameters (dxva.h)
El descodificador del host envía la estructura DXVA_PictureParameters al acelerador para proporcionar los parámetros de nivel de imagen de una imagen comprimida para la descodificación en el acelerador.
typedef struct _DXVA_PictureParameters {
WORD wDecodedPictureIndex;
WORD wDeblockedPictureIndex;
WORD wForwardRefPictureIndex;
WORD wBackwardRefPictureIndex;
WORD wPicWidthInMBminus1;
WORD wPicHeightInMBminus1;
BYTE bMacroblockWidthMinus1;
BYTE bMacroblockHeightMinus1;
BYTE bBlockWidthMinus1;
BYTE bBlockHeightMinus1;
BYTE bBPPminus1;
BYTE bPicStructure;
BYTE bSecondField;
BYTE bPicIntra;
BYTE bPicBackwardPrediction;
BYTE bBidirectionalAveragingMode;
BYTE bMVprecisionAndChromaRelation;
BYTE bChromaFormat;
BYTE bPicScanFixed;
BYTE bPicScanMethod;
BYTE bPicReadbackRequests;
BYTE bRcontrol;
BYTE bPicSpatialResid8;
BYTE bPicOverflowBlocks;
BYTE bPicExtrapolation;
BYTE bPicDeblocked;
BYTE bPicDeblockConfined;
BYTE bPic4MVallowed;
BYTE bPicOBMC;
BYTE bPicBinPB;
BYTE bMV_RPS;
BYTE bReservedBits;
WORD wBitstreamFcodes;
WORD wBitstreamPCEelements;
BYTE bBitstreamConcealmentNeed;
BYTE bBitstreamConcealmentMethod;
} DXVA_PictureParameters, *LPDXVA_PictureParameters;
wDecodedPictureIndex
Especifica el búfer de fotogramas de destino para los macrobloqueos descodificados.
wDeblockedPictureIndex
Especifica el búfer de fotogramas de destino para la imagen de salida desbloqueada cuando bPicDeblocked es 1. Este miembro no tiene ningún significado y debe ser cero si bPicDeblocked es cero. Este miembro puede ser el mismo que wDecodedPictureIndex.
wForwardRefPictureIndex
Especifica el índice de búfer de fotogramas de la imagen que se va a usar como imagen de referencia para la predicción hacia delante de la imagen actual. No debe ser igual que wDecodedPictureIndex. Este miembro debe ser 0xFFFF si bPicIntra es 1.
wBackwardRefPictureIndex
Especifica el índice de búfer de fotogramas de la imagen que se va a usar como imagen de referencia para la predicción hacia atrás de la imagen actual. Este miembro no debe ser el mismo que wDecodedPictureIndex si se usa la predicción de movimiento de referencia hacia atrás. Este miembro debe ser 0xFFFF si bPicBackwardPrediction es cero.
wPicWidthInMBminus1
Especifica el ancho de la imagen actual en unidades de macrobloqueos, menos 1. El ancho de la imagen en macroblocks se deriva agregando 1 a wPicWidthInMBminus1.
wPicHeightInMBminus1
Especifica el alto de la imagen actual en unidades de macrobloqueos, menos 1. El alto de la imagen en macroblocks se deriva agregando 1 a wPicHeightInMBminus1.
bMacroblockWidthMinus1
Especifica el ancho de muestra de luminancia de destino de un bloque de macros, menos 1. Esto es igual a 15 para MPEG-1, MPEG-2, H.263 y MPEG-4.
bMacroblockHeightMinus1
Especifica el alto de la muestra de luminancia de destino de un bloque de macros, menos 1. Esto es igual a 15 para MPEG-1, MPEG-2, H.261, H.263 y MPEG-4.
bBlockWidthMinus1
Especifica el ancho de bloque de un bloque de diferencia residual menos 1. Esto es igual a 7 para MPEG-1, MPEG-2, H.261, H.263 y MPEG-4. Esto es 7 si el bConfig4GroupedCoefs miembro de la estructura de DXVA_ConfigPictureDecode es 1. Los bloques de diferencia residual dentro de un macrobloque se envían en el orden especificado como en las figuras MPEG-2 6-10, 6-11 y 6-12 (orden de examen ráster para Y, seguido de los 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:4 bloques de Cb, seguido de 4:4:4 bloques de Cr). Un término derivado denominado T se forma agregando 1 a bBlockWidthMinus1.
bBlockHeightMinus1
Especifica el alto de bloque de un bloque de diferencia residual, menos 1. Esto es igual a 7 para MPEG-1, MPEG-2, H.261, H.263 y MPEG-4. Esto es 7 si bConfig4GroupedCoefs es 1. Un término derivado denominado HT se forma agregando 1 a bBlockHeightMinus1.
bBPPminus1
Especifica el número de bits por píxel para los valores de ejemplo de vídeo, menos 1. Esto es al menos 7 (que indica píxeles de 8 bits). Esto es igual a 7 para MPEG-1, MPEG-2, H.261 y H.263. Se admite un mayor número de bits por píxel en algunos modos operativos de MPEG-4. Un término derivado denominado BPP se forma agregando 1 a bBPPminus1.
bPicStructure
Indica si la imagen actual es una imagen de campo superior (un valor 1), una imagen de campo inferior (un valor 2) o una imagen de marco (un valor 3). En la codificación estructurada por fotogramas de examen progresivo, como en H.261, bPicStructure es 3. Un valor derivado PicCurrentField se define como cero a menos que bPicStructure sea 2 (campo inferior). En cuyo caso, es 1. Este miembro tiene el mismo significado que la variable picture_structure definida en la sección 6.3.10 y la tabla 6-14 de MPEG-2 (H.262).
bSecondField
Indica si, en el caso de codificación estructurada por campos (cuando bPicStructure es 1 o 2), el campo actual es el segundo campo de una imagen. Se usa para determinar si el campo de paridad opuesto utilizado como referencia para las líneas de paridad opuestas para la predicción de compensación de movimiento es el campo de paridad opuesto de la imagen de referencia o el campo de paridad opuesto de la imagen actual. Si bSecondField es 1, el campo actual es el segundo campo de una imagen y el campo utilizado como referencia para las líneas de paridad opuestas para la compensación de movimiento son las líneas de paridad opuestas de la imagen actual. (En ambos casos, el campo utilizado como referencia para las mismas líneas de paridad para la compensación de movimiento son las mismas líneas de paridad de la imagen de referencia). De lo contrario, bSecondField es cero.
bPicIntra
Indica si se necesita una predicción compensada por movimiento para esta imagen. Si bPicIntra es 1, se envían todos los bloques de macro con la estructura de comandos de control de DXVA_MBctrl_I_OffHostIDCT_1 o DXVA_MBctrl_I_HostResidDiff_1 macroblock, en la que la marca IntraMacroblock es igual a 1 . Es decir, no se realiza ninguna predicción compensada por movimiento para la imagen. De lo contrario, algunos macrobloqueos de la imagen pueden tener el parámetro IntraMacroblock del comando de control de macrobloqueo igual a cero y la estructura del comando de control de macrobloqueo usará la estructura de control de DXVA_MBctrl_P_HostResidDiff_1 o la estructura DXVA_MBctrl_P_OffHostIDCT_1.
bPicBackwardPrediction
Indica si algún macrobloqueo de la imagen actual podría incluir la predicción hacia atrás. Si bPicIntra es 1, bPicBackwardPrediction debe ser cero. Si bPicBackwardPrediction es cero, MotionBackward debe ser cero en todos los comandos de control de macrobloqueo de la imagen (dentro de cada DXVA_MBctrl_I_HostResidDiff_1, DXVA_MBctrl_I_OffHostIDCT_1, DXVA_MBctrl_P_HostResidDiff_1 o DXVA_MBctrl_P_OffHostIDCT_1 estructura). Si bPicBackwardPrediction es 1, algunos bloques de macros de la imagen pueden tener MotionBackward igual a 1.
bBidirectionalAveragingMode
Indica el método de redondeo para combinar planos de predicción en compensación de movimiento bidireccional (utilizado para imágenes B y movimiento de doble primo). El valor cero indica MPEG-1 y MPEG-2 un promedio redondeado (en el que los valores a mitad de camino entre dos enteros se redondean hacia arriba al siguiente entero superior) y el valor 1 indica H.263 un promedio truncado (en el que los valores medio entre dos enteros se redondean hacia abajo al siguiente entero inferior). bBidirectionalAveragingMode debe ser cero si no se necesita un promedio bidireccional.
bMVprecisionAndChromaRelation
Este miembro indica la precisión de los vectores de movimiento de luminancia y cómo se derivan los vectores de movimiento de cromoinancia a partir de vectores de movimiento de luminancia.
En la tabla siguiente se enumeran los valores de este miembro con la precisión del vector de movimiento de luminancia especificada y una descripción de cómo se derivan los vectores de movimiento de cromoinancia.
valor | descripción |
---|---|
0 | Los vectores de movimiento de luminancia tienen precisión de media muestra. Los vectores de movimiento de cromo se derivan de vectores de movimiento de luminancia de acuerdo con MPEG-2 (H.262) . |
1 | Los vectores de movimiento de luminancia tienen precisión de media muestra. Los vectores de movimiento de cromoinancia se derivan de vectores de movimiento de luminancia de acuerdo con H.263 . |
2 | Los vectores de movimiento de luminancia tienen precisión de muestra completa. Los vectores de movimiento de cromoinancia se derivan de vectores de movimiento de luminancia de acuerdo con H.261 (dividiendo por dos y truncando hacia cero a valores de muestra completa). |
3 | Reservado. |
bChromaFormat
Afecta al número de bloques de error de predicción esperados por el acelerador. Esta variable se define en MPEG-2 (H.262). Para MPEG-1, MPEG-2 Main Profile, H.261 y H.263 bitstreams, este valor siempre debe establecerse en 1, lo que indica el formato 4:2:0. Si un valor de 2, indica 4:2:2 y, si un valor de 3, indica el muestreo 4:4:4. Este miembro debe ser igual a 1 si el bConfig4GroupedCoefs miembro de DXVA_ConfigPictureDecode es 1 (porque operación bConfig4GroupedCoefs no incluye la indicación EOB necesaria dentro de los datos de coeficiente en formatos 4:2:2 y 4:4:4).
Nota
El siting de cromática horizontal difiere ligeramente entre H.261, H.263 y MPEG-1 frente a MPEG-2 y MPEG-4. Se supone que esta diferencia es lo suficientemente pequeña como para ignorarla.
bPicScanFixed
Cuando se usa el procesamiento de IDCT basado en aceleradores de bloques de diferencia residual, un valor de 1 para esta marca indica que el método de examen inverso es el mismo para todos los bloques de macros de la imagen. Un valor de cero indica que no lo es. Este miembro debe ser 1 si el miembro bConfigHostInverseScan es 1 o si el miembro bConfigResidDiffAccelerator es cero en DXVA_ConfigPictureDecode.
bPicScanMethod
Indica el método de examen inverso fijo para la imagen cuando bPicScanFixed es 1. Cuando bPicScanFixed es cero, este miembro no tiene ningún significado y debe tener un valor de cero.
Si el bConfigHostInverseScan miembro de DXVA_ConfigPictureDecode es cero, el método de examen definido por este miembro puede ser uno de los siguientes.
bPicScanMethod | Scan (método) |
---|---|
0 | Examen zigzag (MPEG-2) |
1 | Examen vertical alternativo (MPEG-2) |
2 | Examen horizontal alternativo (H.263) |
Si el miembro bConfigHostInverseScan de DXVA_ConfigPictureDecode es 1, el método de examen definido por bPicScanMethod debe establecerse de la siguiente manera.
bPicScanMethod | Scan (método) |
---|---|
3 | Examen arbitrario con dirección de coeficiente absoluto. |
bPicReadbackRequests
Indica si las solicitudes de control de lectura inversa se emiten para la imagen actual. Un valor de 1 indica que las solicitudes de lectura inversa están presentes y un valor de cero indica que no lo son. Las solicitudes de reenvío indican que los valores de los bloques de macros se leen en la imagen descodificada y descodificada final (si se aplica el desbloqueo con wDeblockedPictureIndex igual a wDecodedPictureIndex).
bRcontrol
Define el método de redondeo que se va a usar para la compensación de movimiento de muestra media. Esta variable se define en H.263 Section 6.1.2. Un valor de cero indica el método de redondeo de media muestra que se encuentra en MPEG-1, MPEG-2 y la primera versión de H.263. Un valor de 1 indica el método de redondeo que incluye un sesgo de promedio descendente que se puede seleccionar en algunos modos opcionales de H.263 y MPEG-4. No tiene sentido para H.261, porque H.261 no tiene compensación de movimiento de media muestra. Debe establecerse en cero para todas las secuencias de bits MPEG-1 y MPEG-2 para cumplir con el operador de redondeo definido por esos estándares.
bPicSpatialResid8
Indica cómo se envían los bloques de diferencia de dominio espacial al acelerador desde el host. Un valor de 1 indica que los bloques de diferencia de dominio espacial para la descodificación de diferencia residual basada en host se pueden enviar mediante muestras de 8 bits y un valor de cero indica que no pueden.
Este miembro debe ser cero si el bConfigResidDiffHost miembro de DXVA_ConfigPictureDecode es cero o si BPP es mayor que 8. Este miembro debe ser 1 si BPP es 8, bPicIntra es 1 y bConfigResidDiffHost es 1. Este miembro debe ser 1 si el bConfigSpatialResid8 miembro de DXVA_ConfigPictureDecode es 1.
Si este miembro es igual a 1, los bloques intra macrobloqueos de dominio espacial se envían como valores de 8 bits (que están firmados o sin firmar, según lo determinado por el bConfigIntraResidUnsigned miembro de DXVA_ConfigPictureDecode) y las diferencias de macrobloque no de dominio espacial se envían como valores de diferencia de 8 bits firmados en relación con alguna predicción compensada por movimiento.
El miembro bPicSpatialResid8 difiere del bConfigSpatialResid8 miembro de DXVA_ConfigPictureDecode en que es una indicación de una imagen determinada, no una indicación global para toda la secuencia de vídeo. En algunos casos, como en un intra picture con BPP igual a 8, bPicSpatialResid8 será 1 aunque bConfigSpatialResid8 puede ser cero.
bPicOverflowBlocks
Indica si los bloques de diferencia de dominio espacial se envían al acelerador desde el host mediante bloques de desbordamiento. Un valor de 1 indica que los bloques de diferencia de dominio espacial para la descodificación de diferencia residual basada en host de una imagen se pueden enviar mediante bloques de desbordamiento. Un valor de cero indica que los bloques de diferencia de dominio espacial no se envían mediante bloques de desbordamiento. Este miembro debe ser cero si bConfigResidDiffHost es cero o si bConfigSpatialResid8 es cero o si BPP es mayor que 8. Los parámetros bConfigResidDiffHost y bConfigSpatialResid8 son miembros de DXVA_ConfigPictureDecode. bPicOverflowBlocks indica si los bloques de desbordamiento pueden estar presentes para la imagen concreta. En una imagen intra con BPP igual a 8, bPicOverflowBlocks debe ser cero, ya que no se necesitan bloques de desbordamiento en este caso.
bPicExtrapolation
Indica si los vectores de movimiento a través de los límites de imagen se permiten según lo especificado por el Anexo D y MPEG-4 de H.263. Esto requiere la asignación de planos de imagen que son dos macrobloqueos más anchos (un macrobloque adicional a la izquierda y otro a la derecha) y dos macrobloqueos más altos (un macrobloque adicional en la parte superior y otra en la parte inferior) que el tamaño de imagen descodificado o el recorte de la dirección de cada píxel individual acceso a dentro de los límites de la imagen. Las direcciones de macrobloqueo de esta especificación son para los bloques de macros en el interior de la imagen, sin incluir relleno.
bPicDeblocked
Indica si se envían comandos de desbloqueo para esta imagen para crear una imagen de salida desbloqueada. La imagen de salida desbloqueada se coloca en el búfer de imágenes indicado por wDeblockedPictureIndex. Si bPicDeblocked es 1, se envían comandos de desbloqueo y se genera el marco desbloqueado. Si bPicDeblocked es cero, no se envían comandos de desbloqueo y no se genera ninguna imagen desbloqueada.
bPicDeblockConfined
Indica si el desbloqueo de los búferes de comandos de filtro de desbloqueo limita el efecto de las operaciones de filtro de desbloqueo al conjunto de macrobloqueos contenidos en el búfer de comandos del filtro de desbloqueo.
bPic4MVallowed
Especifica si se permiten cuatro vectores de movimiento de referencia hacia delante por macrobloqueo, tal como se usa en los anexos H.263 F y J.
bPicOBMC
Especifica si la compensación de movimiento de la imagen actual funciona utilizando la compensación de movimiento de bloque superpuesta (OBMC) tal como se especifica en el Anexo F H.263. Debe ser cero si bPic4MVallowed es cero.
bPicBinPB
Especifica si los bloques de macro predichos bidireccionalmente en la imagen usan la compensación de movimiento B-picture en pb-frame. Esto restringe el área de predicción bidireccional de cada macrobloque a la región del macrobloque correspondiente en la imagen de referencia hacia atrás, tal como se especifica en los anexos G y M de H.263.
bMV_RPS
Especifica el uso de la selección de imagen de referencia de vector de movimiento. Si bMV_RPS es 1, esto indica que se envía un índice de imagen de referencia para cada vector de movimiento en lugar de simplemente hacia delante y posiblemente hacia atrás índices de imagen de movimiento para la imagen en su conjunto. Si bMV_RPS es 1, los wForwardRefPictureIndex y miembros wBackwardRefPictureIndex no tienen ningún significado y deben ser cero.
bReservedBits
Esto está reservado para el empaquetado y la alineación. Debe ser cero.
wBitstreamFcodes
Indica el vector de movimiento f_code valores tal como se define en MPEG-2 para el procesamiento de secuencias de bits sin procesar. Cada valor de f_code toma 4 bits. Estos valores se empaquetan en una palabra de 16 bits como se indica a continuación.
Bits | Descripción |
---|---|
De 12 a 15 (los bits más significativos) | f_code[0][0]: el f_code horizontal hacia delante |
De 8 a 11 | f_code[0][1]: el f_code vertical hacia delante |
De 4 a 7 | f_code[1][0]: La f_code horizontal hacia atrás |
De 0 a 3 (los bits menos significativos) | f_code[1][1]: La f_code vertical hacia atrás |
Cuando el miembro bConfigBitstreamRaw de la estructura DXVA_ConfigPictureDecode es 1, wBitstreamFcodes contiene cuatro valores de vector de movimiento f_code. Si bConfigBitstreamRaw es 1 y cualquiera de los cuatro valores f_code es innecesario o irrelevante debido a la estructura de los datos de secuencia de bits o debido a que el valor de f_code no es necesario en la sintaxis de secuencia de bits de codificación de vídeo pertinente (por ejemplo, en H.261 o H.263), cada valor irrelevante f_code es 0xF.
Si el bConfigBitstreamRaw miembro de la estructura DXVA_ConfigPictureDecode es cero, wBitstreamFcodes se establece en 0xFFFF (todos los valores de f_code se establecen en 0xF).
Nota
Las secuencias de bits MPEG-1 proporcionan esta información de forma diferente. Por lo tanto, para las secuencias de bits MPEG-1, f_code[0][0] y f_code[0][1] son iguales a los forward_f_code MPEG-1 y f_code[1][0] y f_code[1][1] son iguales a los backward_f_code MPEG-1.
wBitstreamPCEelements
Cuando el bConfigBitstreamRaw miembro de DXVA_ConfigPictureDecode es 1, este miembro contiene un conjunto de marcas necesarias para el proceso de descodificación de secuencia de bits del vídeo MPEG-2. No se usa y debe ser cero cuando bConfigBitstreamRaw es cero y para vídeo que no sea MPEG-2. Los bits de este miembro se definen mediante su correspondencia con elementos de secuencia de bits de la extensión de codificación de imágenes MPEG-2 como se indica a continuación.
Bits | Descripción |
---|---|
14 y 15 | IntraDCprecision es igual a intra_dc_precision. |
12 y 13 | AnotherPicStructure es igual a picture_structure. Debe ser igual al miembro bPicStructure de esta estructura. |
11 | TopFieldFirst es igual a top_field_first. |
10 | FrameDCTprediction es igual a frame_pred_frame_dct. |
9 | OcultarMVs es igual a concealment_motion_vectors. |
8 | QuantScaleType es igual a q_scale_type. |
7 | IntraVLCformat es igual a intra_vlc_format. |
6 | AlternateScan es igual a alternate_scan. |
5 | RepeatFirstField es igual a repeat_first_field (no es necesario por el acelerador). |
4 | Cro420type es igual a chroma_420_type (no es necesario por el acelerador y restringido por MPEG-2 para ser igual a progressive_frame). |
3 | ProgressiveFrame es igual a progressive_frame. |
0, 1 y 2 | Bits reservados. Estos son los bits menos significativos. |
bBitstreamConcealmentNeed
Indica la probabilidad de errores en los datos de secuencia de bits cuando el bConfigBitstreamRaw miembro de la estructura DXVA_ConfigPictureDecode es 1. Debe ser cero si bConfigBitstreamRaw es cero.
Los aceleradores de vídeo deben diseñarse para no producir errores ni bloquearlos, independientemente del contenido de los datos que se les haya proporcionado. Por lo tanto, puede resultar útil que un acelerador de vídeo tenga información sobre la evaluación del host de la probabilidad de errores sintácticos. Esto es para determinar si es necesario invocar un algoritmo de ocultación de errores más complejo que podría ralentizar el proceso de descodificación de secuencia de bits. Los valores permitidos para este miembro son los siguientes (todos los demás valores están reservados).
Valor | Significado |
---|---|
0 | Es poco probable que la secuencia de bits contenga una cantidad significativa de errores en su formato sintáctico. |
1 | La secuencia de bits puede contener algunos errores. Es probable que estos errores sean poco frecuentes (por ejemplo, un error una o dos veces por hora). |
2 | Es probable que la secuencia de bits contenga algunos errores. Es probable que estos errores se produzcan con una frecuencia que pueda afectar a la experiencia del usuario (por ejemplo, un error cada cinco a diez minutos). |
3 | Es probable que la secuencia de bits contenga errores de formato sintáctico relativamente significativos, graves y frecuentes (por ejemplo, uno o más errores por minuto). |
bBitstreamConcealmentMethod
Especifica un método predeterminado preferido para el procesamiento de ocultación de errores cuando el bConfigBitstreamRaw miembro de la estructura DXVA_ConfigPictureDecode es 1. Debe ser cero si bConfigBitstreamRaw es cero. Los valores permitidos para este miembro son los siguientes (todos los demás valores están reservados).
valor | método de ocultación de errores de |
---|---|
0 | Desconocido o no especificado. |
1 | Ocultación espacial dentro de la imagen. |
2 | Imagen de referencia de movimiento hacia delante para la ocultación entre imágenes (que se usará más normalmente en una imagen de P o en una imagen B que esté más cerca de su imagen de referencia de movimiento hacia delante que de su imagen de referencia de movimiento hacia atrás). |
3 | Imagen de referencia de movimiento hacia atrás para la ocultación entre imágenes (que se usará más normalmente en una imagen B que esté más cerca de su imagen de referencia hacia atrás que a su imagen de referencia de movimiento hacia delante). |
Algunos miembros de esta estructura están restringidos a valores específicos por la configuración establecida mediante la estructura DXVA_ConfigPictureDecode. Una vez que los parámetros de nivel de imagen se transmiten mediante DXVA_PictureParameters, el proceso de descodificación de imágenes se rige principalmente por comandos de control de macrobloqueo formados mediante las estructuras de DXVA_MBctrl_I_HostResidDiff_1, DXVA_MBctrl_I_OffHostIDCT_1, DXVA_MBctrl_P_HostResidDiff_1o DXVA_MBctrl_P_OffHostIDCT_1.
Requisito | Valor |
---|---|
encabezado de | dxva.h (include Dxva.h) |