Condividi tramite


struttura D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0 (d3d12umddi.h)

La struttura D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0 contiene i parametri a livello di sequenza per l'input di un'operazione di codifica video.

Sintassi

typedef struct D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0 {
  D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS_0082_0                 Flags;
  D3D12DDI_VIDEO_ENCODER_INTRA_REFRESH_0080                            IntraRefreshConfig;
  D3D12DDI_VIDEO_ENCODER_RATE_CONTROL_0080_2                           RateControl;
  D3D12DDI_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC_0080                  PictureTargetResolution;
  D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_0080              SelectedLayoutMode;
  D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_0080_2 FrameSubregionsLayoutData;
  D3D12DDI_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_0082_0                 CodecGopSequence;
} D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0;

Membri

Flags

Valore D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS_0082_0 che indica i flag del descrittore del controllo sequenza per l'operazione frame di codifica corrente.

IntraRefreshConfig

Struttura D3D12DDI_VIDEO_ENCODER_INTRA_REFRESH_0080 che specifica i parametri per la modalità intra-aggiornamento da utilizzare durante l'attivazione di sessioni all'interno dell'aggiornamento. Per informazioni dettagliate sull'uso di intra-fresh, vedere la sezione Osservazioni.

RateControl

Struttura D3D12DDI_VIDEO_ENCODER_RATE_CONTROL_0080_2 che specifica la configurazione del controllo frequenza.

Controllare il flag D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_RATE_CONTROL_RECONFIGURATION_AVAILABLE per determinare se è supportata la riconfigurazione dinamica del controllo frequenza:

  • Se supportato, un RateControl modificato fa sì che l'algoritmo di controllo della frequenza venga riavviato, con la nuova configurazione a partire dall'esecuzione del comando EncodeFrame associato.
  • Se non è supportato, RateControl deve essere impostato all'inizio della sessione di codifica e non modificato durante la sessione.

PictureTargetResolution

Struttura D3D12DDI_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC_0080 che descrive la risoluzione da utilizzare per la codifica di questo frame. La risoluzione di destinazione deve essere impostata in base all'elenco delle risoluzioni specificate quando è stato creato l'heap del codificatore associato per questa operazione.

Controllare il flag D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_RESOLUTION_RECONFIGURATION_AVAILABLE per determinare se è supportata la riconfigurazione dinamica per la risoluzione:

  • Se supportato, PictureTargetResolution indica la risoluzione da usare per il comando EncodeFrame associato. In alcuni codec, una modifica nella risoluzione al centro della sessione di codifica potrebbe richiedere la reimpostazione di un GOP con una potenziale richiesta di IDR/Fotogramma chiave, reimpostando anche gli algoritmi di gestione dei frame e del buffer delle immagini decodificati.
  • Se non è supportato, PictureTargetResolution indica la risoluzione di destinazione per l'intera sessione di codifica e non deve essere modificata durante la sessione.

SelectedLayoutMode

Valore D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_0080 che indica quale modalità di layout viene usata e quindi quali membri dell'unione usare in FrameSubregionsLayoutData.

Controllare il flag D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE per determinare se è supportata la riconfigurazione dinamica delle sottoregion:

  • Se supportato, SelectedLayoutMode indica la modalità di partizionamento delle aree secondarie usata per il comandoEncodeFrame associato.
  • Se non è supportato, *SelectedLayoutMode indica la modalità di sottoarea di destinazione della sessione di codifica completa e non deve essere modificata durante la sessione di codifica.

FrameSubregionsLayoutData

Struttura D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_0080_2 che contiene dati facoltativi specifici del codec di layout delle sottoregioni immagine. Se SelectedLayoutMode indica che non sono presenti sottoregioni, questo membro deve essere NULL.

CodecGopSequence

Struttura D3D12DDI_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_0082_0 che specifica il GOP corrente utilizzato nella sequenza video, in ordine di visualizzazione. Le chiamate a EncodeFrame devono seguire questo GOP, ma in ordine di sequenza dopo il riordinamento dei fotogrammi B.

Controllare il flag D3D12_VIDEO_ENCODER_SUPPORT_FLAG__0083_0_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE per determinare se è supportata la riconfigurazione dinamica GOP:

  • Se supportato, CodecGopSequence indica la nuova modalità di sottorezione GOP usata a partire dal comando EncodeFrame associato.
  • Se non è supportato, CodecGopSequence indica il modello GOP di destinazione (in ordine di visualizzazione) della sessione di codifica completa e non deve essere modificato durante la sessione di codifica.

Osservazioni

Per informazioni generali, vedere di codifica video D3D12.

Uso dell'aggiornamento intra-aggiornamento

L'uso di frame di riferimento bidirezionali (B Frames) si escludono a vicenda con l'interno dell'aggiornamento. Il chiamante deve verificare che CodecGopSequencestruttura non contenga fotogrammi B se le modalità di aggiornamento intra-aggiornamento sono attive. Quando si esegue una query per D3D12DDICAPS_VIDEO_ENCODER_SUPPORT_DATA con una modalità di aggiornamento intra-aggiornamento diversa da D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE, il CodecGopSequence set non deve contenere fotogrammi B oppure la query non restituirà alcun supporto.

L'uso dell'inter-aggiornamento infinito è possibile richiedendo periodicamente una nuova ondata di aggiornamento intra-aggiornamento al termine di ogni aggiornamento.

Quando si avvia un aggiornamento intra-aggiornamento di N frame di durata, l'host esegue le operazioni seguenti:

  • Imposta il flag di controllo immagine corrispondente per avviare l'aggiornamento all'interno dell'aggiornamento;
  • Controlla l'indice del frame tra [0..N) nella struttura del controllo immagine per suggerire al driver lo stato di avanzamento della sessione di aggiornamento intra-aggiornamento.

Il comportamento previsto quando si richiede in modo esplicito un'onda intra-aggiornamento con durata N frame segue:

  • Se la richiesta di intra-aggiornamento avviene all'inizio di un GOP, l'aggiornamento intra-aggiornamento si verifica per N frame e quindi viene avviato un nuovo GOP con un frame I.

  • Se la richiesta di intra-aggiornamento avviene al centro di un GOP, il gruppo di immagini verrà terminato fino all'ultimo comando EncodeFrame e riavviato dopo la sessione all'interno dell'aggiornamento con un nuovo GOP a partire da un frame I. Ad esempio, quando GOP è IPPPP... IPPPP..., se l'avvio all'interno dell'aggiornamento viene richiesto all'invio parziale "IPP" del GOP, gli ultimi due fotogrammi P di tale GOP verranno ignorati, la sessione intra-aggiornamento verrà rilasciata per i fotogrammi successivi N e quindi è previsto un nuovo fotogramma chiave che riavvia la struttura GOP.

Per l'interno dell'aggiornamento basato su righe:

  • La struttura GOP configurata dovrà essere riconfigurata in Infinite IPPP... P... GOP (GOPLength = 0u e PPicturePeriod = 1u) per la durata della sessione all'interno dell'aggiornamento. Può quindi essere riconfigurato dopo il completamento dell'ondata di aggiornamento intra-aggiornamento.

  • La modalità di partizionamento delle aree secondarie configurate verrà riconfigurata in modo che corrisponda al partizionamento di N sezioni uniformi per fotogramma per una durata di N comandi EncodeFrame. Ciò è particolarmente importante quando il partizionamento delle aree secondarie è impostato su una modalità incompatibile con i requisiti di intra-aggiornamento, ad esempio quando la riga di unità intercoded in una sezione interromperà la limitazione impostata su byte per sezione. L'aspettativa per l'inter-aggiornamento basato su riga è che il frame risultante contiene N sezioni, tutte le sezioni P, ad eccezione della sezione di riga intra-aggiornamento corrente, che deve essere una sezione I.

Fabbisogno

Requisito Valore
client minimo supportato Windows 11 (WDDM 3.0)
intestazione d3d12umddi.h

Vedere anche

D3D12DDI_VIDEO_ENCODER_ENCODEFRAME_INPUT_STREAM_ARGUMENTS_0082_0

D3D12DDI_VIDEO_ENCODER_SUPPORT_FLAGS_0083_0

PFND3D12DDI_VIDEO_ENCODE_FRAME_0082_0

PFND3D12DDI_CREATEVIDEOENCODERHEAP_0080_2