commit:     957daaafd251afc2c2cd43a12dc820fd8b4e22ff
Author:     Azamat H. Hackimov <azamat.hackimov <AT> gmail <DOT> com>
AuthorDate: Sat Mar  7 17:36:01 2026 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Mar 11 14:15:39 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=957daaaf

app-emulation/punes: re-apply fix for ffmpeg-8

Closes: https://bugs.gentoo.org/969619
Signed-off-by: Azamat H. Hackimov <azamat.hackimov <AT> gmail.com>
Part-of: https://github.com/gentoo/gentoo/pull/45900
Closes: https://github.com/gentoo/gentoo/pull/45900
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../punes/files/punes-0.111-ffmpeg8.patch          | 134 +++++++++++++++++++--
 1 file changed, 127 insertions(+), 7 deletions(-)

diff --git a/app-emulation/punes/files/punes-0.111-ffmpeg8.patch 
b/app-emulation/punes/files/punes-0.111-ffmpeg8.patch
index a21289c05986..b0abc470cbb1 100644
--- a/app-emulation/punes/files/punes-0.111-ffmpeg8.patch
+++ b/app-emulation/punes/files/punes-0.111-ffmpeg8.patch
@@ -1,13 +1,38 @@
+From 
https://github.com/punesemu/puNES/commit/49f86fcf0fab37d4761b713b0a9e7dc342b8f594
+From 
https://github.com/punesemu/puNES/commit/094686fc806c51b105167080fad093f830a9bc04
 From 
https://github.com/punesemu/puNES/commit/057f49044ec547de1ace03911a317a99e31f25cc
-From: Essem <[email protected]>
-Date: Wed, 31 Dec 2025 03:05:30 -0600
-Subject: [PATCH] Fix build on FFmpeg 8.0 (#444)
-
-`FF_PROFILE_H264_HIGH` has been deprecated since FFmpeg 6.1, with
-`AV_PROFILE_H264_HIGH` acting as its replacement.
 --- a/src/core/recording.c
 +++ b/src/core/recording.c
-@@ -1058,7 +1058,11 @@ static BYTE ffmpeg_video_add_stream_format_h264(void) {
+@@ -1,5 +1,5 @@
+ /*
+- *  Copyright (C) 2010-2024 Fabio Cavallo (aka FHorse)
++ *  Copyright (C) 2010-2026 Fabio Cavallo (aka FHorse)
+  *
+  *  This program is free software; you can redistribute it and/or modify
+  *  it under the terms of the GNU General Public License as published by
+@@ -204,8 +204,10 @@ void recording_init(void) {
+                                       }
+                                       av_dict_free(&opts);
+                                       opts = NULL;
++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(61, 0, 0)
+                                       avcodec_close(test);
+-                                      av_free(test);
++#endif
++                                      avcodec_free_context(&test);
+                                       if (finded) {
+                                               break;
+                                       }
+@@ -487,7 +489,9 @@ static void ffmpeg_fstream_close(_ffmpeg_stream *fs) {
+       fs->encode = FALSE;
+       fs->avc = NULL;
+       if (fs->avcc) {
++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(61, 0, 0)
+               avcodec_close(fs->avcc);
++#endif
+               avcodec_free_context(&fs->avcc);
+       }
+       if (fs->avf) {
+@@ -1054,7 +1058,11 @@ static BYTE ffmpeg_video_add_stream_format_h264(void) {
                if (vbr < 4000) {
                        vbr = 4000;
                }
@@ -19,3 +44,98 @@ Subject: [PATCH] Fix build on FFmpeg 8.0 (#444)
                video->avcc->bit_rate = (int64_t)vbr;
        }
        video->avcc->thread_count = FFMIN(8, gui_hardware_concurrency());
+@@ -1453,8 +1461,16 @@ INLINE static BYTE ffmpeg_audio_write_frame(SWORD 
*data) {
+ }
+ 
+ static enum AVSampleFormat ffmpeg_audio_select_sample_fmt(const AVCodec 
*codec) {
+-      const enum AVSampleFormat *p = codec->sample_fmts;
++      const enum AVSampleFormat *sample_fmts = NULL;
++      const enum AVSampleFormat *p = NULL;
+ 
++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(61, 13, 100)
++      sample_fmts = codec->sample_fmts;
++#else
++      avcodec_get_supported_config(NULL, codec, 
AV_CODEC_CONFIG_SAMPLE_FORMAT, 0, (const void **)&sample_fmts, NULL);
++#endif
++
++      p = sample_fmts;
+       if (!p) {
+               return (AV_SAMPLE_FMT_S16);
+       }
+@@ -1465,13 +1481,20 @@ static enum AVSampleFormat 
ffmpeg_audio_select_sample_fmt(const AVCodec *codec)
+               }
+               p++;
+       }
+-      return (codec->sample_fmts[0]);
++      return (sample_fmts[0]);
+ }
+ static int ffmpeg_audio_select_samplerate(const AVCodec *codec) {
+       int snd_sample_rate = (snd.samplerate ? snd.samplerate : 44100), 
best_samplerate = 0;
++      const int *supported_samplerates = NULL;
+       const int *p = NULL;
+ 
+-      if (!codec->supported_samplerates) {
++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(61, 13, 100)
++      supported_samplerates = codec->supported_samplerates;
++#else
++      avcodec_get_supported_config(NULL, codec, AV_CODEC_CONFIG_SAMPLE_RATE, 
0, (const void **)&supported_samplerates, NULL);
++#endif
++
++      if (supported_samplerates == NULL) {
+               switch (codec->id) {
+                       case AV_CODEC_ID_PCM_S16LE:
+                       case AV_CODEC_ID_PCM_S16BE:
+@@ -1488,13 +1511,13 @@ static int ffmpeg_audio_select_samplerate(const 
AVCodec *codec) {
+               }
+       }
+ 
+-      p = codec->supported_samplerates;
++      p = supported_samplerates;
+       while (*p) {
+               best_samplerate = FFMAX(*p, best_samplerate);
+               p++;
+       }
+ 
+-      p = codec->supported_samplerates;
++      p = supported_samplerates;
+       while (*p) {
+               if ((*p) == snd_sample_rate) {
+                       best_samplerate = snd_sample_rate;
+@@ -1605,10 +1628,17 @@ static AVFrame *ffmpeg_audio_alloc_frame(enum 
AVSampleFormat sample_fmt, const A
+       return (avframe);
+ }
+ static int ffmpeg_audio_select_channel_layout(const AVCodec *codec, 
AVChannelLayout *dst) {
+-      const  AVChannelLayout *p = NULL, *best_ch_layout = NULL;
++      const AVChannelLayout *best_ch_layout = NULL;
++      const AVChannelLayout *ch_layouts = NULL;
++      const AVChannelLayout *p = NULL;
+       int best_nb_channels = 0;
+ 
+-      if (!codec->ch_layouts) {
++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(61, 13, 100)
++      ch_layouts = codec->ch_layouts;
++#else
++      avcodec_get_supported_config(NULL, codec, 
AV_CODEC_CONFIG_CHANNEL_LAYOUT, 0, (const void **)&ch_layouts, NULL);
++#endif
++      if (ch_layouts == NULL) {
+               switch (codec->id) {
+                       case AV_CODEC_ID_PCM_S16LE:
+                       case AV_CODEC_ID_PCM_S16BE:
+@@ -1628,7 +1658,7 @@ static int ffmpeg_audio_select_channel_layout(const 
AVCodec *codec, AVChannelLay
+               }
+       }
+ 
+-      p = codec->ch_layouts;
++      p = ch_layouts;
+       while (p->nb_channels) {
+               int nb_channels = p->nb_channels;
+ 
+@@ -1639,7 +1669,7 @@ static int ffmpeg_audio_select_channel_layout(const 
AVCodec *codec, AVChannelLay
+               p++;
+       }
+ 
+-      p = codec->ch_layouts;
++      p = ch_layouts;
+       while (p->nb_channels) {
+               int nb_channels = p->nb_channels;
+ 

Reply via email to