Here is a diff to update mlt7 to the latest upstream version. Keep
in mind you need multimedia/movit (see ports@) as a new dependency.
All consumers are happy with 7.34.1.
diff --git a/multimedia/mlt7/Makefile b/multimedia/mlt7/Makefile
index 9277b9e04f4..c10f828e363 100644
--- a/multimedia/mlt7/Makefile
+++ b/multimedia/mlt7/Makefile
@@ -1,7 +1,6 @@
COMMENT-main = multimedia transformations framework
COMMENT-gpl2 = GPLv2-licensed modules for mlt
-V = 7.32.0
-REVISION = 0
+V = 7.34.1
DISTNAME = mlt-${V}
PKGNAME-main = mlt7-${V}
PKGNAME-gpl2 = mlt7-gpl2-${V}
@@ -15,22 +14,22 @@ SITES =
https://github.com/mltframework/mlt/releases/download/v${V}/
DEBUG_PACKAGES = ${BUILD_PACKAGES}
# XXX versions should be kept in sync together
-SHARED_LIBS = mlt-7 5.0
-SHARED_LIBS += mlt++-7 5.0
+SHARED_LIBS = mlt-7 6.0
+SHARED_LIBS += mlt++-7 6.0
# GPLv2+, LGPLv2.1+
# Actually, qimage module could be under GPLv3+ if one more object
# file gets included, see --enable-gpl3 configure option.
PERMIT_PACKAGE = Yes
-WANTLIB-main += ${COMPILER_LIBCXX} SDL SDL2 X11 avcodec avdevice avfilter
-WANTLIB-main += avformat avutil c ebur128 exif fftw3 fontconfig freetype
-WANTLIB-main += gdk_pixbuf-2.0 glib-2.0 gobject-2.0 harfbuzz intl jack
-WANTLIB-main += m pango-1.0 pangoft2-1.0 sox_ng swresample swscale vorbis
-WANTLIB-main += vorbisfile xml2
+WANTLIB-main += ${COMPILER_LIBCXX} GL SDL2 X11 avcodec avdevice avfilter
+WANTLIB-main += avformat avutil c ebur128 epoxy exif fftw3 fontconfig
+WANTLIB-main += freetype gdk_pixbuf-2.0 glib-2.0 gobject-2.0 harfbuzz
+WANTLIB-main += intl m movit pango-1.0 pangoft2-1.0 sox_ng swresample
+WANTLIB-main += swscale vorbis vorbisfile xml2
-WANTLIB-gpl2 += ${COMPILER_LIBCXX} GL Qt5Core Qt5Gui Qt5Svg Qt5Widgets
-WANTLIB-gpl2 += Qt5Xml Qt6Core Qt6Core5Compat Qt6Gui Qt6Svg Qt6SvgWidgets
+WANTLIB-gpl2 += ${COMPILER_LIBCXX} GL Qt5Core Qt5Gui Qt5Widgets Qt5Xml
+WANTLIB-gpl2 += Qt6Core Qt6Core5Compat Qt6Gui Qt6Svg Qt6SvgWidgets
WANTLIB-gpl2 += Qt6Widgets Qt6Xml exif fftw3 m mlt++-7 mlt-7 pulse
WANTLIB-gpl2 += pulse-simple samplerate vidstab
@@ -48,13 +47,11 @@ RUN_DEPENDS-main = audio/ladspa \
multimedia/frei0r-plugins \
x11/gtk+4,-guic
-LIB_DEPENDS-main = audio/jack \
- audio/libebur128 \
+LIB_DEPENDS-main = audio/libebur128 \
audio/sox \
devel/pango \
- devel/sdl \
- devel/sdl2 \
graphics/ffmpeg \
+ multimedia/movit \
graphics/gdk-pixbuf2 \
graphics/libexif \
math/fftw3
@@ -71,8 +68,10 @@ LIB_DEPENDS-gpl2 = ${BUILD_PKGPATH},-main \
x11/qt6/qt5compat \
x11/qt6/qtsvg
-CONFIGURE_ARGS = -DMOD_RUBBERBAND=OFF
+CONFIGURE_ARGS = -DMOD_RUBBERBAND=OFF \
+ -DMOD_JACKRACK=OFF
+CONFIGURE_ARGS += -DMOD_QT=ON
CONFIGURE_ARGS += -DMOD_QT6=ON
# melt-7 is enough
diff --git a/multimedia/mlt7/distinfo b/multimedia/mlt7/distinfo
index 8514a031ded..0b82cf40d58 100644
--- a/multimedia/mlt7/distinfo
+++ b/multimedia/mlt7/distinfo
@@ -1,2 +1,2 @@
-SHA256 (mlt-7.32.0.tar.gz) = HKWq3+J5lch5uSU7OkjR3MOxJH6gtWILCH1Y9VIb4Cg=
-SIZE (mlt-7.32.0.tar.gz) = 1790860
+SHA256 (mlt-7.34.1.tar.gz) = QQS4fbPhQ4n4FmaTjBMfcjVkdz/smqGLa/8Ah2HMg4s=
+SIZE (mlt-7.34.1.tar.gz) = 1817867
diff --git a/multimedia/mlt7/patches/patch-src_modules_avformat_common_c
b/multimedia/mlt7/patches/patch-src_modules_avformat_common_c
deleted file mode 100644
index 4ac6d319452..00000000000
--- a/multimedia/mlt7/patches/patch-src_modules_avformat_common_c
+++ /dev/null
@@ -1,27 +0,0 @@
-Backport
https://github.com/mltframework/mlt/commit/ae83ceee72a0a39c063b02310f6ce928839712a2
-
-Index: src/modules/avformat/common.c
---- src/modules/avformat/common.c.orig
-+++ src/modules/avformat/common.c
-@@ -367,10 +367,20 @@ void mlt_image_to_avframe(mlt_image image, mlt_frame m
- avframe->height = image->height;
- avframe->format = mlt_to_av_image_format(image->format);
- avframe->sample_aspect_ratio =
av_d2q(mlt_frame_get_aspect_ratio(mltframe), 1024);
-- ;
- avframe->pts = mlt_frame_get_position(mltframe);
-+#if LIBAVUTIL_VERSION_INT >= ((58 << 16) + (7 << 8) + 100)
-+ if (!mlt_properties_get_int(frame_properties, "progressive"))
-+ avframe->flags |= AV_FRAME_FLAG_INTERLACED;
-+ else
-+ avframe->flags &= ~AV_FRAME_FLAG_INTERLACED;
-+ if (mlt_properties_get_int(frame_properties, "top_field_first"))
-+ avframe->flags |= AV_FRAME_FLAG_TOP_FIELD_FIRST;
-+ else
-+ avframe->flags &= ~AV_FRAME_FLAG_TOP_FIELD_FIRST;
-+#else
- avframe->interlaced_frame = !mlt_properties_get_int(frame_properties,
"progressive");
- avframe->top_field_first = mlt_properties_get_int(frame_properties,
"top_field_first");
-+#endif
- avframe->color_primaries = mlt_properties_get_int(frame_properties,
"color_primaries");
- avframe->color_trc = mlt_properties_get_int(frame_properties,
"color_trc");
- avframe->color_range = mlt_properties_get_int(frame_properties,
"full_range")
diff --git
a/multimedia/mlt7/patches/patch-src_modules_avformat_consumer_avformat_c
b/multimedia/mlt7/patches/patch-src_modules_avformat_consumer_avformat_c
deleted file mode 100644
index ce4b554173e..00000000000
--- a/multimedia/mlt7/patches/patch-src_modules_avformat_consumer_avformat_c
+++ /dev/null
@@ -1,40 +0,0 @@
-Backport
https://github.com/mltframework/mlt/commit/ae83ceee72a0a39c063b02310f6ce928839712a2
-
-Index: src/modules/avformat/consumer_avformat.c
---- src/modules/avformat/consumer_avformat.c.orig
-+++ src/modules/avformat/consumer_avformat.c
-@@ -1923,18 +1923,27 @@ static int encode_video(encode_ctx_t *enc_ctx,
- avframe->pts = enc_ctx->frame_count;
-
- // Set frame interlace hints
-+#if LIBAVUTIL_VERSION_INT >= ((58 << 16) + (7 << 8) + 100)
-+ if (!mlt_properties_get_int(frame_properties, "progressive"))
-+ avframe->flags |= AV_FRAME_FLAG_INTERLACED;
-+ else
-+ avframe->flags &= ~AV_FRAME_FLAG_INTERLACED;
-+ const int tff = mlt_properties_get_int(frame_properties,
"top_field_first");
-+ if (tff)
-+ avframe->flags |= AV_FRAME_FLAG_TOP_FIELD_FIRST;
-+ else
-+ avframe->flags &= ~AV_FRAME_FLAG_TOP_FIELD_FIRST;
-+#else
- avframe->interlaced_frame = !mlt_properties_get_int(frame_properties,
"progressive");
-- avframe->top_field_first = mlt_properties_get_int(frame_properties,
"top_field_first");
-+ const int tff = avframe->top_field_first =
mlt_properties_get_int(frame_properties,
-+
"top_field_first");
-+#endif
- if (mlt_properties_get_int(frame_properties, "progressive"))
- c->field_order = AV_FIELD_PROGRESSIVE;
- else if (c->codec_id == AV_CODEC_ID_MJPEG)
-- c->field_order = (mlt_properties_get_int(frame_properties,
"top_field_first"))
-- ? AV_FIELD_TT
-- : AV_FIELD_BB;
-+ c->field_order = tff ? AV_FIELD_TT : AV_FIELD_BB;
- else
-- c->field_order = (mlt_properties_get_int(frame_properties,
"top_field_first"))
-- ? AV_FIELD_TB
-- : AV_FIELD_BT;
-+ c->field_order = tff ? AV_FIELD_TB : AV_FIELD_BT;
-
- // Encode the image
- ret = avcodec_send_frame(c, avframe);
diff --git
a/multimedia/mlt7/patches/patch-src_modules_avformat_filter_avfilter_c
b/multimedia/mlt7/patches/patch-src_modules_avformat_filter_avfilter_c
deleted file mode 100644
index 664ba21a794..00000000000
--- a/multimedia/mlt7/patches/patch-src_modules_avformat_filter_avfilter_c
+++ /dev/null
@@ -1,27 +0,0 @@
-Backport
https://github.com/mltframework/mlt/commit/ae83ceee72a0a39c063b02310f6ce928839712a2
-
-Index: src/modules/avformat/filter_avfilter.c
---- src/modules/avformat/filter_avfilter.c.orig
-+++ src/modules/avformat/filter_avfilter.c
-@@ -802,10 +802,21 @@ static int filter_get_image(mlt_frame frame,
- pdata->avinframe->sample_aspect_ratio =
(AVRational){profile->sample_aspect_num,
-
profile->sample_aspect_den};
- pdata->avinframe->pts = pos;
-+#if LIBAVUTIL_VERSION_INT >= ((58 << 16) + (7 << 8) + 100)
-+ if (!mlt_properties_get_int(frame_properties, "progressive"))
-+ pdata->avinframe->flags |= AV_FRAME_FLAG_INTERLACED;
-+ else
-+ pdata->avinframe->flags &= ~AV_FRAME_FLAG_INTERLACED;
-+ if (mlt_properties_get_int(frame_properties, "top_field_first"))
-+ pdata->avinframe->flags |= AV_FRAME_FLAG_TOP_FIELD_FIRST;
-+ else
-+ pdata->avinframe->flags &= ~AV_FRAME_FLAG_TOP_FIELD_FIRST;
-+#else
- pdata->avinframe->interlaced_frame =
!mlt_properties_get_int(frame_properties,
-
"progressive");
- pdata->avinframe->top_field_first =
mlt_properties_get_int(frame_properties,
-
"top_field_first");
-+#endif
- pdata->avinframe->color_primaries =
mlt_properties_get_int(frame_properties,
-
"color_primaries");
- pdata->avinframe->color_trc =
mlt_properties_get_int(frame_properties, "color_trc");
diff --git
a/multimedia/mlt7/patches/patch-src_modules_avformat_filter_swscale_c
b/multimedia/mlt7/patches/patch-src_modules_avformat_filter_swscale_c
deleted file mode 100644
index 387cf28ff10..00000000000
--- a/multimedia/mlt7/patches/patch-src_modules_avformat_filter_swscale_c
+++ /dev/null
@@ -1,21 +0,0 @@
-Backport
https://github.com/mltframework/mlt/commit/ae83ceee72a0a39c063b02310f6ce928839712a2
-
-Index: src/modules/avformat/filter_swscale.c
---- src/modules/avformat/filter_swscale.c.orig
-+++ src/modules/avformat/filter_swscale.c
-@@ -170,8 +170,15 @@ static int filter_scale(mlt_frame frame,
- avinframe->height = iheight;
- avinframe->format = avformat;
- avinframe->sample_aspect_ratio =
av_d2q(mlt_frame_get_aspect_ratio(frame), 1024);
-+#if LIBAVUTIL_VERSION_INT >= ((58 << 16) + (7 << 8) + 100)
-+ if (!mlt_properties_get_int(properties, "progressive"))
-+ avinframe->flags |= AV_FRAME_FLAG_INTERLACED;
-+ if (mlt_properties_get_int(properties, "top_field_first"))
-+ avinframe->flags |= AV_FRAME_FLAG_TOP_FIELD_FIRST;
-+#else
- avinframe->interlaced_frame = !mlt_properties_get_int(properties,
"progressive");
- avinframe->top_field_first = mlt_properties_get_int(properties,
"top_field_first");
-+#endif
- av_image_fill_arrays(avinframe->data,
- avinframe->linesize,
- *image,
diff --git a/multimedia/mlt7/patches/patch-src_modules_avformat_link_avfilter_c
b/multimedia/mlt7/patches/patch-src_modules_avformat_link_avfilter_c
deleted file mode 100644
index 8cc17529a7d..00000000000
--- a/multimedia/mlt7/patches/patch-src_modules_avformat_link_avfilter_c
+++ /dev/null
@@ -1,27 +0,0 @@
-Backport
https://github.com/mltframework/mlt/commit/ae83ceee72a0a39c063b02310f6ce928839712a2
-
-Index: src/modules/avformat/link_avfilter.c
---- src/modules/avformat/link_avfilter.c.orig
-+++ src/modules/avformat/link_avfilter.c
-@@ -917,10 +917,21 @@ static int link_get_image(mlt_frame frame,
- pdata->avinframe->sample_aspect_ratio =
(AVRational){profile->sample_aspect_num,
-
profile->sample_aspect_den};
- pdata->avinframe->pts = pos;
-+#if LIBAVUTIL_VERSION_INT >= ((58 << 16) + (7 << 8) + 100)
-+ if (!mlt_properties_get_int(frame_properties, "progressive"))
-+ pdata->avinframe->flags |= AV_FRAME_FLAG_INTERLACED;
-+ else
-+ pdata->avinframe->flags &= ~AV_FRAME_FLAG_INTERLACED;
-+ if (mlt_properties_get_int(frame_properties, "top_field_first"))
-+ pdata->avinframe->flags |= AV_FRAME_FLAG_TOP_FIELD_FIRST;
-+ else
-+ pdata->avinframe->flags &= ~AV_FRAME_FLAG_TOP_FIELD_FIRST;
-+#else
- pdata->avinframe->interlaced_frame =
!mlt_properties_get_int(frame_properties,
-
"progressive");
- pdata->avinframe->top_field_first =
mlt_properties_get_int(frame_properties,
-
"top_field_first");
-+#endif
- pdata->avinframe->color_primaries =
mlt_properties_get_int(frame_properties,
-
"color_primaries");
- pdata->avinframe->color_trc =
mlt_properties_get_int(frame_properties, "color_trc");
diff --git
a/multimedia/mlt7/patches/patch-src_modules_avformat_producer_avformat_c
b/multimedia/mlt7/patches/patch-src_modules_avformat_producer_avformat_c
deleted file mode 100644
index 4ad1d2d1438..00000000000
--- a/multimedia/mlt7/patches/patch-src_modules_avformat_producer_avformat_c
+++ /dev/null
@@ -1,192 +0,0 @@
-Backport
https://github.com/mltframework/mlt/commit/ae83ceee72a0a39c063b02310f6ce928839712a2
-
-Index: src/modules/avformat/producer_avformat.c
---- src/modules/avformat/producer_avformat.c.orig
-+++ src/modules/avformat/producer_avformat.c
-@@ -335,11 +335,20 @@ static int first_video_index(producer_avformat self)
-
- static const char *get_projection(AVStream *st)
- {
-+#if LIBAVCODEC_VERSION_INT >= ((60 << 16) + (29 << 8) + 100)
-+ const AVPacketSideData *psd =
av_packet_side_data_get(st->codecpar->coded_side_data,
-+
st->codecpar->nb_coded_side_data,
-+
AV_PKT_DATA_SPHERICAL);
-+ if (psd) {
-+ const AVSphericalMapping *spherical = (const AVSphericalMapping *)
psd->data;
-+#else
- const AVSphericalMapping *spherical
- = (const AVSphericalMapping *) av_stream_get_side_data(st,
AV_PKT_DATA_SPHERICAL, NULL);
-
-- if (spherical)
-+ if (spherical) {
-+#endif
- return av_spherical_projection_name(spherical->projection);
-+ }
- return NULL;
- }
-
-@@ -349,7 +358,16 @@ static double get_rotation(mlt_properties properties,
- {
- AVDictionaryEntry *rotate_tag = av_dict_get(st->metadata, "rotate", NULL,
0);
- int has_rotate_metadata = rotate_tag && *rotate_tag->value &&
strcmp(rotate_tag->value, "0");
-+#if LIBAVCODEC_VERSION_INT >= ((60 << 16) + (29 << 8) + 100)
-+ int32_t *displaymatrix = NULL;
-+ const AVPacketSideData *psd =
av_packet_side_data_get(st->codecpar->coded_side_data,
-+
st->codecpar->nb_coded_side_data,
-+
AV_PKT_DATA_DISPLAYMATRIX);
-+ if (psd)
-+ displaymatrix = (int32_t *) psd->data;
-+#else
- uint8_t *displaymatrix = av_stream_get_side_data(st,
AV_PKT_DATA_DISPLAYMATRIX, NULL);
-+#endif
- double theta = mlt_properties_get_double(properties, "rotate");
- int has_mlt_rotate = !!mlt_properties_get(properties, "rotate");
-
-@@ -418,14 +436,7 @@ static AVRational guess_frame_rate(producer_avformat s
- frame_rate = av_d2q(av_q2d(stream->avg_frame_rate), 1024);
- fps = av_q2d(frame_rate);
- }
-- // XXX frame rates less than 1 fps are not considered sane
- if (isnan(fps) || isinf(fps) || fps < 1.0) {
-- // Get the frame rate from the codec.
-- frame_rate.num = self->video_codec->time_base.den;
-- frame_rate.den = self->video_codec->time_base.num *
self->video_codec->ticks_per_frame;
-- fps = av_q2d(frame_rate);
-- }
-- if (isnan(fps) || isinf(fps) || fps < 1.0) {
- // Use the profile frame rate if all else fails.
- mlt_profile profile =
mlt_service_profile(MLT_PRODUCER_SERVICE(self->parent));
- frame_rate.num = profile->frame_rate_num;
-@@ -1580,7 +1591,7 @@ static void get_audio_streams_info(producer_avformat s
- #endif
- if (codec_params->sample_rate > self->max_frequency)
- self->max_frequency = codec_params->sample_rate;
-- avcodec_close(codec_context);
-+ avcodec_free_context(&codec_context);
- }
- pthread_mutex_unlock(&self->open_mutex);
- }
-@@ -1716,7 +1727,11 @@ static int sliced_h_pix_fmt_conv_proc(int id, int idx,
- struct SwsContext *sws;
- struct sliced_pix_fmt_conv_t *ctx = (struct sliced_pix_fmt_conv_t *)
cookie;
-
-+#if LIBAVUTIL_VERSION_INT >= ((58 << 16) + (7 << 8) + 100)
-+ interlaced = ctx->frame->flags & AV_FRAME_FLAG_INTERLACED;
-+#else
- interlaced = ctx->frame->interlaced_frame;
-+#endif
- field = (interlaced) ? (idx & 1) : 0;
- idx = (interlaced) ? (idx / 2) : idx;
- slices = (interlaced) ? (jobs / 2) : jobs;
-@@ -1865,7 +1880,11 @@ static void convert_image_rgb(producer_avformat self,
- uint8_t *out_data[4];
- int out_stride[4];
-
-+#if LIBAVUTIL_VERSION_INT >= ((58 << 16) + (7 << 8) + 100)
-+ if (src_pix_fmt == AV_PIX_FMT_YUV420P && (frame->flags &
AV_FRAME_FLAG_INTERLACED)) {
-+#else
- if (src_pix_fmt == AV_PIX_FMT_YUV420P && frame->interlaced_frame) {
-+#endif
- // Perform field-aware conversion for 4:2:0
- int field_height = height / 2;
- const uint8_t *in_data[4];
-@@ -2041,8 +2060,13 @@ static int convert_image(producer_avformat self,
-
- int sliced = !getenv("MLT_AVFORMAT_SLICED_PIXFMT_DISABLE") &&
src_pix_fmt != ctx.dst_format;
- if (sliced) {
-+#if LIBAVUTIL_VERSION_INT >= ((58 << 16) + (7 << 8) + 100)
-+ ctx.slice_w = (width < 1000) ? (256 >> (frame->flags &
AV_FRAME_FLAG_INTERLACED))
-+ : (512 >> (frame->flags &
AV_FRAME_FLAG_INTERLACED));
-+#else
- ctx.slice_w = (width < 1000) ? (256 >> frame->interlaced_frame)
- : (512 >> frame->interlaced_frame);
-+#endif
- } else {
- ctx.slice_w = width;
- }
-@@ -2052,10 +2076,18 @@ static int convert_image(producer_avformat self,
-
- if (sliced && (last_slice_w % 8) == 0
- && !(ctx.src_format == AV_PIX_FMT_YUV422P && last_slice_w % 16)) {
-+#if LIBAVUTIL_VERSION_INT >= ((58 << 16) + (7 << 8) + 100)
-+ c *= (frame->flags & AV_FRAME_FLAG_INTERLACED) ? 2 : 1;
-+#else
- c *= frame->interlaced_frame ? 2 : 1;
-+#endif
- mlt_slices_run_normal(c, sliced_h_pix_fmt_conv_proc, &ctx);
- } else {
-+#if LIBAVUTIL_VERSION_INT >= ((58 << 16) + (7 << 8) + 100)
-+ c = (frame->flags & AV_FRAME_FLAG_INTERLACED) ? 2 : 1;
-+#else
- c = frame->interlaced_frame ? 2 : 1;
-+#endif
- ctx.slice_w = width;
- for (i = 0; i < c; i++)
- sliced_h_pix_fmt_conv_proc(i, i, c, &ctx);
-@@ -2524,7 +2556,11 @@ static int producer_get_image(mlt_frame frame,
- // there are I frames, and find_first_pts() fails as
a result.
- // Try to set first_pts here after getting pict_type.
- if (self->first_pts == AV_NOPTS_VALUE
-+#if LIBAVUTIL_VERSION_INT >= ((58 << 16) + (7 << 8) + 100)
-+ && ((self->video_frame->flags & AV_FRAME_FLAG_KEY)
-+#else
- && (self->video_frame->key_frame
-+#endif
- || self->video_frame->pict_type ==
AV_PICTURE_TYPE_I))
- self->first_pts = pts;
- if (self->first_pts != AV_NOPTS_VALUE)
-@@ -2558,22 +2594,45 @@ static int producer_get_image(mlt_frame frame,
- if (mlt_properties_get(properties, "force_progressive")) {
- self->progressive = !!mlt_properties_get_int(properties,
"force_progressive");
- } else if (self->video_frame && codec_params) {
-+#if LIBAVUTIL_VERSION_INT >= ((58 << 16) + (7 << 8) + 100)
-+ self->progressive = !(self->video_frame->flags &
AV_FRAME_FLAG_INTERLACED)
-+#else
- self->progressive = !self->video_frame->interlaced_frame
-+#endif
- && (codec_params->field_order ==
AV_FIELD_PROGRESSIVE
- || codec_params->field_order ==
AV_FIELD_UNKNOWN);
- } else {
- self->progressive = 0;
- }
-+#if LIBAVUTIL_VERSION_INT >= ((58 << 16) + (7 << 8) + 100)
-+ if (!self->progressive)
-+ self->video_frame->flags |= AV_FRAME_FLAG_INTERLACED;
-+ else
-+ self->video_frame->flags &= ~AV_FRAME_FLAG_INTERLACED;
-+#else
- self->video_frame->interlaced_frame = !self->progressive;
-+#endif
- // Detect and correct field order
- if (mlt_properties_get(properties, "force_tff")) {
- self->top_field_first =
!!mlt_properties_get_int(properties, "force_tff");
- } else {
-+#if LIBAVUTIL_VERSION_INT >= ((58 << 16) + (7 << 8) + 100)
-+ self->top_field_first = (self->video_frame->flags
-+ & AV_FRAME_FLAG_TOP_FIELD_FIRST)
-+#else
- self->top_field_first = self->video_frame->top_field_first
-+#endif
- || codec_params->field_order ==
AV_FIELD_TT
- || codec_params->field_order ==
AV_FIELD_TB;
- }
-+#if LIBAVUTIL_VERSION_INT >= ((58 << 16) + (7 << 8) + 100)
-+ if (self->top_field_first)
-+ self->video_frame->flags |= AV_FRAME_FLAG_TOP_FIELD_FIRST;
-+ else
-+ self->video_frame->flags &=
~AV_FRAME_FLAG_TOP_FIELD_FIRST;
-+#else
- self->video_frame->top_field_first = self->top_field_first;
-+#endif
- #ifdef AVFILTER
- if ((self->autorotate || mlt_properties_get(properties,
"filtergraph"))
- && !setup_filters(self) && self->vfilter_graph) {
-@@ -3690,7 +3749,7 @@ static int audio_codec_init(producer_avformat self, in
- if (codec && avcodec_open2(codec_context, codec, NULL) >= 0) {
- // Now store the codec with its destructor
- if (self->audio_codec[index])
-- avcodec_close(self->audio_codec[index]);
-+ avcodec_free_context(&self->audio_codec[index]);
- self->audio_codec[index] = codec_context;
- self->audio_index = index;
- } else {
diff --git a/multimedia/mlt7/patches/patch-src_modules_sdl_CMakeLists_txt
b/multimedia/mlt7/patches/patch-src_modules_sdl_CMakeLists_txt
index 3cdc93db87c..ede0707d590 100644
--- a/multimedia/mlt7/patches/patch-src_modules_sdl_CMakeLists_txt
+++ b/multimedia/mlt7/patches/patch-src_modules_sdl_CMakeLists_txt
@@ -1,7 +1,7 @@
Index: src/modules/sdl/CMakeLists.txt
--- src/modules/sdl/CMakeLists.txt.orig
+++ src/modules/sdl/CMakeLists.txt
-@@ -19,6 +19,7 @@ if(APPLE)
+@@ -23,6 +23,7 @@ if(APPLE)
target_link_libraries(mltsdl PRIVATE objc "-framework Foundation")
elseif(UNIX)
target_link_libraries(mltsdl PRIVATE X11)
diff --git a/multimedia/mlt7/pkg/PLIST-gpl2 b/multimedia/mlt7/pkg/PLIST-gpl2
index 4230907c0a8..97ba9ee9ab2 100644
--- a/multimedia/mlt7/pkg/PLIST-gpl2
+++ b/multimedia/mlt7/pkg/PLIST-gpl2
@@ -14,15 +14,18 @@ share/mlt-7/plusgpl/
share/mlt-7/plusgpl/consumer_cbrts.yml
share/mlt-7/plusgpl/filter_burningtv.yml
share/mlt-7/plusgpl/filter_lumaliftgaingamma.yml
+share/mlt-7/plusgpl/filter_outline.yml
share/mlt-7/plusgpl/filter_rotoscoping.yml
share/mlt-7/qt/
share/mlt-7/qt/filter_audiolevelgraph.yml
share/mlt-7/qt/filter_audiospectrum.yml
share/mlt-7/qt/filter_audiowaveform.yml
+share/mlt-7/qt/filter_dropshadow.yml
share/mlt-7/qt/filter_gpsgraphic.yml
share/mlt-7/qt/filter_gpstext.yml
share/mlt-7/qt/filter_lightshow.yml
share/mlt-7/qt/filter_qtblend.yml
+share/mlt-7/qt/filter_qtblend_mode.yml
share/mlt-7/qt/filter_qtcrop.yml
share/mlt-7/qt/filter_qtext.yml
share/mlt-7/qt/filter_typewriter.yml
@@ -35,10 +38,12 @@ share/mlt-7/qt6/
share/mlt-7/qt6/filter_audiolevelgraph.yml
share/mlt-7/qt6/filter_audiospectrum.yml
share/mlt-7/qt6/filter_audiowaveform.yml
+share/mlt-7/qt6/filter_dropshadow.yml
share/mlt-7/qt6/filter_gpsgraphic.yml
share/mlt-7/qt6/filter_gpstext.yml
share/mlt-7/qt6/filter_lightshow.yml
share/mlt-7/qt6/filter_qtblend.yml
+share/mlt-7/qt6/filter_qtblend_mode.yml
share/mlt-7/qt6/filter_qtcrop.yml
share/mlt-7/qt6/filter_qtext.yml
share/mlt-7/qt6/filter_typewriter.yml
diff --git a/multimedia/mlt7/pkg/PLIST-main b/multimedia/mlt7/pkg/PLIST-main
index cfbad3c88c5..8e7c36d6018 100644
--- a/multimedia/mlt7/pkg/PLIST-main
+++ b/multimedia/mlt7/pkg/PLIST-main
@@ -10,6 +10,7 @@ include/mlt-7/framework/mlt_chain.h
include/mlt-7/framework/mlt_consumer.h
include/mlt-7/framework/mlt_deque.h
include/mlt-7/framework/mlt_events.h
+include/mlt-7/framework/mlt_export.h
include/mlt-7/framework/mlt_factory.h
include/mlt-7/framework/mlt_field.h
include/mlt-7/framework/mlt_filter.h
@@ -76,11 +77,10 @@ lib/mlt-7/
@so lib/mlt-7/libmltdecklink.so
@so lib/mlt-7/libmltfrei0r.so
@so lib/mlt-7/libmltgdk.so
-@so lib/mlt-7/libmltjackrack.so
@so lib/mlt-7/libmltkdenlive.so
+@so lib/mlt-7/libmltmovit.so
@so lib/mlt-7/libmltoldfilm.so
@so lib/mlt-7/libmltplus.so
-@so lib/mlt-7/libmltsdl.so
@so lib/mlt-7/libmltsdl2.so
@so lib/mlt-7/libmltsox.so
@so lib/mlt-7/libmltvorbis.so
@@ -165,14 +165,32 @@ share/mlt-7/gdk/
share/mlt-7/gdk/filter_rescale.yml
share/mlt-7/gdk/producer_pango.yml
share/mlt-7/gdk/producer_pixbuf.yml
-share/mlt-7/jackrack/
-share/mlt-7/jackrack/consumer_jack.yml
share/mlt-7/kdenlive/
share/mlt-7/kdenlive/filter_boxblur.yml
share/mlt-7/kdenlive/filter_freeze.yml
share/mlt-7/kdenlive/filter_wave.yml
share/mlt-7/kdenlive/producer_framebuffer.yml
share/mlt-7/metaschema.yaml
+share/mlt-7/movit/
+share/mlt-7/movit/filter_movit_blur.yml
+share/mlt-7/movit/filter_movit_convert.yml
+share/mlt-7/movit/filter_movit_crop.yml
+share/mlt-7/movit/filter_movit_deconvolution_sharpen.yml
+share/mlt-7/movit/filter_movit_diffusion.yml
+share/mlt-7/movit/filter_movit_flip.yml
+share/mlt-7/movit/filter_movit_glow.yml
+share/mlt-7/movit/filter_movit_lift_gamma_gain.yml
+share/mlt-7/movit/filter_movit_mirror.yml
+share/mlt-7/movit/filter_movit_opacity.yml
+share/mlt-7/movit/filter_movit_rect.yml
+share/mlt-7/movit/filter_movit_resample.yml
+share/mlt-7/movit/filter_movit_resize.yml
+share/mlt-7/movit/filter_movit_saturation.yml
+share/mlt-7/movit/filter_movit_vignette.yml
+share/mlt-7/movit/filter_movit_white_balance.yml
+share/mlt-7/movit/transition_movit_luma.yml
+share/mlt-7/movit/transition_movit_mix.yml
+share/mlt-7/movit/transition_movit_overlay.yml
share/mlt-7/oldfilm/
share/mlt-7/oldfilm/dust1.svg
share/mlt-7/oldfilm/dust2.svg
@@ -450,15 +468,8 @@ share/mlt-7/profiles/vcd_ntsc
share/mlt-7/profiles/vcd_pal
share/mlt-7/profiles/vertical_hd_30
share/mlt-7/profiles/vertical_hd_60
-share/mlt-7/qt/filter_dropshadow.yml
-share/mlt-7/qt6/filter_dropshadow.yml
share/mlt-7/resample/
share/mlt-7/resample/link_resample.yml
-share/mlt-7/sdl/
-share/mlt-7/sdl/consumer_sdl.yml
-share/mlt-7/sdl/consumer_sdl_audio.yml
-share/mlt-7/sdl/consumer_sdl_preview.yml
-share/mlt-7/sdl/consumer_sdl_still.yml
share/mlt-7/sdl2/
share/mlt-7/sdl2/consumer_sdl2.yml
share/mlt-7/sdl2/consumer_sdl2_audio.yml