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 comprimida.
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 son 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 son 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 los 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 macroblock.
Esto es cero si bConfigResidDiffHost es 1 o si bConfigResidDiffAccelerator es 1. El valor cero se considera el nivel básico de soporte técnico. Se prefiere la compatibilidad adicional del nivel uno.
bConfigMBcontrolRasterOrder
Especifica si los comandos de control de macroblock están en orden de examen de trama o en orden arbitrario. Un valor de 1 especifica que los comandos de control de macroblock dentro de cada búfer de comandos de control de macroblock se encuentran en orden de examen de trama 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 Descodificación de imágenes orientadas a macrobloqueos 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 que se usa para representar bloques de dominio espacial de diferencia residual para imágenes predichos (no entras) cuando se usa la descodificación de diferencias residuales basada en host (cuando bConfigResidDiffHost es igual a 1).
Si bConfigSpatialResid8 es 1 y bConfigResidDiffHost es 1, el host enviará bloques de dominio espacial de diferencia residual para los macroblocks notra mediante muestras firmadas de 8 bits y para los bloques intra macrobloques en imágenes predichos (no entra) en un formato según bConfigIntraResidUnsigned de la siguiente manera:
- Si bConfigIntraResidUnsigned es cero, los bloques de dominio espacial para los macroblocks intra macroblocks 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 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 (normalmente un valor de 8).
- Si bConfigIntraResidUnsigned es 1, los bloques de dominio espacial para los bloques de macros intra macroblocks 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, estas muestras 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 relativos a 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 de un acelerador para admitir 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 de valores +/-255 completo requerido 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 en un intervalo de 8 bits en el host y que los bloques de dominio espacial para los macroblocks que no son detra se recortan en 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 sea igual a 1. El valor preferido para que un acelerador admita es cero.
bConfigSpatialResidInterleaved
Cuando es igual a 1, indica que los datos de diferencia residual de dominio espacial se envían en una forma intercalada de cromo que coincide con el patrón de intercalación de cromo en 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 de macroblocks intra macroblocks se envían de la siguiente manera:
- En una imagen no intra si bConfigSpatialResid8 es cero, los bloques de datos residuales del dominio espacial para los bloques de datos 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).
- 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 del dominio espacial para los bloques de macrobloques intramaques 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 del 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 notra 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 macroblocks 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 de un acelerador para admitir es cero para bConfigIntraResidUnsigned.
bConfigResidDiffAccelerator
Contiene la configuración de diferencia residual del acelerador. Un valor de 1 indica que se pueden enviar bloques de dominio de transformación de datos de coeficiente desde el host para IDCT basado en aceleradores. Un valor de cero especifica que no se usará IDCT basado en aceleradores. Si bConfigResidDiffHost y bConfigResidDiffAccelerator son 1, se realizará una descodificación de diferencia residual 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 de un acelerador para admitir es 1 para bConfigResidDiffAccelerator.
Cuando bConfigResidDiffAccelerator y bConfigResidDiffHost son iguales a 1, la descodificación de diferencia residual se puede compartir entre el host y el acelerador en un macroblock. Esto se considera un nivel aún mayor de capacidad del acelerador que cuando bConfigResidDiffAccelerator es igual a 1 y bConfigResidDiffHost es igual a cero.
bConfigHostInverseScan
Indica si el examen inverso para el 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 para el procesamiento de bloques de dominio de transformación se realizará en el host y se enviarán índices absolutos en su lugar para cualquier coeficiente 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 de un acelerador para admitir 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 la Recomendación UIT-T 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 DXVA_TCoefSingle . Esto es cero si bConfigResidDiffAccelerator es cero o si bConfigHostInverseScan es 1.
El valor preferido de un acelerador para admitir es cero si bConfigResidDiffAccelerator es 1.
Comentarios
Para algunos tipos de secuencias de bits, forzar los comandos de control de macroblock dentro de cada búfer de comandos de control de macrobloqueo para que esté 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. 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 el orden de examen de trama es necesario dentro de cada búfer (el orden arbitrario de segmentos del anexo K y los modos de segmentación rectangular tienen repercusiones más graves, lo que puede requerir un número extremadamente grande de búferes).
Requisitos
Requisito | Valor |
---|---|
Header | dxva.h (incluir Dxva.h) |