Condividi tramite


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