estructura D3D11_VIDEO_DECODER_CONFIG (d3d11.h)

Describe la configuración de un dispositivo de descodificador de Microsoft Direct3D 11 para la aceleración de vídeo directX (DXVA).

Sintaxis

typedef struct D3D11_VIDEO_DECODER_CONFIG {
  GUID   guidConfigBitstreamEncryption;
  GUID   guidConfigMBcontrolEncryption;
  GUID   guidConfigResidDiffEncryption;
  UINT   ConfigBitstreamRaw;
  UINT   ConfigMBcontrolRasterOrder;
  UINT   ConfigResidDiffHost;
  UINT   ConfigSpatialResid8;
  UINT   ConfigResid8Subtraction;
  UINT   ConfigSpatialHost8or9Clipping;
  UINT   ConfigSpatialResidInterleaved;
  UINT   ConfigIntraResidUnsigned;
  UINT   ConfigResidDiffAccelerator;
  UINT   ConfigHostInverseScan;
  UINT   ConfigSpecificIDCT;
  UINT   Config4GroupedCoefs;
  USHORT ConfigMinRenderTargetBuffCount;
  USHORT ConfigDecoderSpecific;
} D3D11_VIDEO_DECODER_CONFIG;

Miembros

guidConfigBitstreamEncryption

Si los búferes de datos de secuencia de bits se cifran mediante el mecanismo D3D11CryptoSession, este GUID debe establecerse en cero. Si no se aplica ningún cifrado, el valor es DXVA_NoEncrypt. Si ConfigBitstreamRaw es 0, el valor debe ser DXVA_NoEncrypt.

guidConfigMBcontrolEncryption

Si los búferes de datos del control macroblock se cifran mediante el mecanismo D3D11CryptoSession, este GUID debe establecerse en cero. Si no se aplica ningún cifrado, el valor es DXVA_NoEncrypt. Si ConfigBitstreamRaw es 1, el valor debe ser DXVA_NoEncrypt.

guidConfigResidDiffEncryption

Si los búferes de datos de descodificación de diferencia residual se cifran mediante el mecanismo D3D11CryptoSession, este GUID debe establecerse en cero. Si no se aplica ningún cifrado, el valor es DXVA_NoEncrypt. Si ConfigBitstreamRaw es 1, el valor debe ser DXVA_NoEncrypt.

ConfigBitstreamRaw

Indica si el descodificador de host envía datos de secuencia de bits sin procesar. Si el valor es 1, los datos de las imágenes se enviarán en búferes de secuencia de bits como contenido de secuencia de bits sin procesar. Si el valor es 0, los datos de imagen se enviarán mediante búferes de comandos de control de macroblock. Si ConfigResidDiffHost o ConfigResidDiffAccelerator es 1, el valor debe ser 0.

ConfigMBcontrolRasterOrder

Especifica si los comandos de control de macroblock están en orden de examen ráster o en orden arbitrario. Si el valor es 1, los comandos de control de macroblock dentro de cada búfer de comandos de control de macroblock se encuentran en orden de examen ráster. Si el valor es 0, el orden es arbitrario. Para algunos tipos de secuencias de bits, forzar el orden de trama aumenta considerablemente el número de búferes de control de macrobloque necesarios que se deben procesar o requiere la reordenación del host de la información de control. Por lo tanto, admitir el orden arbitrario puede ser más eficaz.

ConfigResidDiffHost

Contiene la configuración de diferencia residual del host. Si el valor es 1, se pueden enviar algunos datos de descodificación de diferencia residual como bloques en el dominio espacial del host. Si el valor es 0, no se enviarán datos de dominio espacial.

ConfigSpatialResid8

Indica el tamaño de palabra que se usa para representar bloques de dominio espacial de diferencia residual para imágenes predichas (no intra) al usar la descodificación de diferencia residual basada en host.

Si ConfigResidDiffHost es 1 y ConfigSpatialResid8 es 1, el host enviará bloques de dominio espacial de diferencia residual para los macrobloques que no son intrabloqueos mediante muestras firmadas de 8 bits y para macrobloques en imágenes predichos (no intra) en un formato que depende del valor de ConfigIntraResidUnsigned:

  • Si ConfigIntraResidUnsigned es 0, los bloques 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 2^(BPP–1).
  • Si ConfigIntraResidUnsigned es 1, los bloques de dominio espacial para los bloqueos intra macrobloqueos se envían como valores enteros sin signo de 8 bits en relación con un valor de referencia constante de 0.
Si ConfigResidDiffHost es 1 y ConfigSpatialResid8 es 0, el host enviará bloques de dominio espacial de diferencia residual de datos para macrobloques que no son intrabloqueos mediante muestras firmadas de 16 bits y para los macrobloques dentro de imágenes predichos (no intra) en un formato que depende del valor de ConfigIntraResidUnsigned:
  • Si ConfigIntraResidUnsigned es 0, los bloques de dominio espacial para los bloques 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).
  • Si ConfigIntraResidUnsigned es 1, los bloques de dominio espacial para los bloqueos intra macrobloqueos se envían como valores enteros sin signo de 16 bits en relación con un valor de referencia constante de 0.
Si ConfigResidDiffHost es 0, ConfigSpatialResid8 debe ser 0.

En el caso de las imágenes intra, los bloques de dominio espacial deben enviarse mediante ejemplos de 8 bits si bits por píxel (BPP) es de 8 y se usan muestras de 16 bits si BPP > 8. Si ConfigIntraResidUnsigned es 0, estas muestras se envían como valores enteros con signo en relación con un valor de referencia constante de 2^(BPP-1) y si ConfigIntraResidUnsigned es 1, estas muestras se envían como valores enteros sin signo en relación con un valor de referencia constante de 0.

ConfigResid8Subtraction

Si el valor es 1, los bloques de desbordamiento de diferencia de 8 bits se restan en lugar de agregarse. El valor debe ser 0 a menos que ConfigSpatialResid8 sea 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 de ±255 requeridos en las especificaciones del descodificador de vídeo, porque no se puede representar +255 como 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 con signo (+255 = +127 menos –128).

ConfigSpatialHost8or9Clipping

Si el valor es 1, los bloques de dominio espacial para los bloqueos intra macrobloqueos deben recortarse en un intervalo de 8 bits en los bloques host y de dominio espacial para los macroblocks que no son intrabloqueos deben recortarse en un intervalo de 9 bits en el host. Si el valor es 0, el host no necesita este recorte.

El valor debe ser 0 a menos que ConfigSpatialResid8 sea 0 y ConfigResidDiffHost sea 1.

ConfigSpatialResidInterleaved

Si el valor es 1, los datos de diferencia residual de dominio espacial deben enviarse en una forma intercalada de cromoinancia que coincida con el patrón de intercalación de cromoinancia de formato YUV. El valor debe ser 0 a menos que ConfigResidDiffHost sea 1 y el formato YUV sea NV12 o NV21.

ConfigIntraResidUnsigned

Indica el método de representación de bloques de dominios espaciales de datos de diferencia residual para bloques intra al usar la descodificación de diferencias basada en host.

Si ConfigResidDiffHost es 1 y ConfigIntraResidUnsigned es 0, los bloques de datos de diferencia residual de dominio espacial para los bloques intra macrobloqueos se deben enviar de la siguiente manera:

  • En una imagen no interna, si ConfigSpatialResid8 es 0, los bloques de datos residuales de dominio espacial para los macrobloques 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).
  • En una imagen no interna, si ConfigSpatialResid8 es 1, los bloques de datos residuales de dominio espacial para los macrobloques intra macroblocks se envían como valores enteros con signo de 8 bits en relación con un valor de referencia constante de 2^(BPP–1).
  • En una imagen interna, si BPP es 8, los bloques de datos residuales de dominio espacial para los macrobloques intra macroblocks se envían como valores enteros con signo de 8 bits en relación con un valor de referencia constante de 2^(BPP–1), independientemente del valor de ConfigSpatialResid8.
Si ConfigResidDiffHost es 1 y ConfigIntraResidUnsigned es 1, los bloques de datos de diferencia residual de dominio espacial para los bloqueos intra macrobloqueos se deben enviar de la siguiente manera:
  • En una imagen no intra, si ConfigSpatialResid8 es 0, los bloques de datos residuales de dominio espacial para los macrobloques intra macroblocks se deben enviar como valores enteros sin signo de 16 bits en relación con un valor de referencia constante de 0.
  • En una imagen no intra, si ConfigSpatialResid8 es 1, los bloques de datos residuales de dominio espacial para los bloqueos intra macrobloqueos se envían como valores enteros sin signo de 8 bits en relación con un valor de referencia constante de 0.
  • En una imagen interna, si BPP es 8, los bloques de datos de diferencia residual de dominio espacial para los bloques intra macrobloqueos se envían como valores enteros sin signo de 8 bits en relación con un valor de referencia constante de 0, independientemente del valor de ConfigSpatialResid8.
El valor del miembro debe ser 0 a menos que ConfigResidDiffHost sea 1.

ConfigResidDiffAccelerator

Si el valor es 1, los bloques de dominio de transformación de los datos de coeficiente se pueden enviar desde el host para IDCT basado en aceleradores. Si el valor es 0, no se usará IDCT basado en aceleradores. Si configResidDiffHost y ConfigResidDiffAccelerator son 1, esto indica que 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.

El valor debe ser 0 si ConfigBitstreamRaw es 1.

ConfigHostInverseScan

Si el valor es 1, 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 cualquier coeficiente de transformación. Si el valor es 0, el examen inverso se realizará en el acelerador.

El valor debe ser 0 si ConfigResidDiffAccelerator es 0 o si Config4GroupedCoefs es 1.

ConfigSpecificIDCT

Si el valor es 1, se utiliza el IDCT especificado en el anexo W de la Recomendación H.263 de la UIT-T. Si el valor es 0, se puede usar cualquier IDCT compatible para idCT fuera del host.

El anexo H.263 no cumple los requisitos de IDCT del corrección MPEG-2, por lo que el valor no debe ser 1 para su uso con vídeo MPEG-2.

El valor debe ser 0 si ConfigResidDiffAccelerator es 0, lo que indica la descodificación de diferencia residual basada en host.

Config4GroupedCoefs

Si el valor es 1, los coeficientes de transformación de IDCT fuera del host se enviarán mediante la estructura DXVA_TCoef4Group . Si el valor es 0, se usa la estructura DXVA_TCoefSingle . El valor debe ser 0 si ConfigResidDiffAccelerator es 0 o si ConfigHostInverseScan es 1.

ConfigMinRenderTargetBuffCount

Especifica cuántos fotogramas procesa el dispositivo de descodificador en cualquier momento.

ConfigDecoderSpecific

Contiene información de configuración específica del descodificador.

Requisitos

   
Cliente mínimo compatible Windows 8 [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2012 [aplicaciones de escritorio | Aplicaciones para UWP]
Encabezado d3d11.h

Consulte también

Estructuras de vídeo de Direct3D 11