D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 struttura (d3d12video.h)
Rappresenta gli elementi di controllo a livello di immagine per il comando EncodeFrame associato per la codifica H.264.
Sintassi
typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 {
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS Flags;
D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 FrameType;
UINT pic_parameter_set_id;
UINT idr_pic_id;
UINT PictureOrderCountNumber;
UINT FrameDecodingOrderNumber;
UINT TemporalLayerIndex;
UINT List0ReferenceFramesCount;
UINT *pList0ReferenceFrames;
UINT List1ReferenceFramesCount;
UINT *pList1ReferenceFrames;
UINT ReferenceFramesReconPictureDescriptorsCount;
D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264 *pReferenceFramesReconPictureDescriptors;
UCHAR adaptive_ref_pic_marking_mode_flag;
UINT RefPicMarkingOperationsCommandsCount;
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION *pRefPicMarkingOperationsCommands;
UINT List0RefPicModificationsCount;
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList0RefPicModifications;
UINT List1RefPicModificationsCount;
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList1RefPicModifications;
UINT QPMapValuesCount;
INT8 *pRateControlQPMap;
} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264;
Members
Flags
Combinazione OR bit per bit dei valori dell'enumerazione D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS che specifica i flag di configurazione per il frame codificato.
FrameType
Valore dell'enumerazione D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 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 il GOP è definito nell'ordine di visualizzazione e questa selezione di tipi di immagine deve seguire GOP, ma in ordine di codifica.
pic_parameter_set_id
UINT che specifica il valore da usare nelle intestazioni di sezione del frame corrente per fare riferimento al PPS.
idr_pic_id
Quando FrameType** è D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME, un UINT che indica l'identificatore del frame IDR da usare in tutte le intestazioni di sezioni presenti nel frame.
PictureOrderCountNumber
UINT che specifica l'ordine di visualizzazione del frame corrente.
FrameDecodingOrderNumber
UINT che specifica l'ordine di decodifica frame con semantica, come indicato dall'intestazione di sezione frame_num elemento sintassi che incrementa dopo ogni immagine di riferimento.
TemporalLayerIndex
UINT che specifica il numero di livello immagine nella gerarchia temporale. Controllare il numero massimo di livelli in D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264.
List0ReferenceFramesCount
UINT che specifica il numero di riferimenti a frame precedenti da usare per questo frame. Questo valore deve essere coerente con ciò che è stato esposto in D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264.
pList0ReferenceFrames
Puntatore a una matrice 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
UINT che specifica il numero di riferimenti a frame futuri da usare per questo frame. Questo valore deve essere coerente con ciò che è stato esposto in D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_H264.
pList1ReferenceFrames
Puntatore a una matrice UINT che specifica l'elenco di fotogrammi futuri da usare per questo frame. Ogni valore intero in questo indice di matrice in pReferenceFramesReconPictureDescriptors per fare riferimento alle immagini mantenute nel DPB.
ReferenceFramesReconPictureDescriptorsCount
UINT che specifica il numero di voci in pReferenceFramesReconPictureDescriptors.
pReferenceFramesReconPictureDescriptors
Puntatore a una matrice UINT che descrive lo stato corrente del buffer DPB mantenuto in D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC. ReferenceFrame. PList0ReferenceFrames e pList1ReferenceFrames elenca 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 codificato e visualizzato 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.
adaptive_ref_pic_marking_mode_flag
UCHAR che definisce una modalità semantica per la gestione dei riferimenti al frame.
adaptive_ref_pic_marking_mode_flag valore | Modalità di contrassegno immagine di riferimento specificata |
---|---|
0 | 1 |
Modalità di contrassegno di riferimento della finestra scorrevole: modalità di contrassegno che fornisce un meccanismo first-out per le immagini di riferimento a breve termine. | Modalità di contrassegno immagine di riferimento adattiva: modalità di contrassegno immagine di riferimento che fornisce elementi di sintassi per specificare il contrassegno delle immagini di riferimento come "inutilizzato per riferimento" e per assegnare indici frame a lungo termine. |
RefPicMarkingOperationsCommandsCount
UINT che specifica il numero di operazioni di contrassegno delle immagini di riferimento associate al frame corrente. Richiede che adaptive_ref_pic_marking_mode_flag sia impostato su 1.
pRefPicMarkingOperationsCommands
Puntatore a una matrice di strutture D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION che rappresentano l'elenco di immagini di riferimento che contrassegnano le operazioni associate alla cornice corrente. Le operazioni descritte da questo elenco devono essere riflesse nei descrittori DPB di conseguenza durante la sessione di codifica.
List0RefPicModificationsCount
UINT che specifica il numero di elementi in pList0RefPicModifications.
pList0RefPicModifications
Puntatore a una matrice di strutture D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION che rappresentano l'elenco di operazioni di modifica dell'elenco di immagini di riferimento per l'elenco pList0ReferenceFrames .
List1RefPicModificationsCount
UINT che specifica il numero di elementi in pList1RefPicModifications.
pList1RefPicModifications
Puntatore a una matrice di strutture D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION che rappresentano l'elenco di operazioni di modifica dell'elenco di immagini di riferimento per l'elenco pList1ReferenceFrames .
QPMapValuesCount
UINT che specifica il numero di elementi presenti in pRateControlQPMap. Questo deve corrispondere al numero di blocchi di codifica nel frame, arrotondando la risoluzione del frame ai valori allineati più vicini.
pRateControlQPMap
Puntatore a una matrice di Int8 contenente, nell'ordine di analisi di riga/colonna, i valori del 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 che trasmette le dimensioni dell'area quadrata.
Commenti
Si noti che se il frame corrente è contrassegnato come immagine di riferimento, l'output deve contenere l'immagine ricostruita insieme al bitstream per l'host per inserirlo nei comandi futuri nell'elenco di riferimento delle immagini ricostruite. Si noti che potrebbero essere presenti limitazioni per alcuni tipi di frame da contrassegnare come riferimenti, controllare il supporto delle funzionalità prima di impostare tali valori.
Le tabelle seguenti elencano i valori SPS e PPS previsti per la codifica H264.
mapping Level_idc per H264
Livello D3D12 | Previsto level_idc | Note |
---|---|---|
D3D12_VIDEO_ENCODER_LEVELS_H264_1 | 10 | Nessuno |
D3D12_VIDEO_ENCODER_LEVELS_H264_1b | 11 | SPS.constraint_set3 deve essere 1 |
D3D12_VIDEO_ENCODER_LEVELS_H264_11 | 11 | Nessuno |
D3D12_VIDEO_ENCODER_LEVELS_H264_12 | 12 | Nessuno |
D3D12_VIDEO_ENCODER_LEVELS_H264_13 | 13 | Nessuno |
D3D12_VIDEO_ENCODER_LEVELS_H264_2 | 20 | Nessuno |
D3D12_VIDEO_ENCODER_LEVELS_H264_21 | 21 | Nessuno |
D3D12_VIDEO_ENCODER_LEVELS_H264_22 | 22 | Nessuno |
D3D12_VIDEO_ENCODER_LEVELS_H264_3 | 30 | Nessuno |
D3D12_VIDEO_ENCODER_LEVELS_H264_31 | 31 | Nessuno |
D3D12_VIDEO_ENCODER_LEVELS_H264_32 | 32 | Nessuno |
D3D12_VIDEO_ENCODER_LEVELS_H264_4 | 40 | Nessuno |
D3D12_VIDEO_ENCODER_LEVELS_H264_41 | 41 | Nessuno |
D3D12_VIDEO_ENCODER_LEVELS_H264_42 | 42 | Nessuno |
D3D12_VIDEO_ENCODER_LEVELS_H264_5 | 50 | Nessuno |
D3D12_VIDEO_ENCODER_LEVELS_H264_51 | 51 | Nessuno |
D3D12_VIDEO_ENCODER_LEVELS_H264_52 | 52 | Nessuno |
D3D12_VIDEO_ENCODER_LEVELS_H264_6 | 60 | Nessuno |
D3D12_VIDEO_ENCODER_LEVELS_H264_61 | 61 | Nessuno |
D3D12_VIDEO_ENCODER_LEVELS_H264_62 | 62 | Nessuno |
Valore previsto del set di parametri sequenza H264
Elemento Sintassi | Valore predefinito previsto | Note |
---|---|---|
profile_idc | Valore enumerazione di H264_PROFILE_MAIN/H264_PROFILE_HIGH/H264_PROFILE_HIGH10 | Nessuno |
constraint_set0_flag | 0 | nessuno |
constraint_set1_flag | 0 | nessuno |
constraint_set2_flag | 0 | nessuno |
constraint_set3_flag | 0 | 1 se si usa D3D12_VIDEO_ENCODER_LEVELS_H264_1b |
constraint_set4_flag | 0 | nessuno |
constraint_set5_flag | 0 | nessuno |
reserved_zero_2bits | 0 | nessuno |
level_idc | Vedere la tabella precedente per i livelli H264 | Nessuno |
seq_parameter_set_id | Utente specifico | Nessuno |
chroma_format_idc | 1 | Per l'utilizzo solo con formati YUV 4.2.0 O NV10 o NV12 |
bit_depth_luma_minus8 | 0 per NV12, 2 per P010 | Nessuno |
qpprime_y_zero_transform_bypass_flag | 0 | nessuno |
seq_scaling_matrix_present_flag | 0 | nessuno |
log2_max_frame_num_minus4 | Uguale a in D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 | Nessuno |
pic_order_cnt_type | Uguale a in D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 | Solo le modalità 0 e 2 supportate in questa API |
log2_max_pic_order_cnt_lsb_minus4 | Uguale a in D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 | Solo se pic_order_cnt_type == 0 |
max_num_ref_frames | Numero massimo di immagini di riferimento usate nella sessione di codifica | Nessuno |
gaps_in_frame_num_value_allowed_flag | 0 | nessuno |
pic_width_in_mbs_minus1 | std::ceil(sequenceTargetResolution.Width/ 16.0)) - 1; | Nessuno |
pic_height_in_map_units_minus1 | std::ceil(sequenceTargetResolution.Height / 16.0)) - 1; | Nessuno |
frame_mbs_only_flag | 0 | Nessun supporto interlace |
direct_8x8_inference_flag | Basato su D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM | Nessuno |
frame_cropping_flag | 0 o 1 a seconda della risoluzione di codifica allineata o meno a 16 | Nessuno |
frame_cropping_rect_left_offset | 0 | Solo se frame_cropping_flag = 1 |
frame_cropping_rect_right_offset | ((pic_width_in_mbs_minus1+1) * 16 - sequenzaTargetResolution.Width) / 2 | Solo se frame_cropping_flag = 1 |
frame_cropping_rect_top_offset | ((pic_height_in_map_units_minus1+1) * 16 - sequenceTargetResolution.Height) / 2 | Solo se frame_cropping_flag = 1 |
frame_cropping_rect_bottom_offset | 0 | Solo se frame_cropping_flag = 1 |
vui_paramenters_present_flag | 0 | nessuno |
Valori previsti del set di parametri immagine H264
Elemento Syntax | Valore predefinito previsto | Note |
---|---|---|
pic_parameter_set_id | Specifico dell'utente | Nessuno |
seq_parameter_set_id | Specifico dell'utente | Nessuno |
entropy_coding_mode_flag | In base alle D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING | Nessuno |
pic_order_present_flag | 0 | Supporto solo per pic_cnt_type = 0, 2 |
num_slice_groups_minus1 | 0 | nessuno |
num_ref_idx_l1_active_minus1 | std::max(static_cast<INT>(pictureControl.List0ReferenceFramesCount) - 1, 0) | Nessuno |
num_ref_idx_l0_active_minus1 | std::max(static_cast<INT>(pictureControl.List1ReferenceFramesCount) - 1, 0) | Nessuno |
weighted_pred_flag | 0 | nessuno |
weighted_bipred_idc | 0 | nessuno |
pic_init_qp_minus26 | 0 | nessuno |
pic_init_qs_minus26 | 0 | nessuno |
chroma_qp_index_offset | 0 | nessuno |
deblocking_filter_control_present_flag | 1 | nessuno |
constrained_intra_pred_flag | In base alle D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION | Nessuno |
redundant_pic_cnt_present_flag | 0 | nessuno |
transform_8x8_mode_flag | Basato su D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM | Solo se si usano profili elevati |
pic_scaling_matrix_present_flag | 0 | nessuno |
second_chroma_qp_index_offset | 0 | nessuno |
Requisiti
Client minimo supportato | Windows Build 22000 |
Server minimo supportato | Windows Build 22000 |
Intestazione | d3d12video.h |