summaryrefslogtreecommitdiff
path: root/games/retroarch
diff options
context:
space:
mode:
Diffstat (limited to 'games/retroarch')
-rw-r--r--games/retroarch/Makefile4
-rw-r--r--games/retroarch/files/patch-audio_drivers_pipewire.c20
-rw-r--r--games/retroarch/files/patch-camera_drivers_pipewire.c20
-rw-r--r--games/retroarch/files/patch-fix-ffmpeg897
-rw-r--r--games/retroarch/files/patch-qb_config.libs.sh13
5 files changed, 153 insertions, 1 deletions
diff --git a/games/retroarch/Makefile b/games/retroarch/Makefile
index e4691797e633..4b817bddc1e8 100644
--- a/games/retroarch/Makefile
+++ b/games/retroarch/Makefile
@@ -40,7 +40,7 @@ DOCSDIR= ${PREFIX}/share/doc/${PORTNAME:tl}
SUB_FILES= pkg-message
OPTIONS_DEFINE= ALSA CACA DOCS FFMPEG FREETYPE JACK OPENAL OPENGL OSS \
- PULSEAUDIO QT SDL UDEV V4L X11
+ PIPEWIRE PULSEAUDIO QT SDL UDEV V4L X11
OPTIONS_DEFINE_amd64= WAYLAND # svgalib is x86 only
OPTIONS_DEFINE_i386= WAYLAND
OPTIONS_DEFAULT= FFMPEG FREETYPE OPENAL OPENGL OSS QT SDL UDEV V4L X11
@@ -68,6 +68,8 @@ OPENGL_USES= gl
OPENGL_USE= GL=egl,gbm,gl
OPENGL_CONFIGURE_ENABLE= opengl
OSS_CONFIGURE_ENABLE= oss
+PIPEWIRE_LIB_DEPENDS= libpipewire-0.3.so:multimedia/pipewire
+PIPEWIRE_CONFIGURE_ENABLE= pipewire
PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio
PULSEAUDIO_CONFIGURE_ENABLE= pulse
QT_USES= qt:6
diff --git a/games/retroarch/files/patch-audio_drivers_pipewire.c b/games/retroarch/files/patch-audio_drivers_pipewire.c
new file mode 100644
index 000000000000..dee89af57e77
--- /dev/null
+++ b/games/retroarch/files/patch-audio_drivers_pipewire.c
@@ -0,0 +1,20 @@
+--- audio/drivers/pipewire.c.orig 2025-05-01 00:17:50 UTC
++++ audio/drivers/pipewire.c
+@@ -157,7 +157,7 @@ static const struct pw_registry_events registry_events
+ .global = registry_event_global,
+ };
+
+-static void *pipewire_init(const char *device, unsigned rate,
++static void *_pipewire_init(const char *device, unsigned rate,
+ unsigned latency,
+ unsigned block_frames,
+ unsigned *new_rate)
+@@ -443,7 +443,7 @@ audio_driver_t audio_pipewire = {
+ }
+
+ audio_driver_t audio_pipewire = {
+- pipewire_init,
++ _pipewire_init,
+ pipewire_write,
+ pipewire_stop,
+ pipewire_start,
diff --git a/games/retroarch/files/patch-camera_drivers_pipewire.c b/games/retroarch/files/patch-camera_drivers_pipewire.c
new file mode 100644
index 000000000000..9deea4bbdc3a
--- /dev/null
+++ b/games/retroarch/files/patch-camera_drivers_pipewire.c
@@ -0,0 +1,20 @@
+--- camera/drivers/pipewire.c.orig 2025-05-01 00:17:50 UTC
++++ camera/drivers/pipewire.c
+@@ -364,7 +364,7 @@ static void pipewire_free(void *data)
+ free(camera);
+ }
+
+-static void *pipewire_init(const char *device, uint64_t caps,
++static void *_pipewire_init(const char *device, uint64_t caps,
+ unsigned width, unsigned height)
+ {
+ int res, n_params;
+@@ -457,7 +457,7 @@ camera_driver_t camera_pipewire = {
+ }
+
+ camera_driver_t camera_pipewire = {
+- pipewire_init,
++ _pipewire_init,
+ pipewire_free,
+ pipewire_start,
+ pipewire_stop,
diff --git a/games/retroarch/files/patch-fix-ffmpeg8 b/games/retroarch/files/patch-fix-ffmpeg8
new file mode 100644
index 000000000000..148e4d47957f
--- /dev/null
+++ b/games/retroarch/files/patch-fix-ffmpeg8
@@ -0,0 +1,97 @@
+From 21776a2e59f5f5899ff2198c0df25a95b5020012 Mon Sep 17 00:00:00 2001
+From: libretroadmin <reallibretroretroarch@gmail.com>
+Date: Fri, 12 Sep 2025 01:44:51 +0200
+Subject: [PATCH] Attempt to fix ffmpeg 8.0 build errors
+
+---
+ cores/libretro-ffmpeg/ffmpeg_core.c | 14 ++++++++++++++
+ record/drivers/record_ffmpeg.c | 17 +++++++++++++++++
+ 2 files changed, 31 insertions(+)
+
+diff --git cores/libretro-ffmpeg/ffmpeg_core.c cores/libretro-ffmpeg/ffmpeg_core.c
+index af1a9c6ac76..90272e8e2e2 100644
+--- cores/libretro-ffmpeg/ffmpeg_core.c
++++ cores/libretro-ffmpeg/ffmpeg_core.c
+@@ -101,6 +101,9 @@ static tpool_t *tpool;
+ #define FFMPEG3 ((LIBAVUTIL_VERSION_INT < (56, 6, 100)) || \
+ (LIBAVCODEC_VERSION_INT < AV_VERSION_INT(58, 10, 100)))
+ #endif
++#ifndef FFMPEG8
++#define FFMPEG8 (LIBAVCODEC_VERSION_MAJOR >= 62)
++#endif
+
+ #if ENABLE_HW_ACCEL
+ static enum AVHWDeviceType hw_decoder;
+@@ -2093,17 +2096,28 @@ void CORE_PREFIX(retro_unload_game)(void)
+
+ for (i = 0; i < MAX_STREAMS; i++)
+ {
++#if FFMPEG8
++ if (sctx[i])
++ avcodec_free_context(&sctx[i]);
++ if (actx[i])
++ avcodec_free_context(&actx[i]);
++#else
+ if (sctx[i])
+ avcodec_close(sctx[i]);
+ if (actx[i])
+ avcodec_close(actx[i]);
++#endif
+ sctx[i] = NULL;
+ actx[i] = NULL;
+ }
+
+ if (vctx)
+ {
++#if FFMPEG8
++ avcodec_free_context(&vctx);
++#else
+ avcodec_close(vctx);
++#endif
+ vctx = NULL;
+ }
+
+diff --git record/drivers/record_ffmpeg.c record/drivers/record_ffmpeg.c
+index 1c97c66886c..41063495c88 100644
+--- record/drivers/record_ffmpeg.c
++++ record/drivers/record_ffmpeg.c
+@@ -73,6 +73,15 @@ extern "C" {
+ #define FFMPEG3 ((LIBAVUTIL_VERSION_INT < (56, 6, 100)) || \
+ (LIBAVCODEC_VERSION_INT < AV_VERSION_INT(58, 10, 100)))
+ #endif
++
++#ifndef FFMPEG8
++#define FFMPEG8 (LIBAVCODEC_VERSION_MAJOR >= 62)
++#endif
++
++#ifndef AV_INPUT_BUFFER_MIN_SIZE
++#define AV_INPUT_BUFFER_MIN_SIZE 16384
++#endif
++
+ #define HAVE_CH_LAYOUT (LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(57, 28, 100))
+
+ struct ff_video_info
+@@ -952,7 +961,11 @@ static void ffmpeg_free(void *data)
+
+ if (handle->audio.codec)
+ {
++#if FFMPEG8
++ avcodec_free_context(&handle->audio.codec);
++#else
+ avcodec_close(handle->audio.codec);
++#endif
+ av_free(handle->audio.codec);
+ }
+
+@@ -960,7 +973,11 @@ static void ffmpeg_free(void *data)
+
+ if (handle->video.codec)
+ {
++#if FFMPEG8
++ avcodec_free_context(&handle->video.codec);
++#else
+ avcodec_close(handle->video.codec);
++#endif
+ av_free(handle->video.codec);
+ }
+
diff --git a/games/retroarch/files/patch-qb_config.libs.sh b/games/retroarch/files/patch-qb_config.libs.sh
new file mode 100644
index 000000000000..732a8e228973
--- /dev/null
+++ b/games/retroarch/files/patch-qb_config.libs.sh
@@ -0,0 +1,13 @@
+--- qb/config.libs.sh.orig 2025-05-01 00:17:50 UTC
++++ qb/config.libs.sh
+@@ -269,8 +269,10 @@ check_val '' PULSE -lpulse '' libpulse '' '' false
+ check_pkgconf ROAR libroar 1.0.12
+ check_val '' JACK -ljack '' jack 0.120.1 '' false
+ check_val '' PULSE -lpulse '' libpulse '' '' false
++if [ "$HAVE_PIPEWIRE" != 'no' ]; then
+ check_val '' PIPEWIRE -lpipewire-0.3 '' libpipewire-0.3 '' '' false
+ check_val '' PIPEWIRE_STABLE -lpipewire-0.3 '' libpipewire-0.3 1.0.0 '' false
++fi
+ check_val '' SDL -lSDL SDL sdl 1.2.10 '' false
+ check_val '' SDL2 -lSDL2 SDL2 sdl2 2.0.0 '' false
+