estrutura DXVA_PictureParameters (dxva.h)
A estrutura DXVA_PictureParameters é enviada pelo decodificador de host para o acelerador para fornecer os parâmetros no nível da imagem de uma imagem compactada para decodificação no acelerador.
Sintaxe
typedef struct _DXVA_PictureParameters {
WORD wDecodedPictureIndex;
WORD wDeblockedPictureIndex;
WORD wForwardRefPictureIndex;
WORD wBackwardRefPictureIndex;
WORD wPicWidthInMBminus1;
WORD wPicHeightInMBminus1;
BYTE bMacroblockWidthMinus1;
BYTE bMacroblockHeightMinus1;
BYTE bBlockWidthMinus1;
BYTE bBlockHeightMinus1;
BYTE bBPPminus1;
BYTE bPicStructure;
BYTE bSecondField;
BYTE bPicIntra;
BYTE bPicBackwardPrediction;
BYTE bBidirectionalAveragingMode;
BYTE bMVprecisionAndChromaRelation;
BYTE bChromaFormat;
BYTE bPicScanFixed;
BYTE bPicScanMethod;
BYTE bPicReadbackRequests;
BYTE bRcontrol;
BYTE bPicSpatialResid8;
BYTE bPicOverflowBlocks;
BYTE bPicExtrapolation;
BYTE bPicDeblocked;
BYTE bPicDeblockConfined;
BYTE bPic4MVallowed;
BYTE bPicOBMC;
BYTE bPicBinPB;
BYTE bMV_RPS;
BYTE bReservedBits;
WORD wBitstreamFcodes;
WORD wBitstreamPCEelements;
BYTE bBitstreamConcealmentNeed;
BYTE bBitstreamConcealmentMethod;
} DXVA_PictureParameters, *LPDXVA_PictureParameters;
Membros
wDecodedPictureIndex
Especifica o buffer de quadro de destino para os macroblocks decodificados.
wDeblockedPictureIndex
Especifica o buffer de quadro de destino para a imagem de saída desbloqueada quando bPicDeblocked é 1. Esse membro não tem significado e deve ser zero se bPicDeblocked for zero. Esse membro pode ser o mesmo que wDecodedPictureIndex.
wForwardRefPictureIndex
Especifica o índice de buffer de quadro da imagem a ser usada como uma imagem de referência para previsão de encaminhamento da imagem atual. Não deve ser o mesmo que wDecodedPictureIndex. Esse membro deverá ser 0xFFFF se bPicIntra for 1.
wBackwardRefPictureIndex
Especifica o índice de buffer de quadro da imagem a ser usada como uma imagem de referência para previsão anterior da imagem atual. Esse membro não deve ser o mesmo que wDecodedPictureIndex se a previsão de movimento de referência anterior for usada. Esse membro deverá ser 0xFFFF se bPicBackwardPrediction for zero.
wPicWidthInMBminus1
Especifica a largura da imagem atual em unidades de macroblocks, menos 1. A largura da imagem em macroblocks é derivada pela adição de 1 a wPicWidthInMBminus1.
wPicHeightInMBminus1
Especifica a altura da imagem atual em unidades de macroblocks, menos 1. A altura da imagem em macroblocks é derivada pela adição de 1 a wPicHeightInMBminus1.
bMacroblockWidthMinus1
Especifica a largura de amostra de luminância de destino de um macroblock, menos 1. Isso é igual a 15 para MPEG-1, MPEG-2, H.263 e MPEG-4.
bMacroblockHeightMinus1
Especifica a altura da amostra de luminância de destino de um macroblock, menos 1. Isso é igual a 15 para MPEG-1, MPEG-2, H.261, H.263 e MPEG-4.
bBlockWidthMinus1
Especifica a largura do bloco de um bloco de diferença residual menos 1. Isso é igual a 7 para MPEG-1, MPEG-2, H.261, H.263 e MPEG-4. Isso será 7 se o membro bConfig4GroupedCoefs da estrutura DXVA_ConfigPictureDecode for 1. Os blocos de diferença residual em um macroblock são enviados na ordem especificada como nas Figuras 6-10 do MPEG-2, 6-11, e 6-12 (ordem de varredura para Y, seguido por todos os blocos 4:2:0 de Cb em ordem de varredura, seguido por blocos 4:2:0 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:2:2 blocos de Cr, seguido por 4:4:4 blocos de Cb, seguido por blocos 4:4:4 de Cr). Um termo derivado chamado WT é formado adicionando 1 a bBlockWidthMinus1.
bBlockHeightMinus1
Especifica a altura do bloco de um bloco de diferença residual, menos 1. Isso é igual a 7 para MPEG-1, MPEG-2, H.261, H.263 e MPEG-4. Isso será 7 se bConfig4GroupedCoefs for 1. Um termo derivado chamado HT é formado adicionando 1 a bBlockHeightMinus1.
bBPPminus1
Especifica o número de bits por pixel para os valores de exemplo de vídeo, menos 1. Isso é pelo menos 7 (indicando pixels de 8 bits). Isso é igual a 7 para MPEG-1, MPEG-2, H.261 e H.263. Há suporte para um número maior de bits por pixel em alguns modos operacionais de MPEG-4. Um termo derivado chamado BPP é formado pela adição de 1 a bBPPminus1.
bPicStructure
Indica se a imagem atual é uma imagem de campo superior (um valor 1), uma imagem de campo inferior (um valor 2) ou uma imagem de quadro (um valor 3). Na codificação estruturada por quadro de verificação progressiva, como no H.261, bPicStructure é 3. Um valor derivado PicCurrentField é definido como zero, a menos que bPicStructure seja 2 (campo inferior). Nesse caso, é 1. Esse membro tem o mesmo significado que a variável picture_structure definida na Seção 6.3.10 e na Tabela 6-14 de MPEG-2 (H.262).
bSecondField
Indica se, no caso de codificação estruturada em campo (quando bPicStructure é 1 ou 2), o campo atual é o segundo campo de uma imagem. Isso é usado para determinar se o campo de paridade oposta usado como referência para as linhas de paridade oposta para previsão de compensação de movimento é o campo de paridade oposta da imagem de referência ou o campo de paridade oposta da imagem atual. Se bSecondField for 1, o campo atual será o segundo campo de uma imagem e o campo usado como referência para as linhas de paridade oposta para compensação de movimento serão as linhas de paridade oposta da imagem atual. (Em ambos os casos, o campo usado como referência para as linhas de mesma paridade para compensação de movimento são as mesmas linhas de paridade da imagem de referência.) Caso contrário, bSecondField será zero.
bPicIntra
Indica se a previsão compensada por movimento é necessária para essa imagem. Se bPicIntra for 1, todos os macroblocks serão enviados com a estrutura de comando de controle DXVA_MBctrl_I_OffHostIDCT_1 ou DXVA_MBctrl_I_HostResidDiff_1 macroblock, na qual o sinalizador IntraMacroblock é igual a 1 . Ou seja, nenhuma previsão compensada por movimento é executada para a imagem. Caso contrário, alguns macroblocks da imagem podem ter o parâmetro IntraMacroblock do comando de controle macroblock igual a zero e a estrutura de comandos de controle macroblock usará a estrutura DXVA_MBctrl_P_HostResidDiff_1 ou a estrutura DXVA_MBctrl_P_OffHostIDCT_1 .
bPicBackwardPrediction
Indica se os macroblocks da imagem atual podem incluir previsão de versões anteriores. Se bPicIntra for 1, bPicBackwardPrediction deverá ser zero. Se bPicBackwardPrediction for zero, MotionBackward deverá ser zero em todos os comandos de controle de macroblock da imagem (dentro de cada estrutura de DXVA_MBctrl_I_HostResidDiff_1, DXVA_MBctrl_I_OffHostIDCT_1, DXVA_MBctrl_P_HostResidDiff_1 ou DXVA_MBctrl_P_OffHostIDCT_1). Se bPicBackwardPrediction for 1, alguns macroblocks da imagem poderão ter MotionBackward igual a 1.
bBidirectionalAveragingMode
Indica o método de arredondamento para combinar planos de previsão em compensação de movimento bidirecional (usado para imagens B e movimento dual prime). O valor zero indica a média arredondada de MPEG-1 e MPEG-2 (na qual os valores no meio do caminho entre dois inteiros são arredondados para cima para o próximo inteiro mais alto) e o valor 1 indica a média truncada de H.263 (na qual os valores no meio do caminho entre dois inteiros são arredondados para baixo para o próximo inteiro inferior). bBidirectionalAveragingMode deverá ser zero se nenhuma média bidirecional for necessária.
bMVprecisionAndChromaRelation
Esse membro indica a precisão dos vetores de movimento de luminância e como os vetores de movimento de crominância são derivados de vetores de movimento de luminância.
A tabela a seguir lista os valores desse membro com a precisão do vetor de movimento de luminância especificada e uma descrição de como os vetores de movimento de chrominance são derivados.
Valor | Descrição |
---|---|
0 | Os vetores de movimento de luminância têm precisão de meia amostra. Os vetores de movimento de chrominance são derivados de vetores de movimento de luminância de acordo com MPEG-2 (H.262). |
1 | Os vetores de movimento de luminância têm precisão de meia amostra. Os vetores de movimento de chrominance são derivados de vetores de movimento de luminância de acordo com H.263 . |
2 | Os vetores de movimento de luminância têm precisão de amostra completa. Os vetores de movimento de crominância são derivados de vetores de movimento de luminância de acordo com H.261 (dividindo por dois e truncando em direção a zero a valores de amostra completa). |
3 | Reservado. |
bChromaFormat
Afeta o número de blocos de erro de previsão esperados pelo acelerador. Essa variável é definida em MPEG-2 (H.262). Para os bitstreams MPEG-1, MPEG-2 Main Profile, H.261 e H.263, esse valor sempre deve ser definido como 1, indicando o formato 4:2:0. Se um valor de 2, isso indica 4:2:2 e, se um valor de 3, indica 4:4:4 amostragem. Esse membro deverá ser igual a 1 se o membro bConfig4GroupedCoefs de DXVA_ConfigPictureDecode for 1 (porque a operação bConfig4GroupedCoefs não inclui a indicação de EOB necessária nos dados de coeficiente nos formatos 4:2:2 e 4:4:4).
Observação
A siting de croma horizontal difere ligeiramente entre H.261, H.263 e MPEG-1 versus MPEG-2 e MPEG-4. Essa diferença é considerada pequena o suficiente para ignorar.
bPicScanFixed
Ao usar o processamento de IDCT baseado em acelerador de blocos de diferença residual, um valor de 1 para esse sinalizador indica que o método de verificação inversa é o mesmo para todos os macroblocks na imagem. Um valor zero indica que não é. Esse membro deverá ser 1 se o membro bConfigHostInverseScan for 1 ou se o membro bConfigResidDiffAccelerator for zero em DXVA_ConfigPictureDecode.
bPicScanMethod
Indica o método de verificação inversa fixo para a imagem quando bPicScanFixed é 1. Quando bPicScanFixed é zero, esse membro não tem significado e deve ter um valor igual a zero.
Se o membro bConfigHostInverseScan de DXVA_ConfigPictureDecode for zero, o método de verificação definido por esse membro poderá ser um dos seguintes.
bPicScanMethod | Método Scan |
---|---|
0 | Verificação em ziguezague (MPEG-2) |
1 | Verificação vertical alternativa (MPEG-2) |
2 | Verificação horizontal alternativa (H.263) |
Se o membro bConfigHostInverseScan de DXVA_ConfigPictureDecode for 1, o método de verificação definido por bPicScanMethod deverá ser definido da seguinte maneira.
bPicScanMethod | Método Scan |
---|---|
3 | Verificação arbitrária com endereço de coeficiente absoluto. |
bPicReadbackRequests
Indica se as solicitações de controle de read-back são emitidas para a imagem atual. Um valor de 1 indica que as solicitações de read-back estão presentes e um valor igual a zero indica que elas não estão. As solicitações de read-back indicam que os valores de macroblocks são lidos novamente na imagem final decodificada e desbloqueada (se o desbloqueio for aplicado com wDeblockedPictureIndex igual a wDecodedPictureIndex).
bRcontrol
Define o método de arredondamento a ser usado para compensação de movimento de meia amostra. Essa variável é definida na Seção 6.1.2 do H.263. Um valor zero indica o método de arredondamento de meia amostra encontrado em MPEG-1, MPEG-2 e a primeira versão do H.263. Um valor 1 indica o método de arredondamento que inclui um desvio de média descendente que pode ser selecionado em alguns modos opcionais de H.263 e MPEG-4. Não tem sentido para H.261, porque H.261 não tem compensação de moção de meia amostra. Ele deve ser definido como zero para todos os bitstreams MPEG-1 e MPEG-2 para estar em conformidade com o operador de arredondamento definido por esses padrões.
bPicSpatialResid8
Indica como os blocos de diferença de domínio espacial são enviados para o acelerador do host. Um valor 1 indica que blocos de diferença de domínio espacial para decodificação de diferença residual baseada em host podem ser enviados usando amostras de 8 bits e um valor zero indica que eles não podem.
Esse membro deverá ser zero se o membro bConfigResidDiffHost de DXVA_ConfigPictureDecode for zero ou se bPP for maior que 8. Esse membro deverá ser 1 se BPP for 8, bPicIntra for 1 e bConfigResidDiffHost for 1. Esse membro deverá ser 1 se o membro bConfigSpatialResid8 de DXVA_ConfigPictureDecode for 1.
Se esse membro for igual a 1, os macroblocks intra de domínio espacial serão enviados como valores de 8 bits (assinados ou não assinados, conforme determinado pelo membro bConfigIntraResidUnsigned do DXVA_ConfigPictureDecode) e as diferenças de macroblock nonintra de domínio espacial serão enviadas como valores de diferença de 8 bits assinados em relação a alguma previsão compensada por movimento.
O membro bPicSpatialResid8 difere do membro bConfigSpatialResid8 do DXVA_ConfigPictureDecode, pois é uma indicação para uma imagem específica, não uma indicação global para toda a sequência de vídeo. Em alguns casos, como em uma imagem intra com BPP igual a 8, bPicSpatialResid8 será 1, embora bConfigSpatialResid8 possa ser zero.
bPicOverflowBlocks
Indica se os blocos de diferença de domínio espacial são enviados para o acelerador do host usando blocos de estouro. Um valor de 1 indica que blocos de diferença de domínio espacial para decodificação de diferença residual baseada em host de uma imagem podem ser enviados usando blocos de estouro. Um valor zero indica que os blocos de diferença de domínio espacial não são enviados usando blocos de estouro. Esse membro deverá ser zero se bConfigResidDiffHost for zero ou se bConfigSpatialResid8 for zero ou se BPP for maior que 8. Os parâmetros bConfigResidDiffHost e bConfigSpatialResid8 são membros de DXVA_ConfigPictureDecode. bPicOverflowBlocks indica se algum bloco de estouro pode estar presente para a imagem específica. Em uma imagem intra com BPP igual a 8, bPicOverflowBlocks deve ser zero, pois nenhum bloco de estouro é necessário nesse caso.
bPicExtrapolation
Indica se vetores de movimento sobre limites de imagem são permitidos conforme especificado pelo Anexo D H.263 e MPEG-4. Isso requer a alocação de planos de imagem que são dois macroblocks mais largos (um macroblock extra à esquerda e outro à direita) e dois macroblocks mais altos (um macroblock extra na parte superior e outro na parte inferior) do que o tamanho da imagem decodificada ou recorte do endereço de cada acesso de pixel individual para dentro dos limites da imagem. Os endereços de macrobloco nesta especificação são para macroblocks no interior da imagem, não incluindo preenchimento.
bPicDeblocked
Indica se os comandos de desbloqueio são enviados para essa imagem para criar uma imagem de saída desbloqueada. A imagem de saída desbloqueada é colocada no buffer de imagem indicado por wDeblockedPictureIndex. Se bPicDeblocked for 1, os comandos de desbloqueio serão enviados e o quadro desbloqueado será gerado. Se bPicDeblocked for zero, nenhum comando de desbloqueio será enviado e nenhuma imagem desbloqueada será gerada.
bPicDeblockConfined
Indica se o bloqueio de buffers de comando de filtro limita o efeito de desbloquear operações de filtro ao conjunto de macroblocks contidos no buffer de comando de filtro de desbloqueio.
bPic4MVallowed
Especifica se quatro vetores de movimento de referência de encaminhamento por macroblock são permitidos conforme usado nos Anexos H.263 F e J.
bPicOBMC
Especifica se a compensação de movimento para a imagem atual opera usando a OBMC (compensação de movimento de bloco sobreposto), conforme especificado no Anexo F H.263. Deve ser zero se bPic4MVallowed for zero.
bPicBinPB
Especifica se os macroblocks previstos bidirecionalmente na imagem usam a imagem B na compensação de movimento de quadro PB. Isso restringe a área prevista bidirecionalmente para cada macroblock para a região do macroblock correspondente na imagem de referência anterior, conforme especificado nos Anexos G e M de H.263.
bMV_RPS
Especifica o uso da seleção de imagem de referência de vetor de movimento. Se bMV_RPS for 1, isso indicará que um índice de imagem de referência é enviado para cada vetor de movimento, em vez de apenas índices de imagem de movimento para frente e possivelmente para trás para a imagem como um todo. Se bMV_RPS for 1, os membros wForwardRefPictureIndex e wBackwardRefPictureIndex não terão significado e deverão ser zero.
bReservedBits
Isso é reservado para empacotamento e alinhamento. Deve ser zero.
wBitstreamFcodes
Indica que o vetor de movimento f_code valores conforme definido em MPEG-2 para processamento de bitstream bruto. Cada f_code valor leva 4 bits. Esses valores são empacotados em uma palavra de 16 bits da seguinte maneira.
Bits | Descrição |
---|---|
12 a 15 (os bits mais significativos) | f_code[0][0]: a f_code horizontal para frente |
8 a 11 | f_code[0][1]: a f_code vertical para frente |
4 a 7 | f_code[1][0]: o f_code horizontal para trás |
0 a 3 (os bits menos significativos) | f_code[1][1]: o f_code vertical para trás |
Quando o membro bConfigBitstreamRaw da estrutura DXVA_ConfigPictureDecode é 1, wBitstreamFcodes contém quatro valores de vetor de movimento f_code . Se bConfigBitstreamRaw for 1 e qualquer um dos quatro valores f_code for desnecessário ou irrelevante devido à estrutura dos dados de bitstream ou devido ao valor de f_code não ser necessário na sintaxe bitstream de codificação de vídeo relevante (como em H.261 ou H.263), cada valor irrelevante f_code será 0xF.
Se o membro bConfigBitstreamRaw da estrutura DXVA_ConfigPictureDecode for zero, wBitstreamFcodes será definido como 0xFFFF (todos os valores f_code serão definidos como 0xF).
Observação
Os bitstreams MPEG-1 fornecem essas informações de uma forma diferente. Portanto, para bitstreams MPEG-1, f_code[0][0] e f_code[0][1] são iguais aos forward_f_code do MPEG-1 e f_code[1][0] e f_code[1][1] são iguais aos backward_f_code do MPEG-1.
wBitstreamPCEelements
Quando o membro bConfigBitstreamRaw do DXVA_ConfigPictureDecode é 1, esse membro contém um conjunto de sinalizadores necessários para o processo de decodificação de bitstream do vídeo MPEG-2. Ele não é usado e deve ser zero quando bConfigBitstreamRaw é zero e para vídeo não MPEG-2. Os bits nesse membro são definidos por sua correspondência com elementos bitstream da extensão de codificação de imagem MPEG-2 da seguinte maneira.
Bits | Descrição |
---|---|
14 e 15 | IntraDCprecision é igual a intra_dc_precision. |
12 e 13 | AnotherPicStructure é igual a picture_structure. Isso deve ser igual ao membro bPicStructure dessa estrutura. |
11 | TopFieldFirst é igual a top_field_first. |
10 | FrameDCTprediction é igual a frame_pred_frame_dct. |
9 | ConcealmentMVs é igual a concealment_motion_vectors. |
8 | QuantScaleType é igual a q_scale_type. |
7 | IntraVLCformat é igual a intra_vlc_format. |
6 | AlternateScan é igual a alternate_scan. |
5 | RepeatFirstField é igual a repeat_first_field (não necessário para o acelerador). |
4 | Chroma420type é igual a chroma_420_type (não necessário para o acelerador e restrito por MPEG-2 para ser igual a progressive_frame). |
3 | ProgressiveFrame é igual a progressive_frame. |
0, 1 e 2 | Bits reservados. Esses são os bits menos significativos. |
bBitstreamConcealmentNeed
Indica a probabilidade de erros nos dados de bitstream quando o membro bConfigBitstreamRaw da estrutura DXVA_ConfigPictureDecode é 1. Deve ser zero se bConfigBitstreamRaw for zero.
Os aceleradores de vídeo devem ser projetados para não falhar ou bloquear, independentemente do conteúdo dos dados dados dados a eles. Portanto, pode ser útil para um acelerador de vídeo ter informações sobre a avaliação do host sobre a probabilidade de erros sintáticos. Isso é para determinar se há a necessidade de invocar um algoritmo de ocultação de erro mais complexo que pode retardar o processo de decodificação de bitstream. Os valores permitidos para esse membro são os seguintes (todos os outros valores são reservados).
Valor | Significado |
---|---|
0 | É improvável que o bitstream contenha qualquer quantidade significativa de erros em seu formato sintático. |
1 | O bitstream pode conter alguns erros. É provável que esses erros sejam pouco frequentes (por exemplo, um erro uma ou duas vezes por hora). |
2 | É provável que o bitstream contenha alguns erros. Esses erros provavelmente ocorrerão com uma frequência que pode afetar a experiência do usuário (por exemplo, um erro a cada cinco a dez minutos). |
3 | É provável que o bitstream contenha erros de formato sintático relativamente significativos, graves e frequentes (por exemplo, um ou mais erros por minuto). |
bBitstreamConcealmentMethod
Especifica um método padrão preferencial para processamento de ocultação de erros quando o membro bConfigBitstreamRaw da estrutura DXVA_ConfigPictureDecode é 1. Deve ser zero se bConfigBitstreamRaw for zero. Os valores permitidos para esse membro são os seguintes (todos os outros valores são reservados).
Valor | Método de ocultação de erro |
---|---|
0 | Desconhecido ou não especificado. |
1 | Ocultação espacial intra-imagem dentro da imagem. |
2 | Imagem de referência de movimento de avanço para ocultação entre imagens (a ser usada mais normalmente em uma imagem P ou em uma imagem B mais próxima de sua imagem de referência de movimento de avanço do que de sua imagem de referência de movimento anterior). |
3 | Imagem de referência de movimento para trás para ocultação entre imagens (a ser usada mais normalmente em uma imagem B mais próxima de sua imagem de referência de movimento para trás do que de sua imagem de referência de movimento de avanço). |
Comentários
Determinados membros dessa estrutura são restritos a valores específicos pela configuração estabelecida usando a estrutura DXVA_ConfigPictureDecode . Depois que os parâmetros de nível de imagem são transmitidos usando DXVA_PictureParameters, o processo de decodificação de imagem é regido principalmente por comandos de controle de macroblock formados usando as estruturasDXVA_MBctrl_I_HostResidDiff_1, DXVA_MBctrl_I_OffHostIDCT_1, DXVA_MBctrl_P_HostResidDiff_1 ou DXVA_MBctrl_P_OffHostIDCT_1 .
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | dxva.h (inclua Dxva.h) |