Compartilhar via


estrutura D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC (d3d12video.h)

Representa os elementos de controle de nível de imagem para o comando EncodeFrame associado para codificação HEVC.

Sintaxe

typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC {
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
  D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC                       FrameType;
  UINT                                                      slice_pic_parameter_set_id;
  UINT                                                      PictureOrderCountNumber;
  UINT                                                      TemporalLayerIndex;
  UINT                                                      List0ReferenceFramesCount;
  UINT                                                      *pList0ReferenceFrames;
  UINT                                                      List1ReferenceFramesCount;
  UINT                                                      *pList1ReferenceFrames;
  UINT                                                      ReferenceFramesReconPictureDescriptorsCount;
  D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC     *pReferenceFramesReconPictureDescriptors;
  UINT                                                      List0RefPicModificationsCount;
  UINT                                                      *pList0RefPicModifications;
  UINT                                                      List1RefPicModificationsCount;
  UINT                                                      *pList1RefPicModifications;
  UINT                                                      QPMapValuesCount;
  INT8                                                      *pRateControlQPMap;
} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC;

Membros

Flags

Uma combinação OR bit a bit de valores da enumeração D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS especificando sinalizadores de configuração para o quadro que está sendo codificado.

FrameType

Um valor da enumeração D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC especificando o tipo de imagem. Verifique se os sinalizadores específicos do codec dão suporte ao tipo especificado. Essa seleção deve ser mantida em sincronia com a configuração da estrutura GOP definida pelo host. Observe que o GOP é definido na ordem de exibição e essa seleção de tipo de imagem deve seguir o GOP, mas em ordem de codificação.

slice_pic_parameter_set_id

Um UINT que especifica o valor a ser usado nos cabeçalhos de fatia do quadro atual para fazer referência ao PPS.

PictureOrderCountNumber

Um UINT que especifica a ordem de exibição do quadro atual.

TemporalLayerIndex

Um UINT que especifica o número da camada de imagem na hierarquia temporal. Verifique o número máximo de camadas em D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC.

List0ReferenceFramesCount

Um UINT que especifica o número de referências de quadros anteriores a serem usadas para esse quadro. Esse valor deve ser coerente com o que foi exposto em D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC.

pList0ReferenceFrames

Um ponteiro para uma matriz UINT que especifica a lista de quadros de referência de quadros anteriores a serem usados para esse quadro. Cada valor inteiro nessa matriz indicia em pReferenceFramesReconPictureDescriptors para referenciar imagens mantidas no DPB.

List1ReferenceFramesCount

Um UINT que especifica o número de referências de quadro futuras a serem usadas para esse quadro. Esse valor deve ser coerente com o que foi exposto em D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC.

pList1ReferenceFrames

Um ponteiro para uma matriz UINT que especifica a lista de quadros de referência de quadros futuros a serem usados para esse quadro. Cada valor inteiro nessa matriz indicia em pReferenceFramesReconPictureDescriptors para referenciar imagens mantidas no DPB.

ReferenceFramesReconPictureDescriptorsCount

Um UINT que especifica o número de entradas em pReferenceFramesReconPictureDescriptors.

pReferenceFramesReconPictureDescriptors

Um ponteiro para uma matriz UINT que descreve o estado atual do buffer do DPB mantido em D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrames. As listas pList0ReferenceFrames e pList1ReferenceFrames mapeiam índices de referências passadas/futuras para essa matriz de descritores.

Essa matriz de descritores, por sua vez, mapeia uma imagem de referência para esse quadro em um índice de recursos na matriz de imagens reconstruídas D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrames. Além disso, para cada imagem de referência, indica o número da ordem de codificação e exibição e se é uma referência de longo prazo.

O tamanho dessa matriz sempre corresponde a D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrames.NumTextures para o comando EncodeFrame associado.

List0RefPicModificationsCount

Um UINT que especifica o número de itens em pList0RefPicModifications.

pList0RefPicModifications

Um ponteiro para uma matriz UINT que contém comandos de modificação para a lista L0.

List1RefPicModificationsCount

Um UINT que especifica o número de itens em pList1RefPicModifications.

pList1RefPicModifications

Um ponteiro para uma matriz UINT que contém comandos de modificação para a lista L1.

QPMapValuesCount

Um UINT que especifica o número de elementos presentes em pRateControlQPMap. Isso deve corresponder ao número de blocos de codificação no quadro, arredondando a resolução do quadro para os valores alinhados mais próximos.

pRateControlQPMap

Um ponteiro para uma matriz de Int8 que contém, na ordem de verificação de linha/coluna, os valores de mapa QP a serem usados em cada região quadrada para esse quadro. As dimensões do mapa QP podem ser calculadas usando a resolução atual e D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. QPMapRegionPixelsSize que transmite os tamanhos de região quadrada.

Comentários

As tabelas a seguir listam os valores esperados de VPS, SPS e PPS para codificação HEVC.

mapeamentos de Level_idc para HEVC

Nível D3D12 General_level_idc esperado Observações
D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 30 Corresponde a 3 * sufixo de nível de enumeração 2 dígitos (10)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 60 Corresponde a 3 * sufixo de nível de enumeração 2 dígitos (20)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 63 Corresponde a 3 * sufixo de nível de enumeração 2 dígitos (21)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 90 Corresponde a 3 * sufixo de nível de enumeração 2 dígitos (30)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 93 Corresponde a 3 * sufixo de nível 2 de enumeração (31)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 1 20 Corresponde a 3 * sufixo de nível de enumeração 2 dígitos (40)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 1 23 Corresponde a 3 * sufixo de nível de enumeração 2 dígitos (41)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 1 50 Corresponde a 3 * sufixo de nível de enumeração 2 dígitos (50)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 1 53 Corresponde a 3 * sufixo de nível de enumeração 2 dígitos (51)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 1 56 Corresponde a 3 * sufixo de nível de enumeração 2 dígitos (52)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 1 80 Corresponde a 3 * sufixo de nível de enumeração 2 dígitos (60)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 1 83 Corresponde a 3 * sufixo de nível de enumeração 2 dígitos (61)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 1 86 Corresponde a 3 * sufixo de nível 2 de enumeração (62)

Valores esperados do conjunto de parâmetros de vídeo HEVC

Elemento Syntax Valor padrão esperado Observações
vps_video_parameter_set_id Específico do usuário Nenhum
vps_base_layer_internal_flag 0 Nenhum
vps_base_layer_available_flag 0 Nenhum
vps_max_layers_minus1 0 Nenhum
vps_max_sub_layers_minus1 0 Nenhum
vps_temporal_id_nesting_flag 1 Nenhum
vps_reserved_ffff_16bits 0xFFFF Nenhum
general_profile_space 0 Nenhum
general_tier_flag 1 para camada Alta, 0 para a camada Principal Nenhum
general_profile_idc D3D12_VIDEO_ENCODER_PROFILE_HEVC valor de enumeração + 1 Nenhum
general_profile_compatibility_flag[general_profile_space] 1 Nenhum
general_progressive_source_flag 1 Nenhum
general_interlaced_source_flag 0 Nenhum
general_non_packed_constraint_flag 1 Nenhum
general_frame_only_constraint_flag 1 Nenhum
general_reserved_zero_44bits Zeros de 44 bits Nenhum
general_level_idc Consulte a tabela acima Nenhum
vps_sub_layer_ordering_info_present_flag 0 Nenhum
vps_max_dec_pic_buffering_minus1[0] (MaxReferenceFramesInDPB/previous reference frames/ + 1 /additional current frame recon pic/) – 1/*minus1 para header/; Nenhum
vps_max_num_reorder_pics[0] 0 se não houver quadros B. vps_max_dec_pic_buffering_minus1 caso contrário. Nenhum
vps_max_latency_increase_plus1[0] 1 Nenhum
vps_max_layer_id 0 Nenhum
vps_num_layer_sets_minus1 0 Nenhum
vps_timing_info_present_flag 0 Nenhum
vps_extension_flag 0 Nenhum

Valores esperados do conjunto de parâmetros de sequência hevc

Elemento de sintaxe Valor padrão esperado Observações
sps_video_parameter_set_id Específico do usuário Nenhum
sps_max_sub_layers_minus1 O mesmo que no VPS associado Nenhum
sps_temporal_id_nesting_flag O mesmo que no VPS associado Nenhum
general_profile_space 0 Nenhum
general_tier_flag 1 para camada Alta, 0 para a camada Principal Nenhum
general_profile_idc D3D12_VIDEO_ENCODER_PROFILE_HEVC valor de enumeração + 1 Nenhum
general_profile_compatibility_flag[general_profile_space] 1 Nenhum
general_progressive_source_flag 1 Nenhum
general_interlaced_source_flag 0 Nenhum
general_non_packed_constraint_flag 1 Nenhum
general_frame_only_constraint_flag 1 Nenhum
general_reserved_zero_44bits Zeros de 44 bits Nenhum
general_level_idc Consulte a tabela acima Nenhum
chroma_format_idc 1 4.2.0 para NV12 e P010
pic_width_in_luma_samples std::ceil(sequenceTargetResolution.Width / SubregionBlockPixelsSize)) * SubregionBlockPixelsSize Use a resolução de quadros atual para D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. SubregionBlockPixelsSize
pic_height_in_luma_samples std::ceil(sequenceTargetResolution.Height / SubregionBlockPixelsSize)) * SubregionBlockPixelsSize Use a resolução de quadros atual para D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. SubregionBlockPixelsSize
conformance_window_flag 0 se a resolução estiver alinhada a SubregionBlockPixelsSize, caso contrário, 1 Nenhum
conf_win_left_offset 0 Somente se conformance_windows_flag = 1
conf_win_right_offset (sps.pic_width_in_luma_samples - encodeResolution.Width) >> 1 Somente se conformance_windows_flag = 1
conf_win_top_offset 0 Somente se conformance_windows_flag = 1
conf_win_bottom_offset (sps.pic_height_in_luma_samples - encodeResolution.Height) >> 1 Somente se conformance_windows_flag = 1
bit_depth_luma_minus8 0 para NV12, 2 para P010 Nenhum
bit_depth_luma_minus8 0 para NV12, 2 para P010 Nenhum
log2_max_pic_order_cnt_lsb_minus4 Com base em D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC Nenhum
sps_sub_layer_ordering_info_present_flag O mesmo que no VPS associado Nenhum
sps_max_dec_pic_buffering_minus1 O mesmo que no VPS associado Nenhum
sps_max_num_reorder_pics O mesmo que no VPS associado Nenhum
sps_max_latency_increase_plus1 O mesmo que no VPS associado Nenhum
log2_min_luma_coding_block_size_minus3 std::log2(minCuSize) - 3) Por exemplo, MinCUSize=8 para D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8
log2_diff_max_min_luma_coding_block_size std::log2(maxCuSize) – std::log2(minCuSize)) Por exemplo, MaxCUSize=16 para D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16
log2_min_transform_block_size_minus2 std::log2(minTuSize) - 2) Por exemplo, MinTuSize=4 para D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4
log2_diff_max_min_transform_block_size std::log2(maxTuSize) – std::log2(minTuSize)) Por exemplo, MaxTuSize=16 para D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16
max_transform_hierarchy_depth_inter Com base em D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC Nenhum
max_transform_hierarchy_depth_inter Com base em D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC Nenhum
scaling_list_enabled_flag 0 Nenhum
amp_enabled_flag Com base em D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION Nenhum
sample_adaptive_offset_enabled_flag Com base em D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER Nenhum
pcm_enabled_flag 0 Nenhum
num_short_term_ref_pic_sets 0 Nenhum
long_term_ref_pics_present_flag Com base em D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES Nenhum
num_long_term_ref_pics_sps 0 Nenhum
sps_temporal_mvp_enabled_flag 0 Nenhum
strong_intra_smoothing_enabled_flag 0 Nenhum
vui_parameters_present_flag 0 Nenhum
sps_extension_flag 0 Nenhum

Valores esperados do conjunto de parâmetros de imagem HEVC

Elemento Syntax Valor padrão esperado Observações
pps_pic_parameter_set_id Específico do usuário Nenhum
pps_seq_parameter_set_id Específico do usuário Nenhum
dependent_slice_segments_enabled_flag 0 Nenhum
output_flag_present_flag 0 Nenhum
num_extra_slice_header_bits 0 Nenhum
sign_data_hiding_enabled_flag 0 Nenhum
cabac_init_present_flag 1 Nenhum
num_ref_idx_lx_default_active_minus1[0] std::max(static_cast<INT>(pictureControl.List0ReferenceFramesCount) - 1, 0)) Nenhum
num_ref_idx_lx_default_active_minus1[1] std::max(static_cast<INT>(pictureControl.List1ReferenceFramesCount) - 1, 0)) Nenhum
init_qp_minus26 0 Nenhum
constrained_intra_pred_flag Com base em D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION Nenhum
transform_skip_enabled_flag Com base em D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING Nenhum
cu_qp_delta_enabled_flag 1 Nenhum
diff_cu_qp_delta_depth 0 Nenhum
pps_cb_qp_offset 0 Nenhum
pps_cr_qp_offset 0 Nenhum
pps_slice_chroma_qp_offsets_present_flag 1 Nenhum
weighted_pred_flag 0 Não há suporte para previsão ponderada na API
weighted_bipred_flag 0 Não há suporte para previsão ponderada na API
transquant_bypass_enabled_flag 0 Nenhum
tiles_enabled_flag 0 Nenhum
entropy_coding_sync_enabled_flag 0 Nenhum
pps_loop_filter_across_slices_enabled_flag Com base em D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES Nenhum
deblocking_filter_control_present_flag 1 Nenhum
deblocking_filter_override_enabled_flag 0 Nenhum
pps_deblocking_filter_disabled_flag 0 Nenhum
pps_beta_offset_div2 0 Nenhum
pps_tc_offset_div2 0 Nenhum
pps_scaling_list_data_present_flag 0 Nenhum
lists_modification_present_flag 1 se enviar D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC listar modificações. Caso contrário, defina como 0. Nenhum
log2_parallel_merge_level_minus2 0 Nenhum
slice_segment_header_extension_present_flag 0 Nenhum
pps_extension_flag 0 Nenhum

Requisitos

   
Cliente mínimo com suporte Windows Build 22000
Servidor mínimo com suporte Windows Build 22000
Cabeçalho d3d12video.h