À propos du projet
libplacebo est une bibliothèque autonome d’algorithmes de traitement et de rendu vidéo accélérés par GPU, initialement dérivée de mpv. Elle est conçue pour masquer les détails de la programmation GPU, des espaces colorimétriques, du sous-échantillonnage et des métadonnées d’image derrière des API en couches, tout en laissant un contrôle de bas niveau aux applications plus importantes.
Ses fonctionnalités de rendu incluent la montée et la descente d’échelle optimisées avec des filtres polaires tels que Jinc, l’anti-crénelage, l’anti-ringing et la mise à l’échelle corrigée gamma. Elle fournit un mappage tonal HDR dynamique avec mesure d’histogramme de scène en temps réel, détection de changement de scène, contrôle d’exposition, étirement perceptif du gamut et récupération de contraste. La prise en charge de Dolby Vision inclut la conversion du profil 5 vers HDR/PQ ou SDR, la lecture des données annexes et le remodelage lorsque la bibliothèque est compilée avec la dépendance correspondante.
Le moteur de gestion des couleurs prend en charge le mappage de gamut doux, les profils ICC, l’émulation ITU-R BT.1886, la compensation du point noir et les 3DLUT .cube personnalisées. Un système de nuanceurs personnalisés peut accepter des nuanceurs GLSL ou mpv .hook, permettant d’utiliser des nuanceurs utilisateur tels que RAVU, FSRCNNX et Anime4K. La bibliothèque fournit également la synthèse de grain pelliculaire AV1 et H.274, le débanding, le désentrelacement de style YADIF et le tramage corrigé gamma, y compris la diffusion d’erreurs.
Les backends graphiques pris en charge sont Vulkan 1.2, y compris MoltenVK, OpenGL avec GLSL 130 ou plus récent, OpenGL ES 3.0 ou plus récent, et Direct3D 11 avec un feature level 9_1 ou plus récent. Une interface factice uniquement CPU est également exportée. Les fonctions d’aide de haut niveau incluent pl_render_image et l’interopérabilité avec les frameworks multimédias basés sur AVFrame.
L’API publique est organisée en niveaux. Le niveau 0 propose la journalisation, la mise en cache, les calculs d’espaces colorimétriques, les filtres, le mappage tonal, le mappage de gamut et les fonctions de tramage. Le niveau 1 fournit les abstractions GPU et de swapchain ainsi que les implémentations Vulkan, OpenGL, D3D11 et factice. Le niveau 2 expose la génération GLSL et les routines de nuanceurs pour la conversion d’espaces colorimétriques, les nuanceurs personnalisés, le désentrelacement, le tramage, le grain pelliculaire, les profils ICC, les LUT, l’échantillonnage, le débanding et la mise à l’échelle. Le niveau 3 distribue et met en cache des nuanceurs complets, tandis que le niveau 4 fournit le moteur de rendu de haut niveau, le cadre d’options, la file d’attente d’images, les aides au téléversement de textures, l’interopérabilité Dav1dPicture et l’interopérabilité FFmpeg libav.
Le projet inclut un programme de démonstration plplay et des exemples dans ses répertoires demos et tests. Il a été adopté par VLC comme chemin de sortie vidéo optionnel basé sur Vulkan et par FFmpeg comme filtre vidéo basé sur Vulkan.
libplacebo utilise le système de construction Meson avec Ninja. Un clone récursif récupère les dépendances groupées, bien que la plupart des dépendances soient optionnelles. Les composants optionnels utiles incluent glslang ou shaderc, lcms2, libdovi, la prise en charge Vulkan avec Python Jinja2 pour la génération de code, la prise en charge OpenGL via glad2, et xxhash. Les cibles de test et d’analyse comparative sont des options Meson configurables. La bibliothèque est distribuée sous LGPLv2.1 ou version ultérieure, le README indiquant qu’une licence BSD2 plus permise pourrait être envisagée pour des cas d’utilisation spécifiques.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.