Monday, August 10, 2026

multimedia/mlt7: compatibility with ffmpeg 9.0

ports@, I'd like to commit a backport of a fix for multimedia/mlt7 which switches it away from deprecated API in ffmpeg which prevents it to build against ffmpeg 9.0 from https://github.com/mltframework/mlt/commit/06c4785f951c087c700de942362d1d1c68ffe500 Build tested against ffmpeg-9.0 and ffmpeg-8.1.2 Tests? Ok? Index: Makefile =================================================================== RCS file: /cvs/ports/multimedia/mlt7/Makefile,v diff -u -p -r1.25 Makefile --- Makefile 30 Jun 2026 14:43:02 -0000 1.25 +++ Makefile 10 Aug 2026 21:42:53 -0000 @@ -1,6 +1,7 @@ COMMENT-main = multimedia transformations framework COMMENT-gpl2 = GPLv2-licensed modules for mlt V = 7.38.0 +REVISION = 0 DISTNAME = mlt-${V} PKGNAME-main = mlt7-${V} PKGNAME-gpl2 = mlt7-gpl2-${V} Index: patches/patch-src_modules_avformat_consumer_avformat_c =================================================================== RCS file: patches/patch-src_modules_avformat_consumer_avformat_c diff -N patches/patch-src_modules_avformat_consumer_avformat_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-src_modules_avformat_consumer_avformat_c 10 Aug 2026 21:42:53 -0000 @@ -0,0 +1,125 @@ +https://github.com/mltframework/mlt/commit/06c4785f951c087c700de942362d1d1c68ffe500 + +Index: src/modules/avformat/consumer_avformat.c +--- src/modules/avformat/consumer_avformat.c.orig ++++ src/modules/avformat/consumer_avformat.c +@@ -629,7 +629,8 @@ static void apply_properties(void *obj, mlt_properties + || (opt_name[0] == 'a' && (flags & AV_OPT_FLAG_AUDIO_PARAM)))) + opt = av_opt_find(obj, ++opt_name, NULL, flags, search_flags); + // Apply option if found +- if (opt && strcmp(opt_name, "channel_layout")) ++ if (opt && strcmp(opt_name, "channel_layout") && strcmp(opt_name, "frame_duration") ++ && strcmp(opt_name, "dc")) + av_opt_set(obj, opt_name, mlt_properties_get_value(properties, i), search_flags); + } + } +@@ -680,7 +681,6 @@ static int pick_sample_fmt(mlt_properties properties, + { + int sample_fmt = AV_SAMPLE_FMT_S16; + const char *format = mlt_properties_get(properties, "mlt_audio_format"); +- const int *p = codec->sample_fmts; + const char *sample_fmt_str = mlt_properties_get(properties, "sample_fmt"); + + if (sample_fmt_str) +@@ -699,13 +699,29 @@ static int pick_sample_fmt(mlt_properties properties, + else if (!strcmp(format, "float")) + sample_fmt = AV_SAMPLE_FMT_FLTP; + } ++#if LIBAVCODEC_VERSION_INT >= ((61 << 16) + (13 << 8) + 100) ++ const enum AVSampleFormat *sample_fmts = NULL; ++ avcodec_get_supported_config(NULL, ++ codec, ++ AV_CODEC_CONFIG_SAMPLE_FORMAT, ++ 0, ++ (const void **) &sample_fmts, ++ NULL); ++ const int *p = (const int *) sample_fmts; ++#else ++ const int *p = codec->sample_fmts; ++

No comments:

Post a Comment