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 |