multimedia/dvdstyler: compatibility with ffmpeg 9.0

Kirill A. Korinsky <[email protected]>
Newsgroups gmane.os.openbsd.ports
Message-ID <[email protected]>
ports@,

here next trivial diff to fix compativility multimedia/dvdstyler against
ffmpeg-9.0; it was build tested against both ffmpeg-9.0 and ffmpeg-8.1.2

Ok?


Index: Makefile
===================================================================
RCS file: /home/cvs/ports/multimedia/dvdstyler/Makefile,v
diff -u -p -r1.52 Makefile
--- Makefile	9 Nov 2023 15:56:47 -0000	1.52
+++ Makefile	11 Aug 2026 13:26:29 -0000
@@ -2,7 +2,7 @@ COMMENT=		DVD authoring application
 
 DISTNAME=		DVDStyler-3.2.1
 PKGNAME=		${DISTNAME:L}
-REVISION=		1
+REVISION=		2
 CATEGORIES=		multimedia
 SITES=			${SITE_SOURCEFORGE:=dvdstyler/}
 EXTRACT_SUFX=		.tar.bz2
Index: patches/patch-src_mediaenc_ffmpeg_cpp
===================================================================
RCS file: /home/cvs/ports/multimedia/dvdstyler/patches/patch-src_mediaenc_ffmpeg_cpp,v
diff -u -p -r1.6 patch-src_mediaenc_ffmpeg_cpp
--- patches/patch-src_mediaenc_ffmpeg_cpp	21 Oct 2025 12:55:54 -0000	1.6
+++ patches/patch-src_mediaenc_ffmpeg_cpp	11 Aug 2026 13:26:00 -0000
@@ -1,5 +1,5 @@
 - fixed encoding of silent audio file
-- added support of ffmpeg5
+- added support of ffmpeg9
 - https://sourceforge.net/p/dvdstyler/DVDStyler/ci/4e8e4aae705a9c4c7958e584015c4c1e222e96c8/
 
 Index: src/mediaenc_ffmpeg.cpp
@@ -144,7 +144,32 @@ Index: src/mediaenc_ffmpeg.cpp
  	props->buffer_size = VIDEO_BUF_SIZE;
  	props->max_bitrate = 0;
  	props->min_bitrate = 0;
-@@ -252,25 +269,21 @@ bool wxFfmpegMediaEncoder::addAudioStream(int codecId)
+@@ -236,12 +253,19 @@ bool wxFfmpegMediaEncoder::addVideoStream(int codecId,
+ }
+ 
+ bool hasSampleFmt(AVCodec* codec, AVSampleFormat sample_fmt) {
+-	if (codec != NULL && codec->sample_fmts != NULL) {
+-		int fIdx = 0;
+-		while (codec->sample_fmts[fIdx] >= 0) {
+-			if (codec->sample_fmts[fIdx] == sample_fmt)
++	const enum AVSampleFormat* sample_fmts;
++	int num_sample_fmts, ret;
++
++	if (codec != NULL) {
++		ret = avcodec_get_supported_config(NULL, codec, AV_CODEC_CONFIG_SAMPLE_FORMAT, 0,
++				(const void**) &sample_fmts, &num_sample_fmts);
++		if (ret < 0)
++			return false;
++		if (sample_fmts == NULL)
++			return true;
++		for (int fIdx = 0; fIdx < num_sample_fmts; fIdx++) {
++			if (sample_fmts[fIdx] == sample_fmt)
+ 				return true;
+-			fIdx++;
+ 		}
+ 	}
+ 	return false;
+@@ -252,25 +276,21 @@ bool wxFfmpegMediaEncoder::addAudioStream(int codecId)
  		m_audioStm = NULL;
  		return true;
  	}
@@ -180,7 +205,7 @@ Index: src/mediaenc_ffmpeg.cpp
  	} else {
  		sampleFmt = AV_SAMPLE_FMT_S16;
   		encoder = avcodec_find_encoder((AVCodecID) codecId );
-@@ -285,54 +298,60 @@ bool wxFfmpegMediaEncoder::addAudioStream(int codecId)
+@@ -285,54 +305,60 @@ bool wxFfmpegMediaEncoder::addAudioStream(int codecId)
  
  	AVCodecContext* c = m_audioCodec;
  	c->thread_count = m_threadCount;
@@ -270,7 +295,7 @@ Index: src/mediaenc_ffmpeg.cpp
  }
  
  void wxFfmpegMediaEncoder::CloseVideoEncoder() {
-@@ -345,10 +364,8 @@ void wxFfmpegMediaEncoder::CloseVideoEncoder() {
+@@ -345,10 +371,8 @@ void wxFfmpegMediaEncoder::CloseVideoEncoder() {
  		av_freep(&m_picture);
  	}
  	av_freep(&m_videoOutbuf);
@@ -282,7 +307,7 @@ Index: src/mediaenc_ffmpeg.cpp
  }
  
  bool wxFfmpegMediaEncoder::EncodeImage(wxImage image, int frames, AbstractProgressDialog* progressDialog) {
-@@ -390,20 +407,77 @@ bool wxFfmpegMediaEncoder::EncodeImage(wxImage image, 
+@@ -390,20 +414,77 @@ bool wxFfmpegMediaEncoder::EncodeImage(wxImage image, 
  	return true;
  }
  
@@ -370,7 +395,7 @@ Index: src/mediaenc_ffmpeg.cpp
  	}
  	return true;
  }
-@@ -429,32 +503,30 @@ int encode(AVCodecContext *avctx, AVPacket *pkt, AVFra
+@@ -429,32 +510,30 @@ int encode(AVCodecContext *avctx, AVPacket *pkt, AVFra
  	return ret;
  }
  
@@ -412,7 +437,7 @@ Index: src/mediaenc_ffmpeg.cpp
  	return true;
  }
  
-@@ -463,46 +535,48 @@ bool wxFfmpegMediaEncoder::writeVideoFrame() {
+@@ -463,46 +542,48 @@ bool wxFfmpegMediaEncoder::writeVideoFrame() {
  	
  	// encode the image
  	m_picture->pts = m_nextVideoPts++;


-- 
wbr, Kirill
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.