public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/mlt] f45: Fix build with FFmpeg 9
@ 2026-09-18 17:07 Dominik 'Rathann' Mierzejewski
0 siblings, 0 replies; only message in thread
From: Dominik 'Rathann' Mierzejewski @ 2026-09-18 17:07 UTC (permalink / raw)
To: git-commits
A new commit has been pushed.
Repo : rpms/mlt
Branch : f45
Commit : f21f0e1cfbea70382b5248dc6cdb8aad53b6d2e3
Author : Dominik 'Rathann' Mierzejewski <dominik@greysector.net>
Date : 2026-08-20T13:32:43+02:00
Stats : +164/-1 in 2 file(s)
URL : https://src.fedoraproject.org/rpms/mlt/c/f21f0e1cfbea70382b5248dc6cdb8aad53b6d2e3?branch=f45
Log:
Fix build with FFmpeg 9
---
diff --git a/mlt-ffmpeg9.patch b/mlt-ffmpeg9.patch
new file mode 100644
index 0000000..3f1e477
--- /dev/null
+++ b/mlt-ffmpeg9.patch
@@ -0,0 +1,158 @@
+From 06c4785f951c087c700de942362d1d1c68ffe500 Mon Sep 17 00:00:00 2001
+From: Dan Dennedy <dan@dennedy.org>
+Date: Thu, 6 Aug 2026 17:14:24 -0700
+Subject: [PATCH] Fix #1280 support for FFmpeg 9 (#1281)
+
+---
+ src/modules/avformat/consumer_avformat.c | 61 ++++++++++++++++++++--
+ src/modules/avformat/consumer_avformat.yml | 6 ++-
+ 2 files changed, 63 insertions(+), 4 deletions(-)
+
+diff --git a/src/modules/avformat/consumer_avformat.c b/src/modules/avformat/consumer_avformat.c
+index d5ab5f1cd..cebd89f0e 100644
+--- a/src/modules/avformat/consumer_avformat.c
++++ b/src/modules/avformat/consumer_avformat.c
+@@ -629,7 +629,8 @@ static void apply_properties(void *obj, mlt_properties properties, int flags)
+ || (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") && strcmp(opt_name, "frame_duration"))
++ 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, const AVCodec *codec)
+ {
+ 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, const AVCodec *codec)
+ 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;
++#endif
+ // check if codec supports our mlt_audio_format
+- for (; *p != -1; p++) {
++ for (; p && *p != -1; p++) {
+ if (*p == sample_fmt)
+ return sample_fmt;
+ }
+ // no match - pick first one we support
++#if LIBAVCODEC_VERSION_INT >= ((61 << 16) + (13 << 8) + 100)
++ for (p = (const int *) sample_fmts; p && *p != -1; p++) {
++#else
+ for (p = codec->sample_fmts; *p != -1; p++) {
++#endif
+ switch (*p) {
+ case AV_SAMPLE_FMT_U8:
+ case AV_SAMPLE_FMT_S16:
+@@ -980,9 +996,25 @@ static AVStream *add_video_stream(mlt_consumer consumer,
+ c->framerate = av_inv_q(c->time_base);
+
+ // Default to the codec's first pix_fmt if possible.
++#if LIBAVCODEC_VERSION_INT >= ((61 << 16) + (13 << 8) + 100)
++ {
++ const enum AVPixelFormat *video_pix_fmts = NULL;
++ if (codec)
++ avcodec_get_supported_config(NULL,
++ codec,
++ AV_CODEC_CONFIG_PIX_FORMAT,
++ 0,
++ (const void **) &video_pix_fmts,
++ NULL);
++ c->pix_fmt = pix_fmt ? av_get_pix_fmt(pix_fmt)
++ : codec ? (video_pix_fmts ? video_pix_fmts[0] : AV_PIX_FMT_YUV422P)
++ : AV_PIX_FMT_YUV420P;
++ }
++#else
+ c->pix_fmt = pix_fmt ? av_get_pix_fmt(pix_fmt)
+ : codec ? (codec->pix_fmts ? codec->pix_fmts[0] : AV_PIX_FMT_YUV422P)
+ : AV_PIX_FMT_YUV420P;
++#endif
+
+ if (AV_PIX_FMT_VAAPI == c->pix_fmt) {
+ int result = init_vaapi(properties, c);
+@@ -1082,7 +1114,9 @@ static AVStream *add_video_stream(mlt_consumer consumer,
+ c->rc_override_count = i;
+ if (!c->rc_initial_buffer_occupancy)
+ c->rc_initial_buffer_occupancy = c->rc_buffer_size * 3 / 4;
++#if LIBAVCODEC_VERSION_INT < ((62 << 16) + (25 << 8) + 100)
+ c->intra_dc_precision = mlt_properties_get_int(properties, "dc") - 8;
++#endif
+
+ // Setup dual-pass
+ i = mlt_properties_get_int(properties, "pass");
+@@ -1199,6 +1233,26 @@ static int open_video(mlt_properties properties,
+ AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM);
+ }
+
++#if LIBAVCODEC_VERSION_INT >= ((61 << 16) + (13 << 8) + 100)
++ if (codec) {
++ const enum AVPixelFormat *pix_fmts = NULL;
++ avcodec_get_supported_config(NULL,
++ codec,
++ AV_CODEC_CONFIG_PIX_FORMAT,
++ 0,
++ (const void **) &pix_fmts,
++ NULL);
++ if (pix_fmts) {
++ const enum AVPixelFormat *p = pix_fmts;
++ for (; *p != -1; p++) {
++ if (*p == video_enc->pix_fmt)
++ break;
++ }
++ if (*p == -1)
++ video_enc->pix_fmt = pix_fmts[0];
++ }
++ }
++#else
+ if (codec && codec->pix_fmts) {
+ const enum AVPixelFormat *p = codec->pix_fmts;
+ for (; *p != -1; p++) {
+@@ -1208,6 +1262,7 @@ static int open_video(mlt_properties properties,
+ if (*p == -1)
+ video_enc->pix_fmt = codec->pix_fmts[0];
+ }
++#endif
+
+ const AVPixFmtDescriptor *srcDesc = av_pix_fmt_desc_get(video_enc->pix_fmt);
+ if (srcDesc->flags & AV_PIX_FMT_FLAG_RGB) {
+diff --git a/src/modules/avformat/consumer_avformat.yml b/src/modules/avformat/consumer_avformat.yml
+index 989466b55..f3644206c 100644
+--- a/src/modules/avformat/consumer_avformat.yml
++++ b/src/modules/avformat/consumer_avformat.yml
+@@ -3,7 +3,7 @@ type: consumer
+ identifier: avformat
+ title: FFmpeg Output
+ version: 7
+-copyright: Copyright (C) 2003-2019 Meltytech, LLC
++copyright: Copyright (C) 2003-2026 Meltytech, LLC
+ license: LGPL
+ language: en
+ url: http://www.ffmpeg.org/
+@@ -452,6 +452,10 @@ parameters:
+ - identifier: dc
+ title: Intra DC precision
+ type: integer
++ description: >
++ Sets intra_dc_precision for MPEG-2 encoding. The value is offset by 8,
++ so the default of 8 means precision 0 (8-bit). Only relevant for
++ MPEG-2; ignored on FFmpeg 8.0 and later.
+ default: 8
+
+ - identifier: muxdelay
diff --git a/mlt.spec b/mlt.spec
index 4a9400b..e9a3414 100644
--- a/mlt.spec
+++ b/mlt.spec
@@ -21,7 +21,7 @@
Name: mlt
Version: 7.40.0
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Toolkit for broadcasters, video editors, media players, transcoders
# mlt/src/win32/fnmatch.{c,h} are BSD-licensed.
@@ -32,6 +32,8 @@ URL: http://www.mltframework.org/
Source0: https://github.com/mltframework/mlt/releases/download/v%{version}/%{name}-%{version}.tar.gz
# Upstream backports (0~500)
+# FFmpeg 9 support
+Patch0: https://github.com/mltframework/mlt/commit/06c4785f951c087c700de942362d1d1c68ffe500.patch#/mlt-ffmpeg9.patch
# Proposed fixes (501~1000)
@@ -280,6 +282,9 @@ test "$(pkg-config --modversion mlt++-7)" = "%{version}"
%changelog
+* Thu Aug 20 2026 Dominik Mierzejewski <dominik@greysector.net> - 7.40.0-2
+- Fix build with FFmpeg 9
+
* Mon Aug 03 2026 Neal Gompa <ngompa@fedoraproject.org> - 7.40.0-1
- Update to version 7.40.0
- Resolves: rhbz#2461053
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-09-18 17:07 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-18 17:07 [rpms/mlt] f45: Fix build with FFmpeg 9 Dominik 'Rathann' Mierzejewski
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox