estructura D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC (d3d12video.h)

Representa los elementos de control de nivel de imagen para el comando EncodeFrame asociado para la codificación HEVC.

Sintaxis

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;

Miembros

Flags

Combinación OR bit a bit de valores de la enumeración D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS que especifica marcas de configuración para el marco que se va a codificar.

FrameType

Valor de la enumeración D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC que especifica el tipo de imagen. Asegúrese de que las marcas específicas del códec admiten el tipo especificado. Esta selección debe mantenerse sincronizada con la configuración de la estructura GOP establecida por el host. Tenga en cuenta que el GOP se define en orden de visualización y esta selección de tipo de imagen debe seguir el GOP, pero en orden de codificación.

slice_pic_parameter_set_id

Un UINT que especifica el valor que se va a usar en los encabezados de segmento del marco actual para hacer referencia al PPS.

PictureOrderCountNumber

Un UINT que especifica el orden de presentación del fotograma actual.

TemporalLayerIndex

Un UINT que especifica el número de capa de imagen en la jerarquía temporal. Compruebe el número máximo de capas en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC.

List0ReferenceFramesCount

Un UINT que especifica el número de referencias de fotogramas anteriores que se usarán para este fotograma. Este valor debe ser coherente con lo que se expone en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC.

pList0ReferenceFrames

Puntero a una matriz UINT que especifica la lista de fotogramas de referencia anteriores que se van a usar para este fotograma. Cada valor entero de este índice de matriz en pReferenceFramesReconPictureDescriptors para hacer referencia a imágenes guardadas en el DPB.

List1ReferenceFramesCount

Un UINT que especifica el número de referencias de fotograma futuras que se van a usar para este fotograma. Este valor debe ser coherente con lo que se expone en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC.

pList1ReferenceFrames

Puntero a una matriz UINT que especifica la lista de fotogramas de referencia de fotogramas futuros que se usarán para este fotograma. Cada valor entero de este índice de matriz en pReferenceFramesReconPictureDescriptors para hacer referencia a imágenes guardadas en el DPB.

ReferenceFramesReconPictureDescriptorsCount

Un UINT que especifica el número de entradas en pReferenceFramesReconPictureDescriptors.

pReferenceFramesReconPictureDescriptors

Puntero a una matriz UINT que describe el estado actual del búfer de DPB guardado en D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrames. PList0ReferenceFrames y pList1ReferenceFrames enumera índices asignados de referencias pasadas o futuras a esta matriz descriptores.

Esta matriz de descriptores, a su vez, asigna una imagen de referencia para este marco a un índice de recursos en la matriz de imágenes reconstruidas D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrames. Además, para cada imagen de referencia, indica el número de orden de codificación y visualización y si es una referencia a largo plazo.

El tamaño de esta matriz siempre coincide con D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrames.NumTextures para el comando EncodeFrame asociado.

List0RefPicModificationsCount

Un UINT que especifica el número de elementos en pList0RefPicModifications.

pList0RefPicModifications

Puntero a una matriz UINT que contiene comandos de modificación para la lista L0.

List1RefPicModificationsCount

Un UINT que especifica el número de elementos de pList1RefPicModifications.

pList1RefPicModifications

Puntero a una matriz UINT que contiene comandos de modificación para la lista L1.

QPMapValuesCount

Un UINT que especifica el número de elementos presentes en pRateControlQPMap. Esto debe coincidir con el número de bloques de codificación del marco, redondeando la resolución de fotogramas a los valores alineados más cercanos.

pRateControlQPMap

Puntero a una matriz de Int8 que contiene, en orden de examen de fila o columna, los valores de mapa de QP que se usarán en cada región cuadrada de este marco. Las dimensiones del mapa QP se pueden calcular mediante la resolución actual y D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. QPMapRegionPixelsSize transmite los tamaños de región cuadrados.

Comentarios

En las tablas siguientes se enumeran los valores de VPS, SPS y PPS esperados para la codificación HEVC.

asignaciones de Level_idc para HEVC

Nivel D3D12 Se esperaba general_level_idc Notas
D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 30 Corresponde a 3 * sufijo de 2 dígitos de nivel de enumeración (10)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 60 Corresponde a 3 * sufijo de 2 dígitos de nivel de enumeración (20)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 63 Corresponde a 3 * sufijo de 2 dígitos de nivel de enumeración (21)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 90 Corresponde a 3 * sufijo de 2 dígitos de nivel de enumeración (30)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 93 Corresponde a 3 * sufijo de 2 dígitos de nivel de enumeración (31)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 1 20 Corresponde a 3 * sufijo de 2 dígitos de nivel de enumeración (40)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 1 23 Corresponde a 3 * sufijo de 2 dígitos de nivel de enumeración (41)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 1 50 Corresponde a 3 * sufijo de sufijo de 2 dígitos de nivel de enumeración (50)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 1 53 Corresponde a 3 * sufijo de 2 dígitos de nivel de enumeración (51)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 1 56 Corresponde a 3 * sufijo de 2 dígitos de nivel de enumeración (52)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 1 80 Corresponde a 3 * sufijo de 2 dígitos de nivel de enumeración (60)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 1 83 Corresponde a 3 * sufijo de 2 dígitos de nivel de enumeración (61)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 1 86 Corresponde a 3 * sufijo de 2 dígitos de nivel de enumeración (62)

Valores esperados del conjunto de parámetros de vídeo HEVC

Sintaxis, elemento Valor predeterminado esperado Notas
vps_video_parameter_set_id Específico del usuario None
vps_base_layer_internal_flag 0 None
vps_base_layer_available_flag 0 None
vps_max_layers_minus1 0 None
vps_max_sub_layers_minus1 0 None
vps_temporal_id_nesting_flag 1 None
vps_reserved_ffff_16bits 0xFFFF None
general_profile_space 0 None
general_tier_flag 1 para Nivel alto, 0 para el nivel Principal None
general_profile_idc D3D12_VIDEO_ENCODER_PROFILE_HEVC valor de enumeración + 1 None
general_profile_compatibility_flag[general_profile_space] 1 None
general_progressive_source_flag 1 None
general_interlaced_source_flag 0 None
general_non_packed_constraint_flag 1 None
general_frame_only_constraint_flag 1 None
general_reserved_zero_44bits Ceros de 44 bits None
general_level_idc Consulte la tabla anterior. None
vps_sub_layer_ordering_info_present_flag 0 None
vps_max_dec_pic_buffering_minus1[0] (MaxReferenceFramesInDPB/previous reference frames/ + 1 /additional current frame recon pic/) - 1/*menos1 para header/; None
vps_max_num_reorder_pics[0] 0 si no hay marcos B. vps_max_dec_pic_buffering_minus1 de lo contrario. None
vps_max_latency_increase_plus1[0] 1 None
vps_max_layer_id 0 None
vps_num_layer_sets_minus1 0 None
vps_timing_info_present_flag 0 None
vps_extension_flag 0 None

Valores esperados del conjunto de parámetros de secuencia HEVC

Elemento Syntax Valor predeterminado esperado Notas
sps_video_parameter_set_id Específico del usuario None
sps_max_sub_layers_minus1 Igual que en VPS asociado None
sps_temporal_id_nesting_flag Igual que en VPS asociado None
general_profile_space 0 None
general_tier_flag 1 para Nivel alto, 0 para el nivel Principal None
general_profile_idc D3D12_VIDEO_ENCODER_PROFILE_HEVC valor de enumeración + 1 None
general_profile_compatibility_flag[general_profile_space] 1 None
general_progressive_source_flag 1 None
general_interlaced_source_flag 0 None
general_non_packed_constraint_flag 1 None
general_frame_only_constraint_flag 1 None
general_reserved_zero_44bits Ceros de 44 bits None
general_level_idc Consulte la tabla anterior. None
chroma_format_idc 1 4.2.0 para NV12 y P010
pic_width_in_luma_samples std::ceil(sequenceTargetResolution.Width / SubregionBlockPixelsSize)) * SubregionBlockPixelsSize Use la resolución de fotogramas actual para D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. SubregionBlockPixelsSize
pic_height_in_luma_samples std::ceil(sequenceTargetResolution.Height / SubregionBlockPixelsSize)) * SubregionBlockPixelsSize Use la resolución de fotogramas actual para D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. SubregionBlockPixelsSize
conformance_window_flag 0 si la resolución está alineada con SubregionBlockPixelsSize, de lo contrario, 1 None
conf_win_left_offset 0 Solo si conformance_windows_flag = 1
conf_win_right_offset (sps.pic_width_in_luma_samples: encodeResolution.Width) >> 1 Solo si conformance_windows_flag = 1
conf_win_top_offset 0 Solo si conformance_windows_flag = 1
conf_win_bottom_offset (sps.pic_height_in_luma_samples: encodeResolution.Height) >> 1 Solo si conformance_windows_flag = 1
bit_depth_luma_minus8 0 para NV12, 2 para P010 None
bit_depth_luma_minus8 0 para NV12, 2 para P010 None
log2_max_pic_order_cnt_lsb_minus4 Basado en D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC None
sps_sub_layer_ordering_info_present_flag Igual que en VPS asociado None
sps_max_dec_pic_buffering_minus1 Igual que en VPS asociado None
sps_max_num_reorder_pics Igual que en VPS asociado None
sps_max_latency_increase_plus1 Igual que en VPS asociado None
log2_min_luma_coding_block_size_minus3 std::log2(minCuSize) - 3) Por ejemplo, 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 ejemplo, MaxCUSize=16 para D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16
log2_min_transform_block_size_minus2 std::log2(minTuSize) - 2) Por ejemplo, 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 ejemplo, MaxTuSize=16 para D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16
max_transform_hierarchy_depth_inter Basado en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC None
max_transform_hierarchy_depth_inter Basado en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC None
scaling_list_enabled_flag 0 None
amp_enabled_flag Basado en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION None
sample_adaptive_offset_enabled_flag Basado en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER None
pcm_enabled_flag 0 None
num_short_term_ref_pic_sets 0 None
long_term_ref_pics_present_flag Basado en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES None
num_long_term_ref_pics_sps 0 None
sps_temporal_mvp_enabled_flag 0 None
strong_intra_smoothing_enabled_flag 0 None
vui_parameters_present_flag 0 None
sps_extension_flag 0 None

Valores esperados del conjunto de parámetros de imagen HEVC

Sintaxis, elemento Valor predeterminado esperado Notas
pps_pic_parameter_set_id Específico del usuario None
pps_seq_parameter_set_id Específico del usuario None
dependent_slice_segments_enabled_flag 0 None
output_flag_present_flag 0 None
num_extra_slice_header_bits 0 None
sign_data_hiding_enabled_flag 0 None
cabac_init_present_flag 1 None
num_ref_idx_lx_default_active_minus1[0] std::max(static_cast<INT>(pictureControl.List0ReferenceFramesCount) - 1, 0)) None
num_ref_idx_lx_default_active_minus1[1] std::max(static_cast<INT>(pictureControl.List1ReferenceFramesCount) - 1, 0)) None
init_qp_minus26 0 None
constrained_intra_pred_flag Basado en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION None
transform_skip_enabled_flag Basado en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING None
cu_qp_delta_enabled_flag 1 None
diff_cu_qp_delta_depth 0 None
pps_cb_qp_offset 0 None
pps_cr_qp_offset 0 None
pps_slice_chroma_qp_offsets_present_flag 1 None
weighted_pred_flag 0 No se admite la predicción ponderada en la API.
weighted_bipred_flag 0 No se admite la predicción ponderada en la API.
transquant_bypass_enabled_flag 0 None
tiles_enabled_flag 0 None
entropy_coding_sync_enabled_flag 0 None
pps_loop_filter_across_slices_enabled_flag Basado en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES None
deblocking_filter_control_present_flag 1 None
deblocking_filter_override_enabled_flag 0 None
pps_deblocking_filter_disabled_flag 0 None
pps_beta_offset_div2 0 None
pps_tc_offset_div2 0 None
pps_scaling_list_data_present_flag 0 None
lists_modification_present_flag 1 si envía D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC enumera las modificaciones. De lo contrario, se establece como 0. None
log2_parallel_merge_level_minus2 0 None
slice_segment_header_extension_present_flag 0 None
pps_extension_flag 0 None

Requisitos

   
Cliente mínimo compatible Windows Build 22000
Servidor mínimo compatible Windows Build 22000
Encabezado d3d12video.h