From: yaydn@protonmail.com Subject: Re: UPDATE: multimedia/mlt7 To: Rafael Sadowski Cc: "ports@openbsd.org" Date: Mon, 22 Dec 2025 11:05:01 +0000 På fredag 19. desember 2025 kl. 21:38, skrev Rafael Sadowski : > > > 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. > This built off movit for me on amd64. cd /usr/ports/ && patch -l -p1 -E -C < /tmp/mlt7.diff cd /usr/ports/ && patch -l -p1 -E < /tmp/mlt7.diff cd /usr/ports/multimedia/mlt7/ && make test install Had this under tests: ===> Regression tests for mlt-7.32.0 UpdateCTestConfiguration from :/usr/ports/pobj/mlt-7.32.0/build-amd64/DartConfiguration.tcl UpdateCTestConfiguration from :/usr/ports/pobj/mlt-7.32.0/build-amd64/DartConfiguration.tcl Test project /usr/ports/pobj/mlt-7.32.0/build-amd64 Constructing a list of tests Updating test list for fixtures Added 0 tests to meet fixture requirements Checking test dependency graph... Checking test dependency graph end No tests were found!!! I assume this is good. Built and instalt just fine. Can't speak to the consumers. yaydn > 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