GStreamer Metal Plugin
Traitement vidéo accéléré par GPU pour GStreamer sur les plateformes Apple. Sept éléments basés sur Metal remplacent les opérations limitées par le CPU par un traitement GPU zero-copy en une seule passe.
Qu'est-ce que GStreamer Metal ?
GStreamer Metal (gst-vf-metal) est un plugin GStreamer de qualité professionnelle qui fournit des implémentations basées sur Metal des éléments vidéo courants limités par le CPU pour macOS et iOS. Il offre des améliorations significatives de performances grâce au framework Metal d'Apple avec des compute shaders, permettant le traitement vidéo en temps réel avec une charge CPU minimale.
Architecture Zero-Copy
CVMetalTextureCache élimine les copies redondantes CPU-GPU. Les éléments ignorent automatiquement le travail GPU lorsqu'ils sont configurés avec des valeurs d'identité/par défaut.
Traitement GPU en une passe
Tous les effets de filtre (luminosité, contraste, teinte, chroma key, LUT, etc.) sont appliqués en un seul dispatch GPU — aucun tampon intermédiaire entre les effets.
Composition multi-format
Le compositeur accepte des formats d'entrée hétérogènes (par ex., BGRA + NV12 simultanément) avec conversion automatique de format.
6 formats de pixels
Prend en charge les formats de pixels BGRA, RGBA, NV12, I420, UYVY et YUY2 dans l'ensemble de la suite d'éléments.
Éléments accélérés par GPU
vfmetalcompositor
Mixage et composition vidéo multi-entrées
- Positionnement, mise à l'échelle, alpha et ordre Z par pad
- Modes de fusion : source, over, add
- Entrées de formats mixtes (BGRA + NV12 simultanément)
- Politiques de dimensionnement avec préservation du rapport d'aspect
vfmetalvideosink
Rendu et affichage vidéo accélérés par matériel
- Support GstVideoOverlay et GstNavigation
- Création automatique de fenêtre avec préservation du rapport d'aspect
- Transmission des événements souris/clavier
- Formats BGRA, RGBA, NV12 et I420
vfmetalvideofilter
15 effets visuels accélérés par GPU dans un seul élément
- Couleur : luminosité, contraste, saturation, teinte, gamma
- Effets : netteté/flou, sépia, inversion, bruit, vignette
- Chroma key (écran vert) avec contrôles de tolérance
- Étalonnage couleur 3D LUT (formats .cube et .png)
vfmetalconvertscale
Conversion de format et mise à l'échelle combinées
- Les 6 paires de formats prises en charge (par ex., NV12→BGRA, UYVY→I420)
- Interpolation bilinéaire et du plus proche voisin
- Letterboxing avec couleurs de bordure personnalisées
- Remplace à la fois videoconvert et videoscale
vfmetaltransform
Transformations géométriques
- 8 méthodes de rotation et retournement
- Recadrage par bord
- Passage direct d'identité sans transformation
- Formats BGRA, RGBA, NV12 et I420
vfmetaldeinterlace
Suppression d'entrelacement accélérée par GPU
- Algorithmes Bob, weave, linear et greedy-H
- Désentrelacement adaptatif au mouvement (greedy-H)
- Détection automatique/manuelle de l'ordre des trames
- Formats BGRA, RGBA, NV12 et I420
vfmetaloverlay
Superposition de composition d'images
- Support de superposition PNG et JPEG
- Positionnement absolu et relatif
- Dimensionnement personnalisé avec mélange alpha
- Formats BGRA, RGBA, NV12 et I420
15 effets vidéo
Tous les effets sont appliqués en une seule passe GPU et peuvent être animés via GstController :
Réglage de la luminosité (-1 à 1)
Contrôle du contraste (0 à 2)
Saturation des couleurs (0 à 2)
Rotation de teinte (-1 à 1)
Correction gamma (0,01 à 10)
Netteté et flou (-1 à 1)
Effet de ton sépia (0 à 1)
Inversion des couleurs
Superposition bruit/grain (0 à 1)
Assombrissement en vignette (0 à 1)
Chroma key (suppression d'écran vert)
Tolérance des bords du chroma key
Lissage des bords du chroma key
Étalonnage 3D LUT via fichiers .cube (DaVinci Resolve/Adobe)
Étalonnage 3D LUT via fichiers bande .png
Support des plateformes
macOS
13.0+ (Ventura)
Bibliothèque dynamique (gstvfmetal.dylib)
iOS
14.0+
Bibliothèque statique (libgstvfmetal.a)
Questions fréquentes
Qu'est-ce que GStreamer Metal ?
GStreamer Metal est un plugin GStreamer open source qui fournit des éléments de traitement vidéo accélérés par GPU pour macOS et iOS. Il utilise le framework Metal d'Apple et des compute shaders pour remplacer les opérations vidéo limitées par le CPU, offrant des performances nettement supérieures pour des tâches comme la composition, la correction des couleurs, la conversion de format et le désentrelacement.
Quelles plateformes sont prises en charge ?
GStreamer Metal prend en charge macOS 13.0 (Ventura) et ultérieur ainsi qu'iOS 14.0 et ultérieur. Sur macOS, il se compile en bibliothèque dynamique (gstvfmetal.dylib), tandis que sur iOS, il se compile en bibliothèque statique (libgstvfmetal.a) avec un en-tête d'enregistrement.
Quels formats de pixels sont pris en charge ?
Le plugin prend en charge six formats de pixels : BGRA, RGBA, NV12, I420, UYVY et YUY2. La plupart des éléments prennent en charge BGRA, RGBA, NV12 et I420, tandis que vfmetalconvertscale prend en charge les six formats pour une flexibilité de conversion maximale.
Comment installer le plugin ?
Clonez le dépôt GitHub et exécutez le script de compilation inclus (./build.sh) pour macOS. Pour iOS, utilisez la configuration de compilation croisée basée sur CMake. La bibliothèque résultante peut être placée dans le chemin des plugins GStreamer pour une découverte automatique.
Est-il gratuit ? Quelle est la licence ?
Oui, GStreamer Metal est entièrement gratuit et open source, publié sous la GNU Library General Public License v2 (LGPL v2). Vous pouvez l'utiliser dans des applications open source et commerciales sans frais de licence.
Quels éléments GStreamer sont inclus ?
Le plugin fournit sept éléments accélérés par GPU : vfmetalcompositor (mixage vidéo), vfmetalvideosink (affichage), vfmetalvideofilter (15 effets visuels), vfmetalconvertscale (conversion de format et mise à l'échelle), vfmetaltransform (rotation/retournement/recadrage), vfmetaldeinterlace (suppression d'entrelacement) et vfmetaloverlay (composition d'images).
Puis-je l'utiliser dans des applications iOS ?
Oui. Pour iOS, le plugin se compile en bibliothèque statique (libgstvfmetal.a) avec un en-tête gstvfmetal_static.h pour l'enregistrement statique. Il s'intègre au SDK GStreamer iOS et prend en charge les formats vidéo couramment utilisés sur iOS.
Comment le traitement GPU se compare-t-il aux éléments basés sur le CPU ?
Le traitement accéléré par GPU offre des améliorations significatives de performances par rapport aux éléments GStreamer basés sur le CPU. L'architecture zero-copy et le traitement en une seule passe minimisent les transferts de données et la mise en tampon. Les éléments contournent automatiquement le travail GPU avec des valeurs d'identité, garantissant aucune surcharge lorsque le traitement n'est pas nécessaire.
Démarrez avec GStreamer Metal
Accélérez votre pipeline de traitement vidéo sur les plateformes Apple avec des éléments GStreamer optimisés par GPU.
