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