D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC structure (d3d12video.h)
Représente les paramètres pour l’entrée de l’opération d’encodage vidéo au niveau de la séquence.
Syntaxe
typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC {
D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS Flags;
D3D12_VIDEO_ENCODER_INTRA_REFRESH IntraRefreshConfig;
D3D12_VIDEO_ENCODER_RATE_CONTROL RateControl;
D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC PictureTargetResolution;
D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SelectedLayoutMode;
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData;
D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE CodecGopSequence;
} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC;
Membres
Flags
Combinaison de valeurs OR au niveau du bit de l’énumération D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS spécifiant les indicateurs de descripteur de contrôle de séquence pour l’opération en cours.
IntraRefreshConfig
Une structure D3D12_VIDEO_ENCODER_INTRA_REFRESH spécifiant les paramètres du mode intra-actualisation qui doivent être utilisés lors du déclenchement de sessions intra-actualisation.
L’utilisation de cadres de référence bidirectionnels (cadres B) s’exclut mutuellement avec l’actualisation intra-actualisation. Les appelants doivent vérifier que la structure GOP ne contient pas de trames B si les modes intra-actualisation sont actifs. Lors de l’interrogation de D3D12_FEATURE_DATA_VIDEO_ENCODER_SUPPORT avec un mode intra-actualisation autre que D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE, le jeu de D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE spécifié ne doit pas contenir de trames B, sinon la requête ne retourne aucune prise en charge.
L’utilisation de l’intra-actualisation infinie est possible en demandant régulièrement une nouvelle vague d’actualisation intra-actualisation une fois chacune d’elles terminée.
Lors du démarrage d’une intra-actualisation de N trames de durée, les hôtes définissent l’indicateur de contrôle d’image correspondant pour démarrer l’intra-actualisation et contrôlent l’index de trame entre [0..N) également dans la structure de contrôle d’image pour indiquer au pilote la progression de la session intra-actualisation.
Comportement attendu lors de la demande explicite d’une vague d’actualisation intra avec des trames de durée N :
Si la demande d’intra-actualisation se produit au début d’un goP, l’actualisation intra est effectuée pour les images N, puis un nouveau GOP est démarré avec une trame I.
Si la demande d’intra-actualisation se produit au milieu d’un goP, le groupe d’images est arrêté jusqu’à ce que la dernière commande EncodeFrame envoyée et redémarrée après la session intra-actualisation avec un nouveau GOP commençant par une image I. Par exemple, lorsque le GOP est IPPPP... IPPPP..., si le début intra-actualisation est demandé lors de la soumission partielle « IPP » du GOP, les deux dernières images P de ce goP seront ignorées, la session intra-actualisation sera émise pour les N images suivantes, puis une nouvelle image clé qui redémarre la structure GOP est attendue.
Pour l’intra-actualisation basée sur les lignes, la structure GOP configurée doit être reconfigurée en IPPP infinie... P... GOP (GOPLength = 0u et PPicturePeriod = 1u) pour la durée de la session intra-actualisation. Il peut ensuite être reconfiguré à nouveau une fois l’onde IR terminée.
Pour l’intra-actualisation basée sur les lignes, le mode de partitionnement sous-régional configuré est reconfiguré pour qu’il corresponde au partitionnement de N tranches uniformes par trame pendant une durée de N commandes EncodeFrame . Cela est particulièrement important lorsque le partitionnement sous-régional est défini sur un mode incompatible avec les exigences du runtime d’intégration, par exemple lorsque la ligne d’unités intra-codées dans une tranche perturbe la limitation définie sur bytes par tranche. L’attente pour l’actualisation intra basée sur les lignes est que le cadre résultant contient N tranches, toutes les tranches P, à l’exception de la tranche de ligne intra actualisation actuelle, qui doit être une tranche I.
RateControl
Structure D3D12_VIDEO_ENCODER_RATE_CONTROL spécifiant la configuration du contrôle de débit.
Vérifiez la prise en charge de la reconfiguration dynamique du contrôle de débit dans D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_RECONFIGURATION_AVAILABLE. Si la reconfiguration dynamique du contrôle de débit est autorisée, en modifiant RateControl, l’algorithme de contrôle de débit est redémarré avec la nouvelle configuration à partir de l’exécution de l’EncodeFrame associé. Sinon, cette valeur doit être définie au début de la session d’encodage et ne doit pas être modifiée après.
PictureTargetResolution
Structure D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC décrivant la résolution à utiliser lors de l’encodage de ce frame.
Vérifiez la prise en charge de la reconfiguration dynamique de résolution dans D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE. Si aucune prise en charge n’est fournie pour cela, PictureTargetResolution indique la résolution cible de la session d’encodage complète et ne doit pas être modifiée pendant la session d’encodage. Sinon, cela indique la résolution utilisée pour la commande EncodeFrame associée.
La cible doit être définie en fonction de la liste des résolutions spécifiées lors de la création du tas d’encodeur associé pour cette opération.
Pour certains codecs, une modification de la résolution au milieu de la session d’encodage peut nécessiter la réinitialisation d’un GOP avec une demande d’IDR/d’image clé potentielle, et peut également nécessiter la réinitialisation des algorithmes de gestion de mémoire tampon/trame DPB.
SelectedLayoutMode
Valeur de l’énumération D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE spécifiant le mode de disposition utilisé et, par conséquent, les membres de l’union à utiliser dans pFrameSubregionsLayoutData.
Vérifiez la prise en charge de la reconfiguration dynamique sous-régionale dans [D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE]((ne-d3d12video-d3d12_video_encoder_support_flags.md). Si aucune prise en charge n’est donnée pour cela, cela indique le mode sous-régional cible de la session d’encodage complet et ne doit pas être modifié pendant la session d’encodage. Sinon, cela indique le mode de partitionnement sous-régional utilisé pour la commande EncodeFrame associée.
FrameSubregionsLayoutData
Structure de D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA spécifiant des données facultatives spécifiques au codec pour la disposition des sous-régions d’image. Si la valeur SelectedLayoutMode spécifiée indique qu’il n’y a pas de sous-régions, la valeur Null est attendue.
CodecGopSequence
Structure D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE spécifiant le goP actuel utilisé dans la séquence vidéo, dans l’ordre d’affichage. Les appels à EncodeFrame doivent suivre ce goP, mais dans l’ordre d’encodage après la réorganisation des B-Frames.
Vérifiez la prise en charge de la reconfiguration dynamique GOP dans D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE. Si aucune prise en charge n’est donnée pour cela, CodecGopSequence indique le modèle GOP cible (dans l’ordre d’affichage) de la session d’encodage complète et ne doit pas être modifié pendant la session d’encodage. Sinon, cela indique le nouveau mode sous-régional GOP utilisé à partir de la commande EncodeFrame associée.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Build 22000 |
Serveur minimal pris en charge | Windows Build 22000 |
En-tête | d3d12video.h |