estrutura DXVA_ConfigPictureDecode (dxva.h)
A estrutura DXVA_ConfigPictureDecode é enviada pelo decodificador de host para o acelerador para definir a configuração para decodificação de imagem compactada.
Sintaxe
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;
Membros
dwFunction
Indica o tipo de consulta ou resposta ao usar comandos de investigação e bloqueio. Os 24 bits mais significativos de dwFunction são a variável DXVA_ConfigQueryOrReplyFlag .
Os 4 bits menos significativos da variável DXVA_ConfigQueryOrReplyFlag contém indicadores status para a consulta ou resposta que está sendo executada.
Os 8 bits menos significativos de dwFunction é a variável bDXVA_Func que, nesse caso, é igual a 1.
dwReservedBits[3]
Bits reservados usados para empacotamento e alinhamento. Esses bits são zero.
guidConfigBitstreamEncryption
Indica um GUID associado ao tipo de protocolo de criptografia para buffers de dados bitstream. O valor DXVA_NoEncrypt (um nome GUID definido em dxva.h) indica que a criptografia não é aplicada. Isso será DXVA_NoEncrypt se bConfigBitstreamRaw for zero.
guidConfigMBcontrolEncryption
Indica um GUID associado ao tipo de protocolo de criptografia para buffers de controle de macroblock. O valor DXVA_NoEncrypt (um nome GUID definido em dxva.h) indica que a criptografia não é aplicada. Isso será DXVA_NoEncrypt se bConfigBitstreamRaw for 1.
guidConfigResidDiffEncryption
Indica um GUID associado ao 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 IDCT baseado em acelerador). Isso será DXVA_NoEncrypt se bConfigBitstreamRaw for 1. (DXVA_NoEncrypt é um GUID definido em dxva.h que indica que a criptografia não é aplicada.)
bConfigBitstreamRaw
Contém o indicador de processamento bitstream. Um valor de 1 especifica que os dados de imagem serão enviados em buffers bitstream como conteúdo de bitstream bruto. Um valor zero especifica que os dados de imagem serão enviados usando buffers de comando de controle de macroblock.
Isso será zero se bConfigResidDiffHost for 1 ou se bConfigResidDiffAccelerator for 1. O valor zero é considerado o nível básico de suporte. O suporte adicional do nível um é preferencial.
bConfigMBcontrolRasterOrder
Especifica se os comandos de controle de macroblock estão em ordem de verificação raster ou em ordem arbitrária. Um valor de 1 especifica que os comandos de controle de macroblock dentro de cada buffer de comando de controle de macroblock estão em ordem de verificação raster e um valor de zero indica ordem arbitrária. Atualmente, um driver tem permissão para restringir o suporte à ordem de verificação de raster; no entanto, um driver deve dar suporte à ordem de verificação arbitrária e raster.
bConfigResidDiffHost
Contém a configuração de diferença residual do host (consulte Decodificação de imagem orientada a macroblock para obter mais informações). Um valor de 1 especifica que alguns dados de decodificação de diferença residual podem ser enviados como blocos no domínio espacial do host. Um valor igual a zero especifica que os dados de domínio espacial não serão enviados. Esse membro será zero se bConfigBitstreamRaw for 1. É preferível que um acelerador dê suporte a zero e 1.
bConfigSpatialResid8
Indica o tamanho da palavra usado para representar blocos de domínio espacial de diferença residual para imagens previstas (nonintra) ao usar a decodificação de diferença residual baseada em host (quando bConfigResidDiffHost é igual a 1).
Se bConfigSpatialResid8 for 1 e bConfigResidDiffHost for 1, o host enviará blocos de domínio espacial de diferença residual para macroblocks nonintra usando amostras assinadas de 8 bits e para macroblocks intra em imagens previstas (nonintra) em um formato dependendo de bConfigIntraResidUnsigned da seguinte maneira:
- Se bConfigIntraResidUnsigned for zero, 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 128.
- Se bConfigIntraResidUnsigned 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 zero.
- Se bConfigIntraResidUnsigned for zero, 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), em que BPP é o número de bits por exemplo para o vídeo não compactado (geralmente um valor de 8).
- Se bConfigIntraResidUnsigned 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 igual a zero.
Se bConfigIntraResidUnsigned for zero, esses exemplos serão enviados como valores inteiros assinados em relação a um valor de referência constante de 2(BPP-1). Se bConfigIntraResidUnsigned for 1, esses exemplos serão enviados como valores inteiros sem sinal em relação a um valor de referência constante igual a zero.
bConfigResid8Subtraction
Quando igual a 1, indica que os blocos de estouro de diferença de 8 bits são subtraídos em vez de adicionados. Deve ser zero, a menos que bConfigSpatialResid8 seja 1. O valor preferencial para um acelerador dar suporte será 1 se bConfigSpatialResid8 for 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 +/-255 de valores necessários nas especificações do decodificador de vídeo. Isso ocorre 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 assinados de 8 bits (+255 é igual a +127 menos âˆ'128).
bConfigSpatialHost8or9Clipping
Quando igual a 1, indica que os blocos de domínio espacial para macroblocks intra são recortados para um intervalo de 8 bits no host e que os blocos de domínio espacial para macroblocks nonintra são recortados para um intervalo de 9 bits no host. Um valor zero indica que nenhum recorte desse tipo é executado pelo host. Deve ser zero, a menos que bConfigSpatialResid8 seja igual a zero e bConfigResidDiffHost seja igual a 1. O valor preferencial para um acelerador a dar suporte é zero.
bConfigSpatialResidInterleaved
Quando igual a 1, indica que todos os dados de diferença residual de domínio espacial são enviados em uma forma intercalada de chrominance que corresponde ao padrão de intercalação de chrominance de formato YUV. Deve ser zero, a menos que bConfigResidDiffHost seja 1 e o formato YUV seja NV12 ou NV21. O valor preferencial para um acelerador a dar suporte é zero.
bConfigIntraResidUnsigned
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 (quando bConfigResidDiffHost é igual a 1).
Quando bConfigIntraResidUnsigned é igual a zero e bConfigResidDiffHost é igual a 1, blocos de dados de diferença residual de domínio espacial para macroblocks intra são enviados da seguinte maneira:
- Em uma imagem nonintra se bConfigSpatialResid8 for zero, 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 que BPP é o número de bits por amostra para o vídeo não compactado (geralmente um valor de 8).
- Em uma imagem nonintra se bConfigSpatialResid8 for 1 e em uma imagem intra se BPP for igual a 8 (independentemente do valor de bConfigSpatialResid8), os blocos de dados de diferença residual de domínio espacial para macroblocks intra são enviados como valores inteiros com sinal de 8 bits em relação a um valor de referência constante de 128.
- Em uma imagem nonintra se bConfigSpatialResid8 for zero, os blocos de dados de diferença residual 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 zero.
- Em uma imagem nonintra se bConfigSpatialResid8 for 1 e em uma imagem intra se BPP for igual a 8 (independentemente do valor de bConfigSpatialResid8), os blocos de dados de diferença residual de domínio espacial para macroblocks intra são enviados como valores inteiros sem sinal de 8 bits em relação a um valor de referência constante de zero.
O valor preferencial para um acelerador a dar suporte é zero para bConfigIntraResidUnsigned.
bConfigResidDiffAccelerator
Contém a configuração de diferença residual do acelerador. Um valor de 1 indica que blocos de domínio de transformação de dados coeficientes podem ser enviados do host para IDCT baseado em acelerador. Um valor zero especifica que o IDCT baseado em acelerador não será usado. Se bConfigResidDiffHost e bConfigResidDiffAccelerator forem 1, 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. Esse membro deverá ser zero se bConfigBitstreamRaw for 1.
O valor preferencial para um acelerador a dar suporte é 1 para bConfigResidDiffAccelerator.
Quando bConfigResidDiffAccelerator e bConfigResidDiffHost são iguais a 1, a decodificação de diferença residual pode ser compartilhada entre o host e o acelerador em uma base de macroblock. Isso é considerado um nível ainda maior de capacidade de acelerador do que quando bConfigResidDiffAccelerator é igual a 1 e bConfigResidDiffHost é igual a zero.
bConfigHostInverseScan
Indica se a verificação inversa para processamento de bloco de domínio de transformação é executada no host ou no acelerador. Um valor de 1 indica que 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 em vez disso para quaisquer coeficientes de transformação. Um valor igual a zero indica que a verificação inversa será executada no acelerador. Esse membro deverá ser zero se bConfigResidDiffAccelerator for zero ou se bConfig4GroupedCoefs for 1.
O valor preferencial para um acelerador a dar suporte será 1 se bConfigResidDiffAccelerator for 1.
bConfigSpecificIDCT
Indica o uso de um método IDCT específico para IDCT fora do host. Um valor 1 indica o uso do IDCT especificado no Anexo W da Recomendação ITU-T H.263. Um valor zero indica que qualquer IDCT em conformidade pode ser usado para IDCT fora do host. (Valores diferentes de zero e 1 são reservados para uso futuro.)
Esse membro deverá ser zero se bConfigResidDiffAccelerator for zero (simplesmente indicando a decodificação de diferença residual baseada em host).
bConfig4GroupedCoefs
Um valor 1 indica que coeficientes de transformação para IDCT fora do host serão enviados usando a estrutura DXVA_TCoef4Group em vez da estrutura DXVA_TCoefSingle . Isso será zero se bConfigResidDiffAccelerator for zero ou se bConfigHostInverseScan for 1.
O valor preferencial para um acelerador a dar suporte será zero se bConfigResidDiffAccelerator for 1.
Comentários
Para alguns tipos de bitstreams, forçar comandos de controle de macroblock dentro de cada buffer de comando de controle de macroblock a estar em ordem raster aumenta consideravelmente o número de buffers necessários que devem ser processados ou requer a reordenação de host das informações de controle. O suporte à ordem arbitrária pode, portanto, ser vantajoso para o processo de decodificação. Por exemplo, a decodificação de resolução CIF H.261 pode exigir 36 buffers de controle de macroblock por imagem se a ordem de verificação de raster for necessária dentro de cada buffer (os modos arbitrários de fatia e fatia retangular do Anexo K do H.263 têm repercussões mais graves, possivelmente exigindo um número extremamente grande de buffers.)
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | dxva.h (inclua Dxva.h) |