struttura D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC (d3d12video.h)
Rappresenta gli elementi di controllo a livello di immagine per il comando EncodeFrame associato per la codifica HEVC.
Sintassi
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;
Membri
Flags
Combinazione OR bit per bit dei valori dell'enumerazione D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS che specifica i flag di configurazione per il frame da codificare.
FrameType
Valore dell'enumerazione D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC che specifica il tipo di immagine. Assicurarsi che i flag specifici del codec supportino il tipo specificato. Questa selezione deve essere mantenuta sincronizzata con la configurazione della struttura GOP impostata dall'host. Si noti che gop è definito nell'ordine di visualizzazione e questa selezione del tipo di immagine deve seguire il GOP, ma in ordine di codifica.
slice_pic_parameter_set_id
Oggetto UINT specificando il valore da utilizzare nelle intestazioni di sezione del frame corrente per fare riferimento al PPS.
PictureOrderCountNumber
Oggetto UINT che specifica l'ordine di visualizzazione del frame corrente.
TemporalLayerIndex
Oggetto UINT che specifica il numero di livello immagine nella gerarchia temporale. Verificare il numero massimo di livelli in D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC.
List0ReferenceFramesCount
Oggetto UINT che specifica il numero di riferimenti a fotogrammi passati da utilizzare per questo frame. Questo valore deve essere coerente con ciò che è stato esposto in D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC.
pList0ReferenceFrames
Puntatore a una matrice di UINT che specifica l'elenco di fotogrammi precedenti da usare per questo frame. Ogni valore intero in questo indice di matrice in pReferenceFramesReconPictureDescriptors per fare riferimento alle immagini mantenute nel DPB.
List1ReferenceFramesCount
Oggetto UINT che specifica il numero di riferimenti di frame futuri da utilizzare per questo frame. Questo valore deve essere coerente con ciò che è stato esposto in D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC.
pList1ReferenceFrames
Puntatore a una matrice di UINT che specifica l'elenco di frame di riferimento futuri da utilizzare per questo frame. Ogni valore intero in questo indice di matrice in pReferenceFramesReconPictureDescriptors per fare riferimento alle immagini mantenute nel DPB.
ReferenceFramesReconPictureDescriptorsCount
Un UINT che specifica il numero di voci in pReferenceFramesReconPictureDescriptors.
pReferenceFramesReconPictureDescriptors
Puntatore a una matrice di UINT che descrive lo stato corrente del buffer DPB mantenuto in D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrame. I pList0ReferenceFrames e pList1ReferenceFrames elencano la mappa degli indici da riferimenti passati/futuri in questa matrice di descrittori.
Questa matrice di descrittori, a sua volta, esegue il mapping di un'immagine di riferimento per questo frame in un indice di risorse nella matrice di immagini ricostruite D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrame. Inoltre, per ogni immagine di riferimento indica il numero di ordine di codifica e visualizzazione e se si tratta di un riferimento a lungo termine.
Le dimensioni di questa matrice corrispondono sempre D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrames.NumTextures per il comando encodeframe associato.
List0RefPicModificationsCount
Un UINT che specifica il numero di elementi in pList0RefPicModifications.
pList0RefPicModifications
Puntatore a una matrice di UINT contenente i comandi di modifica per l'elenco L0.
List1RefPicModificationsCount
Un UINT che specifica il numero di elementi in pList1RefPicModifications.
pList1RefPicModifications
Puntatore a una matrice UINT contenente i comandi di modifica per l'elenco L1.
QPMapValuesCount
UINT che specifica il numero di elementi presenti in pRateControlQPMap. Deve corrispondere al numero di blocchi di codifica nel frame, arrotondando la risoluzione dei fotogrammi ai valori allineati più vicini.
pRateControlQPMap
Puntatore a una matrice di Int8 contenente, nell'ordine di analisi di riga/colonna, i valori di mapping QP da usare in ogni area quadrata per questo frame. Le dimensioni della mappa QP possono essere calcolate usando la risoluzione corrente e D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. QPMapRegionPixelsSize indicare le dimensioni dell'area quadrata.
Osservazioni
Nelle tabelle seguenti sono elencati i valori VPS, SPS e PPS previsti per la codifica HEVC.
mapping Level_idc per HEVC
Livello D3D12 | Previsto general_level_idc | Note |
---|---|---|
D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 | 30 | Corrisponde a 3 * suffisso di enumerazione 2 cifre (10) |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 | 60 | Corrisponde a 3 * suffisso di enumerazione 2 cifre (20) |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 | 63 | Corrisponde a 3 * suffisso di enumerazione di 2 cifre (21) |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 | 90 | Corrisponde al suffisso di 3 * enumerazione livello 2 (30) |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 | 93 | Corrisponde al suffisso di 3 * enumerazione livello 2 (31) |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 | 20 | Corrisponde al suffisso di 3 * enumerazione livello 2 (40) |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 | 23 | Corrisponde al suffisso di 3 * enumerazione livello 2 (41) |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 | 50 | Corrisponde a 3 * suffisso di enumerazione livello 2 (50) |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 | 53 | Corrisponde al suffisso 3 * enumerazione livello 2 (51) |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 | 56 | Corrisponde al suffisso 3 * enumerazione livello 2 (52) |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 | 80 | Corrisponde a 3 * suffisso di enumerazione 2 cifre (60) |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 | 83 | Corrisponde a 3 * suffisso di enumerazione livello 2 (61) |
D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 | 86 | Corrisponde al suffisso 3 * enumerazione livello 2 (62) |
Valori previsti del set di parametri video HEVC
Elemento Syntax | Valore predefinito previsto | Note |
---|---|---|
vps_video_parameter_set_id | Specifico dell'utente | Nessuno |
vps_base_layer_internal_flag | 0 | Nessuno |
vps_base_layer_available_flag | 0 | Nessuno |
vps_max_layers_minus1 | 0 | Nessuno |
vps_max_sub_layers_minus1 | 0 | Nessuno |
vps_temporal_id_nesting_flag | 1 | Nessuno |
vps_reserved_ffff_16bits | 0xFFFF | Nessuno |
general_profile_space | 0 | Nessuno |
general_tier_flag | 1 per il livello alto, 0 per il livello principale | Nessuno |
general_profile_idc | D3D12_VIDEO_ENCODER_PROFILE_HEVC valore enumerazione + 1 | Nessuno |
general_profile_compatibility_flag[general_profile_space] | 1 | Nessuno |
general_progressive_source_flag | 1 | Nessuno |
general_interlaced_source_flag | 0 | Nessuno |
general_non_packed_constraint_flag | 1 | Nessuno |
general_frame_only_constraint_flag | 1 | Nessuno |
general_reserved_zero_44bits | Zero a 44 bit | Nessuno |
general_level_idc | Vedere la tabella precedente | Nessuno |
vps_sub_layer_ordering_info_present_flag | 0 | Nessuno |
vps_max_dec_pic_buffering_minus1[0] | (MaxReferenceFramesInDPB/frame di riferimento precedenti/ + 1 /quadro di ricognizione frame aggiuntivo/) - 1/*meno1 per l'intestazione/; | Nessuno |
vps_max_num_reorder_pics[0] | 0 se nessun frame B. vps_max_dec_pic_buffering_minus1 in caso contrario. | Nessuno |
vps_max_latency_increase_plus1[0] | 1 | Nessuno |
vps_max_layer_id | 0 | Nessuno |
vps_num_layer_sets_minus1 | 0 | Nessuno |
vps_timing_info_present_flag | 0 | Nessuno |
vps_extension_flag | 0 | Nessuno |
Valori previsti del set di parametri della sequenza HEVC
Elemento Syntax | Valore predefinito previsto | Note | |
---|---|---|---|
sps_video_parameter_set_id | Specifico dell'utente | Nessuno | |
sps_max_sub_layers_minus1 | Uguale a in VPS associato | Nessuno | |
sps_temporal_id_nesting_flag | Uguale a in VPS associato | Nessuno | |
general_profile_space | 0 | Nessuno | |
general_tier_flag | 1 per il livello alto, 0 per il livello principale | Nessuno | |
general_profile_idc | D3D12_VIDEO_ENCODER_PROFILE_HEVC valore enumerazione + 1 | Nessuno | |
general_profile_compatibility_flag[general_profile_space] | 1 | Nessuno | |
general_progressive_source_flag | 1 | Nessuno | |
general_interlaced_source_flag | 0 | Nessuno | |
general_non_packed_constraint_flag | 1 | Nessuno | |
general_frame_only_constraint_flag | 1 | Nessuno | |
general_reserved_zero_44bits | Zero a 44 bit | Nessuno | |
general_level_idc | Vedere la tabella precedente | Nessuno | |
chroma_format_idc | 1 | 4.2.0 per NV12 e P010 | |
pic_width_in_luma_samples | std::ceil(sequenceTargetResolution.Width / SubregionBlockPixelsSize)) * SubregionBlockPixelsSize | Usare la risoluzione dei fotogrammi corrente per D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. SubregionBlockPixelsSize | |
pic_height_in_luma_samples | std::ceil(sequenceTargetResolution.Height/ SubregionBlockPixelsSize)) * SubregionBlockPixelsSize | Usare la risoluzione dei fotogrammi corrente per D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS. SubregionBlockPixelsSize | |
conformance_window_flag | 0 se la risoluzione è allineata a SubregionBlockPixelsSize, 1 in caso contrario | Nessuno | |
conf_win_left_offset | 0 | Solo se conformance_windows_flag = 1 | |
conf_win_right_offset | (sps.pic_width_in_luma_samples - encodeResolution.Width) >> 1 | Solo se conformance_windows_flag = 1 | |
conf_win_top_offset | 0 | Solo se conformance_windows_flag = 1 | |
conf_win_bottom_offset | (sps.pic_height_in_luma_samples - encodeResolution.Height) >> 1 | Solo se conformance_windows_flag = 1 | |
bit_depth_luma_minus8 | 0 per NV12, 2 per P010 | Nessuno | |
bit_depth_luma_minus8 | 0 per NV12, 2 per P010 | Nessuno | |
log2_max_pic_order_cnt_lsb_minus4 | Basato su D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC | Nessuno | |
sps_sub_layer_ordering_info_present_flag | Uguale a in VPS associato | Nessuno | |
sps_max_dec_pic_buffering_minus1 | Uguale a in VPS associato | Nessuno | |
sps_max_num_reorder_pics | Uguale a in VPS associato | Nessuno | |
sps_max_latency_increase_plus1 | Uguale a in VPS associato | Nessuno | |
log2_min_luma_coding_block_size_minus3 | std::log2(minCuSize) - 3) | Ad esempio MinCUSize=8 per D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8 | |
log2_diff_max_min_luma_coding_block_size | std::log2(maxCuSize) - std::log2(minCuSize)) | Ad esempio MaxCUSize=16 per D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16 | |
log2_min_transform_block_size_minus2 | std::log2(minTuSize) - 2) | Ad esempio MinTuSize=4 per D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4 | |
log2_diff_max_min_transform_block_size | std::log2(maxTuSize) - std::log2(minTuSize)) | Ad esempio MaxTuSize=16 per D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16 | |
max_transform_hierarchy_depth_inter | Basato su D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC | Nessuno | |
max_transform_hierarchy_depth_inter | Basato su D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC | Nessuno | |
scaling_list_enabled_flag | 0 | Nessuno | |
amp_enabled_flag | Basato su D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION | Nessuno | |
sample_adaptive_offset_enabled_flag | Basato su D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER | Nessuno | |
pcm_enabled_flag | 0 | Nessuno | |
num_short_term_ref_pic_sets | 0 | Nessuno | |
long_term_ref_pics_present_flag | Basato su D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES | Nessuno | |
num_long_term_ref_pics_sps | 0 | Nessuno | |
sps_temporal_mvp_enabled_flag | 0 | Nessuno | |
strong_intra_smoothing_enabled_flag | 0 | Nessuno | |
vui_parameters_present_flag | 0 | Nessuno | |
sps_extension_flag | 0 | Nessuno |
Valori previsti del set di parametri immagine HEVC
Elemento Syntax | Valore predefinito previsto | Note |
---|---|---|
pps_pic_parameter_set_id | Specifico dell'utente | Nessuno |
pps_seq_parameter_set_id | Specifico dell'utente | Nessuno |
dependent_slice_segments_enabled_flag | 0 | Nessuno |
output_flag_present_flag | 0 | Nessuno |
num_extra_slice_header_bits | 0 | Nessuno |
sign_data_hiding_enabled_flag | 0 | Nessuno |
cabac_init_present_flag | 1 | Nessuno |
num_ref_idx_lx_default_active_minus1[0] | std::max(static_cast<INT>(pictureControl.List0ReferenceFramesCount) - 1, 0)) | Nessuno |
num_ref_idx_lx_default_active_minus1[1] | std::max(static_cast<INT>(pictureControl.List1ReferenceFramesCount) - 1, 0)) | Nessuno |
init_qp_minus26 | 0 | Nessuno |
constrained_intra_pred_flag | Basato su D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION | Nessuno |
transform_skip_enabled_flag | Basato su D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING | Nessuno |
cu_qp_delta_enabled_flag | 1 | Nessuno |
diff_cu_qp_delta_depth | 0 | Nessuno |
pps_cb_qp_offset | 0 | Nessuno |
pps_cr_qp_offset | 0 | Nessuno |
pps_slice_chroma_qp_offsets_present_flag | 1 | Nessuno |
weighted_pred_flag | 0 | Nessun supporto per la stima ponderata nell'API |
weighted_bipred_flag | 0 | Nessun supporto per la stima ponderata nell'API |
transquant_bypass_enabled_flag | 0 | Nessuno |
tiles_enabled_flag | 0 | Nessuno |
entropy_coding_sync_enabled_flag | 0 | Nessuno |
pps_loop_filter_across_slices_enabled_flag | Basato su D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES | Nessuno |
deblocking_filter_control_present_flag | 1 | Nessuno |
deblocking_filter_override_enabled_flag | 0 | Nessuno |
pps_deblocking_filter_disabled_flag | 0 | Nessuno |
pps_beta_offset_div2 | 0 | Nessuno |
pps_tc_offset_div2 | 0 | Nessuno |
pps_scaling_list_data_present_flag | 0 | Nessuno |
lists_modification_present_flag | 1 se l'invio verso il basso D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC elenca le modifiche. In caso contrario, impostare su 0. | Nessuno |
log2_parallel_merge_level_minus2 | 0 | Nessuno |
slice_segment_header_extension_present_flag | 0 | Nessuno |
pps_extension_flag | 0 | Nessuno |
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows Build 22000 |
server minimo supportato | Windows Build 22000 |
intestazione | d3d12video.h |