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;

Members

Flags

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

IntraRefreshConfig

Struttura D3D12DDI_VIDEO_ENCODER_INTRA_REFRESH_0080 che specifica i parametri per la modalità di aggiornamento intra-aggiornamento che deve essere utilizzata 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 controllo RateControl modificato causa il riavvio dell'algoritmo di controllo della frequenza, 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 deve essere 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 di 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 immagine 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 la modalità di layout utilizzata e quindi i membri dell'unione da usare in FrameSubregionsLayoutData.

Controllare il flag D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE per determinare se è supportata la riconfigurazione dinamica della sottoregione:

  • Se supportato, SelectedLayoutMode indica la modalità di partizionamento subregion usata per il comando EncodeFrame associato.
  • Se non è supportato, *SelectedLayoutMode indica la modalità di sottorezione 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 specifici del codec facoltativi 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 subregion 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.

Commenti

Per informazioni generali, vedere Codifica video D3D12 .

Uso dell'aggiornamento all'interno dell'aggiornamento

L'uso di frame di riferimento bidirezionali (B Frames) si escludono a vicenda con l'intra-aggiornamento. Il chiamante deve verificare che la struttura di CodecGopSequence 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 set CodecGopSequence non deve contenere fotogrammi B oppure la query non restituirà alcun supporto.

L'uso dell'intra-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;
  • Controlla l'indice del frame tra [0..N) nella struttura del controllo immagine per suggerire al driver lo stato di avanzamento della sessione all'interno dell'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 inviato e riavviato dopo la sessione di intra-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 P frame di tale GOP verranno ignorati, la sessione all'interno dell'aggiornamento verrà rilasciata per i frame 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 sottoregion configurata verrà riconfigurata in modo che corrisponda al partizionamento di N sezioni uniformi per frame 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 aggiornamento interno, ad esempio quando la riga di unità codificate in una sezione interromperà la limitazione impostata su byte per sezione. L'attesa per l'intra-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.

Requisiti

Requisito Valore
Client minimo supportato Windows 11 (WDDM 3.0)
Intestazione d3d12umddi.h

Vedi 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