VisioForge
Open Source · LGPL v2

GStreamer Metal Plugin

Elaborazione video accelerata da GPU per GStreamer su piattaforme Apple. Sette elementi basati su Metal sostituiscono le operazioni limitate dalla CPU con elaborazione GPU zero-copy in un singolo passaggio.

Cos'è GStreamer Metal?

GStreamer Metal (gst-vf-metal) è un plugin GStreamer di livello professionale che fornisce implementazioni basate su Metal degli elementi video comuni limitati dalla CPU per macOS e iOS. Offre miglioramenti significativi delle prestazioni attraverso il framework Metal di Apple con compute shader, consentendo l'elaborazione video in tempo reale con un overhead CPU minimo.

Architettura Zero-Copy

CVMetalTextureCache elimina le copie ridondanti CPU-GPU. Gli elementi saltano automaticamente il lavoro GPU quando sono configurati con valori di identità/predefiniti.

Elaborazione GPU a singolo passaggio

Tutti gli effetti filtro (luminosità, contrasto, tonalità, chroma key, LUT, ecc.) vengono applicati in un unico dispatch GPU — nessun buffer intermedio tra gli effetti.

Composizione multi-formato

Il compositore accetta formati di input eterogenei (es., BGRA + NV12 simultaneamente) con conversione automatica del formato.

6 formati pixel

Supporta i formati pixel BGRA, RGBA, NV12, I420, UYVY e YUY2 nell'intera suite di elementi.

Elementi accelerati da GPU

🎬

vfmetalcompositor

Missaggio e composizione video multi-input

  • Posizionamento, ridimensionamento, alfa e ordine Z per pad
  • Modalità di fusione: source, over, add
  • Input di formato misto (BGRA + NV12 simultaneamente)
  • Politiche di dimensionamento con preservazione del rapporto d'aspetto
🖥️

vfmetalvideosink

Renderer e display video accelerato via hardware

  • Supporto GstVideoOverlay e GstNavigation
  • Creazione automatica della finestra con preservazione del rapporto d'aspetto
  • Inoltro degli eventi mouse/tastiera
  • Formati BGRA, RGBA, NV12 e I420
🎨

vfmetalvideofilter

15 effetti visivi accelerati da GPU in un singolo elemento

  • Colore: luminosità, contrasto, saturazione, tonalità, gamma
  • Effetti: nitidezza/sfocatura, seppia, inversione, rumore, vignettatura
  • Chroma key (schermo verde) con controlli di tolleranza
  • Color grading 3D LUT (formati .cube e .png)
🔄

vfmetalconvertscale

Conversione formato e ridimensionamento combinati

  • Tutte le 6 coppie di formati supportate (es., NV12→BGRA, UYVY→I420)
  • Interpolazione bilineare e nearest-neighbor
  • Letterboxing con colori bordo personalizzati
  • Sostituisce sia videoconvert che videoscale

vfmetaltransform

Trasformazioni geometriche

  • 8 metodi di rotazione e ribaltamento
  • Ritaglio per bordo
  • Passaggio diretto d'identità senza trasformazione
  • Formati BGRA, RGBA, NV12 e I420
📺

vfmetaldeinterlace

Rimozione interlacciamento accelerata da GPU

  • Algoritmi Bob, weave, linear e greedy-H
  • Deinterlacciamento adattivo al movimento (greedy-H)
  • Rilevamento automatico/manuale dell'ordine dei campi
  • Formati BGRA, RGBA, NV12 e I420
🖼️

vfmetaloverlay

Sovrapposizione di composizione immagini

  • Supporto sovrapposizione PNG e JPEG
  • Posizionamento assoluto e relativo
  • Dimensionamento personalizzato con fusione alfa
  • Formati BGRA, RGBA, NV12 e I420

15 effetti video

Tutti gli effetti vengono applicati in un singolo passaggio GPU e possono essere animati tramite GstController:

Regolazione della luminosità (-1 a 1)

Controllo del contrasto (0 a 2)

Saturazione del colore (0 a 2)

Rotazione della tonalità (-1 a 1)

Correzione gamma (0,01 a 10)

Nitidezza e sfocatura (-1 a 1)

Effetto tono seppia (0 a 1)

Inversione del colore

Sovrapposizione rumore/grana (0 a 1)

Oscuramento vignettatura (0 a 1)

Chroma key (rimozione schermo verde)

Tolleranza bordi chroma key

Morbidezza bordi chroma key

Grading 3D LUT tramite file .cube (DaVinci Resolve/Adobe)

Grading 3D LUT tramite file striscia .png

Supporto piattaforme

macOS

13.0+ (Ventura)

Libreria dinamica (gstvfmetal.dylib)

iOS

14.0+

Libreria statica (libgstvfmetal.a)

Domande frequenti

Cos'è GStreamer Metal?

GStreamer Metal è un plugin GStreamer open source che fornisce elementi di elaborazione video accelerati da GPU per macOS e iOS. Utilizza il framework Metal di Apple e compute shader per sostituire le operazioni video limitate dalla CPU, offrendo prestazioni significativamente migliori per attività come composizione, correzione del colore, conversione di formato e deinterlacciamento.

Quali piattaforme sono supportate?

GStreamer Metal supporta macOS 13.0 (Ventura) e successivi e iOS 14.0 e successivi. Su macOS si compila come libreria dinamica (gstvfmetal.dylib), mentre su iOS si compila come libreria statica (libgstvfmetal.a) con un header di registrazione.

Quali formati pixel sono supportati?

Il plugin supporta sei formati pixel: BGRA, RGBA, NV12, I420, UYVY e YUY2. La maggior parte degli elementi supporta BGRA, RGBA, NV12 e I420, mentre vfmetalconvertscale supporta tutti e sei i formati per la massima flessibilità di conversione.

Come si installa il plugin?

Clonare il repository GitHub ed eseguire lo script di build incluso (./build.sh) per macOS. Per iOS, utilizzare la configurazione di compilazione incrociata basata su CMake. La libreria risultante può essere posizionata nel percorso dei plugin GStreamer per il rilevamento automatico.

È gratuito? Quale licenza ha?

Sì, GStreamer Metal è completamente gratuito e open source, rilasciato sotto la GNU Library General Public License v2 (LGPL v2). È possibile utilizzarlo sia in applicazioni open source che commerciali senza costi di licenza.

Quali elementi GStreamer sono inclusi?

Il plugin fornisce sette elementi accelerati da GPU: vfmetalcompositor (missaggio video), vfmetalvideosink (visualizzazione), vfmetalvideofilter (15 effetti visivi), vfmetalconvertscale (conversione formato e ridimensionamento), vfmetaltransform (rotazione/ribaltamento/ritaglio), vfmetaldeinterlace (rimozione interlacciamento) e vfmetaloverlay (composizione immagini).

Posso usarlo nelle app iOS?

Sì. Per iOS, il plugin si compila come libreria statica (libgstvfmetal.a) con un header gstvfmetal_static.h per la registrazione statica. Si integra con l'SDK GStreamer iOS e supporta i formati video comunemente utilizzati su iOS.

Come si confronta l'elaborazione GPU con gli elementi basati su CPU?

L'elaborazione accelerata da GPU offre miglioramenti significativi delle prestazioni rispetto agli elementi GStreamer basati su CPU. L'architettura zero-copy e l'elaborazione a singolo passaggio minimizzano i trasferimenti di dati e il buffering dei frame. Gli elementi aggirano automaticamente il lavoro GPU con valori d'identità, garantendo nessun overhead quando l'elaborazione non è necessaria.

Inizia con GStreamer Metal

Accelera la tua pipeline di elaborazione video sulle piattaforme Apple con elementi GStreamer potenziati da GPU.