estrutura DXVA_MBctrl_I_HostResidDiff_1 (dxva.h)
A estrutura DXVA_MBctrl_I_HostResidDiff_1 é enviada uma vez por macroblock pelo decodificador de host para o acelerador para especificar comandos de controle de macroblock para uma imagem intra.
Sintaxe
typedef struct _DXVA_MBctrl_I_HostResidDiff_1 {
WORD wMBaddress;
WORD wMBtype;
DWORD dwMB_SNL;
WORD wPatternCode;
WORD wPC_Overflow;
DWORD dwReservedBits2;
} DXVA_MBctrl_I_HostResidDiff_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) Especifica a seleção de campo vertical para vetores de movimento correspondentes enviados posteriormente no comando de controle macroblock. Para movimento baseado em quadro com uma estrutura de imagem de quadro (por exemplo, para H.261 e H.263), todos esses bits devem ser zero. Os bits em MvertFieldSel_0, MvertFieldSel_1, MvertFieldSel_2 e MvertFieldSel_3 correspondem aos bits motion_vertical_field_select[r][s] na Seção 6.3.17.2 do MPEG-2. |
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. HostResidDiff é sempre igual a 1 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 Deve ser zero. |
7 e 6 | MBscanMethod Esses bits não têm significado e devem ser definidos como zero. |
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 à variável 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
Especifica o número de macroblocks ignorados a serem gerados após o macroblock atual e indica o local dos dados de diferença residual para os blocos do macroblock atual. Esse membro contém duas variáveis: MBskipsFollowing nos 8 bits mais significativos e MBdataLocation nos 24 bits menos significativos. MBskipsFollowing indica o número de macroblocks ignorados a serem gerados após o macroblock atual. MBdataLocation é um índice no buffer de dados de bloco de diferença residual. Esse índice indica o local dos dados de diferença residual para os blocos do macroblock atual, expressos como um múltiplo de 32 bits.
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 nessa estrutura.
Bit (11-i) de wPatternCode (em que o bit zero é 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 varredura de raster para Y, seguido por blocos 4:2:0 de Cb na ordem de varredura 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 (11i) 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 do CBP (padrão de bloco codificado) para a esquerda por seis posições de bit (essas posições de bits inferiores sendo usadas para formatos de chroma 4:2:2 e 4:4:4).
Se o membro bConfigSpatialResidInterleaved da estrutura DXVA_ConfigPictureDecode for 1, as diferenças residuais baseadas em host serão enviadas em uma forma intercalada por chroma correspondente à do formato de pixel YUV em uso. Nesse caso, cada par de blocos Cr correspondente espacialmente e Cb é tratado como uma única unidade de estrutura de diferença residual. Isso não altera o valor ou o significado de wPatternCode, mas implica que ambos os membros de cada par de blocos de dados Cb e Cr são enviados sempre que qualquer um desses blocos de dados tiver o bit correspondente definido em wPatternCode. Se o bit em wPatternCode para um bloco de dados específico for zero, os valores de dados de diferença residual correspondentes deverão ser enviados como zero sempre que esse emparelhamento exigir o envio de um bloco de dados de diferença residual para um bloco com um bit wPatternCode igual a zero.
wPC_Overflow
Deve ser zero.
dwReservedBits2
Bits reservados usados para empacotamento e alinhamento. Deve ser zero.
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) |