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 |