VisioForge
Código Abierto · LGPL v2

GStreamer Metal Plugin

Procesamiento de vídeo acelerado por GPU para GStreamer en plataformas Apple. Siete elementos basados en Metal reemplazan las operaciones limitadas por CPU con procesamiento GPU zero-copy en una sola pasada.

¿Qué es GStreamer Metal?

GStreamer Metal (gst-vf-metal) es un plugin GStreamer de nivel profesional que proporciona implementaciones basadas en Metal de elementos de vídeo comunes limitados por CPU para macOS e iOS. Ofrece mejoras significativas de rendimiento a través del framework Metal de Apple con compute shaders, permitiendo el procesamiento de vídeo en tiempo real con una sobrecarga mínima de CPU.

Arquitectura Zero-Copy

CVMetalTextureCache elimina las copias redundantes CPU-GPU. Los elementos omiten automáticamente el trabajo GPU cuando están configurados con valores de identidad/predeterminados.

Procesamiento GPU en una pasada

Todos los efectos de filtro (brillo, contraste, tono, chroma key, LUT, etc.) se aplican en un solo despacho GPU — sin búferes intermedios entre efectos.

Composición de formatos mixtos

El compositor acepta formatos de entrada heterogéneos (p. ej., BGRA + NV12 simultáneamente) con conversión automática de formato.

6 formatos de píxel

Compatible con los formatos de píxel BGRA, RGBA, NV12, I420, UYVY y YUY2 en toda la suite de elementos.

Elementos acelerados por GPU

🎬

vfmetalcompositor

Mezcla y composición de vídeo multi-entrada

  • Posicionamiento, escalado, alfa y orden Z por pad
  • Modos de mezcla: source, over, add
  • Entradas de formato mixto (BGRA + NV12 simultáneamente)
  • Políticas de tamaño con preservación de relación de aspecto
🖥️

vfmetalvideosink

Renderizador y visualizador de vídeo acelerado por hardware

  • Soporte de GstVideoOverlay y GstNavigation
  • Creación automática de ventana con preservación de relación de aspecto
  • Reenvío de eventos de ratón/teclado
  • Formatos BGRA, RGBA, NV12 e I420
🎨

vfmetalvideofilter

15 efectos visuales acelerados por GPU en un solo elemento

  • Color: brillo, contraste, saturación, tono, gamma
  • Efectos: nitidez/desenfoque, sepia, inversión, ruido, viñeta
  • Chroma key (pantalla verde) con controles de tolerancia
  • Gradación de color 3D LUT (formatos .cube y .png)
🔄

vfmetalconvertscale

Conversión de formato y escalado combinados

  • Los 6 pares de formatos compatibles (p. ej., NV12→BGRA, UYVY→I420)
  • Interpolación bilineal y de vecino más cercano
  • Letterboxing con colores de borde personalizados
  • Reemplaza tanto videoconvert como videoscale

vfmetaltransform

Transformaciones geométricas

  • 8 métodos de rotación y volteo
  • Recorte por borde
  • Paso directo de identidad sin transformación
  • Formatos BGRA, RGBA, NV12 e I420
📺

vfmetaldeinterlace

Eliminación de entrelazado acelerada por GPU

  • Algoritmos Bob, weave, linear y greedy-H
  • Desentrelazado adaptativo al movimiento (greedy-H)
  • Detección automática/manual del orden de campos
  • Formatos BGRA, RGBA, NV12 e I420
🖼️

vfmetaloverlay

Superposición de composición de imágenes

  • Soporte de superposición PNG y JPEG
  • Posicionamiento absoluto y relativo
  • Tamaño personalizado con mezcla alfa
  • Formatos BGRA, RGBA, NV12 e I420

15 efectos de vídeo

Todos los efectos se aplican en una sola pasada GPU y pueden animarse mediante GstController:

Ajuste de brillo (-1 a 1)

Control de contraste (0 a 2)

Saturación de color (0 a 2)

Rotación de tono (-1 a 1)

Corrección gamma (0,01 a 10)

Nitidez y desenfoque (-1 a 1)

Efecto de tono sepia (0 a 1)

Inversión de color

Superposición de ruido/grano (0 a 1)

Oscurecimiento de viñeta (0 a 1)

Chroma key (eliminación de pantalla verde)

Tolerancia de borde del chroma key

Suavidad de borde del chroma key

Gradación 3D LUT mediante archivos .cube (DaVinci Resolve/Adobe)

Gradación 3D LUT mediante archivos de tira .png

Soporte de plataformas

macOS

13.0+ (Ventura)

Biblioteca dinámica (gstvfmetal.dylib)

iOS

14.0+

Biblioteca estática (libgstvfmetal.a)

Preguntas frecuentes

¿Qué es GStreamer Metal?

GStreamer Metal es un plugin GStreamer de código abierto que proporciona elementos de procesamiento de vídeo acelerados por GPU para macOS e iOS. Utiliza el framework Metal de Apple y compute shaders para reemplazar las operaciones de vídeo limitadas por CPU, ofreciendo un rendimiento significativamente mejor para tareas como composición, corrección de color, conversión de formato y desentrelazado.

¿Qué plataformas son compatibles?

GStreamer Metal es compatible con macOS 13.0 (Ventura) y posterior e iOS 14.0 y posterior. En macOS se compila como biblioteca dinámica (gstvfmetal.dylib), mientras que en iOS se compila como biblioteca estática (libgstvfmetal.a) con un encabezado de registro.

¿Qué formatos de píxel son compatibles?

El plugin admite seis formatos de píxel: BGRA, RGBA, NV12, I420, UYVY y YUY2. La mayoría de los elementos admiten BGRA, RGBA, NV12 e I420, mientras que vfmetalconvertscale admite los seis formatos para máxima flexibilidad de conversión.

¿Cómo instalo el plugin?

Clone el repositorio de GitHub y ejecute el script de compilación incluido (./build.sh) para macOS. Para iOS, utilice la configuración de compilación cruzada basada en CMake. La biblioteca resultante puede colocarse en la ruta de plugins de GStreamer para su descubrimiento automático.

¿Es gratuito? ¿Cuál es la licencia?

Sí, GStreamer Metal es completamente gratuito y de código abierto, publicado bajo la GNU Library General Public License v2 (LGPL v2). Puede usarlo tanto en aplicaciones de código abierto como comerciales sin costes de licencia.

¿Qué elementos de GStreamer están incluidos?

El plugin proporciona siete elementos acelerados por GPU: vfmetalcompositor (mezcla de vídeo), vfmetalvideosink (visualización), vfmetalvideofilter (15 efectos visuales), vfmetalconvertscale (conversión de formato y escalado), vfmetaltransform (rotación/volteo/recorte), vfmetaldeinterlace (eliminación de entrelazado) y vfmetaloverlay (composición de imágenes).

¿Puedo usarlo en aplicaciones iOS?

Sí. Para iOS, el plugin se compila como biblioteca estática (libgstvfmetal.a) con un encabezado gstvfmetal_static.h para registro estático. Se integra con el SDK de GStreamer para iOS y admite los formatos de vídeo comúnmente utilizados en iOS.

¿Cómo se compara el procesamiento GPU con los elementos basados en CPU?

El procesamiento acelerado por GPU proporciona mejoras significativas de rendimiento sobre los elementos de GStreamer basados en CPU. La arquitectura zero-copy y el procesamiento en una sola pasada minimizan las transferencias de datos y el almacenamiento en búfer. Los elementos omiten automáticamente el trabajo GPU con valores de identidad, asegurando que no haya sobrecarga cuando no se necesita procesamiento.

Comience con GStreamer Metal

Acelere su pipeline de procesamiento de vídeo en plataformas Apple con elementos GStreamer potenciados por GPU.