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 bConfigSpatialResid8 for zero e bConfigResidDiffHost for 1, o host enviará blocos de dados de domínio espacial de diferença residual para macroblocks nonintra usando exemplos assinados de 16 bits e para macroblocks intra em imagens previstas (nonintra) em um formato dependendo de bConfigIntraResidUnsigned da seguinte maneira:
  • 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.
O membro bConfigSpatialResid8 deverá ser zero se bConfigResidDiffHost for zero. Não há preferência para um valor específico de bConfigSpatialResid8 quando bConfigResidDiffHost é 1.
Nota Para imagens intra com BPP igual a 8, blocos de domínio espacial devem ser enviados usando amostras de 8 bits. Para imagens intra com BPP maiores que 8, blocos de domínio espacial devem ser enviados usando amostras de 16 bits. (A variável BPP é o número de bits por exemplo para o vídeo não compactado, geralmente um valor de 8.)

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.
Quando bConfigIntraResidUnsigned é igual a 1 e bConfigResidDiffHost é igual a 1, os 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 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 membro bConfigIntraResidUnsigned deve ser zero, a menos que bConfigResidDiffHost seja 1.

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).

Nota O Anexo W da Recomendação ITU-T H.263 não está em conformidade com os requisitos de IDCT do MPEG-2 corrigendum 2 e, portanto, bConfigSpecificIDCT não deve ser um para uso com vídeo MPEG-2.
 

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)

Confira também

DXVA_MBctrl_I_HostResidDiff_1

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_MBctrl_P_HostResidDiff_1

DXVA_MBctrl_P_OffHostIDCT_1

DXVA_TCoef4Group

DXVA_TCoefSingle