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 de bits reservados
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 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 deve 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:
  • Zero âˆ' zigzag scan (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 de 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 de 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 (em que o bit 0 é o bit menos significativo) indica se os dados de diferença residual são enviados para o bloco i, em que i é o índice do bloco dentro do macroblock conforme especificado nas figuras MPEG-2 6-10, 6-11 e 6-12 (ordem de verificação de raster para Y, seguido por blocos 4:2:0 de Cb na ordem de verificação raster, seguido por blocos 4:2:0 de Cr, seguido por blocos 4:2:2 de Cb, seguido por blocos 4:2:2 de Cr, seguido por 4:4:4 blocos de Cb, seguido por blocos 4:4:4 de Cr). Os dados dos blocos codificados (aqueles blocos com bit (11-i) igual 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, o valor de wPatternCode corresponde à alteração do valor decodificado de CBP (padrão de bloco codificado) para a esquerda por seis posições de bit (essas posições de bit inferior sendo usadas para formatos de croma 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 de matriz i é o índice do bloco dentro do macroblock, conforme especificado nas Figuras de vídeo MPEG-2 6-10, 6-11 e 6-12 (ordem de verificação de raster para Y, seguido por Cb, seguido por Cr).

Esse membro é usado somente quando o sinalizador HostResidDiff (bit 10 em wMBtype) é zero e bChromaFormat é 1 (4:2:0). Se usado em formatos 4:2:2 ou 4:4:4, isso aumentaria o tamanho dos comandos de controle de macroblock típicos além de um limite de alinhamento de memória crítico. Como resultado, o TCoefEOB bit 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 bConfig4GroupedCoefs membro da estrutura de DXVA_ConfigPictureDecode for 1, bNumCoef poderá conter o número real de coeficientes enviados para o bloco ou esse valor arredondado para um múltiplo de quatro. Os dados desses coeficientes são encontrados no buffer de diferença residual na mesma ordem.

Observações

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)

Consulte também

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_HostResidDiff_1

DXVA_PictureParameters

DXVA_TCoefSingle