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