VisioForge
오픈소스 · LGPL v2

GStreamer Metal 플러그인

Apple 플랫폼에서 GStreamer를 위한 GPU 가속 비디오 처리. 7개의 Metal 기반 엘리먼트가 CPU 바운드 작업을 제로 카피, 싱글 패스 GPU 처리로 대체합니다.

GStreamer Metal이란?

GStreamer Metal(gst-vf-metal)은 macOS 및 iOS용 일반적인 CPU 바운드 비디오 엘리먼트의 Metal 기반 구현을 제공하는 전문가급 GStreamer 플러그인입니다. Apple의 Metal 프레임워크와 컴퓨트 셰이더를 통해 최소한의 CPU 오버헤드로 실시간 비디오 처리를 가능하게 하며, 상당한 성능 향상을 제공합니다.

제로 카피 아키텍처

CVMetalTextureCache가 불필요한 CPU-GPU 복사를 제거합니다. 엘리먼트는 아이덴티티/기본값으로 구성된 경우 자동으로 GPU 작업을 건너뜁니다.

싱글 패스 GPU 처리

모든 필터 효과(밝기, 대비, 색조, 크로마 키, LUT 등)가 하나의 GPU 디스패치로 적용 — 효과 간 중간 프레임 버퍼 없음.

혼합 포맷 합성

컴포지터가 이종 입력 포맷(예: BGRA + NV12 동시 사용)을 자동 포맷 변환과 함께 허용합니다.

6가지 픽셀 포맷

전체 엘리먼트 스위트에서 BGRA, RGBA, NV12, I420, UYVY, YUY2 픽셀 포맷을 지원합니다.

GPU 가속 엘리먼트

🎬

vfmetalcompositor

다중 입력 비디오 믹싱 및 합성

  • 패드별 위치, 스케일링, 알파 및 Z 순서
  • 블렌드 모드: source, over, add
  • 혼합 포맷 입력(BGRA + NV12 동시 사용)
  • 종횡비 보존 크기 정책
🖥️

vfmetalvideosink

하드웨어 가속 비디오 렌더러 및 디스플레이

  • GstVideoOverlay 및 GstNavigation 지원
  • 종횡비 보존 자동 창 생성
  • 마우스/키보드 이벤트 전달
  • BGRA, RGBA, NV12, I420 포맷
🎨

vfmetalvideofilter

단일 엘리먼트에 15가지 GPU 가속 시각 효과

  • 색상: 밝기, 대비, 채도, 색조, 감마
  • 효과: 선명도/흐림, 세피아, 반전, 노이즈, 비네트
  • 크로마 키(그린 스크린) 허용 오차 제어
  • 3D LUT 색상 그레이딩(.cube 및 .png 포맷)
🔄

vfmetalconvertscale

포맷 변환과 스케일링 통합

  • 6가지 포맷 쌍 모두 지원(예: NV12→BGRA, UYVY→I420)
  • 바이리니어 및 최근접 이웃 보간
  • 사용자 정의 테두리 색상의 레터박싱
  • videoconvert와 videoscale 모두 대체

vfmetaltransform

기하학적 변환

  • 8가지 회전 및 뒤집기 방법
  • 가장자리별 크롭핑
  • 변환 불필요 시 아이덴티티 패스스루
  • BGRA, RGBA, NV12, I420 포맷
📺

vfmetaldeinterlace

GPU 가속 인터레이스 제거

  • Bob, weave, linear, greedy-H 알고리즘
  • 모션 적응형 디인터레이스(greedy-H)
  • 자동/수동 필드 순서 감지
  • BGRA, RGBA, NV12, I420 포맷
🖼️

vfmetaloverlay

이미지 합성 오버레이

  • PNG 및 JPEG 오버레이 지원
  • 절대 및 상대 위치 지정
  • 알파 블렌딩 사용자 정의 크기
  • BGRA, RGBA, NV12, I420 포맷

15가지 비디오 효과

모든 효과는 단일 GPU 패스로 적용되며 GstController를 통해 애니메이션 가능:

밝기 조절(-1~1)

대비 제어(0~2)

색 채도(0~2)

색조 회전(-1~1)

감마 보정(0.01~10)

선명도 및 흐림(-1~1)

세피아 톤 효과(0~1)

색 반전

노이즈/그레인 오버레이(0~1)

비네트 어둡게(0~1)

크로마 키(그린 스크린 제거)

크로마 키 가장자리 허용 오차

크로마 키 가장자리 부드러움

.cube 파일을 통한 3D LUT 그레이딩(DaVinci Resolve/Adobe)

.png 스트립 파일을 통한 3D LUT 그레이딩

플랫폼 지원

macOS

13.0+(Ventura)

동적 라이브러리(gstvfmetal.dylib)

iOS

14.0+

정적 라이브러리(libgstvfmetal.a)

자주 묻는 질문

GStreamer Metal이란 무엇인가요?

GStreamer Metal은 macOS 및 iOS용 GPU 가속 비디오 처리 엘리먼트를 제공하는 오픈소스 GStreamer 플러그인입니다. Apple의 Metal 프레임워크와 컴퓨트 셰이더를 사용하여 CPU 바운드 비디오 작업을 대체하며, 합성, 색상 보정, 포맷 변환, 디인터레이스와 같은 작업에서 크게 향상된 성능을 제공합니다.

어떤 플랫폼이 지원되나요?

GStreamer Metal은 macOS 13.0(Ventura) 이상과 iOS 14.0 이상을 지원합니다. macOS에서는 동적 라이브러리(gstvfmetal.dylib)로 빌드되고, iOS에서는 등록 헤더가 포함된 정적 라이브러리(libgstvfmetal.a)로 빌드됩니다.

어떤 픽셀 포맷이 지원되나요?

이 플러그인은 6가지 픽셀 포맷을 지원합니다: BGRA, RGBA, NV12, I420, UYVY, YUY2. 대부분의 엘리먼트는 BGRA, RGBA, NV12, I420을 지원하며, vfmetalconvertscale은 최대 변환 유연성을 위해 6가지 포맷 모두를 지원합니다.

플러그인을 어떻게 설치하나요?

GitHub 리포지토리를 클론하고 macOS용 포함 빌드 스크립트(./build.sh)를 실행합니다. iOS의 경우 CMake 기반 크로스 컴파일 설정을 사용합니다. 생성된 라이브러리를 GStreamer 플러그인 경로에 배치하면 자동으로 검색됩니다.

무료인가요? 라이선스는 무엇인가요?

예, GStreamer Metal은 완전히 무료이며 오픈소스로, GNU Library General Public License v2(LGPL v2)에 따라 배포됩니다. 라이선스 비용 없이 오픈소스 및 상업용 애플리케이션 모두에서 사용할 수 있습니다.

어떤 GStreamer 엘리먼트가 포함되어 있나요?

이 플러그인은 7가지 GPU 가속 엘리먼트를 제공합니다: vfmetalcompositor(비디오 믹싱), vfmetalvideosink(디스플레이), vfmetalvideofilter(15가지 시각 효과), vfmetalconvertscale(포맷 변환 및 스케일링), vfmetaltransform(회전/뒤집기/크롭), vfmetaldeinterlace(인터레이스 제거), vfmetaloverlay(이미지 합성).

iOS 앱에서 사용할 수 있나요?

예. iOS용으로 플러그인은 정적 등록용 gstvfmetal_static.h 헤더가 포함된 정적 라이브러리(libgstvfmetal.a)로 빌드됩니다. GStreamer iOS SDK와 통합되며 iOS에서 일반적으로 사용되는 비디오 포맷을 지원합니다.

GPU 처리는 CPU 기반 엘리먼트와 어떻게 비교되나요?

GPU 가속 처리는 CPU 기반 GStreamer 엘리먼트에 비해 상당한 성능 향상을 제공합니다. 제로 카피 아키텍처와 싱글 패스 처리가 데이터 전송과 프레임 버퍼링을 최소화합니다. 엘리먼트는 아이덴티티 값에서 자동으로 GPU 작업을 바이패스하여 처리가 필요하지 않을 때 오버헤드가 발생하지 않습니다.

GStreamer Metal 시작하기

GPU 기반 GStreamer 엘리먼트로 Apple 플랫폼에서 비디오 처리 파이프라인을 가속하세요.