estrutura D3D11_1DDI_VIDEO_DECODER_CONFIG (d3d10umddi.h)
Descreve a configuração de um dispositivo de decodificador do Microsoft Direct3D 11 para a DXVA (Aceleração de Vídeo) do Microsoft DirectX.
Sintaxe
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;
Membros
guidConfigBitstreamEncryption
Define o tipo de protocolo de criptografia para buffers de dados de fluxo de bits. Se nenhuma criptografia for aplicada, o valor será DXVA_NoEncrypt (um nome GUID definido em Dxva.h). Se ConfigBitstreamRaw for 0, o valor deverá ser DXVA_NoEncrypt.
Se definido como D3DWDDM2_0DDI_DECODER_ENCRYPTION_HW_CENC, isso indica que os seguintes parâmetros serão passados para a chamada VideoDecoderBeginFrame :
Valor | Significado |
---|---|
pContentKey | Um ponteiro para a estrutura D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION , indicando qual CryptoSession e as informações de chave usadas para descriptografar o quadro. |
ContentKeySize | Defina como o tamanho da estrutura D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION . |
guidConfigMBcontrolEncryption
Define o tipo de protocolo de criptografia para buffers de dados de controle de bloco de macro. Se nenhuma criptografia for aplicada, o valor será DXVA_NoEncrypt (um nome GUID definido em Dxva.h). Se ConfigBitstreamRaw for 1, o valor deverá ser DXVA_NoEncrypt.
guidConfigResidDiffEncryption
Define o tipo de protocolo de criptografia para buffers de dados de decodificação de diferença residual (buffers que contêm dados de domínio espacial ou conjuntos de coeficientes de domínio de transformação para transformação cossina discreta inversa baseada em acelerador [IDCT]). Se nenhuma criptografia for aplicada, o valor será DXVA_NoEncrypt (um nome GUID definido em Dxva.h). Se ConfigBitstreamRaw for 1, o valor deverá ser DXVA_NoEncrypt.
ConfigBitstreamRaw
Indica se o decodificador de host envia dados brutos de fluxo de bits. Se o valor for 1, os dados das imagens serão enviados em buffers de fluxo de bits como conteúdo bruto de fluxo de bits. Se o valor for 0, os dados de imagem serão enviados usando buffers de comando de controle de macroblock. Se ConfigResidDiffHost ou ConfigResidDiffAccelerator for 1, o valor deverá ser 0.
ConfigMBcontrolRasterOrder
Especifica se os comandos de controle de macroblock estão em ordem de verificação raster ou em ordem arbitrária. Se o valor for 1, os comandos de controle de macroblock em cada buffer de comando de controle de macroblock estarão em ordem de varredura de raster. Se o valor for 0, a ordem será arbitrária. Para alguns tipos de fluxos de bits, forçar a ordem de raster aumenta consideravelmente o número de buffers de controle de macroblock necessários que devem ser processados ou requer a reordenação do host das informações de controle. Portanto, o suporte à ordem arbitrária pode ser mais eficiente.
ConfigResidDiffHost
Contém a configuração de diferença residual do host. Se o valor for 1, alguns dados de decodificação de diferença residual poderão ser enviados como blocos no domínio espacial do host. Se o valor for 0, os dados de domínio espacial não serão enviados.
ConfigSpatialResid8
Indica o tamanho da palavra usado para representar blocos de domínio espacial de diferença residual para imagens previstas (não intra) ao usar a decodificação de diferença residual baseada em host.
Se ConfigResidDiffHost for 1 e ConfigSpatialResid8 for 1, o host enviará blocos de domínio espacial de diferença residual para macroblocks não intra usando amostras assinadas de 8 bits e para macroblocks intra em imagens previstas (não intra) em um formato que depende do valor de ConfigIntraResidUnsigned:
- Se ConfigIntraResidUnsigned for 0, blocos de domínio espacial para macroblocks intra serão enviados como valores inteiros com sinal de 8 bits em relação a um valor de referência constante de 2^(BPP–1).
- Se ConfigIntraResidUnsigned for 1, blocos de domínio espacial para macroblocks intra serão enviados como valores inteiros sem sinal de 8 bits em relação a um valor de referência constante de 0.
Se ConfigResidDiffHost for 1 e ConfigSpatialResid8 for 0, o host enviará blocos de dados de domínio espacial de diferença residual para macroblocks não intra usando amostras assinadas de 16 bits e para macroblocks intra em imagens previstas (não intra) em um formato que depende do valor de ConfigIntraResidUnsigned:
- Se ConfigIntraResidUnsigned for 0, os blocos de domínio espacial para macroblocks intra serão enviados como valores inteiros com sinal de 16 bits em relação a um valor de referência constante de 2^(BPP–1).
- Se ConfigIntraResidUnsigned for 1, os blocos de domínio espacial para macroblocks intra serão enviados como valores inteiros sem sinal de 16 bits em relação a um valor de referência constante de 0.
- Se ConfigResidDiffHost for 0, ConfigSpatialResid8 deverá ser 0.
Para imagens intra, blocos de domínio espacial devem ser enviados usando amostras de 8 bits se bits por pixel (BPP) for 8 e usando amostras de 16 bits se BPP > 8. Se ConfigIntraResidUnsigned for 0, esses exemplos serão enviados como valores inteiros assinados em relação a um valor de referência constante de 2^(BPP–1) e, se ConfigIntraResidUnsigned for 1, esses exemplos serão enviados como valores inteiros sem sinal em relação a um valor de referência constante de 0.
ConfigResid8Subtraction
Se o valor for 1, os blocos de estouro de diferença de 8 bits serão subtraídos em vez de adicionados. O valor deve ser 0, a menos que ConfigSpatialResid8 seja 1.
A capacidade de subtrair diferenças em vez de adicioná-las permite que a decodificação de diferença de 8 bits esteja totalmente em conformidade com o intervalo completo de valores ±255 necessários nas especificações do decodificador de vídeo, porque +255 não pode ser representado como a adição de dois números assinados de 8 bits, mas qualquer número no intervalo ±255 pode ser representado como a diferença entre dois números de 8 bits assinados (+255 = +127 menos –128).
ConfigSpatialHost8or9Clipping
Se o valor for 1, blocos de domínio espacial para macroblocks intra deverão ser recortados para um intervalo de 8 bits nos blocos host e de domínio espacial para macroblocks não intra devem ser cortados para um intervalo de 9 bits no host. Se o valor for 0, nenhum recorte desse tipo será necessário pelo host.
O valor deve ser 0, a menos que ConfigSpatialResid8 seja 0 e ConfigResidDiffHost seja 1.
ConfigSpatialResidInterleaved
Se o valor for 1, todos os dados de diferença residual de domínio espacial deverão ser enviados em uma forma intercalada de chrominance que corresponda ao padrão de intercalação de chrominance de formato YUV. O valor deve ser 0, a menos que ConfigResidDiffHost seja 1 e o formato YUV seja NV12 ou NV21.
ConfigIntraResidUnsigned
Indica o método de representação de blocos de domínio espacial de dados de diferença residual para blocos intra ao usar a decodificação de diferença baseada em host.
Se ConfigResidDiffHost for 1 e ConfigIntraResidUnsigned for 0, os blocos de dados de diferença residual de domínio espacial para macroblocks intra deverão ser enviados da seguinte maneira:
- Em uma imagem não intra, se ConfigSpatialResid8 for 0, os blocos de dados de diferença residual de domínio espacial para macroblocks intra serão enviados como valores inteiros com sinal de 16 bits em relação a um valor de referência constante de 2^(BPP–1).
- Em uma imagem não intra, se ConfigSpatialResid8 for 1, os blocos de dados de diferença residual de domínio espacial para macroblocks intra serão enviados como valores inteiros com sinal de 8 bits em relação a um valor de referência constante de 2^(BPP–1).
- Em uma imagem intra, se BPP for 8, os blocos de dados de diferença residual de domínio espacial para macroblocks intra serão enviados como valores inteiros com sinal de 8 bits em relação a um valor de referência constante de 2^(BPP-1), independentemente do valor de ConfigSpatialResid8.
Se ConfigResidDiffHost for 1 e ConfigIntraResidUnsigned for 1, os blocos de dados de diferença residual de domínio espacial para macroblocks intra deverão ser enviados da seguinte maneira:
- Em uma imagem não intra, se ConfigSpatialResid8 for 0, os blocos de dados de diferença residual de domínio espacial para macroblocks intra deverão ser enviados como valores inteiros sem sinal de 16 bits em relação a um valor de referência constante de 0.
- Em uma imagem não intra, se ConfigSpatialResid8 for 1, os blocos de dados de diferença residual de domínio espacial para macroblocks intra serão enviados como valores inteiros sem sinal de 8 bits em relação a um valor de referência constante de 0.
- Em uma imagem intra, se BPP for 8, os blocos de dados de diferença residual de domínio espacial para macroblocks intra serão enviados como valores inteiros sem sinal de 8 bits em relação a um valor de referência constante de 0, independentemente do valor de ConfigSpatialResid8.
O valor do membro deve ser 0, a menos que ConfigResidDiffHost seja 1.
ConfigResidDiffAccelerator
Se o valor for 1, os blocos de domínio de transformação de dados coeficientes poderão ser enviados do host para IDCT baseado em acelerador. Se o valor for 0, o IDCT baseado em acelerador não será usado. Se ConfigResidDiffHost e ConfigResidDiffAccelerator forem 1, isso indicará que alguma decodificação de diferença residual será feita no host e em alguns no acelerador, conforme indicado pelos comandos de controle no nível do macroblock.
O valor deverá ser 0 se ConfigBitstreamRaw for 1.
ConfigHostInverseScan
Se o valor for 1, a verificação inversa para processamento de bloco de domínio de transformação será executada no host e os índices absolutos serão enviados para quaisquer coeficientes de transformação. Se o valor for 0, a verificação inversa será executada no acelerador.
O valor deverá ser 0 se ConfigResidDiffAccelerator for 0 ou se Config4GroupedCoefs for 1.
ConfigSpecificIDCT
Se o valor for 1, o IDCT especificado no Anexo W da Recomendação ITU-T H.263 será usado. Se o valor for 0, qualquer IDCT em conformidade poderá ser usada para IDCT fora do host.
O anexo H.263 não está em conformidade com os requisitos de IDCT do MPEG-2 corrigendum 2, portanto, o valor não deve ser 1 para uso com vídeo MPEG-2.
O valor deverá ser 0 se ConfigResidDiffAccelerator for 0, indicando a decodificação de diferença residual baseada em host.
Config4GroupedCoefs
Se o valor for 1, os coeficientes de transformação para IDCT fora do host serão enviados usando a estrutura DXVA_TCoef4Group . Se o valor for 0, a estrutura DXVA_TCoefSingle será usada. O valor deverá ser 0 se ConfigResidDiffAccelerator for 0 ou se ConfigHostInverseScan for 1.
ConfigMinRenderTargetBuffCount
Especifica quantos quadros o dispositivo decodificador processa ao mesmo tempo.
ConfigDecoderSpecific
Contém informações de configuração específicas do decodificador.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 8 |
Servidor mínimo com suporte | Windows Server 2012 |
Cabeçalho | d3d10umddi.h (inclua D3d10umddi.h) |