From: SASANO Takayoshi Subject: Re: emulators/dosbox-x: compatibility with ffmpeg 9.0 To: uaa@mx5.nisiq.net, uaa@openbsd.org, ports@openbsd.org Date: Fri, 14 Aug 2026 22:48:17 +0900 HI, the pull request on GitHub looks not merged yet, but following diff looks ok. thanks. --- On Thu, 13 Aug 2026 23:08:00 +0900, Kirill A. Korinsky wrote: > > On Thu, 13 Aug 2026 15:31:17 +0200, > SASANO Takayoshi wrote: > > > > Hello, > > > > > I'd like to to commit a fix for emulators/dosbox-x which switches it away > > > from deprecated API in ffmpeg which prevents it to build against ffmpeg 9.0 > > > > > > Build tested against ffmpeg-9.0 and ffmpeg-8.1.2 > > > > > > Ok? > > > > I found recently posted dosbox-x pull request at > > https://github.com/joncampbell123/dosbox-x/pull/6467/changes/18062c0ffb33db35fa52ce937ce25223140c0293 > > > > to update dosbox-x ports easy in the future, > > can you rewrite the diff based on this PR? > > > > Sure, here it is: > > Index: Makefile > =================================================================== > RCS file: /home/cvs/ports/emulators/dosbox-x/Makefile,v > diff -u -p -r1.6 Makefile > --- Makefile 30 Jun 2025 21:51:32 -0000 1.6 > +++ Makefile 13 Aug 2026 14:03:17 -0000 > @@ -3,6 +3,7 @@ BROKEN-sparc64= error:union MMX_reg has > COMMENT= x86 with DOS emulator targeted at playing games > > VERSION= 2025.05.03 > +REVISION= 0 > DISTNAME= dosbox-x-${VERSION} > > CATEGORIES= games x11 emulators > Index: patches/patch-src_hardware_hardware_cpp > =================================================================== > RCS file: /home/cvs/ports/emulators/dosbox-x/patches/patch-src_hardware_hardware_cpp,v > diff -u -p -r1.1 patch-src_hardware_hardware_cpp > --- patches/patch-src_hardware_hardware_cpp 21 Oct 2025 12:51:06 -0000 1.1 > +++ patches/patch-src_hardware_hardware_cpp 13 Aug 2026 14:07:33 -0000 > @@ -1,4 +1,5 @@ > https://github.com/joncampbell123/dosbox-x/commit/d1a6e4d79857455ffee77ed9ac48bff516504f8d > +https://github.com/joncampbell123/dosbox-x/pull/6467/changes/18062c0ffb33db35fa52ce937ce25223140c0293 > > Index: src/hardware/hardware.cpp > --- src/hardware/hardware.cpp.orig > @@ -59,7 +60,37 @@ Index: src/hardware/hardware.cpp > > #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(59,24,100) > ffmpeg_aud_ctx->channels = 2; > -@@ -1531,7 +1528,7 @@ skip_shot: > +@@ -1279,10 +1276,27 @@ skip_shot: > + #else > + ffmpeg_aud_ctx->ch_layout = AV_CHANNEL_LAYOUT_STEREO; > + #endif > +- > ++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(61, 13, 100) > ++ // Legacy support for FFmpeg not supporting avcodec_get_supported_config() > + if (ffmpeg_aud_codec->sample_fmts != NULL) > + ffmpeg_aud_ctx->sample_fmt = (ffmpeg_aud_codec->sample_fmts)[0]; > +- else > ++#else > ++ // For FFmpeg supporting avcodec_get_supported_config() > ++ const enum AVSampleFormat* formats = NULL; > ++ > ++ const int ret = avcodec_get_supported_config( > ++ NULL, > ++ ffmpeg_aud_codec, > ++ AV_CODEC_CONFIG_SAMPLE_FORMAT, > ++ 0, > ++ reinterpret_cast(&formats), > ++ NULL > ++ ); > ++ > ++ if(ret >= 0 && formats != NULL) > ++ ffmpeg_aud_ctx->sample_fmt = formats[0]; > ++#endif > ++ else > + ffmpeg_aud_ctx->sample_fmt = AV_SAMPLE_FMT_FLT; > + > + if (avcodec_open2(ffmpeg_aud_ctx,ffmpeg_aud_codec,NULL) < 0) { > +@@ -1531,7 +1545,7 @@ skip_shot: > > // encode it > ffmpeg_vid_frame->pts = (int64_t)capture.video.frames; // or else libx264 complains about non-monotonic timestamps > @@ -68,7 +99,7 @@ Index: src/hardware/hardware.cpp > > r=avcodec_send_frame(ffmpeg_vid_ctx,ffmpeg_vid_frame); > if (r < 0 && r != AVERROR(EAGAIN)) > -@@ -1768,7 +1765,7 @@ skip_mt_wav: > +@@ -1768,7 +1782,7 @@ skip_mt_wav: > } > > #pragma pack(push,1) > @@ -77,7 +108,7 @@ Index: src/hardware/hardware.cpp > uint32_t magic_number; /* magic number */ > uint16_t version_major; /* major version number */ > uint16_t version_minor; /* minor version number */ > -@@ -1776,14 +1773,14 @@ typedef struct pcap_hdr_struct_t { > +@@ -1776,14 +1790,14 @@ typedef struct pcap_hdr_struct_t { > uint32_t sigfigs; /* accuracy of timestamps */ > uint32_t snaplen; /* max length of captured packets, in octets */ > uint32_t network; /* data link type */ > > > -- > wbr, Kirill >