Compartir a través de


estructura DXVA_ConfigPictureDecode (dxva.h)

El descodificador del host envía la estructura DXVA_ConfigPictureDecode al acelerador para establecer la configuración de descodificación de imágenes comprimidas.

Sintaxis

typedef struct _DXVA_ConfigPictureDecode {
  DXVA_ConfigQueryOrReplyFunc dwFunction;
  DWORD                       dwReservedBits[3];
  GUID                        guidConfigBitstreamEncryption;
  GUID                        guidConfigMBcontrolEncryption;
  GUID                        guidConfigResidDiffEncryption;
  BYTE                        bConfigBitstreamRaw;
  BYTE                        bConfigMBcontrolRasterOrder;
  BYTE                        bConfigResidDiffHost;
  BYTE                        bConfigSpatialResid8;
  BYTE                        bConfigResid8Subtraction;
  BYTE                        bConfigSpatialHost8or9Clipping;
  BYTE                        bConfigSpatialResidInterleaved;
  BYTE                        bConfigIntraResidUnsigned;
  BYTE                        bConfigResidDiffAccelerator;
  BYTE                        bConfigHostInverseScan;
  BYTE                        bConfigSpecificIDCT;
  BYTE                        bConfig4GroupedCoefs;
} DXVA_ConfigPictureDecode, *LPDXVA_ConfigPictureDecode;

Miembros

dwFunction

Indica el tipo de consulta o respuesta al usar comandos de sondeo y bloqueo. Los 24 bits más significativos de dwFunction es la variable DXVA_ConfigQueryOrReplyFlag.

Los 4 bits menos significativos de la variable DXVA_ConfigQueryOrReplyFlag contienen indicadores de estado para la consulta o respuesta que se está realizando.

Los 8 bits menos significativos de dwFunction es la variable bDXVA_Func que, en este caso, es igual a 1.

dwReservedBits[3]

Bits reservados usados para empaquetar y alinear. Estos bits son cero.

guidConfigBitstreamEncryption

Indica un GUID asociado al tipo de protocolo de cifrado para los búferes de datos de secuencia de bits. El valor DXVA_NoEncrypt (un nombre GUID definido en dxva.h) indica que no se aplica el cifrado. Esto es DXVA_NoEncrypt si bConfigBitstreamRaw es cero.

guidConfigMBcontrolEncryption

Indica un GUID asociado al tipo de protocolo de cifrado para búferes de control de macrobloqueo. El valor DXVA_NoEncrypt (un nombre GUID definido en dxva.h) indica que no se aplica el cifrado. Esto es DXVA_NoEncrypt si bConfigBitstreamRaw es 1.

guidConfigResidDiffEncryption

Indica un GUID asociado al tipo de protocolo de cifrado para descodificar búferes de datos de diferencia residual (búferes que contienen datos de dominio espacial o conjuntos de coeficientes de dominio de transformación para IDCT basado en aceleradores). Esto es DXVA_NoEncrypt si bConfigBitstreamRaw es 1. (DXVA_NoEncrypt es un GUID definido en dxva.h que indica que no se aplica el cifrado).

bConfigBitstreamRaw

Contiene el indicador de procesamiento de secuencia de bits. Un valor de 1 especifica que los datos de imagen se enviarán en búferes de secuencia de bits como contenido de secuencia de bits sin procesar. Un valor de cero especifica que los datos de imagen se enviarán mediante búferes de comandos de control de macrobloqueo.

Esto es cero si bConfigResidDiffHost es 1 o si bConfigResidDiffAccelerator es 1. El valor cero se considera el nivel básico de compatibilidad. Se prefiere la compatibilidad adicional de nivel uno.

bConfigMBcontrolRasterOrder

Especifica si los comandos de control de macrobloqueo están en orden de examen de trama o en orden arbitrario. Un valor de 1 especifica que los comandos de control de macrobloqueo dentro de cada búfer de comandos de control de macrobloqueo están en orden de examen ráster y un valor de cero indica un orden arbitrario. Actualmente, se permite que un controlador restrinja la compatibilidad con el orden de examen de tramas; sin embargo, un controlador debe admitir el orden de examen arbitrario y ráster.

bConfigResidDiffHost

Contiene la configuración de diferencia residual del host (consulte Macroblock-Oriented de descodificación de imágenes para obtener más información). Un valor de 1 especifica que algunos datos de descodificación de diferencias residuales se pueden enviar como bloques en el dominio espacial del host. Un valor de cero especifica que no se enviarán los datos del dominio espacial. Este miembro es cero si bConfigBitstreamRaw es 1. Se prefiere que un acelerador admita cero y 1.

bConfigSpatialResid8

Indica el tamaño de palabra usado para representar bloques de dominio espacial de diferencia residual para imágenes predichos (nointra) al usar la descodificación de diferencia residual basada en host (cuando bConfigResidDiffHost es igual a 1).

Si bConfigSpatialResid8 es 1 y bConfigResidDiffHost es 1, el host enviará bloques de dominios espaciales de diferencia residual para macrobloques sin signo de 8 bits mediante muestras firmadas de 8 bits y para las imágenes intra macrobloques en imágenes predichos (no intra) en un formato en función de bConfigIntraResidUnsigned de la siguiente manera:

  • Si bConfigIntraResidUnsigned es cero, los bloques de dominio espacial para los bloques intra macrobloqueos se envían como valores enteros con signo de 8 bits en relación con un valor de referencia constante de 128.
  • Si bConfigIntraResidUnsigned es 1, los bloques de dominio espacial para los bloques intra macroblocks se envían como valores enteros sin signo de 8 bits en relación con un valor de referencia constante de cero.
Si bConfigSpatialResid8 es cero y bConfigResidDiffHost es 1, el host enviará bloques de dominio espacial de diferencia residual de datos para macroblocks que no sean de entrada mediante muestras firmadas de 16 bits y para los bloqueos intra macrobloqueos en imágenes predichos (nointra) en un formato en función de bConfigIntraResidUnsigned de la siguiente manera:
  • Si bConfigIntraResidUnsigned es cero, los bloques de dominio espacial para los bloques de macrobloqueos intra macroblocks se envían como valores enteros con signo de 16 bits en relación con un valor de referencia constante de 2(BPP-1), donde BPP es el número de bits por muestra para el vídeo sin comprimir (generalmente un valor de 8).
  • Si bConfigIntraResidUnsigned es 1, los bloques de dominio espacial para los bloques de macrobloqueos intra se envían como valores enteros sin signo de 16 bits en relación con un valor de referencia constante de cero.
El miembro bConfigSpatialResid8 debe ser cero si bConfigResidDiffHost es cero. No hay ninguna preferencia para un valor determinado de bConfigSpatialResid8 cuando bConfigResidDiffHost es 1.
Nota Para dentro de imágenes con BPP igual a 8, los bloques de dominio espacial deben enviarse mediante muestras de 8 bits. Para imágenes intra con BPP superior a 8, los bloques de dominio espacial deben enviarse con muestras de 16 bits. (La variable BPP es el número de bits por muestra para el vídeo sin comprimir, generalmente un valor de 8).

Si bConfigIntraResidUnsigned es cero, estos ejemplos se envían como valores enteros con signo en relación con un valor de referencia constante de 2(BPP-1). Si bConfigIntraResidUnsigned es 1, estos ejemplos se envían como valores enteros sin signo en relación con un valor de referencia constante de cero.

 

bConfigResid8Subtraction

Cuando es igual a 1, indica que los bloques de desbordamiento de diferencia de 8 bits se restan en lugar de agregarse. Debe ser cero a menos que bConfigSpatialResid8 sea 1. El valor preferido para un acelerador que admite es 1 si bConfigSpatialResid8 es 1. La capacidad de restar diferencias en lugar de agregarlas permite que la descodificación de diferencia de 8 bits sea totalmente compatible con el intervalo completo de valores +/-255 necesarios en las especificaciones del descodificador de vídeo. Esto se debe a que +255 no se puede representar como la adición de dos números de 8 bits con signo, pero cualquier número del intervalo +/-255 se puede representar como la diferencia entre dos números de 8 bits firmados (+255 es igual a +127 menos âˆ'128).

bConfigSpatialHost8or9Clipping

Cuando es igual a 1, indica que los bloques de dominio espacial para los bloques intra macrobloqueos se recortan a un intervalo de 8 bits en el host y que los bloques de dominio espacial para macrobloques no intra se recortan a un intervalo de 9 bits en el host. Un valor de cero indica que el host no realiza este recorte. Debe ser cero a menos que bConfigSpatialResid8 sea igual a cero y bConfigResidDiffHost es igual a 1. El valor preferido para que un acelerador admita es cero.

bConfigSpatialResidInterleaved

Cuando es igual a 1, indica que cualquier dato de diferencia residual de dominio espacial se envía en una forma intercalada de cromoinancia que coincida con el patrón de intercalación de formato YUV. Debe ser cero a menos que bConfigResidDiffHost sea 1 y el formato YUV sea NV12 o NV21. El valor preferido para que un acelerador admita es cero.

bConfigIntraResidUnsigned

Indica el método de representación de bloques de dominio espacial de datos de diferencia residual para bloques intra al usar la descodificación de diferencias basada en host (cuando bConfigResidDiffHost es igual a 1).

Cuando bConfigIntraResidUnsigned es igual a cero y bConfigResidDiffHost es igual a 1, los bloques de datos residuales de dominio espacial para los bloques intra macroblocks se envían de la siguiente manera:

  • En una imagen notra si bConfigSpatialResid8 es cero, Los bloques de datos de diferencia residual de dominio espacial para los bloques intra macrobloqueos se envían como valores enteros con signo de 16 bits con relación a un valor de referencia constante de 2(BPP-1), donde BPP es el número de bits por muestra para el vídeo sin comprimir (generalmente un valor de 8).
  • En una imagen que no sea detración si bConfigSpatialResid8 es 1 y en una imagen interna si BPP es igual a 8 (independientemente del valor de bConfigSpatialResid8), los bloques de datos residuales de dominio espacial para los bloques intra macroblocks se envían como valores enteros con signo de 8 bits en relación con un valor de referencia constante de 128.
Cuando bConfigIntraResidUnsigned es igual a 1 y bConfigResidDiffHost es igual a 1, los bloques de datos residuales de dominio espacial para los bloques intra macrobloqueos se envían de la siguiente manera:
  • En una imagen notra si bConfigSpatialResid8 es cero, los bloques de datos residuales de dominio espacial para los bloques de datos intra macroblocks se envían como valores enteros sin signo de 16 bits en relación con un valor de referencia constante de cero.
  • En una imagen no intra si bConfigSpatialResid8 es 1 y en una imagen intra si BPP es igual a 8 (independientemente del valor de bConfigSpatialResid8), los bloques de datos residuales de dominio espacial para los bloques de macrobloques intra se envían como valores enteros sin signo de 8 bits en relación con un valor de referencia constante de cero.
El miembro bConfigIntraResidUnsigned debe ser cero a menos que bConfigResidDiffHost sea 1.

El valor preferido para un acelerador que admite es cero para bConfigIntraResidUnsigned.

bConfigResidDiffAccelerator

Contiene la configuración de diferencia residual del acelerador. Un valor de 1 indica que los bloques de dominio de transformación de los datos de coeficiente se pueden enviar desde el host para IDCT basado en aceleradores. Un valor de cero especifica que no se usará IDCT basado en aceleradores. Si ambos bConfigResidDiffHost y bConfigResidDiffAccelerator son 1, se realizará una descodificación de diferencias residuales en el host y otros en el acelerador, como se indica en los comandos de control de nivel de macrobloqueo. Este miembro debe ser cero si bConfigBitstreamRaw es 1.

El valor preferido para un acelerador que admite es 1 para bConfigResidDiffAccelerator.

Cuando bConfigResidDiffAccelerator y bConfigResidDiffHost son iguales a 1, la descodificación de diferencias residuales se puede compartir entre el host y el acelerador en una macrobloqueo. Esto se considera un nivel aún mayor de capacidad de aceleración que cuando bConfigResidDiffAccelerator es igual a 1 y bConfigResidDiffHost es igual a cero.

bConfigHostInverseScan

Indica si el examen inverso del procesamiento de bloques de dominio de transformación se realiza en el host o en el acelerador. Un valor de 1 indica que el examen inverso del procesamiento de bloques de dominio de transformación se realizará en el host y se enviarán índices absolutos en su lugar para los coeficientes de transformación. Un valor de cero indica que el examen inverso se realizará en el acelerador. Este miembro debe ser cero si bConfigResidDiffAccelerator es cero o si bConfig4GroupedCoefs es 1.

El valor preferido para un acelerador que admite es 1 si bConfigResidDiffAccelerator es 1.

bConfigSpecificIDCT

Indica el uso de un método IDCT específico para IDCT fuera del host. Un valor de 1 indica el uso del IDCT especificado en el anexo W de ITU-T Recomendación H.263. Un valor de cero indica que se puede usar cualquier IDCT compatible para IDCT fuera del host. (Los valores distintos de cero y 1 están reservados para uso futuro).

Este miembro debe ser cero si bConfigResidDiffAccelerator es cero (simplemente indica la descodificación de diferencia residual basada en host).

Nota Anexo W de ITU-T Recomendación H.263 no cumple los requisitos idCT del corrección MPEG-2 2 y, por tanto, bConfigSpecificIDCT no debe ser uno para su uso con vídeo MPEG-2.
 

bConfig4GroupedCoefs

Un valor de 1 indica que los coeficientes de transformación de IDCT fuera del host se enviarán mediante la estructura DXVA_TCoef4Group en lugar de la estructura de DXVA_TCoefSingle. Esto es cero si bConfigResidDiffAccelerator es cero o si bConfigHostInverseScan es 1.

El valor preferido para un acelerador que admite es cero si bConfigResidDiffAccelerator es 1.

Observaciones

Para algunos tipos de secuencias de bits, forzar que los comandos de control de macrobloqueo dentro de cada búfer de comandos de control de macrobloque estén en orden ráster aumenta considerablemente el número de búferes necesarios que se deben procesar o requiere la reordenación del host de la información de control. Por lo tanto, el apoyo del orden arbitrario puede ser ventajoso para el proceso de descodificación. Por ejemplo, la descodificación de resolución CIF H.261 puede requerir 36 búferes de control de macrobloqueo por imagen si se necesita un orden de examen de ráster dentro de cada búfer (el orden arbitrario de segmentos del anexo K y los modos de segmento rectangular tienen repercusiones más graves, lo que puede requerir un número extremadamente grande de búferes).

Requisitos

Requisito Valor
encabezado de dxva.h (include Dxva.h)

Consulte también

DXVA_MBctrl_I_HostResidDiff_1

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_MBctrl_P_HostResidDiff_1

DXVA_MBctrl_P_OffHostIDCT_1

DXVA_TCoef4Group

DXVA_TCoefSingle