summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Steinmetz <zi@FreeBSD.org>2026-05-05 19:58:10 +0000
committerRyan Steinmetz <zi@FreeBSD.org>2026-05-05 19:58:10 +0000
commit51d7669d7a42a9e2975cc4fbdef2e4809f127143 (patch)
tree7d46b0b48db18d7b61f6530f3ce4580fc84e3e9a
parent9cdc1baa6392b40f31cb87fac60c60246d612871 (diff)
-rw-r--r--multimedia/Makefile1
-rw-r--r--multimedia/funnelcake/Makefile41
-rw-r--r--multimedia/funnelcake/distinfo3
-rw-r--r--multimedia/funnelcake/files/pkg-message-FFMPEG8
-rw-r--r--multimedia/funnelcake/pkg-descr14
-rw-r--r--multimedia/funnelcake/pkg-plist6
6 files changed, 73 insertions, 0 deletions
diff --git a/multimedia/Makefile b/multimedia/Makefile
index 165d8e5a1a85..d53bdca6640c 100644
--- a/multimedia/Makefile
+++ b/multimedia/Makefile
@@ -64,6 +64,7 @@
SUBDIR += filebot
SUBDIR += flvmeta
SUBDIR += fswebcam
+ SUBDIR += funnelcake
SUBDIR += gaupol
SUBDIR += gavl
SUBDIR += get_iplayer
diff --git a/multimedia/funnelcake/Makefile b/multimedia/funnelcake/Makefile
new file mode 100644
index 000000000000..010e3a7548fb
--- /dev/null
+++ b/multimedia/funnelcake/Makefile
@@ -0,0 +1,41 @@
+PORTNAME= funnelcake
+PORTVERSION= 0.1.0
+CATEGORIES= multimedia
+
+MAINTAINER= toasty@dragondata.com
+COMMENT= SIMD YUV scaler with HDR/SDR tonemapping
+WWW= https://github.com/kdkd/funnelcake
+
+LICENSE= BSD2CLAUSEPATENT
+LICENSE_NAME= BSD 2-Clause Plus Patent License
+LICENSE_FILE= ${WRKSRC}/LICENSE.md
+LICENSE_PERMS= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
+
+ONLY_FOR_ARCHS= aarch64 amd64
+ONLY_FOR_ARCHS_REASON= requires AVX2 (amd64) or NEON (aarch64) SIMD kernels
+
+USES= gmake
+USE_GITHUB= yes
+GH_ACCOUNT= kdkd
+
+USE_LDCONFIG= yes
+
+OPTIONS_DEFINE= FFMPEG OPTIMIZED
+OPTIONS_SUB= yes
+
+FFMPEG_DESC= Enable support for benchmarking against ffmpeg
+FFMPEG_LIB_DEPENDS= libswscale.so:multimedia/ffmpeg
+FFMPEG_ALL_TARGET= all funnelcake_test
+FFMPEG_VARS= PKGMESSAGE=${FILESDIR}/pkg-message-FFMPEG
+OPTIMIZED_DESC= Enable host-specific optimizations
+OPTIMIZED_VARS= OPTIMIZED_ENV=TUNE=native
+TEST_TARGET= test
+MAKE_ENV+= ${OPTIMIZED_ENV}
+
+post-install:
+ ${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/libfunnelcake.so.1
+
+post-install-FFMPEG-on:
+ ${INSTALL_PROGRAM} ${WRKSRC}/funnelcake_test ${STAGEDIR}${PREFIX}/bin
+
+.include <bsd.port.mk>
diff --git a/multimedia/funnelcake/distinfo b/multimedia/funnelcake/distinfo
new file mode 100644
index 000000000000..310a21f771b4
--- /dev/null
+++ b/multimedia/funnelcake/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1777922135
+SHA256 (kdkd-funnelcake-0.1.0_GH0.tar.gz) = 95f344c8af8ae8bb413ade2eb8dfdb0fe15fd35383d673d07a87cf44d65d3547
+SIZE (kdkd-funnelcake-0.1.0_GH0.tar.gz) = 229708
diff --git a/multimedia/funnelcake/files/pkg-message-FFMPEG b/multimedia/funnelcake/files/pkg-message-FFMPEG
new file mode 100644
index 000000000000..ec885f68364f
--- /dev/null
+++ b/multimedia/funnelcake/files/pkg-message-FFMPEG
@@ -0,0 +1,8 @@
+[
+{ type: install
+ message: <<EOM
+You can run benchmarks with the following command:
+funnelcake_test --bench
+EOM
+}
+]
diff --git a/multimedia/funnelcake/pkg-descr b/multimedia/funnelcake/pkg-descr
new file mode 100644
index 000000000000..91a3564f0faf
--- /dev/null
+++ b/multimedia/funnelcake/pkg-descr
@@ -0,0 +1,14 @@
+funnelcake is a SIMD-accelerated YUV image scaler and HDR/SDR tonemapper
+written in C. It produces multiple downscaled outputs from a single
+input frame in one fused pass, which avoids the redundant memory
+traffic of running an external scaler per output size.
+
+Features:
+- Power-of-two and thirds (1/2, 1/3, 1/4, 2/3, ...) downscale ratios
+ and integer upscale, all in a single pass over the source.
+- 8-bit SDR (I420, NV12) and 10-bit HDR (I010, P010, I210, P210)
+ pixel formats.
+- HDR-to-SDR tonemapping with PQ (SMPTE 2084) and HLG transfer curves,
+ and a custom-LUT path for application-supplied curves.
+- Hand-tuned SIMD kernels: AVX2 on amd64, NEON on aarch64.
+ Detection is at runtime; falls back to a portable scalar path.
diff --git a/multimedia/funnelcake/pkg-plist b/multimedia/funnelcake/pkg-plist
new file mode 100644
index 000000000000..7025e4d038bb
--- /dev/null
+++ b/multimedia/funnelcake/pkg-plist
@@ -0,0 +1,6 @@
+%%FFMPEG%%bin/funnelcake_test
+include/funnelcake.h
+lib/libfunnelcake.a
+lib/libfunnelcake.so
+lib/libfunnelcake.so.1
+libdata/pkgconfig/funnelcake.pc