Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Jan 2026 17:55:46 +0000
From:      Olivier Cochard <olivier@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 2f969e9395a3 - main - multimedia/gpac: merge sub-ports and update to 2.4.0
Message-ID:  <69692a22.3d28d.43bdb050@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by olivier:

URL: https://cgit.FreeBSD.org/ports/commit/?id=2f969e9395a30eb5a95880ca254da9f86b548a4e

commit 2f969e9395a30eb5a95880ca254da9f86b548a4e
Author:     Olivier Cochard <olivier@FreeBSD.org>
AuthorDate: 2026-01-15 15:16:58 +0000
Commit:     Olivier Cochard <olivier@FreeBSD.org>
CommitDate: 2026-01-15 17:54:42 +0000

    multimedia/gpac: merge sub-ports and update to 2.4.0
    
    Consolidate gpac, mp4box and library into a single port as the upstream build
    system does not easily support splitting applications from the library.
    
    Sponsored by:   Netflix
---
 MOVED                                              |   1 +
 multimedia/Makefile                                |   3 +-
 multimedia/gpac-libgpac/Makefile                   |  65 ----
 multimedia/gpac-libgpac/distinfo                   |   3 -
 .../files/patch-modules_x11__out_x11__out.c        |  17 --
 .../files/patch-src-utils-os_config_init.c         |  36 ---
 .../gpac-libgpac/files/patch-src-utils-os_divers.c | 126 --------
 .../gpac-libgpac/files/patch-src_evg_raster__yuv.c |  11 -
 .../gpac-libgpac/files/patch-src_quickjs_quickjs.c |  29 --
 multimedia/gpac-libgpac/pkg-descr                  |   1 -
 multimedia/gpac-libgpac/pkg-plist                  |  98 ------
 multimedia/gpac-mp4box/Makefile                    |  38 ---
 multimedia/gpac-mp4box/distinfo                    |   3 -
 multimedia/gpac-mp4box/pkg-descr                   |   4 -
 multimedia/gpac/Makefile                           |  67 +++++
 multimedia/gpac/distinfo                           |   3 +
 multimedia/gpac/files/patch-Makefile               |  61 ++++
 multimedia/gpac/files/patch-configure              |  11 +
 multimedia/gpac/files/patch-src_filters_ff__avf.c  |  17 ++
 multimedia/gpac/files/patch-src_filters_ff__dec.c  |  16 +
 multimedia/gpac/files/patch-src_filters_ff__dmx.c  |  18 ++
 multimedia/gpac/files/patch-src_filters_ff__enc.c  |  37 +++
 multimedia/gpac/files/patch-src_filters_ff__mx.c   |  77 +++++
 .../gpac/files/patch-src_utils_os__config__init.c  |  38 +++
 multimedia/gpac/files/patch-src_utils_os__divers.c |  12 +
 multimedia/gpac/files/patch-src_utils_os__net.c    |  12 +
 multimedia/gpac/pkg-descr                          |   3 +
 multimedia/gpac/pkg-plist                          | 331 +++++++++++++++++++++
 28 files changed, 705 insertions(+), 433 deletions(-)

diff --git a/MOVED b/MOVED
index 532afebbef8a..e3fe8443affc 100644
--- a/MOVED
+++ b/MOVED
@@ -5079,3 +5079,4 @@ devel/py-confusable_homoglyphs|devel/py-confusable-homoglyphs|2026-01-15|Rename
 devel/py-pyyaml_env_tag|devel/py-pyyaml-env-tag|2026-01-15|Rename to match upstream naming
 www/py-aiohttp_cors|www/py-aiohttp-cors|2026-01-15|Rename to match upstream naming
 lang/cython3|lang/cython|2026-01-15|Remove obsoleted port. Use lang/cython instead
+multimedia/gpac-mp4box|multimedia/gpac|2026-01-15|Merge mp4box and libgpac and add gpac
diff --git a/multimedia/Makefile b/multimedia/Makefile
index 27c7b7f903e9..26c022841c01 100644
--- a/multimedia/Makefile
+++ b/multimedia/Makefile
@@ -71,8 +71,7 @@
     SUBDIR += get_iplayer
     SUBDIR += gmmlib
     SUBDIR += gmp-api
-    SUBDIR += gpac-libgpac
-    SUBDIR += gpac-mp4box
+    SUBDIR += gpac
     SUBDIR += gpodder
     SUBDIR += gst123
     SUBDIR += gstreamer1
diff --git a/multimedia/gpac-libgpac/Makefile b/multimedia/gpac-libgpac/Makefile
deleted file mode 100644
index bc8453bdd3c9..000000000000
--- a/multimedia/gpac-libgpac/Makefile
+++ /dev/null
@@ -1,65 +0,0 @@
-PORTNAME=	gpac
-DISTVERSIONPREFIX=	v
-DISTVERSION=	1.0.0
-PORTREVISION=	3
-PORTEPOCH=	1
-CATEGORIES=	multimedia
-PKGNAMESUFFIX=	-libgpac
-
-MAINTAINER=	olivier@FreeBSD.org
-COMMENT=	Gpac MPEG-4 Systems library and headers
-WWW=		https://gpac.sourceforge.net/
-
-LICENSE=	LGPL21
-
-BUILD_DEPENDS=	bash:shells/bash
-
-ALL_TARGET=	lib
-INSTALL_TARGET=	install-lib
-USES=		cpe gmake dos2unix shebangfix
-SHEBANG_FILES=	check_revision.sh
-bash_OLD_CMD+=	/bin/sh
-USE_GITHUB=	yes
-HAS_CONFIGURE=	yes
-USE_LDCONFIG=	yes
-DOS2UNIX_FILES=	src/utils/os_config_init.c
-
-OPTIONS_DEFINE=	IPV6 JPEG OPENGL SSL PNG XVIDEO
-OPTIONS_DEFAULT=	JPEG SSL PNG
-
-CFLAGS+=	-I${WRKSRC}/include -I${LOCALBASE}/include
-LDFLAGS+=	-L${LOCALBASE}/lib
-
-CONFIGURE_ARGS=	--prefix="${PREFIX}" --cc="${CC}" --X11-path="${LOCALBASE}" \
-		--extra-cflags="${CFLAGS}" --extra-ldflags="${LDFLAGS}" \
-		--static-modules \
-		--enable-pic \
-		--disable-wx \
-		--use-js=no --use-a52=no --use-faad=no --use-ffmpeg=no \
-		--use-ft=no --use-mad=no --use-ogg=no --use-xvid=no \
-		--use-openjpeg=no --use-theora=no --use-vorbis=no
-
-SSL_USES=		ssl
-SSL_CONFIGURE_ENABLE=	ssl
-OPENGL_USES=	gl
-OPENGL_USE=	GL=gl GL=glu
-OPENGL_CONFIGURE_ENABLE=3d
-XVIDEO_LIB_DEPENDS=	libXv.so:x11/libXv
-XVIDEO_CONFIGURE_OFF=	--disable-x11-xv --disable-x11-shm
-IPV6_CONFIGURE_ENABLE=	ipv6
-JPEG_USES=		jpeg
-JPEG_CONFIGURE_ON=	--use-jpeg=local
-JPEG_CONFIGURE_OFF=	--use-jpeg=no
-PNG_LIB_DEPENDS=	libpng.so:graphics/png
-PNG_CONFIGURE_ON=	--use-png=local
-PNG_CONFIGURE_OFF=	--use-png=no
-
-post-patch:
-	${REINPLACE_CMD} -e 's|s/\.\*\\(\[0-9\]\\)\\+\$$/\\1/|s/^[^0-9]*//| ;\
-		/CFLAGS=/s/-O3// ; s/-export-dynamic/-Wl,--export-dynamic/' \
-		${WRKSRC}/configure
-
-post-install:
-	${INSTALL_DATA} ${WRKSRC}/gpac.pc ${STAGEDIR}${PREFIX}/libdata/pkgconfig
-
-.include <bsd.port.mk>
diff --git a/multimedia/gpac-libgpac/distinfo b/multimedia/gpac-libgpac/distinfo
deleted file mode 100644
index 81e63cd04359..000000000000
--- a/multimedia/gpac-libgpac/distinfo
+++ /dev/null
@@ -1,3 +0,0 @@
-TIMESTAMP = 1595078627
-SHA256 (gpac-gpac-v1.0.0_GH0.tar.gz) = ebcca41993e51706c891dba4e9fe03b59bc671c41910bc6c303ba3feeb7f1b20
-SIZE (gpac-gpac-v1.0.0_GH0.tar.gz) = 10289999
diff --git a/multimedia/gpac-libgpac/files/patch-modules_x11__out_x11__out.c b/multimedia/gpac-libgpac/files/patch-modules_x11__out_x11__out.c
deleted file mode 100644
index 41bfd949b251..000000000000
--- a/multimedia/gpac-libgpac/files/patch-modules_x11__out_x11__out.c
+++ /dev/null
@@ -1,17 +0,0 @@
---- modules/x11_out/x11_out.c.orig	2020-06-16 16:17:17 UTC
-+++ modules/x11_out/x11_out.c
-@@ -975,10 +975,14 @@ GF_Err X11_ProcessEvent (struct _video_out * vout, GF_
- 		case GF_EVENT_SET_GL:
- 			if (!xWindow->output_3d) return GF_OK;
- 
-+#ifdef GPAC_HAS_OPENGL
- 			if ( ! glXMakeCurrent(xWindow->display, xWindow->fullscreen ? xWindow->full_wnd : xWindow->wnd, xWindow->glx_context) ) {
- 				GF_LOG(GF_LOG_ERROR, GF_LOG_MMIO, ("[X11] Cannot make context current\n"));
- 				return GF_IO_ERR;
- 			}
-+#else
-+			return GF_NOT_SUPPORTED;
-+#endif
- 			break;
- 		}
- 	} else {
diff --git a/multimedia/gpac-libgpac/files/patch-src-utils-os_config_init.c b/multimedia/gpac-libgpac/files/patch-src-utils-os_config_init.c
deleted file mode 100644
index 66e0901421fa..000000000000
--- a/multimedia/gpac-libgpac/files/patch-src-utils-os_config_init.c
+++ /dev/null
@@ -1,36 +0,0 @@
---- src/utils/os_config_init.c.orig	2020-06-16 16:17:17 UTC
-+++ src/utils/os_config_init.c
-@@ -58,6 +58,9 @@
- #else
- #ifdef GPAC_CONFIG_LINUX
- #include <unistd.h>
-+#elif defined GPAC_CONFIG_FREEBSD
-+#include <sys/types.h>
-+#include <sys/sysctl.h>
- #endif
- #ifdef GPAC_CONFIG_ANDROID
- #define DEFAULT_ANDROID_PATH_APP	"/data/data/com.gpac.Osmo4"
-@@ -294,6 +297,8 @@ static Bool get_default_install_path(char *file_path, 
- 	char *sep;
- #if (defined(__DARWIN__) || defined(__APPLE__) || defined(GPAC_CONFIG_LINUX))
- 	u32 size;
-+#elif defined(GPAC_CONFIG_FREEBSD)
-+	size_t size = GF_MAX_PATH;
- #endif
- 
- 	/*on OSX, Linux & co, user home is where we store the cfg file*/
-@@ -369,6 +374,14 @@ static Bool get_default_install_path(char *file_path, 
- 			if (sep) {
- 				strcpy(file_path, sep);
- 			}
-+			return 1;
-+		}
-+#elif defined(GPAC_CONFIG_FREEBSD)
-+		int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };
-+		sysctl(mib, 4, file_path, &size, NULL, 0);
-+		if (size>0) {
-+			char *sep = strrchr(file_path, '/');
-+			if (sep) sep[0] = 0;
- 			return 1;
- 		}
- #endif
diff --git a/multimedia/gpac-libgpac/files/patch-src-utils-os_divers.c b/multimedia/gpac-libgpac/files/patch-src-utils-os_divers.c
deleted file mode 100644
index 9f1e47a90965..000000000000
--- a/multimedia/gpac-libgpac/files/patch-src-utils-os_divers.c
+++ /dev/null
@@ -1,126 +0,0 @@
---- src/utils/os_divers.c.orig	2020-06-16 16:17:17 UTC
-+++ src/utils/os_divers.c
-@@ -1680,6 +1680,123 @@ Bool gf_sys_get_rti_os(u32 refresh_time_ms, GF_SystemR
- 	return 1;
- }
- 
-+#elif defined GPAC_CONFIG_FREEBSD
-+
-+#include <sys/types.h>
-+#include <sys/sysctl.h>
-+#include <sys/time.h>
-+#include <sys/user.h>
-+
-+#define GETSYSCTL(name, var) getsysctl(name, &(var), sizeof(var))
-+int getsysctl(const char *name, void *ptr, size_t len) {
-+	size_t nlen = len;
-+	if (sysctlbyname(name, ptr, &nlen, NULL, 0) == -1) {
-+		GF_LOG(GF_LOG_ERROR, GF_LOG_CORE, ("[RTI] sysctl(%s...) failed: %s\n", name, strerror(errno)));
-+		return -1;
-+	}
-+	if (nlen != len) {
-+		GF_LOG(GF_LOG_ERROR, GF_LOG_CORE, ("[RTI] sysctl(%s...) expected %lu, got %lu\n",
-+			name, (unsigned long)len, (unsigned long)nlen));
-+		return -1;
-+	}
-+	return 0;
-+}
-+
-+static int stathz = 128;
-+
-+Bool gf_sys_get_rti_os(u32 refresh_time_ms, GF_SystemRTInfo *rti, u32 flags)
-+{
-+	size_t length;
-+	u32 entry_time;
-+	struct kinfo_proc kinfo;
-+	unsigned long result;
-+	u32 u_k_time = 0, idle_time = 0;
-+	u64 process_u_k_time = 0;
-+	long cp_time[CPUSTATES];
-+	struct clockinfo clockinfo;
-+
-+	entry_time = gf_sys_clock();
-+	if (last_update_time && (entry_time - last_update_time < refresh_time_ms)) {
-+		memcpy(rti, &the_rti, sizeof(GF_SystemRTInfo));
-+		return 0;
-+	}
-+
-+	int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, the_rti.pid };
-+	length = sizeof(kinfo);
-+
-+	if (sysctl(mib, 4, &kinfo, &length, NULL, 0) == 0) {
-+		process_u_k_time = (u64)(kinfo.ki_rusage.ru_utime.tv_usec + kinfo.ki_rusage.ru_stime.tv_usec) +
-+			(u64)(kinfo.ki_rusage.ru_utime.tv_sec + kinfo.ki_rusage.ru_stime.tv_sec) * (u64)1000000;
-+	}
-+
-+	if (GETSYSCTL("kern.cp_time", cp_time) == 0) {
-+		u_k_time = cp_time[CP_USER] + cp_time[CP_NICE] + cp_time[CP_SYS] + cp_time[CP_INTR];
-+		idle_time = cp_time[CP_IDLE];
-+	}
-+
-+	the_rti.physical_memory = the_rti.physical_memory_avail = 0;
-+	if (GETSYSCTL("hw.physmem", result) == 0) {
-+		the_rti.physical_memory = result;
-+	}
-+
-+	if (GETSYSCTL("hw.usermem", result) == 0) {
-+		the_rti.physical_memory_avail = result;
-+	}
-+
-+	the_rti.sampling_instant = last_update_time;
-+
-+	if (last_update_time) {
-+		the_rti.sampling_period_duration = (entry_time - last_update_time);
-+		the_rti.process_cpu_time_diff = (process_u_k_time - last_process_k_u_time) / 1000;
-+
-+		/*oops, we have no choice but to assume 100% cpu usage during this period*/
-+		if (!u_k_time) {
-+			the_rti.total_cpu_time_diff = the_rti.sampling_period_duration;
-+			u_k_time = last_cpu_u_k_time + the_rti.sampling_period_duration;
-+			the_rti.cpu_idle_time = 0;
-+			the_rti.total_cpu_usage = 100;
-+			if (!the_rti.process_cpu_time_diff) the_rti.process_cpu_time_diff = the_rti.total_cpu_time_diff;
-+			the_rti.process_cpu_usage = (u32) ( 100 *  the_rti.process_cpu_time_diff / the_rti.sampling_period_duration);
-+		} else {
-+			u64 samp_sys_time, cpu_idle_time;
-+			/*move to ms (kern.cp_time gives times in 1/stathz unit*/
-+			the_rti.total_cpu_time_diff = (u_k_time - last_cpu_u_k_time) * 1000 / stathz;
-+
-+			/*we're not that accurate....*/
-+			if (the_rti.total_cpu_time_diff > the_rti.sampling_period_duration)
-+				the_rti.sampling_period_duration = the_rti.total_cpu_time_diff;
-+
-+			if (!idle_time) idle_time = (the_rti.sampling_period_duration - the_rti.total_cpu_time_diff) * stathz / 1000;
-+			samp_sys_time = u_k_time - last_cpu_u_k_time;
-+			cpu_idle_time = idle_time - last_cpu_idle_time;
-+			the_rti.total_cpu_usage = (u32) ( 100 * samp_sys_time / (cpu_idle_time + samp_sys_time ) );
-+			/*move to ms (kern.cp_time gives times in 1/stathz unit*/
-+			the_rti.cpu_idle_time = cpu_idle_time * 1000 / stathz;
-+			if (!the_rti.process_cpu_time_diff) the_rti.process_cpu_time_diff = the_rti.total_cpu_time_diff;
-+			the_rti.process_cpu_usage = (u32) ( stathz * the_rti.process_cpu_time_diff / (cpu_idle_time + samp_sys_time) / 10 );
-+		}
-+	} else {
-+		mem_at_startup = the_rti.physical_memory_avail;
-+		if (GETSYSCTL("kern.clockrate", clockinfo) == 0) {
-+			if (clockinfo.stathz > 0) {
-+				stathz = clockinfo.stathz;
-+			}
-+		}
-+	}
-+	the_rti.process_memory = mem_at_startup - the_rti.physical_memory_avail;
-+
-+#ifdef GPAC_MEMORY_TRACKING
-+	the_rti.gpac_memory = gpac_allocated_memory;
-+#endif
-+
-+	last_process_k_u_time = process_u_k_time;
-+	last_cpu_idle_time = idle_time;
-+	last_cpu_u_k_time = u_k_time;
-+	last_update_time = entry_time;
-+	memcpy(rti, &the_rti, sizeof(GF_SystemRTInfo));
-+	return 1;
-+}
-+
- //linux
- #else
- 
diff --git a/multimedia/gpac-libgpac/files/patch-src_evg_raster__yuv.c b/multimedia/gpac-libgpac/files/patch-src_evg_raster__yuv.c
deleted file mode 100644
index 1df26219359e..000000000000
--- a/multimedia/gpac-libgpac/files/patch-src_evg_raster__yuv.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/evg/raster_yuv.c.orig	2022-12-08 16:12:27 UTC
-+++ src/evg/raster_yuv.c
-@@ -1291,7 +1291,7 @@ GF_Err evg_surface_clear_yuyv(GF_EVGSurface *_surf, GF
- #define set_u16_le(_ptr, val) { ((u8 *)_ptr)[0] = (val>>8)&0xFF;  ((u8 *)_ptr)[1] = (val&0xFF); }
- #define set_u16_be(_ptr, val) { *(u16 *) _ptr = (u16) val; }
- 
--#define get_u16_le(val, _ptr) { val = ((u32) (*(u8 *) ptr+1)<< 8) | *(u8 *) ptr; }
-+#define get_u16_le(val, _ptr) { val = ((u32) (*(u8 *) _ptr+1)<< 8) | *(u8 *) _ptr; }
- #define get_u16_be(val, _ptr) { val = *(u16 *) (_ptr); }
- 
- #else
diff --git a/multimedia/gpac-libgpac/files/patch-src_quickjs_quickjs.c b/multimedia/gpac-libgpac/files/patch-src_quickjs_quickjs.c
deleted file mode 100644
index 54e016d9ce30..000000000000
--- a/multimedia/gpac-libgpac/files/patch-src_quickjs_quickjs.c
+++ /dev/null
@@ -1,29 +0,0 @@
---- src/quickjs/quickjs.c.orig	2020-06-16 16:17:17 UTC
-+++ src/quickjs/quickjs.c
-@@ -38,6 +38,8 @@
- #include <malloc/malloc.h>
- #elif defined(__linux__) || defined(__NX__)
- #include <malloc.h>
-+#elif defined(__FreeBSD__)
-+#include <malloc_np.h>
- #endif
- 
- #include "cutils.h"
-@@ -1515,7 +1517,7 @@ static inline size_t js_def_malloc_usable_size(void *p
-     return _msize(ptr);
- #elif defined(EMSCRIPTEN)
-     return 0;
--#elif defined(__linux__) || defined(__NX__)
-+#elif defined(__linux__) || defined(__NX__) || defined(__FreeBSD__)
-     return malloc_usable_size(ptr);
- #else
-     /* change this to `return 0;` if compilation fails */
-@@ -1589,7 +1591,7 @@ static const JSMallocFunctions def_malloc_funcs = {
-     (size_t (*)(const void *))_msize,
- #elif defined(EMSCRIPTEN)
-     NULL,
--#elif defined(__linux__) || defined(__NX__)
-+#elif defined(__linux__) || defined(__NX__) || defined(__FreeBSD__)
-     (size_t (*)(const void *))malloc_usable_size,
- #else
-     /* change this to `NULL,` if compilation fails */
diff --git a/multimedia/gpac-libgpac/pkg-descr b/multimedia/gpac-libgpac/pkg-descr
deleted file mode 100644
index 34bc1b4a1224..000000000000
--- a/multimedia/gpac-libgpac/pkg-descr
+++ /dev/null
@@ -1 +0,0 @@
-Gpac MPEG-4 Systems library and headers
diff --git a/multimedia/gpac-libgpac/pkg-plist b/multimedia/gpac-libgpac/pkg-plist
deleted file mode 100644
index f7f50878be54..000000000000
--- a/multimedia/gpac-libgpac/pkg-plist
+++ /dev/null
@@ -1,98 +0,0 @@
-include/gpac/00_doxy.h
-include/gpac/Remotery.h
-include/gpac/ait.h
-include/gpac/atsc.h
-include/gpac/avparse.h
-include/gpac/base_coding.h
-include/gpac/bifs.h
-include/gpac/bitstream.h
-include/gpac/cache.h
-include/gpac/color.h
-include/gpac/compositor.h
-include/gpac/config_file.h
-include/gpac/configuration.h
-include/gpac/constants.h
-include/gpac/crypt.h
-include/gpac/crypt_tools.h
-include/gpac/dash.h
-include/gpac/download.h
-include/gpac/dsmcc.h
-include/gpac/dvb_mpe.h
-include/gpac/events.h
-include/gpac/events_constants.h
-include/gpac/evg.h
-include/gpac/filters.h
-include/gpac/html5_media.h
-include/gpac/html5_mse.h
-include/gpac/ietf.h
-include/gpac/internal/avilib.h
-include/gpac/internal/bifs_dev.h
-include/gpac/internal/bifs_tables.h
-include/gpac/internal/camera.h
-include/gpac/internal/compositor_dev.h
-include/gpac/internal/crypt_dev.h
-include/gpac/internal/dvb_mpe_dev.h
-include/gpac/internal/ietf_dev.h
-include/gpac/internal/isomedia_dev.h
-include/gpac/internal/laser_dev.h
-include/gpac/internal/m3u8.h
-include/gpac/internal/media_dev.h
-include/gpac/internal/mesh.h
-include/gpac/internal/odf_dev.h
-include/gpac/internal/odf_parse_common.h
-include/gpac/internal/ogg.h
-include/gpac/internal/reedsolomon.h
-include/gpac/internal/scenegraph_dev.h
-include/gpac/internal/swf_dev.h
-include/gpac/internal/vobsub.h
-include/gpac/ismacryp.h
-include/gpac/iso639.h
-include/gpac/isomedia.h
-include/gpac/laser.h
-include/gpac/list.h
-include/gpac/main.h
-include/gpac/maths.h
-include/gpac/media_tools.h
-include/gpac/mediaobject.h
-include/gpac/module.h
-include/gpac/modules/audio_out.h
-include/gpac/modules/codec.h
-include/gpac/modules/compositor_ext.h
-include/gpac/modules/font.h
-include/gpac/modules/hardcoded_proto.h
-include/gpac/modules/ipmp.h
-include/gpac/modules/video_out.h
-include/gpac/mpd.h
-include/gpac/mpeg4_odf.h
-include/gpac/mpegts.h
-include/gpac/network.h
-include/gpac/nodes_mpeg4.h
-include/gpac/nodes_svg.h
-include/gpac/nodes_x3d.h
-include/gpac/options.h
-include/gpac/path2d.h
-include/gpac/revision.h
-include/gpac/rtp_streamer.h
-include/gpac/scene_engine.h
-include/gpac/scene_manager.h
-include/gpac/scenegraph.h
-include/gpac/scenegraph_svg.h
-include/gpac/scenegraph_vrml.h
-include/gpac/setup.h
-include/gpac/svg_types.h
-include/gpac/sync_layer.h
-include/gpac/term_info.h
-include/gpac/terminal.h
-include/gpac/thread.h
-include/gpac/token.h
-include/gpac/tools.h
-include/gpac/user.h
-include/gpac/utf.h
-include/gpac/version.h
-include/gpac/webvtt.h
-include/gpac/xml.h
-lib/libgpac.so
-lib/libgpac.so.10
-lib/libgpac.so.10.0.0
-lib/libgpac_static.a
-libdata/pkgconfig/gpac.pc
diff --git a/multimedia/gpac-mp4box/Makefile b/multimedia/gpac-mp4box/Makefile
deleted file mode 100644
index 5b6ffe229b4e..000000000000
--- a/multimedia/gpac-mp4box/Makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-PORTNAME=	mp4box
-DISTVERSIONPREFIX=	v
-DISTVERSION=	1.0.0
-PORTREVISION=	1
-CATEGORIES=	multimedia
-PKGNAMEPREFIX=	gpac-
-
-MAINTAINER=	olivier@FreeBSD.org
-COMMENT=	Tool for merge mpg4 from Gpac
-WWW=		https://gpac.sourceforge.net/
-
-LICENSE=	LGPL21
-
-LIB_DEPENDS=	libgpac.so:multimedia/gpac-libgpac
-
-USES=		cpe localbase:ldflags
-
-CPE_VENDOR=	gpac
-
-USE_GITHUB=	yes
-GH_ACCOUNT=	gpac
-GH_PROJECT=	gpac
-
-LDFLAGS+=	-lgpac
-
-WRKSRC_SUBDIR=	applications/mp4box
-PLIST_FILES=	bin/mp4box share/man/man1/mp4box.1.gz
-
-do-build:
-	cd ${WRKSRC} && ${CC} ${CFLAGS} ${LDFLAGS} -o mp4box \
-		filedump.c fileimport.c live.c main.c
-
-do-install:
-	${INSTALL_PROGRAM} ${WRKSRC}/mp4box ${STAGEDIR}${PREFIX}/bin/mp4box
-	${INSTALL_MAN} ${WRKSRC}/../../share/doc/man/mp4box.1 \
-		${STAGEDIR}${PREFIX}/share/man/man1/mp4box.1
-
-.include <bsd.port.mk>
diff --git a/multimedia/gpac-mp4box/distinfo b/multimedia/gpac-mp4box/distinfo
deleted file mode 100644
index 81e63cd04359..000000000000
--- a/multimedia/gpac-mp4box/distinfo
+++ /dev/null
@@ -1,3 +0,0 @@
-TIMESTAMP = 1595078627
-SHA256 (gpac-gpac-v1.0.0_GH0.tar.gz) = ebcca41993e51706c891dba4e9fe03b59bc671c41910bc6c303ba3feeb7f1b20
-SIZE (gpac-gpac-v1.0.0_GH0.tar.gz) = 10289999
diff --git a/multimedia/gpac-mp4box/pkg-descr b/multimedia/gpac-mp4box/pkg-descr
deleted file mode 100644
index 3ce363b3787a..000000000000
--- a/multimedia/gpac-mp4box/pkg-descr
+++ /dev/null
@@ -1,4 +0,0 @@
-mp4box is a mp4 container merge tool from gpac.
-
-Documentation here:
-http://gpac.sourceforge.net/doc_mp4box.php
diff --git a/multimedia/gpac/Makefile b/multimedia/gpac/Makefile
new file mode 100644
index 000000000000..e35c9c38f790
--- /dev/null
+++ b/multimedia/gpac/Makefile
@@ -0,0 +1,67 @@
+PORTNAME=		gpac
+DISTVERSIONPREFIX=	v
+DISTVERSION=		2.4.0
+CATEGORIES=		multimedia
+
+MAINTAINER=		olivier@FreeBSD.org
+COMMENT=		Framework for processing and streaming content
+WWW=			https://gpac.io/
+
+LICENSE=		LGPL21
+
+USES=			gmake pkgconfig ssl
+
+USE_GITHUB=		yes
+GH_ACCOUNT=		gpac
+
+CFLAGS+=		-I${WRKSRC}/include -I${LOCALBASE}/include
+LDFLAGS+=		-L${LOCALBASE}/lib
+
+HAS_CONFIGURE=		yes
+CONFIGURE_ARGS+=	--prefix="${PREFIX}" --cc="${CC}" \
+			--X11-path="${LOCALBASE}" \
+			--extra-cflags="${CFLAGS}" --extra-ldflags="${LDFLAGS}"
+MAKE_ENV+=		VERSION=${DISTVERSION}
+USE_LDCONFIG=		yes
+OPTIONS_DEFINE=		A52 CACA FAAD FFMPEG FREETYPE JPEG MAD NGHTTP2 OGG \
+			OPENGL PNG SDL2 THEORA VORBIS X11 XVID
+OPTIONS_DEFAULT=	JPEG PNG
+OPTIONS_SUB=		yes
+
+A52_LIB_DEPENDS=	liba52.so:audio/liba52
+A52_CONFIGURE_OFF=	--use-a52=no
+CACA_LIB_DEPENDS=	libcaca.so:graphics/libcaca
+CACA_CONFIGURE_OFF=	--use-libcaca=no
+FAAD_LIB_DEPENDS=	libfaad.so:audio/faad
+FFMPEG_LIB_DEPENDS=	libavcodec.so:multimedia/ffmpeg
+FFMPEG_CONFIGURE_OFF=	--use-ffmpeg=no
+FREETYPE_LIB_DEPENDS=	libfreetype.so:print/freetype2
+FREETYPE_CONFIGURE_OFF=	--use-freetype=no
+JPEG_USES=		jpeg
+JPEG_CONFIGURE_ON=	--use-jpeg=system --use-openjpeg=no
+JPEG_CONFIGURE_OFF=	--use-jpeg=no
+MAD_LIB_DEPENDS=	libmad.so:audio/libmad
+MAD_CONFIGURE_OFF=	--use-mad=no
+NGHTTP2_DESC=		nghttp2 support
+NGHTTP2_LIB_DEPENDS=	libnghttp2.so:www/libnghttp2
+NGHTTP2_CONFIGURE_OFF=	--use-nghttp2=no
+OGG_LIB_DEPENDS=	libogg.so:audio/libogg
+OGG_CONFIGURE_OFF=	--use-ogg=no
+OPENGL_USES=		gl
+OPENGL_USE=		GL=gl,glu
+PNG_LIB_DEPENDS=	libpng.so:graphics/png
+PNG_CONFIGURE_OFF=	--use-png=no
+SDL2_DESC=		SDL2 support
+SDL2_USES=		sdl
+SDL2_USE=		SDL=sdl2
+THEORA_LIB_DEPENDS=	libtheora.so:multimedia/libtheora
+THEORA_CONFIGURE_OFF=	--use-theora=no
+VORBIS_LIB_DEPENDS=	libvorbis.so:audio/libvorbis
+VORBIS_CONFIGURE_OFF=	--use-vorbis=no
+X11_USES=		xorg desktop-file-utils
+X11_USE=		XORG=x11,xv,xext
+X11_CONFIGURE_OFF=	--disable-x11 --disable-x11-shm --disable-x11-xv
+XVID_LIB_DEPENDS=	libxvidcore.so:multimedia/xvid
+XVID_CONFIGURE_OFF=	--use-xvid=no
+
+.include <bsd.port.mk>
diff --git a/multimedia/gpac/distinfo b/multimedia/gpac/distinfo
new file mode 100644
index 000000000000..39dede94c872
--- /dev/null
+++ b/multimedia/gpac/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1767613128
+SHA256 (gpac-gpac-v2.4.0_GH0.tar.gz) = 99c8c994d5364b963d18eff24af2576b38d38b3460df27d451248982ea16157a
+SIZE (gpac-gpac-v2.4.0_GH0.tar.gz) = 9914579
diff --git a/multimedia/gpac/files/patch-Makefile b/multimedia/gpac/files/patch-Makefile
new file mode 100644
index 000000000000..6d79679d8090
--- /dev/null
+++ b/multimedia/gpac/files/patch-Makefile
@@ -0,0 +1,61 @@
+--- Makefile.orig	2026-01-10 11:12:25 UTC
++++ Makefile
+@@ -139,15 +139,16 @@ endif
+ 	$(INSTALL) $(INSTFLAGS) -m 644 $(SRC_PATH)/share/doc/man/gpac-filters.1 $(DESTDIR)$(prefix)/$(man_dir)/man1/
+ 	$(INSTALL) -d "$(DESTDIR)$(prefix)/share/gpac"
+ 	$(INSTALL) -d "$(DESTDIR)$(prefix)/share/gpac/res"
+-	$(INSTALL) -d "$(DESTDIR)$(prefix)/share/gpac/gui"
+-	$(INSTALL) -d "$(DESTDIR)$(prefix)/share/gpac/gui/icons"
+-	$(INSTALL) -d "$(DESTDIR)$(prefix)/share/gpac/gui/extensions"
+ 	$(INSTALL) -d "$(DESTDIR)$(prefix)/share/gpac/shaders"
+ 	$(INSTALL) -d "$(DESTDIR)$(prefix)/share/gpac/scripts"
+ 	$(INSTALL) -d "$(DESTDIR)$(prefix)/share/gpac/python"
+ 	$(INSTALL) -d "$(DESTDIR)$(prefix)/share/gpac/vis"
+ 	$(INSTALL) $(INSTFLAGS) -m 644 $(SRC_PATH)/share/default.cfg $(DESTDIR)$(prefix)/share/gpac/
+ 
++ifeq ($(CONFIG_X11),yes)
++	$(INSTALL) -d "$(DESTDIR)$(prefix)/share/gpac/gui"
++	$(INSTALL) -d "$(DESTDIR)$(prefix)/share/gpac/gui/icons"
++	$(INSTALL) -d "$(DESTDIR)$(prefix)/share/gpac/gui/extensions"
+ ifneq ($(CONFIG_DARWIN),yes)
+ 	$(INSTALL) -d "$(DESTDIR)$(prefix)/share/icons/hicolor/128x128/apps"
+ 	$(INSTALL) -d "$(DESTDIR)$(prefix)/share/applications"
+@@ -155,28 +156,32 @@ endif
+ 	$(INSTALL) $(INSTFLAGS) -m 644 $(SRC_PATH)/share/res/gpac.png "$(DESTDIR)$(prefix)/share/icons/hicolor/128x128/apps/"
+ 	$(INSTALL) $(INSTFLAGS) -m 644 $(SRC_PATH)/share/gpac.desktop "$(DESTDIR)$(prefix)/share/applications/"
+ endif
+-
+ 	$(INSTALL) $(INSTFLAGS) -m 644 $(SRC_PATH)/share/gui/gui.bt "$(DESTDIR)$(prefix)/share/gpac/gui/"
+ 	$(INSTALL) $(INSTFLAGS) -m 644 $(SRC_PATH)/share/gui/gui.js "$(DESTDIR)$(prefix)/share/gpac/gui/"
+ 	$(INSTALL) $(INSTFLAGS) -m 644 $(SRC_PATH)/share/gui/gwlib.js "$(DESTDIR)$(prefix)/share/gpac/gui/"
++endif
+ 
+ 
+-ifeq ($(CONFIG_DARWIN),yes)
+-	cp $(SRC_PATH)/share/gui/icons/* "$(DESTDIR)$(prefix)/share/gpac/gui/icons/"
+-	cp -R $(SRC_PATH)/share/gui/extensions/* "$(DESTDIR)$(prefix)/share/gpac/gui/extensions/"
++ifneq (,$(filter yes,$(CONFIG_DARWIN) $(CONFIG_FREEBSD)))
+ 	cp $(SRC_PATH)/share/shaders/* "$(DESTDIR)$(prefix)/share/gpac/shaders/"
+ 	cp -R $(SRC_PATH)/share/scripts/* "$(DESTDIR)$(prefix)/share/gpac/scripts/"
+ 	cp -R $(SRC_PATH)/share/python/* "$(DESTDIR)$(prefix)/share/gpac/python/"
+ 	cp $(SRC_PATH)/share/res/* "$(DESTDIR)$(prefix)/share/gpac/res/"
+ 	cp -R $(SRC_PATH)/share/vis/* "$(DESTDIR)$(prefix)/share/gpac/vis/"
++ifeq ($(CONFIG_X11),yes)
++	cp $(SRC_PATH)/share/gui/icons/* "$(DESTDIR)$(prefix)/share/gpac/gui/icons/"
++	cp -R $(SRC_PATH)/share/gui/extensions/* "$(DESTDIR)$(prefix)/share/gpac/gui/extensions/"
++endif
+ else
+-	cp --no-preserve=mode,ownership,timestamp $(SRC_PATH)/share/gui/icons/* $(DESTDIR)$(prefix)/share/gpac/gui/icons/
+-	cp -R --no-preserve=mode,ownership,timestamp $(SRC_PATH)/share/gui/extensions/* $(DESTDIR)$(prefix)/share/gpac/gui/extensions/
+ 	cp --no-preserve=mode,ownership,timestamp $(SRC_PATH)/share/shaders/* $(DESTDIR)$(prefix)/share/gpac/shaders/
+ 	cp -R --no-preserve=mode,ownership,timestamp $(SRC_PATH)/share/scripts/* $(DESTDIR)$(prefix)/share/gpac/scripts/
+ 	cp -R --no-preserve=mode,ownership,timestamp $(SRC_PATH)/share/python/* $(DESTDIR)$(prefix)/share/gpac/python/
+ 	cp --no-preserve=mode,ownership,timestamp $(SRC_PATH)/share/res/* $(DESTDIR)$(prefix)/share/gpac/res/
+ 	cp -R --no-preserve=mode,ownership,timestamp $(SRC_PATH)/share/vis/* $(DESTDIR)$(prefix)/share/gpac/vis/
++ifeq ($(CONFIG_X11),yes)
++	cp --no-preserve=mode,ownership,timestamp $(SRC_PATH)/share/gui/icons/* $(DESTDIR)$(prefix)/share/gpac/gui/icons/
++	cp -R --no-preserve=mode,ownership,timestamp $(SRC_PATH)/share/gui/extensions/* $(DESTDIR)$(prefix)/share/gpac/gui/extensions/
++endif
+ endif
+ 
+ lninstall:
diff --git a/multimedia/gpac/files/patch-configure b/multimedia/gpac/files/patch-configure
new file mode 100644
index 000000000000..ed25fb3395a5
--- /dev/null
+++ b/multimedia/gpac/files/patch-configure
@@ -0,0 +1,11 @@
+--- configure.orig	2026-01-10 11:12:40 UTC
++++ configure
+@@ -942,7 +942,7 @@ EOF
+ 
+     FreeBSD)
+         make="gmake"
+-        LDFLAGS="$LDFLAGS -export-dynamic"
++	LDFLAGS="$LDFLAGS -rdynamic"
+         PTHREAD_CFLAGS=-pthread
+         PTHREAD_LDFLAGS=-pthread
+         freebsd="yes"
diff --git a/multimedia/gpac/files/patch-src_filters_ff__avf.c b/multimedia/gpac/files/patch-src_filters_ff__avf.c
new file mode 100644
index 000000000000..2441ff4a4d3c
--- /dev/null
+++ b/multimedia/gpac/files/patch-src_filters_ff__avf.c
@@ -0,0 +1,17 @@
+--- src/filters/ff_avf.c.orig	2024-04-17 17:18:21 UTC
++++ src/filters/ff_avf.c
+@@ -722,9 +722,13 @@ static GF_Err ffavf_process(GF_Filter *filter)
+ 					memcpy(buffer + j*opid->stride, frame->data[3] + j*frame->linesize[3], opid->width*opid->bpp);
+ 				}
+ 			}
++#if (LIBAVFORMAT_VERSION_MAJOR < 62)
+ 			if (frame->interlaced_frame)
+ 				gf_filter_pck_set_interlaced(pck, frame->top_field_first ? 1 : 2);
+-
++#else
++			if (frame->flags & AV_FRAME_FLAG_INTERLACED)
++				gf_filter_pck_set_interlaced(pck, frame->flags & AV_FRAME_FLAG_TOP_FIELD_FIRST ? 1 : 2);
++#endif
+ 			gf_filter_pck_set_sap(pck, GF_FILTER_SAP_1);
+ 			gf_filter_pck_set_cts(pck, frame->pts * opid->tb_num);
+ 			gf_filter_pck_send(pck);
diff --git a/multimedia/gpac/files/patch-src_filters_ff__dec.c b/multimedia/gpac/files/patch-src_filters_ff__dec.c
new file mode 100644
index 000000000000..a4cea3d2ef1d
--- /dev/null
+++ b/multimedia/gpac/files/patch-src_filters_ff__dec.c
@@ -0,0 +1,16 @@
+--- src/filters/ff_dec.c.orig	2024-04-17 17:18:21 UTC
++++ src/filters/ff_dec.c
+@@ -535,8 +535,13 @@ restart:
+ 
+ 	gf_filter_pck_set_seek_flag(dst_pck, GF_FALSE);
+ 
++#if (LIBAVFORMAT_VERSION_MAJOR < 62)
+ 	if (frame->interlaced_frame)
+ 		gf_filter_pck_set_interlaced(dst_pck, frame->top_field_first ? 2 : 1);
++#else
++	if (frame->flags & AV_FRAME_FLAG_INTERLACED)
++		gf_filter_pck_set_interlaced(dst_pck, frame->flags & AV_FRAME_FLAG_TOP_FIELD_FIRST ? 2 : 1);
++#endif
+ 
+ 	gf_filter_pck_send(dst_pck);
+ 
diff --git a/multimedia/gpac/files/patch-src_filters_ff__dmx.c b/multimedia/gpac/files/patch-src_filters_ff__dmx.c
new file mode 100644
index 000000000000..c3c011b6b945
--- /dev/null
+++ b/multimedia/gpac/files/patch-src_filters_ff__dmx.c
@@ -0,0 +1,18 @@
+--- src/filters/ff_dmx.c.orig	2024-04-17 17:18:21 UTC
++++ src/filters/ff_dmx.c
+@@ -1255,9 +1255,15 @@ GF_Err ffdmx_init_common(GF_Filter *filter, GF_FFDemux
+ 		}
+ 		gf_filter_pid_set_property(pid, GF_PROP_PID_MUX_INDEX, &PROP_UINT(i+1));
+ 
++#if (LIBAVFORMAT_VERSION_MAJOR < 62)
+ 		for (j=0; j<(u32) stream->nb_side_data; j++) {
+ 			ffdmx_parse_side_data(&stream->side_data[j], pid);
+ 		}
++#else
++		for (j=0; j<(u32) stream->codecpar->nb_coded_side_data; j++) {
++			ffdmx_parse_side_data(&stream->codecpar->coded_side_data[j], pid);
++		}
++#endif
+ 
+ 		if (ctx->demuxer->nb_chapters) {
+ 			GF_PropertyValue p;
diff --git a/multimedia/gpac/files/patch-src_filters_ff__enc.c b/multimedia/gpac/files/patch-src_filters_ff__enc.c
new file mode 100644
index 000000000000..d2ad49579a29
--- /dev/null
+++ b/multimedia/gpac/files/patch-src_filters_ff__enc.c
@@ -0,0 +1,37 @@
+--- src/filters/ff_enc.c.orig	2024-04-17 17:18:21 UTC
++++ src/filters/ff_enc.c
+@@ -588,12 +588,25 @@ static GF_Err ffenc_process_video(GF_Filter *filter, s
+ 		}
+ 		if (pck) {
+ 			ilaced = gf_filter_pck_get_interlaced(pck);
++#if (LIBAVFORMAT_VERSION_MAJOR < 62)
+ 			if (!ilaced) {
+ 				ctx->frame->interlaced_frame = 0;
+ 			} else {
+ 				ctx->frame->interlaced_frame = 1;
+ 				ctx->frame->top_field_first = (ilaced==2) ? 1 : 0;
+ 			}
++#else
++			if (!ilaced) {
++				ctx->frame->flags &= ~AV_FRAME_FLAG_INTERLACED;
++			} else {
++				ctx->frame->flags |= AV_FRAME_FLAG_INTERLACED;
++				if (ilaced==2) {
++					ctx->frame->flags |= AV_FRAME_FLAG_TOP_FIELD_FIRST;
++				} else {
++					ctx->frame->flags &= ~AV_FRAME_FLAG_TOP_FIELD_FIRST;
++				}
++			}
++#endif
+ 			ctx->frame->pts = ffenc_get_cts(ctx, pck);
+ 			ctx->frame->_avf_dur = gf_filter_pck_get_duration(pck);
+ 		}
+@@ -706,7 +719,7 @@ static GF_Err ffenc_process_video(GF_Filter *filter, s
+ 				ctx->reconfig_pending = GF_FALSE;
+ 				ctx->force_reconfig = GF_FALSE;
+ 				GF_LOG(GF_LOG_DEBUG, GF_LOG_CODEC, ("[FFEnc] codec flush done, triggering reconfiguration\n"));
+-				avcodec_close(ctx->encoder);
++				avcodec_free_context(&ctx->encoder);
+ 				ctx->encoder = NULL;
+ 				ctx->setup_failed = 0;
+ 				e = ffenc_configure_pid_ex(filter, ctx->in_pid, GF_FALSE, GF_TRUE);
diff --git a/multimedia/gpac/files/patch-src_filters_ff__mx.c b/multimedia/gpac/files/patch-src_filters_ff__mx.c
new file mode 100644
index 000000000000..a5ddd4da0de5
--- /dev/null
+++ b/multimedia/gpac/files/patch-src_filters_ff__mx.c
@@ -0,0 +1,77 @@
+--- src/filters/ff_mx.c.orig	2024-04-17 17:18:21 UTC
++++ src/filters/ff_mx.c
+@@ -1330,7 +1330,14 @@ static GF_Err ffmx_configure_pid(GF_Filter *filter, GF
+ 		u8 *data = av_malloc(sizeof(u32) * 9);
+ 		if (data) {
+ 			memcpy(data, p->value.uint_list.vals, sizeof(u32)*9);
++#if (LIBAVFORMAT_VERSION_MAJOR < 62)
+ 			av_stream_add_side_data(st->stream, AV_PKT_DATA_DISPLAYMATRIX, data, 32*9);
++#else
++			av_packet_side_data_add(&st->stream->codecpar->coded_side_data,
++									&st->stream->codecpar->nb_coded_side_data,
++									AV_PKT_DATA_DISPLAYMATRIX,
++									data, 32 * 9, 0);
++#endif
+ 		}
+ 	}
+ #if (LIBAVCODEC_VERSION_MAJOR>58)
+@@ -1340,7 +1347,14 @@ static GF_Err ffmx_configure_pid(GF_Filter *filter, GF
+ 		u8 *data = av_malloc(p->value.data.size);
+ 		if (data) {
+ 			memcpy(data, p->value.data.ptr, p->value.data.size);
++#if (LIBAVFORMAT_VERSION_MAJOR < 62)
+ 			av_stream_add_side_data(st->stream, AV_PKT_DATA_ICC_PROFILE, data, p->value.data.size);
++#else
++			av_packet_side_data_add(&st->stream->codecpar->coded_side_data,
++									&st->stream->codecpar->nb_coded_side_data,
++									AV_PKT_DATA_ICC_PROFILE,
++									data, p->value.data.size, 0);
++#endif
+ 		}
+ 	}
+ 	//clli
+@@ -1351,7 +1365,14 @@ static GF_Err ffmx_configure_pid(GF_Filter *filter, GF
+ 		if (data) {
+ 			data->MaxCLL = gf_bs_read_u16(bs);
+ 			data->MaxFALL = gf_bs_read_u16(bs);
++#if (LIBAVFORMAT_VERSION_MAJOR < 62)
+ 			av_stream_add_side_data(st->stream, AV_PKT_DATA_CONTENT_LIGHT_LEVEL, (u8*) data, sizeof(AVContentLightMetadata));
++#else
++			av_packet_side_data_add(&st->stream->codecpar->coded_side_data,
++									&st->stream->codecpar->nb_coded_side_data,
++									AV_PKT_DATA_CONTENT_LIGHT_LEVEL,
++									(u8*) data, sizeof(AVContentLightMetadata), 0);
++#endif
+ 		}
+ 		gf_bs_del(bs);
+ 	}
+@@ -1385,7 +1406,14 @@ static GF_Err ffmx_configure_pid(GF_Filter *filter, GF
+ 			data->max_luminance.den = luma_den;
+ 			data->min_luminance.num = gf_bs_read_u32(bs);
+ 			data->min_luminance.den = luma_den;
++#if (LIBAVFORMAT_VERSION_MAJOR < 62)
+ 			av_stream_add_side_data(st->stream, AV_PKT_DATA_MASTERING_DISPLAY_METADATA, (u8*) data, sizeof(AVMasteringDisplayMetadata));
++#else
++			av_packet_side_data_add(&st->stream->codecpar->coded_side_data,
++				&st->stream->codecpar->nb_coded_side_data,
++				AV_PKT_DATA_MASTERING_DISPLAY_METADATA,
++				(u8*) data, sizeof(AVMasteringDisplayMetadata), 0);
++#endif
+     	}
+     	gf_bs_del(bs);
+ 	}
+@@ -1403,7 +1431,14 @@ static GF_Err ffmx_configure_pid(GF_Filter *filter, GF
+ 			data->el_present_flag = gf_bs_read_int(bs, 1);
+ 			data->bl_present_flag = gf_bs_read_int(bs, 1);
+ 			data->dv_bl_signal_compatibility_id = gf_bs_read_int(bs, 4);
++#if (LIBAVFORMAT_VERSION_MAJOR < 62)
+ 			av_stream_add_side_data(st->stream, AV_PKT_DATA_DOVI_CONF, (u8*) data, sizeof(Ref_FFAVDoviRecord));
++#else
++			av_packet_side_data_add(&st->stream->codecpar->coded_side_data,
++									&st->stream->codecpar->nb_coded_side_data,
++									AV_PKT_DATA_DOVI_CONF,
++									(u8*) data, sizeof(Ref_FFAVDoviRecord), 0);
++#endif
+ 		}
+ 		gf_bs_del(bs);
+ 	}
diff --git a/multimedia/gpac/files/patch-src_utils_os__config__init.c b/multimedia/gpac/files/patch-src_utils_os__config__init.c
new file mode 100644
index 000000000000..08e7e4df83c5
--- /dev/null
+++ b/multimedia/gpac/files/patch-src_utils_os__config__init.c
@@ -0,0 +1,38 @@
+--- src/utils/os_config_init.c.orig	2026-01-10 11:13:13 UTC
++++ src/utils/os_config_init.c
+@@ -335,7 +335,7 @@ static Bool get_default_install_path(char *file_path, 
+ #else
+ 
+ //dlinfo
+-#if defined(__DARWIN__) || defined(__APPLE__)
++#if defined(__DARWIN__) || defined(__APPLE__) || defined(__FreeBSD__)
+ #include <dlfcn.h>
+ 
+ typedef Dl_info _Dl_info;
+@@ -357,7 +357,7 @@ static Bool get_default_install_path(char *file_path, 
+ {
+ 	char app_path[GF_MAX_PATH];
+ 	char *sep;
+-#if (defined(__DARWIN__) || defined(__APPLE__) || defined(GPAC_CONFIG_LINUX))
++#if (defined(__DARWIN__) || defined(__APPLE__) || defined(GPAC_CONFIG_LINUX) || defined(__FreeBSD__))
+ 	u32 size;
+ #endif
+ 
+@@ -419,7 +419,7 @@ static Bool get_default_install_path(char *file_path, 
+ 			return 1;
+ 		}
+ 
+-#elif defined(GPAC_CONFIG_LINUX)
++#elif defined(GPAC_CONFIG_LINUX) || defined(__FreeBSD__)
+ 		size = readlink("/proc/self/exe", file_path, GF_MAX_PATH-1);
+ 		if (size>0) {
+ 			file_path[size] = 0;
+@@ -456,7 +456,7 @@ static Bool get_default_install_path(char *file_path, 
+ 	}
+ 
+ 	if (path_type==GF_PATH_LIB) {
+-#if defined(__DARWIN__) || defined(__APPLE__) || defined(GPAC_CONFIG_LINUX)
++#if defined(__DARWIN__) || defined(__APPLE__) || defined(GPAC_CONFIG_LINUX) || defined(__FreeBSD__)
+ 		_Dl_info dl_info;
+ 		dl_info.dli_fname = NULL;
+ 		if (dladdr((void *)get_default_install_path, &dl_info)
diff --git a/multimedia/gpac/files/patch-src_utils_os__divers.c b/multimedia/gpac/files/patch-src_utils_os__divers.c
new file mode 100644
index 000000000000..852b8c643aa7
--- /dev/null
+++ b/multimedia/gpac/files/patch-src_utils_os__divers.c
@@ -0,0 +1,12 @@
+--- src/utils/os_divers.c.orig	2026-01-10 11:14:36 UTC
++++ src/utils/os_divers.c
+@@ -2301,6 +2301,9 @@ Bool gf_sys_get_rti_os(u32 refresh_time_ms, GF_SystemR
*** 373 LINES SKIPPED ***


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69692a22.3d28d.43bdb050>