estructura D3D11_1DDI_VIDEO_DECODER_CONFIG (d3d10umddi.h)
Describe la configuración de un dispositivo de descodificador de Microsoft Direct3D 11 para la aceleración de vídeo de Microsoft DirectX (DXVA).
Sintaxis
typedef struct D3D11_1DDI_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_1DDI_VIDEO_DECODER_CONFIG;
Miembros
guidConfigBitstreamEncryption
Define el tipo de protocolo de cifrado para los búferes de datos de flujo de bits. Si no se aplica ningún cifrado, el valor es DXVA_NoEncrypt (un nombre GUID definido en Dxva.h). Si ConfigBitstreamRaw es 0, el valor debe ser DXVA_NoEncrypt.
Si se establece en D3DWDDM2_0DDI_DECODER_ENCRYPTION_HW_CENC, esto indica que los parámetros siguientes se pasarán a la llamada VideoDecoderBeginFrame :
Valor | Significado |
---|---|
pContentKey | Puntero a la estructura D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION , que indica qué CryptoSession y la información clave usada para descifrar el marco. |
ContentKeySize | Establezca en el tamaño de la estructura D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION . |
guidConfigMBcontrolEncryption
Define el tipo de protocolo de cifrado para los búferes de datos de control de bloques de macros. Si no se aplica ningún cifrado, el valor es DXVA_NoEncrypt (un nombre GUID definido en Dxva.h). Si ConfigBitstreamRaw es 1, el valor debe ser DXVA_NoEncrypt.
guidConfigResidDiffEncryption
Define el 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 la transformación de coseno discreta basada en aceleradores [IDCT]). Si no se aplica ningún cifrado, el valor es DXVA_NoEncrypt (un nombre GUID definido en Dxva.h). 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 ±255 requerido 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
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 8 |
Servidor mínimo compatible | Windows Server 2012 |
Encabezado | d3d10umddi.h (incluya D3d10umddi.h) |