Compartilhar via


estrutura D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION_0082_0 (d3d12umddi.h)

A estrutura D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION_0082_0 descreve as alterações nas imagens de referência como operações de memória como uma tupla de um identificador de operação e parâmetros associados necessários para a operação.

Sintaxe

typedef struct D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION_0082_0 {
  UCHAR memory_management_control_operation;
  UINT  difference_of_pic_nums_minus1;
  UINT  long_term_pic_num;
  UINT  long_term_frame_idx;
  UINT  max_long_term_frame_idx_plus1;
} D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION_0082_0;

Membros

memory_management_control_operation

A operação de controle a ser aplicada para afetar o estado de marcação de imagem de referência. Os valores de operação válidos seguem.

Valor Descrição
0 Encerrar memory_management_control_operation loop de elemento de sintaxe.
1 Marque uma imagem de referência de curto prazo como "não usada para referência".
2 Marque uma imagem de referência de longo prazo como "não usada para referência".
3 Marque uma imagem de referência de curto prazo como "usada para referência de longo prazo" e atribua um índice de quadro de longo prazo a ela.
4 Especifique o índice máximo de quadros de longo prazo e marque todas as imagens de referência de longo prazo com índices de quadro de longo prazo maiores que o valor máximo como "não utilizado para referência".
5 Marque todas as imagens de referência como "não usadas para referência" e defina a variável MaxLongTermFrameIdx como "sem índices de quadro de longo prazo".
6 Marque a imagem atual como "usada para referência de longo prazo" e atribua um índice de quadro de longo prazo a ela.

difference_of_pic_nums_minus1

Esse membro é usado com memory_management_control_operation igual a 3 ou 1 para atribuir um índice de quadro de longo prazo a uma imagem de referência de curto prazo ou para marcar uma imagem de referência de curto prazo como "não utilizada para referência". Quando o memory_management_control_operation associado é processado pelo processo de decodificação, o número de imagem resultante derivado de difference_of_pic_nums_minus1 deve ser um número de imagem atribuído a uma das imagens de referência marcadas como "usadas para referência" e não atribuídas anteriormente a um índice de quadro de longo prazo.

long_term_pic_num

Esse membro é usado com memory_management_control_operation igual a 2 para marcar uma imagem de referência de longo prazo como "não utilizada para referência". Quando o memory_management_control_operation associado é processado pelo processo de decodificação, long_term_pic_num deve ser igual a um número de imagem de longo prazo atribuído a uma das imagens de referência que está atualmente marcada como "usada para referência de longo prazo".

long_term_frame_idx

Esse membro é usado com memory_management_control_operation igual a 3 ou 6 para atribuir um índice de quadro de longo prazo a uma imagem. Quando o memory_management_control_operation associado é processado pelo processo de decodificação, o valor de long_term_frame_idx deve estar no intervalo de 0 a MaxLongTermFrameIdx, inclusive.

max_long_term_frame_idx_plus1

O valor menos 1 especifica o valor máximo do índice de quadro de longo prazo permitido para imagens de referência de longo prazo (até o recebimento de outro valor de max_long_term_frame_idx_plus1). O valor de max_long_term_frame_idx_plus1 deve estar no intervalo de 0 a max_num_ref_frames, inclusive.

Comentários

A variável MaxLongTermFrameIdx é derivada da seguinte maneira:

  • Se max_long_term_frame_idx_plus1 for igual a 0, MaxLongTermFrameIdx será definido como "nenhum índice de quadro de longo prazo".
  • Se max_long_term_frame_idx_plus1 for maior que 0, MaxLongTermFrameIdx será definido como igual a max_long_term_frame_idx_plus1 − 1.

A operação de marcação do quadro atual como uma referência de curto prazo é fornecida por um sinalizador presente na estrutura D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS_0080 com seus valores PictureOrderCountNumber e FrameDecodingOrderNumber correspondentes indicados na estrutura de controle de imagem associada.

A variável max_num_ref_frames é indicada pela capacidade máxima de DPB (buffer de imagem decodificado) relatada.

Observe que, para marcar um quadro de atualização instantânea do decodificador (IDR) como referência de longo prazo, o mecanismo explícito proposto é marcá-lo como referência de curto prazo primeiro, definindo D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_0080_USED_AS_REFERENCE_PICTURE ao chamar EncodeFrame para o quadro de IDR e, posteriormente, promovendo-o para ser um quadro de referência de longo prazo usando a operação de gerenciamento de memória '3' para marcar uma imagem de referência de curto prazo como "usada para referência de longo prazo" e atribuir um índice de quadro de longo prazo para ele.

Como alternativa, se a codificação de um quadro de IDR e a configuração adaptive_ref_pic_marking_mode_flag = 1, o driver pressupõe que o cliente está tentando definir o cabeçalho de fatia H264 long_term_reference_flag e fará isso no bitstream de saída para a chamada EncodeFrame .

Para obter mais detalhes sobre o processo de marcação de imagem, consulte a especificação H.264, seção 8.2.5.4 "Processo de marcação de imagem de referência de controle de memória adaptável decodificado".

Confira Codificação de vídeo D3D12 para obter informações gerais.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 11 (WDDM 3.0)
Cabeçalho d3d12umddi.h

Confira também

D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_0082_0

PFND3D12DDI_VIDEO_ENCODE_FRAME_0082_0