[LOGICIEL] Khronos finalise les extensions vidéo Vulkan pour l'encodage accéléré H.264 et H.265

EVIL66

Super Modo OCPC
Membre du Staff
Khronos.jpg

Khronos finalise les extensions vidéo Vulkan pour l'encodage accéléré H.264 et H.265

En avril 2021, le groupe de travail Vulkan de Khronos a publié un ensemble d'extensions provisoires, collectivement appelées Vulkan Video, qui permettent un encodage et un décodage transparents des flux vidéo à l'aide de diverses normes de codage vidéo. La version de décembre 2022 de Vulkan 1.3.238 a vu la finalisation des extensions pour décoder H.264 et H.265, et aujourd'hui, avec la sortie de Vulkan 1.3.274, Khronos a finalisé son homologue : les extensions pour permettre l'encodage de H. Flux vidéo .264 et H.265. Tirant parti du framework Vulkan, ils fournissent un moyen standardisé, transparent, à faible surcharge et hautement contrôlable de produire des vidéos H.264 et H.265 via des accélérateurs matériels, avec des applications allant du streaming en temps réel à faible latence au serveur hors ligne. transcodage à grande échelle.

f3vn5HzwtpU2ZxKe(1).jpg

Intégrant les commentaires de l'industrie, les extensions ont connu de nombreuses améliorations depuis leur introduction, depuis une interface bidirectionnelle (remplacements) pour aider au codage et à l'exposition des capacités matérielles avancées, jusqu'aux paramètres de configuration de contrôle de débit et une interface pour faciliter les compromis entre qualité et performances. Ces retours ont également conduit à la sortie de la première extension de maintenance vidéo. De plus, étant donné la forte demande de l'industrie pour la prise en charge du codec AV1, une version d'extension de décodage AV1 est imminente, avec le développement d'une extension d'encodage AV1 également en cours. La figure 1 représente les extensions Vulkan Video ainsi que leur statut et leurs relations.

dTkbMRp1Tg9M9ugu(1).jpg

Les extensions d'encodage accordent un contrôle de bas niveau sur une grande partie du processus d'encodage, tout en conservant l'efficacité et les performances de l'accélération matérielle de l'encodage. Les développeurs ont la liberté de modifier des détails tels que l'indice de quantification, l'allocation de bits par tranche, le codeur arithmétique, le déblocage, etc. Compte tenu de cette flexibilité et de cette complexité, une interface de programmation équilibrée pour le contrôle du débit donne aux utilisateurs le choix entre un fonctionnement plus automatisé et un ajustement de bas niveau des paramètres de trame.

Contrôle du débit de l'encodeur

Souvent l'aspect le plus important de la configuration de l'encodeur pour les applications, l'API de contrôle du débit de l'encodeur a fait l'objet d'une attention particulière dans Vulkan Video. De l'exposition des paramètres pour les modes de contrôle de débit standard (par exemple CBR/VBR), à la possibilité pour les applications de fournir des indications sur d'autres paramètres de codage de flux prévus (par exemple, des modèles d'image/de référence), à la possibilité de configurer des paramètres de contrôle de débit par couche (par exemple pour flux avec plusieurs couches temporelles), l'API de contrôle de débit offre un riche ensemble de fonctionnalités pour divers cas d'utilisation et constitue une base solide pour de futures extensions. La configuration du contrôle du débit de l'encodeur est effectuée à l'aide de la commande vkCmdControlVideoCodingKHR.

Niveaux de qualité de l'encodeur

Les implémentations d'encodeurs vidéo affinent souvent l'utilisation de divers outils d'encodage et paramètres de contrôle de débit en fonction de la qualité souhaitée par rapport aux compromis performances/latence des différents cas d'utilisation. Désormais, les implémentations signalent le nombre de niveaux de qualité pris en charge pour un profil vidéo et une utilisation donnés. Une nouvelle API vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR peut être utilisée pour récupérer des recommandations de mise en œuvre pour divers paramètres et configurations de codage (par exemple, contrôle du débit).

Remplacements de mise en œuvre

En raison de la nature complexe du codage vidéo et de la nature en constante évolution des encodeurs matériels et de leurs capacités, une interface, appelée overrides, permet une communication bidirectionnelle garantissant la conformité du flux vidéo de sortie. De plus, les applications peuvent opter pour des remplacements d'optimisation afin de permettre aux implémentations plus de flexibilité pour optimiser l'utilisation et les astuces spécifiées. Une divulgation complète sur l'apparition de remplacements pour les paramètres de session vidéo ou les paramètres d'image est également rapportée pour les développeurs intéressés par une analyse plus détaillée de ces remplacements.

Récupération des segments de flux binaires de paramètres de session vidéo codés

Pour faciliter les remplacements d'implémentation pour la conformité et les optimisations du flux binaire, les applications doivent récupérer les segments de flux binaires de paramètres de session vidéo codés (par exemple H.264 SPS/PPS) de l'implémentation à l'aide du nouvel appel d'API vkGetEncodedVideoSessionParametersKHR par rapport à l'objet VkVideoSessionParametersKHR donné.

Requête de retour d'encodeur

Pour permettre l'extension future des statistiques de retour d'encodeur d'une manière similaire aux statistiques de pipeline, le nouveau VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR est désormais utilisé pour récupérer le décalage et la taille du flux binaire vidéo.

Modifications apportées au décodage et à l'encodage vidéo
VK_KHR_video_maintenance1


Parallèlement aux extensions d'encodage vidéo, Khronos publie une extension de maintenance intégrant les commentaires de la communauté et de l'industrie, qui améliore la flexibilité du décodage et de l'encodage. Cette extension permet aux implémentations de décodage de créer des images utilisables avec le décodage vidéo sans avoir besoin de spécifier explicitement les profils vidéo avec lesquels elles seront utilisées. Il en va de même pour l'encodage, où un profil vidéo par image attaché limite l'utilisabilité avec des cadres de transcodage volumineux et complexes.

En plus des améliorations de flexibilité, une nouvelle interface plus simple permettant de spécifier des requêtes vidéo en ligne avec des commandes d'opération de décodage et d'encodage vidéo a été ajoutée, connue sous le nom de requêtes en ligne.

Exiger pSetupReferenceSlotKHR pour les images sans références

Lorsque les extensions de décodage Vulkan Video ont été finalisées, les applications devaient fournir une ressource d'image reconstruite et un emplacement DPB (via VkVideoDecodeInfoKHR :: pSetupReferenceSlot) uniquement si l'image en cours de décodage deviendrait une référence. Cependant, aucune implémentation fournie n'a réellement pris en charge la spécification de NULL pour pSetupReferenceSlot, et en outre, certaines implémentations ont découvert des cas qui nécessitent l'utilisation de la ressource d'image reconstruite et/ou de l'emplacement DPB pour le stockage transitoire lors du décodage d'une image non-référence. Une situation similaire s’applique au codage d’images sans références. En conséquence, les extensions vidéo vulkan ont été mises à jour pour nécessiter la fourniture de pSetupReferenceSlotKHR pour les images non-références.

TECHPOWERUP
 
Retour
Haut