diff options
Diffstat (limited to 'games/retroarch')
-rw-r--r-- | games/retroarch/Makefile | 4 | ||||
-rw-r--r-- | games/retroarch/files/patch-audio_drivers_pipewire.c | 20 | ||||
-rw-r--r-- | games/retroarch/files/patch-camera_drivers_pipewire.c | 20 | ||||
-rw-r--r-- | games/retroarch/files/patch-fix-ffmpeg8 | 97 | ||||
-rw-r--r-- | games/retroarch/files/patch-qb_config.libs.sh | 13 |
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 + |