VisioForge
Open Source · LGPL v2

GStreamer Metal Plugin

Przetwarzanie wideo z akceleracją GPU dla GStreamer na platformach Apple. Siedem elementów opartych na Metal zastępuje operacje ograniczone przez CPU przetwarzaniem GPU typu zero-copy w jednym przebiegu.

Czym jest GStreamer Metal?

GStreamer Metal (gst-vf-metal) to profesjonalna wtyczka GStreamer zapewniająca implementacje oparte na Metal popularnych elementów wideo ograniczonych przez CPU dla macOS i iOS. Dostarcza znaczące ulepszenia wydajności dzięki frameworkowi Metal firmy Apple z shaderami obliczeniowymi, umożliwiając przetwarzanie wideo w czasie rzeczywistym przy minimalnym obciążeniu CPU.

Architektura zero-copy

CVMetalTextureCache eliminuje nadmiarowe kopiowanie CPU-GPU. Elementy automatycznie pomijają pracę GPU, gdy są skonfigurowane z wartościami tożsamości/domyślnymi.

Przetwarzanie GPU w jednym przebiegu

Wszystkie efekty filtrów (jasność, kontrast, odcień, chroma key, LUT itp.) stosowane w jednym wywołaniu GPU — brak pośrednich buforów między efektami.

Kompozycja mieszanych formatów

Kompozytor akceptuje heterogeniczne formaty wejściowe (np. BGRA + NV12 jednocześnie) z automatyczną konwersją formatu.

6 formatów pikseli

Obsługuje formaty pikseli BGRA, RGBA, NV12, I420, UYVY i YUY2 w całym zestawie elementów.

Elementy z akceleracją GPU

🎬

vfmetalcompositor

Wielowejściowe miksowanie i kompozycja wideo

  • Pozycjonowanie, skalowanie, alfa i kolejność Z na pad
  • Tryby mieszania: source, over, add
  • Wejścia mieszanych formatów (BGRA + NV12 jednocześnie)
  • Polityki rozmiarów z zachowaniem proporcji
🖥️

vfmetalvideosink

Sprzętowo akcelerowany renderer i wyświetlacz wideo

  • Obsługa GstVideoOverlay i GstNavigation
  • Automatyczne tworzenie okna z zachowaniem proporcji
  • Przekazywanie zdarzeń myszy/klawiatury
  • Formaty BGRA, RGBA, NV12 i I420
🎨

vfmetalvideofilter

15 efektów wizualnych z akceleracją GPU w jednym elemencie

  • Kolor: jasność, kontrast, nasycenie, odcień, gamma
  • Efekty: ostrość/rozmycie, sepia, inwersja, szum, winietowanie
  • Chroma key (zielony ekran) z kontrolą tolerancji
  • Korekcja kolorów 3D LUT (formaty .cube i .png)
🔄

vfmetalconvertscale

Konwersja formatu i skalowanie w jednym

  • Wszystkie 6 par formatów obsługiwane (np. NV12→BGRA, UYVY→I420)
  • Interpolacja bilinearna i najbliższego sąsiada
  • Letterboxing z niestandardowymi kolorami obramowania
  • Zastępuje zarówno videoconvert, jak i videoscale

vfmetaltransform

Transformacje geometryczne

  • 8 metod obrotu i odbicia
  • Przycinanie na krawędź
  • Przepuszczanie tożsamościowe bez transformacji
  • Formaty BGRA, RGBA, NV12 i I420
📺

vfmetaldeinterlace

Usuwanie przeplotu z akceleracją GPU

  • Algorytmy Bob, weave, linear i greedy-H
  • Usuwanie przeplotu adaptacyjne do ruchu (greedy-H)
  • Automatyczne/ręczne wykrywanie kolejności pól
  • Formaty BGRA, RGBA, NV12 i I420
🖼️

vfmetaloverlay

Nakładka kompozycji obrazu

  • Obsługa nakładek PNG i JPEG
  • Pozycjonowanie bezwzględne i względne
  • Niestandardowy rozmiar z mieszaniem alfa
  • Formaty BGRA, RGBA, NV12 i I420

15 efektów wideo

Wszystkie efekty stosowane w jednym przebiegu GPU i mogą być animowane przez GstController:

Regulacja jasności (-1 do 1)

Kontrola kontrastu (0 do 2)

Nasycenie koloru (0 do 2)

Obrót odcienia (-1 do 1)

Korekcja gamma (0,01 do 10)

Ostrość i rozmycie (-1 do 1)

Efekt tonu sepii (0 do 1)

Inwersja kolorów

Nakładka szumu/ziarna (0 do 1)

Przyciemnienie winiety (0 do 1)

Chroma key (usuwanie zielonego ekranu)

Tolerancja krawędzi chroma key

Gładkość krawędzi chroma key

Grading 3D LUT przez pliki .cube (DaVinci Resolve/Adobe)

Grading 3D LUT przez pliki paskowe .png

Obsługa platform

macOS

13.0+ (Ventura)

Biblioteka dynamiczna (gstvfmetal.dylib)

iOS

14.0+

Biblioteka statyczna (libgstvfmetal.a)

Często zadawane pytania

Czym jest GStreamer Metal?

GStreamer Metal to otwartoźródłowa wtyczka GStreamer dostarczająca elementy przetwarzania wideo z akceleracją GPU dla macOS i iOS. Wykorzystuje framework Metal firmy Apple i shadery obliczeniowe do zastępowania operacji wideo ograniczonych przez CPU, zapewniając znacznie lepszą wydajność w zadaniach takich jak kompozycja, korekcja kolorów, konwersja formatów i usuwanie przeplotu.

Jakie platformy są obsługiwane?

GStreamer Metal obsługuje macOS 13.0 (Ventura) i nowsze oraz iOS 14.0 i nowsze. Na macOS kompiluje się jako biblioteka dynamiczna (gstvfmetal.dylib), podczas gdy na iOS kompiluje się jako biblioteka statyczna (libgstvfmetal.a) z nagłówkiem rejestracyjnym.

Jakie formaty pikseli są obsługiwane?

Wtyczka obsługuje sześć formatów pikseli: BGRA, RGBA, NV12, I420, UYVY i YUY2. Większość elementów obsługuje BGRA, RGBA, NV12 i I420, podczas gdy vfmetalconvertscale obsługuje wszystkie sześć formatów dla maksymalnej elastyczności konwersji.

Jak zainstalować wtyczkę?

Sklonuj repozytorium GitHub i uruchom dołączony skrypt budowania (./build.sh) dla macOS. Dla iOS użyj konfiguracji kompilacji krzyżowej opartej na CMake. Wynikowa biblioteka może zostać umieszczona w ścieżce wtyczek GStreamer w celu automatycznego wykrycia.

Czy jest darmowa? Jaka jest licencja?

Tak, GStreamer Metal jest całkowicie darmowa i otwartoźródłowa, wydana na licencji GNU Library General Public License v2 (LGPL v2). Możesz używać jej zarówno w aplikacjach otwartoźródłowych, jak i komercyjnych bez opłat licencyjnych.

Jakie elementy GStreamer są zawarte?

Wtyczka dostarcza siedem elementów z akceleracją GPU: vfmetalcompositor (miksowanie wideo), vfmetalvideosink (wyświetlanie), vfmetalvideofilter (15 efektów wizualnych), vfmetalconvertscale (konwersja formatu i skalowanie), vfmetaltransform (obrót/odbicie/przycinanie), vfmetaldeinterlace (usuwanie przeplotu) i vfmetaloverlay (kompozycja obrazu).

Czy mogę używać jej w aplikacjach iOS?

Tak. Dla iOS wtyczka kompiluje się jako biblioteka statyczna (libgstvfmetal.a) z nagłówkiem gstvfmetal_static.h do rejestracji statycznej. Integruje się z GStreamer iOS SDK i obsługuje formaty wideo powszechnie używane na iOS.

Jak przetwarzanie GPU wypada w porównaniu z elementami opartymi na CPU?

Przetwarzanie z akceleracją GPU zapewnia znaczące ulepszenia wydajności w porównaniu z elementami GStreamer opartymi na CPU. Architektura zero-copy i przetwarzanie w jednym przebiegu minimalizują transfer danych i buforowanie klatek. Elementy automatycznie pomijają pracę GPU przy wartościach tożsamościowych, zapewniając brak narzutu, gdy przetwarzanie nie jest potrzebne.

Zacznij z GStreamer Metal

Przyspiesz swój pipeline przetwarzania wideo na platformach Apple dzięki elementom GStreamer z GPU.