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 descodificar en el acelerador.
Sintaxis
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;
Miembros
wDecodedPictureIndex
Especifica el búfer de fotogramas de destino para los macrobloques 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 muestra de luminancia de destino de un macrobloque, 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. Es 7 si el miembro bConfig4GroupedCoefs de la estructura 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 todos los bloques 4:2:0 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, seguido de 4:4:4 bloques de Cr). Un término derivado denominado WT 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 llamado 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 llamado 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 en 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 la 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, todos los macroblocks se envían con la DXVA_MBctrl_I_OffHostIDCT_1 o DXVA_MBctrl_I_HostResidDiff_1 estructura de comandos de control de 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 macroblocks de la imagen pueden tener el parámetro IntraMacroblock del comando de control de macroblock igual a cero, y la estructura de comandos de control de macroblock usará la estructura de DXVA_MBctrl_P_HostResidDiff_1 o la estructura de DXVA_MBctrl_P_OffHostIDCT_1 .
bPicBackwardPrediction
Indica si algún macrobloqueo de la imagen actual puede 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 estructura DXVA_MBctrl_P_OffHostIDCT_1). Si bPicBackwardPrediction es 1, algunos macrobloqueos 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 el promedio redondeado MPEG-1 y MPEG-2 (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 truncado promedio (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 crominancia 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 cromo.
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 cromo 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 errores 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 miembro bConfig4GroupedCoefs de DXVA_ConfigPictureDecode es 1 (porque la 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 cromático 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 inverso-scan es el mismo para todos los macrobloques 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 miembro bConfigHostInverseScan 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 de 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 absoluta. |
bPicReadbackRequests
Indica si se emiten solicitudes de control de lectura atrás para la imagen actual. Un valor de 1 indica que hay solicitudes de lectura pendiente y un valor de cero indica que no lo están. Las solicitudes de reenvío indican que los valores de los macroblocks 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 la sección 6.1.2 de H.263. 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 residual basada en host se pueden enviar mediante muestras de 8 bits y un valor de cero indica que no pueden hacerlo.
Este miembro debe ser cero si el miembro bConfigResidDiffHost 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 miembro bConfigSpatialResid8 de DXVA_ConfigPictureDecode es 1.
Si este miembro es igual a 1, los bloques de macros intradominios espaciales se envían como valores de 8 bits (que están firmados o sin firmar, según lo determinado por el miembro bConfigIntraResidUnsigned de DXVA_ConfigPictureDecode) y las diferencias de macrobloqueo 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 miembro bConfigSpatialResid8 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 una imagen interna 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 sobre 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 macrobloques más altos (un bloque de macros adicional en la parte superior y otro en la parte inferior) que el tamaño de imagen descodificado o el recorte de la dirección de cada píxel individual a los límites de la imagen. Las direcciones de bloqueo de macros de esta especificación son para los macrobloqueos en el interior de la imagen, sin incluir relleno.
bPicDeblocked
Indica si se envían comandos de desbloqueo para que esta imagen cree una imagen de salida desbloqueada. La imagen de salida desbloqueada se coloca en el búfer de imagen 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 limita el efecto de desbloquear las operaciones de filtro al conjunto de macroblocks contenidos en el búfer de comandos de filtro de desbloqueo.
bPic4MVallowed
Especifica si se permiten cuatro vectores de movimiento de referencia hacia delante por macrobloque, tal como se usa en los anexos F y J H.263.
bPicOBMC
Especifica si la compensación de movimiento de la imagen actual funciona utilizando la compensación de movimiento de bloque superpuesta (OBMC) como se especifica en el anexo F H.263. Debe ser cero si bPic4MVallowed es cero.
bPicBinPB
Especifica si los macrobloques predichos bidireccionalmente en la imagen usan la imagen B en la compensación de movimiento del fotograma PB. 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 solo hacia delante y posiblemente hacia atrás índices de imagen de movimiento para la imagen en su conjunto. Si bMV_RPS es 1, los miembros wForwardRefPictureIndex y 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 y 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]: el f_code horizontal hacia atrás |
De 0 a 3 (los bits menos significativos) | f_code[1][1]: el f_code vertical hacia atrás |
Cuando el miembro bConfigBitstreamRaw de la estructura de DXVA_ConfigPictureDecode es 1, wBitstreamFcodes contiene cuatro valores de vector de movimiento f_code . Si bConfigBitstreamRaw es 1 y cualquiera de los cuatro valores de 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 de f_code irrelevante se 0xF.
Si el miembro bConfigBitstreamRaw de la estructura DXVA_ConfigPictureDecode es cero, wBitstreamFcodes se establece en 0xFFFF (todos los valores 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 la forward_f_code mpeg-1 y f_code[1][0] y f_code[1][1] son iguales a la backward_f_code mpeg-1.
wBitstreamPCEelements
Cuando el miembro bConfigBitstreamRaw 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 el vídeo que no es MPEG-2. Los bits de este miembro se definen por su correspondencia con elementos bitstream de la extensión de codificación de imagen 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 | La ocultaciónV 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 para el acelerador). |
4 | Chroma420type es igual a chroma_420_type (no es necesario para el acelerador y está 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 miembro bConfigBitstreamRaw de la estructura DXVA_ConfigPictureDecode es 1. Debe ser cero si bConfigBitstreamRaw es cero.
Los aceleradores de vídeo deben diseñarse para que no se produzcan errores o bloqueos, independientemente del contenido de los datos proporcionados. 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 hay una necesidad de 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 podría 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 miembro bConfigBitstreamRaw 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 |
---|---|
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 P o en una imagen B más cercana a su imagen de referencia de movimiento hacia delante que a su imagen de referencia 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 más cercana a su imagen de referencia hacia atrás que a su imagen de referencia de movimiento hacia delante). |
Comentarios
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 los comandos de control de macroblock formados mediante las estructuras de DXVA_MBctrl_I_HostResidDiff_1, DXVA_MBctrl_I_OffHostIDCT_1, DXVA_MBctrl_P_HostResidDiff_1 o DXVA_MBctrl_P_OffHostIDCT_1 .
Requisitos
Requisito | Valor |
---|---|
Header | dxva.h (include Dxva.h) |