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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de