Compartir a través de


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 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 presentació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 especificando el valor que se va a usar en los encabezados de segmento del marco actual para hacer referencia al PPS.

PictureOrderCountNumber

Un UINT especificando el orden de visualización de fotogramas actual.

TemporalLayerIndex

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

List0ReferenceFramesCount

Un UINT especificando el número de referencias de marco 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 de UINT que especifica la lista de marcos de referencia anteriores que se van a usar para este fotograma. Cada valor entero de este índice de matriz en pReferenceFramesReconPictureDescriptors hacer referencia a imágenes guardadas en el DPB.

List1ReferenceFramesCount

Un UINT especificando el número de referencias de fotograma futuras 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.

pList1ReferenceFrames

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

ReferenceFramesReconPictureDescriptorsCount

Un UINT especificando el número de entradas de pReferenceFramesReconPictureDescriptors.

pReferenceFramesReconPictureDescriptors

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

Esta matriz de descriptores, a su vez, asigna una imagen de referencia para este marco en 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

UINT especificando el número de elementos de pList0RefPicModifications.

pList0RefPicModifications

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

List1RefPicModificationsCount

Un UINT especificando el número de elementos de pList1RefPicModifications.

pList1RefPicModifications

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

QPMapValuesCount

UINT especificando 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 van a usar en cada región cuadrada de este marco. Las dimensiones del mapa de QP se pueden calcular mediante la resolución actual y D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. QPMapRegionPixelsSize transmitir los tamaños de región cuadrados.

Observaciones

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 Ninguno
D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 60 Ninguno
D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 63 Ninguno
D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 90 Ninguno
D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 93 Ninguno
D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 120 Ninguno
D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 123 Ninguno
D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 150 Ninguno
D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 153 Ninguno
D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 156 Ninguno
D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 180 Ninguno
D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 183 Ninguno
D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 186 Ninguno

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

Elemento Syntax Valor predeterminado esperado Notas
vps_video_parameter_set_id Específico del usuario Ninguno
vps_base_layer_internal_flag 0 Ninguno
vps_base_layer_available_flag 0 Ninguno
vps_max_layers_minus1 0 Ninguno
vps_max_sub_layers_minus1 0 Ninguno
vps_temporal_id_nesting_flag 1 Ninguno
vps_reserved_ffff_16bits 0xFFFF Ninguno
general_profile_space 0 Ninguno
general_tier_flag 1 para Nivel alto, 0 para el nivel Principal Ninguno
general_profile_idc D3D12_VIDEO_ENCODER_PROFILE_HEVC valor de enumeración + 1 Ninguno
general_profile_compatibility_flag[general_profile_space] 1 Ninguno
general_progressive_source_flag 1 Ninguno
general_interlaced_source_flag 0 Ninguno
general_non_packed_constraint_flag 1 Ninguno
general_frame_only_constraint_flag 1 Ninguno
general_reserved_zero_44bits Ceros de 44 bits Ninguno
general_level_idc Consulte la tabla anterior. Ninguno
vps_sub_layer_ordering_info_present_flag 0 Ninguno
vps_max_dec_pic_buffering_minus1[0] (MaxReferenceFramesInDPB/marcos de referencia anteriores/ + 1 /imagen de reconocimiento de fotogramas adicional/) - 1/*menos1 para el encabezado/; Ninguno
vps_max_num_reorder_pics[0] 0 si no hay marcos B. vps_max_dec_pic_buffering_minus1 de lo contrario. Ninguno
vps_max_latency_increase_plus1[0] 1 Ninguno
vps_max_layer_id 0 Ninguno
vps_num_layer_sets_minus1 0 Ninguno
vps_timing_info_present_flag 0 Ninguno
vps_extension_flag 0 Ninguno

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 Ninguno
sps_max_sub_layers_minus1 Igual que en VPS asociado Ninguno
sps_temporal_id_nesting_flag Igual que en VPS asociado Ninguno
general_profile_space 0 Ninguno
general_tier_flag 1 para Nivel alto, 0 para el nivel Principal Ninguno
general_profile_idc D3D12_VIDEO_ENCODER_PROFILE_HEVC valor de enumeración + 1 Ninguno
general_profile_compatibility_flag[general_profile_space] 1 Ninguno
general_progressive_source_flag 1 Ninguno
general_interlaced_source_flag 0 Ninguno
general_non_packed_constraint_flag 1 Ninguno
general_frame_only_constraint_flag 1 Ninguno
general_reserved_zero_44bits Ceros de 44 bits Ninguno
general_level_idc Consulte la tabla anterior. Ninguno
chroma_format_idc 1 4.2.0 para NV12 y P010
pic_width_in_luma_samples std::ceil(sequenceTargetResolution.Width / SubdivisionBlockPixelsSize)) * SubdivisionBlockPixelsSize Use la resolución de fotogramas actual para D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. SubdivisionBlockPixelsSize
pic_height_in_luma_samples std::ceil(sequenceTargetResolution.Height / SubdivisionBlockPixelsSize)) * SubdivisionBlockPixelsSize Use la resolución de fotogramas actual para D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. SubdivisionBlockPixelsSize
conformance_window_flag 0 si la resolución está alineada con SubdivisionBlockPixelsSize, de lo contrario, 1 Ninguno
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 Ninguno
bit_depth_luma_minus8 0 para NV12, 2 para P010 Ninguno
log2_max_pic_order_cnt_lsb_minus4 Basado en D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC Ninguno
sps_sub_layer_ordering_info_present_flag Igual que en VPS asociado Ninguno
sps_max_dec_pic_buffering_minus1 Igual que en VPS asociado Ninguno
sps_max_num_reorder_pics Igual que en VPS asociado Ninguno
sps_max_latency_increase_plus1 Igual que en VPS asociado Ninguno
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 Ninguno
max_transform_hierarchy_depth_inter Basado en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC Ninguno
scaling_list_enabled_flag 0 Ninguno
amp_enabled_flag Basado en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION Ninguno
sample_adaptive_offset_enabled_flag Basado en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER Ninguno
pcm_enabled_flag 0 Ninguno
num_short_term_ref_pic_sets 0 Ninguno
long_term_ref_pics_present_flag Basado en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES Ninguno
num_long_term_ref_pics_sps 0 Ninguno
sps_temporal_mvp_enabled_flag 0 Ninguno
strong_intra_smoothing_enabled_flag 0 Ninguno
vui_parameters_present_flag 0 Ninguno
sps_extension_flag 0 Ninguno

Valores esperados del conjunto de parámetros de imagen HEVC

Elemento Syntax Valor predeterminado esperado Notas
pps_pic_parameter_set_id Específico del usuario Ninguno
pps_seq_parameter_set_id Específico del usuario Ninguno
dependent_slice_segments_enabled_flag 0 Ninguno
output_flag_present_flag 0 Ninguno
num_extra_slice_header_bits 0 Ninguno
sign_data_hiding_enabled_flag 0 Ninguno
cabac_init_present_flag 1 Ninguno
num_ref_idx_lx_default_active_minus1[0] std::max(static_cast<INT>(pictureControl.List0ReferenceFramesCount) - 1, 0)) Ninguno
num_ref_idx_lx_default_active_minus1[1] std::max(static_cast<INT>(pictureControl.List1ReferenceFramesCount) - 1, 0)) Ninguno
init_qp_minus26 0 Ninguno
constrained_intra_pred_flag Basado en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION Ninguno
transform_skip_enabled_flag Basado en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING Ninguno
cu_qp_delta_enabled_flag 1 Ninguno
diff_cu_qp_delta_depth 0 Ninguno
pps_cb_qp_offset 0 Ninguno
pps_cr_qp_offset 0 Ninguno
pps_slice_chroma_qp_offsets_present_flag 1 Ninguno
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 Ninguno
tiles_enabled_flag 0 Ninguno
entropy_coding_sync_enabled_flag 0 Ninguno
pps_loop_filter_across_slices_enabled_flag Basado en D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES Ninguno
deblocking_filter_control_present_flag 1 Ninguno
deblocking_filter_override_enabled_flag 0 Ninguno
pps_deblocking_filter_disabled_flag 0 Ninguno
pps_beta_offset_div2 0 Ninguno
pps_tc_offset_div2 0 Ninguno
pps_scaling_list_data_present_flag 0 Ninguno
lists_modification_present_flag 1 si envía D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC enumera las modificaciones. De lo contrario, establezca como 0. Ninguno
log2_parallel_merge_level_minus2 0 Ninguno
slice_segment_header_extension_present_flag 0 Ninguno
pps_extension_flag 0 Ninguno

Requisitos

Requisito Valor
cliente mínimo admitido Windows Build 22000
servidor mínimo admitido Windows Build 22000
encabezado de d3d12video.h