struttura D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION_0082_0 (d3d12umddi.h)
La struttura D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION_0082_0 descrive le modifiche nelle immagini di riferimento come operazioni di memoria come tupla di un identificatore di operazione e i parametri associati necessari per l'operazione.
Sintassi
typedef struct D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION_0082_0 {
UCHAR memory_management_control_operation;
UINT difference_of_pic_nums_minus1;
UINT long_term_pic_num;
UINT long_term_frame_idx;
UINT max_long_term_frame_idx_plus1;
} D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION_0082_0;
Members
memory_management_control_operation
Operazione di controllo da applicare per influire sullo stato di contrassegno dell'immagine di riferimento. I valori validi dell'operazione seguono.
Valore | Descrizione |
---|---|
0 | Termina memory_management_control_operation ciclo di elementi della sintassi. |
1 | Contrassegnare un'immagine di riferimento a breve termine come "inutilizzata per riferimento". |
2 | Contrassegnare un'immagine di riferimento a lungo termine come "inutilizzata per riferimento". |
3 | Contrassegnare un'immagine di riferimento a breve termine come "usata per riferimento a lungo termine" e assegnarvi un indice frame a lungo termine. |
4 | Specificare l'indice di frame a lungo termine massimo e contrassegnare tutte le immagini di riferimento a lungo termine con indici di frame a lungo termine maggiori del valore massimo come "inutilizzato per riferimento". |
5 | Contrassegnare tutte le immagini di riferimento come "inutilizzate per riferimento" e impostare la variabile MaxLongTermFrameIdx su "nessun indice frame a lungo termine". |
6 | Contrassegnare l'immagine corrente come "usata per riferimento a lungo termine" e assegnarvi un indice frame a lungo termine. |
difference_of_pic_nums_minus1
Questo membro viene usato con memory_management_control_operation uguale a 3 o 1 per assegnare un indice frame a lungo termine a un'immagine di riferimento a breve termine o per contrassegnare un'immagine di riferimento a breve termine come "inutilizzata per riferimento". Quando il memory_management_control_operation associato viene elaborato dal processo di decodifica, il numero di immagine risultante derivato da difference_of_pic_nums_minus1 deve essere un numero di immagine assegnato a una delle immagini di riferimento contrassegnate come "utilizzate per riferimento" e non precedentemente assegnate a un indice di frame a lungo termine.
long_term_pic_num
Questo membro viene usato con memory_management_control_operation uguale a 2 per contrassegnare un'immagine di riferimento a lungo termine come "inutilizzata per riferimento". Quando il memory_management_control_operation associato viene elaborato dal processo di decodifica, long_term_pic_num deve essere uguale a un numero di immagine a lungo termine assegnato a una delle immagini di riferimento attualmente contrassegnate come "utilizzate per riferimento a lungo termine".
long_term_frame_idx
Questo membro viene usato con memory_management_control_operation uguale a 3 o 6 per assegnare un indice frame a lungo termine a un'immagine. Quando il memory_management_control_operation associato viene elaborato dal processo di decodifica, il valore di long_term_frame_idx deve essere compreso nell'intervallo compreso tra 0 e MaxLongTermFrameIdx, inclusi.
max_long_term_frame_idx_plus1
Il valore meno 1 specifica il valore massimo dell'indice frame a lungo termine consentito per le immagini di riferimento a lungo termine (fino alla ricezione di un altro valore di max_long_term_frame_idx_plus1). Il valore di max_long_term_frame_idx_plus1 deve essere compreso nell'intervallo compreso tra 0 e max_num_ref_frames, inclusi.
Commenti
La variabile MaxLongTermFrameIdx è derivata come segue:
- Se max_long_term_frame_idx_plus1 è uguale a 0, MaxLongTermFrameIdx è impostato su "nessun indice di frame a lungo termine".
- Se max_long_term_frame_idx_plus1 è maggiore di 0, MaxLongTermFrameIdx è impostato su max_long_term_frame_idx_plus1 − 1.
L'operazione di contrassegnare il frame corrente come riferimento a breve termine viene data da un flag presente nella struttura D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS_0080 con i valori PictureOrderCountNumber e FrameDecodingOrderNumber corrispondenti indicati nella struttura del controllo immagine associato.
La variabile max_num_ref_frames è indicata dalla capacità massima del buffer immagine decodificato (DPB).
Si noti che per contrassegnare un fotogramma IDR (InstantAneOus Decoder Refresh) come riferimento a lungo termine, il meccanismo esplicito proposto consiste nel contrassegnarlo come riferimento a breve termine, impostando D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_FLAG_0080_USED_AS_REFERENCE_PICTURE quando si chiama EncodeFrame per il frame IDR e successivamente promuovendolo come frame di riferimento a lungo termine usando l'operazione di gestione della memoria '3' per contrassegnare un'immagine di riferimento a breve termine come "usata per riferimento a lungo termine" e assegnare un elemento indice frame a lungo termine.
In alternativa, se si codifica un frame IDR e si imposta adaptive_ref_pic_marking_mode_flag = 1, il driver presuppone che il client stia tentando di impostare l'intestazione della sezione H264 long_term_reference_flag e lo farà nel bitstream di output per la chiamata EncodeFrame .
Per altre informazioni sul processo di contrassegno delle immagini, vedere la specifica H.264, sezione 8.2.5.4 "Processo di contrassegno immagine di riferimento decodificato per il controllo della memoria adattiva".
Per informazioni generali, vedere Codifica video D3D12 .
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 11 (WDDM 3.0) |
Intestazione | d3d12umddi.h |
Vedi anche
D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_0082_0
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per