Compartilhar via


estrutura DXVA_MBctrl_I_OffHostIDCT_1 (dxva.h)

A estrutura DXVA_MBctrl_I_OffHostIDCT_1 é enviada uma vez por macroblock pelo decodificador de host para o acelerador para especificar comandos de controle de macroblock para 4:2:0 intra imagens ao usar iDCT fora do host.

Sintaxe

typedef struct _DXVA_MBctrl_I_OffHostIDCT_1 {
  WORD  wMBaddress;
  WORD  wMBtype;
  DWORD dwMB_SNL;
  WORD  wPatternCode;
  BYTE  bNumCoef[DXVA_NumBlocksPerMB_420];
} DXVA_MBctrl_I_OffHostIDCT_1;

Membros

wMBaddress

Especifica o endereço de macroblock do macroblock atual na ordem de verificação de raster. Para obter exemplos de endereços de macroblock, consulte endereços de macroblock.

wMBtype

Especifica o tipo de macroblock que está sendo processado. Os bits a seguir definem o processamento de macroblock.

Bits Descrição
15 a 12 MvertFieldSel_3 (bit 15, o bit mais significativo) até MvertFieldSel_0 (bit 12)
Deve ser zero.
11 Bit Reservado
Deve ser zero.
10 HostResidDiff
Especifica se os blocos decodificados de diferença residual de domínio espacial são enviados ou se os coeficientes de transformação são enviados para o IDCT fora do host para o macroblock atual.
O sinalizador HostResidDiff é sempre igual a zero nessa estrutura. Esse sinalizador deverá ser zero se bConfigResidDiffHost for zero. Esse sinalizador deverá ser 1 se bConfigResidDiffAccelerator for zero. Os membros bConfigResidDiffHost e bConfigResidDiffAccelerator estão contidos na estrutura DXVA_ConfigPictureDecode .
9 e 8 MotionType
Isso não se aplica a imagens intra. Ambos os bits devem ser zero.
7 e 6 MBscanMethod
Especifica o método de verificação do comando de controle macroblock. Isso deve ser igual a bPicScanMethod se bPicScanFixed for 1.
Se bConfigHostInverseScan for zero, MBscanMethod será um dos seguintes valores:
  • Verificação em ziguezague de Zero ∠(MPEG-2 Figura 7-2)
  • 1 âˆ' verificação vertical alternativa (MPEG-2 Figura 7-3)
  • 2 âˆ' verificação horizontal alternativa (H.263 Figura I.2 Parte a)
Se bConfigHostInverseScan for 1, MBscanMethod será igual a 3, que é uma verificação arbitrária com endereço coeficiente absoluto. bPicScanMethod e bPicScanFixed são membros do DXVA_PictureParameters . bConfigHostInverseScan é membro do DXVA_ConfigPictureDecode.
5 FieldResidual
Indica se os blocos de diferença residual usam uma estrutura IDCT de campo, conforme especificado em MPEG-2.
Deve ser 1 se o membro bPicStructure de DXVA_PictureParameters for 1 ou 2. Quando usado para MPEG-2, FieldResidual deverá ser zero se o sinalizador frame_pred_frame_DCT na sintaxe MPEG-2 for 1 e precisar ser igual ao elemento dct_type da sintaxe MPEG-2 se dct_type estiver presente para o macroblock.
4 H261LoopFilter
Deve ser zero.
3 Motion4MV
Deve ser zero.
2 MotionBackward
Deve ser zero.
1 MotionForward
Deve ser zero.
0 IntraMacroblock
Deve ser 1.

dwMB_SNL

wPatternCode

Indica se os dados de diferença residual são enviados para cada bloco no macroblock. Em uma imagem intra, os dados de diferença residual são enviados para cada bloco no macroblock. Os bits em wPatternCode que se referem a todos os blocos do macroblock atual devem ser 1 em DXVA_MBctrl_I_OffHostIDCT_1.

Bit (11-i) de wPatternCode (onde o bit 0 é o bit menos significativo) indica se os dados de diferença residual são enviados para o bloco i, onde i é o índice do bloco dentro do macroblock conforme especificado em MPEG-2 figuras 6-10, 6-11 e 6-12 (ordem de verificação raster para Y, seguido por 4:2:0 blocos de Cb na ordem de verificação raster, seguido por 4:2:0 blocos de Cr, seguido por 4:2:2 blocos de Cb, seguido por 4:2:2 blocos de Cr, seguido por 4:4:4 blocos de Cb, seguido por 4:4:4 blocos de Cr). Os dados dos blocos codificados (aqueles blocos com bit (11-i) iguais a 1) são encontrados no buffer de codificação residual na mesma ordem de indexação (aumentando i). Para dados MPEG-2 4:2:0, o valor de wPatternCode corresponde à mudança do valor decodificado de CBP (padrão de bloco codificado) para a esquerda em posições de seis bits (essas posições de bit inferior sendo usadas para formatos de chroma 4:2:2 e 4:4:4).

bNumCoef[DXVA_NumBlocksPerMB_420]

Cada valor na matriz bNumCoef indica o número de coeficientes no buffer de dados de diferença residual para cada bloco i do macroblock.

O subscrito da matriz i é o índice do bloco dentro do macroblock, conforme especificado em MpEG-2 video Figures 6-10, 6-11 e 6-12 (raster-scan order for Y, seguido por Cb, seguido por Cr).

Esse membro é usado somente quando o sinalizador HostResidDiff (bit 10 no wMBtype) é zero e bChromaFormat é 1 (4:2:0). Se usado em formatos 4:2:2 ou 4:4:4, ele aumentaria o tamanho dos comandos de controle de macroblock típicos além de um limite crítico de alinhamento de memória. Como resultado, o bit TCoefEOB dentro da estrutura DXVA_TCoefSingle é usado para determinar o número de coeficientes em cada bloco em casos não 4:2:0.

A finalidade de bNumCoef é indicar a quantidade de dados presentes para cada bloco no buffer de dados de diferença residual, expresso como o número de coeficientes presentes. Quando o membro bConfig4GroupedCoefs da estrutura DXVA_ConfigPictureDecode for 1, bNumCoef poderá conter o número real de coeficientes enviados para o bloco ou esse valor arredondado para ser um múltiplo de quatro. Os dados desses coeficientes são encontrados no buffer de diferença residual na mesma ordem.

Comentários

Os macroblocks ignorados não são usados por imagens intra, portanto, a variável MBskipsFollowing deve ser zero. A variável MBdataLocation deve ser zero para o primeiro macroblock no buffer de comando de controle de macroblock. Para obter mais informações sobre como os macroblocks ignorados são gerados, consulte Gerando macroblocks ignorados.

Requisitos

Requisito Valor
Cabeçalho dxva.h (inclua Dxva.h)

Confira também

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_HostResidDiff_1

DXVA_PictureParameters

DXVA_TCoefSingle