Condividi tramite


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