Skip to content

Releases: mltframework/mlt

v7.38.0

22 Apr 23:36

Choose a tag to compare

What's Changed

The highlights of this version are basic, minimal support for OpenFX plugins and hardware scaling for preview scaling with hwaccel decoding.

Framework

  • Added dynamic hash table for mlt_properties for better performance.
  • Fixed memory corruption in mlt_pool.
  • Added warning on file open failure when parsing in mlt_properties.

Modules

  • Added basic support for OpenFX filter plugins.
    OpenFX has many features. This is a summary of what is NOT yet included:
    • GPU rendering
    • exotic parameter types: Integer2D, Integer3D, Double3D, Custom, Bytes, Page, PushButton
    • plugin-driven keyframe animation; but MLT-driven does work
    • tile-, slice-, or frame-based multi-threading (only plugin internal threading)
    • multi-resolution
    • temporal clip access
    • overlays & dialogs
    • timeline queries (e.g. getTime())
    • generator, transition, retimer
    • parametric curves
  • Added hwaccel_scale filter with preview scaling (scale_vaapi, scale_vulkan, scale_d3d11, scale_vt (macOS)).
  • Added an environment variable MLT_AVFORMAT_HWACCEL_PPS to provide a limiter to hwaccel because transfering uncompressed video between memory CPU and GPU memory is heavy.
    PPS = maximum pixels per second. Anything over it skips hwaccel.
  • Added lut parameter to avformat producer.
  • Added attached_pic property to avformat consumer.
  • Added movit.overlay_blend video filter.
  • Added compositing property to movit.overlay transition.
  • Added constant-power crossfade to mix audio transition.
  • Added rounded corner support for rect in kdenlivetitle.
  • Added typewriter properties to subtitle filter.
  • Added underline and strikethrough to the text and qtext filters.
  • Changed qtext style property to support family named styles.
  • Added anchor point support for arbitrary rotations in qtblend.
  • Allow relative paths for images in kdenlivetitle.
  • Updated Glaxnimate module to version 0.6.0.
  • Switched to QImage scaling when downscaling in qtblend.
  • Deprecated obscure and watermark filters.
  • Install the jackrack module's blacklist files.
  • Fixed subtitle stream type metadata.
  • Fixed mutex initialization in avformat no-validate mode.
  • Fixed crash when using linearblend deinterlacer.
  • Fixed black bar with HEVC hwaccel decode and scale on Windows.
  • Fixed crash with hardware scaler and interlaced video.
  • Fixed converting 8-bit full to limited range with hwaccel.
  • Fixed alpha in 12-bit ProRes with alpha.
  • Fixed movit linear color not matching CPU filters.
  • Fixed multi consumer making extra linear color conversions.
  • Fixed regression writing raw FLAC.
  • Fixed qtblend filter returning unexpectedly large frames.
  • Fixed qtext outline encroaching on fill color.
  • Fixed wrong last+ frame when eof=loop in Glaxnimate.
  • Fixed brightness filter on track below a clip with transparency.

Other

  • Fixed crash during exit cleanup in melt.
  • Continued build improvements for MSVC.
  • A lot of metadata fixes and improvements.
  • Many fixes to API documentation.
  • Added C++ and Python to the API docs.
  • Added two 10-bit VP9 encoding presets.

New Contributors

Full Changelog: v7.36.1...v7.38.0

v7.36.1

31 Dec 23:05

Choose a tag to compare

This version fixes a regression creating a xml-clip producer or producer with a null profile. This broke, for example, nesting a MLT XML project file within another project in Shotcut.

Full Changelog: v7.36.0...v7.36.1

v7.36.0

30 Dec 01:10

Choose a tag to compare

What's Changed

This version adds image processing in linear color on the CPU (previously only Movit). Plus, it extends 10-bit video processing on the CPU to many more services.

Framework

  • Added mlt_image_default_colorspace()
  • Added mlt_image_default_trc()
  • Added mlt_image_default_primaries()
  • Added mlt_color_convert_trc()
  • Added the mlt_consumer property mlt_color_trc to drive a new color_transform normalizer filter. This sets the color transfer function to use for image/video effects. It is beneficial and correct to use linear color for any pixel mixing whether for blending or interpolation.
  • Removed atexit(mlt_factory_close) in mlt_factory_init(). Close the factory yourself if you feel the need to (not generally needed when exiting a process).
  • Prevent possible crash in mlt_service_connect_producer().
  • Added mlt_profile_is_valid() and Mlt::Profile::is_valid().
  • Fixed crash on invalid profile (CVE-2025-65834) in:
    • mlt_consumer_start()
    • mlt_factory_producer()
    • xml producer

Modules

  • Drop support for Qt 5.
  • Fixed bad color in luma transition's dissolve (regression in v7.34.0).
  • Fixed HLG HDR broken in decklink consumer (regression in v7.34.0).
  • Fixed warnings when flushing audio in the avformat consumer.
  • Added support for hwaccel=vulkan to the avformat producer.
  • Added a color_transform normalizer filter to the core module to convert all image/video producers to and from linear color. It is abstract in the core module and drives the following filters:
    • avfilter.zscale
    • sws_colortransform
    • avfilter.scale
  • Added filter sws_colortransform that is more efficient than avfilter.swscale but requires FFmpeg 8.
  • Changed the default property values of the null consumer:
    • real_time: -1
    • terminate_on_pause: 1
  • Changed the luma and movit.luma transitions to progress linearly with linear color_trc.
  • Fixed the alpha channel dropped by the xml-clip producer.
  • Added mlt_image_rgba64 format to:
    • avcolor_space filter
    • avdeinterlace filter
    • affine filter and transition
    • audiolevelgraph filter
    • audiospectrum filter
    • audiowaveform filter
    • autofade filter
    • avformat producer and consumers
    • box_blur filter
    • brightness filter
    • pillar_echo filter
    • color producer
    • dropshadow filter
    • dynamictext filter (when used with qtext)
    • frei0r.alpha0ps filter
    • frei0r.alphagrad filter
    • frei0r.alphaspot filter
    • frei0r.bluescreen0r filter
    • frei0r.select0r filter
    • frei0r.transparency filter
    • gpsgraphic filter
    • gpstext filter
    • gradientmap filter
    • hslprimaries filter
    • hslrange filter
    • kdenlivetitle producer
    • lift_gamma_gain filter
    • lightshow filter
    • mask_apply (when used with qtblend)
    • movit.convert filter
    • outline filter
    • qtblend filter and transition
    • qtcrop filter
    • qtext producer
    • shape filter
    • spot_remover filter
    • strobe filter
    • subtitle filter (when used with qtext)
    • swscale filter
    • text filter (when used with qtext)
    • timeremap link
    • timer filter (when used with qtext)
    • vqm transition
  • Changed the mask_apply filter default transition to qtblend.
  • Removed the maximum for the alpha property on the brightness filter so that you can increase the opacity of an existing alpha channel.
  • Fixed background image scaling in the gpsgraphic filter.
  • Fix audio artifacts with pcm_s24le in mkv in avformat producer.

Other

  • Fixed melt on Windows not reading file path/name with extended characters (regression in v7.34.0).
  • Removed bitrate and quality limits in the vp9 and webm avformat presets.
  • Fixed building the ruby bindings with Ruby 3.0.
  • More fixes for MSVC.
  • Removed win32/strptime.c and replaced with Qt functions.
  • Stop showing melt usage on error exit.

New Contributors

Full Changelog: v7.34.1...v7.36.0

v7.34.1

05 Nov 15:45

Choose a tag to compare

Fixed compiling with Qt 5.

Full Changelog: v7.34.0...v7.34.1

v7.34.0

04 Nov 02:02

Choose a tag to compare

What's Changed

Framework

  • Added mlt_image_rgba64 format. This change touched core, avformat, and qt modules as well.
  • Added mlt_color_trc, mlt_color_primaries, and more mlt_colorspaces along with functions:
    • mlt_image_color_trc_name
    • mlt_image_color_trc_id
    • mlt_image_colorspace_name
    • mlt_image_colorspace_id
    • mlt_image_color_pri_name
    • mlt_image_color_pri_id
  • Fixed some minor memory leaks with cppcheck.

Modules

  • Added rgba and rgba64 formats to the luma transition.
  • Added rgba64 format to affine filter and transition.
  • Added rgba64 format to the qtblend transition.
  • Added support for FFmpeg 8 to the avformat module.
  • Fixed audio panner filter for 5.1 channel layout.
  • Fixed converting 10-bit full to limited range in avformat producer (regression in v7.30.0).
  • Fixed shadow not working for multi-line template titles in kdenlivetitle producer.
  • Fixed mask_apply filter with custom transition.
  • Added input_chmask & output_chmask properties to mono filter.
  • Added channel_mask property to LADSPA/LV2/VST2 filters.
  • Added channel_mask to the volume filter.
  • Added an outline video filter.
  • Fixed a deadlock on image with a % in the name in qimage producer.
  • Added scrubbing to the decklink consumer.
  • Fixed & not decoded to & in the xml producer.
  • Fixed converting BT.709 to BT.2020 in the avformat module.
  • Fixed building a ladspa module without JACK as dependency.
  • Deprecate a JACK Rack XML file in the jackrack and ladspa modules.
  • Added filter qtblend_mode.
  • Fixed incorrect alpha channel breaking optimization of qtblend.
  • Fixed pixel format gbrap (Ut Video with alpha channel) in the avformat producer.
  • Fixed opencv_tracker filter on cut playlist clips.
  • Fixed warning about missing color range for avfilters that use it (e.g. avfilter.colorspace).
  • Added typewriter properties to the qtext filter.
  • Fixed color distortion or a crash if using hwaccel with orientation rotation in avformat producer.

Other

  • Enable Qt 6 and disable Qt 5 modules in CMake by default.
  • Disable the SDL1 module in CMake by default.
  • Changed melt now exits with 1 if the producer is invalid.
  • Various changes to work with MSVC compiler.
  • Changed SVT-AV1 encode presets to VBR for Opus audio.
  • Fixed initializing Qt on the main thread in melt.
  • Documented the -progress2 option for melt.
  • Increased the minimum C++ version to C++20.
  • Converted many modules to use CMake find_package().
  • Added libgen.c and libgen.h for MSVC.

New Contributors

  • @sammiler made their first contribution in #1141

Full Changelog: v7.32.0...v7.34.0

v7.32.0

07 May 22:58

Choose a tag to compare

What's Changed

Framework

  • Added mlt_service_set_consumer() and Mlt::Service::set_consumer().
  • Optimized mlt_multitrack to not request a frame from a producer that both hidden and muted.

Modules

  • Fixed pixel format for VP8/VP9 streams in avformat producer.
  • Fixed yuva422p pixel format in avformat producer.
  • Added MLT_AVFORMAT_HWACCEL & MLT_AVFORMAT_HWACCEL_DEVICE environment variables to avformat producer.
  • Updated decklink module for recent hardware and drivers.
  • Added colorspace and color_trc (including HDR) properties to the decklink consumer.
  • Fixed silencing extra audio channel (e.g. 6 => 8) in decklink consumer.
  • Fixed 5.1 C/LFE channels swapped over HDMI in decklink consumer.
  • Fixed text outline had sharp angles in kdenlivetitle producer.
  • Fixed default gamma to be Rec. 709 for 10-bit Y'CbCr from movit module.
  • Added support for HLG gamma to movit module (requires ddennedy/movit fork).
  • Fixed opencv_tracker filter should require multiple keyframes to be ready.
  • Fixed OpenCV crash on rect <= 1 pixel in opencv_tracker filter.
  • Fixed aspect ratio in qtblend filter and transition.
  • Fixed QT_QPA_PLATFORM=offscreen not working in qt and glaxnimate modules.
  • Improved preview scaling in qtblend filter.
  • Fixed requesting huge images on multiple qtblend filters or transitions.
  • Fixed sdl2 consumer on macOS.
  • Fixed the strobe filter not working with movit.
  • Fixed color and gamma using timeremap link with movit.
  • Fixed consumer properties (e.g. channels) missing on qglsl consumer injected by the xml producer.

New Contributors

Full Changelog: v7.30.0...v7.32.0

v7.30.0

19 Jan 20:57

Choose a tag to compare

What's Changed

Framework

  • Fixed Mlt::Producer::set_creation_time() not exported on i686.
  • Fixed Mlt::Properties::set(int64_t) symbol version.
  • Fixed mlt_factory_init() on Linux/BSD may fail to initialize when compiled with -DRELOCATABLE.
  • Added generic non-drop-frame timecode in mlt_property.c.
    Previously, it was only done for 30000/1001 and 60000/1001 frame rates, but 24000/1001 is especially important as well.
  • Added support for MLT XML embedded in chains.
    This, along with xml-clip producer handles mismatching frame rate between parent and child producers and facilites time-affecting links on the child.
  • Added mlt_image_full_range(const char *color_range) where any of the following strings return true (1): full, jpeg, pc.

Modules

  • Added xml-clip producer.
  • Fixed link in and out properties arenot serialized in the xml consumer.
  • Added hslprimaries and hslrange filters to the plus module.
  • Added a gradientmap filter to the plus module.
  • Fixed avfilter audio filters with FFmpeg 7.
  • Fixed incorrect frame rate for AVCHD (and possibly others) in avformat.
  • Fixed window_id property in consumer sdl2 by using SDL_CreateWindowFrom(), especially important for embedding in GTK+ or Qt.
  • Fixed text not rendering in transition vqm since Qt 6.
  • Added decimals keyword to gpstext filter and move RAW keyword check.
  • Fixed time_offset property handling in gpstext filter.
  • Fixed reading and writing SRT files with unicode in the path.
  • Fixed subtitle_feed filter on producers with an in point > 0.
  • Fixed opaque alpha channels become translucent in luma transition.
  • Fixed a crash in the mix transition with consumer producer.
  • Fixed freeze filter freezing too much.
  • Fixed avfilter.fillborders with preview scaling.
  • Fixed non-proportional scaling in qtblend transition and filter.
  • Fixed avfilter color distortion with mlt_image_rgb and mlt_image_rgba.
  • Extended support for colorspace=2020 consumer property and the BT.2020 colorspace in the avformat producer and consumer.
    This does not imply HDR, which is signaled through a color_trc property.
  • Added support for mlt_image_yuv420p10, mlt_image_yuv444p10, and mlt_image_yuv422p16 in avfilter, swscale, and rescale filters.
    This facilitates using these pixel formats end-to-end when using only FFmpeg producers, certain avfilters, and avformat consumer. This means it is possible to do 10-bit end-to-end on the CPU when being careful to select compatible components and options to avoid conversions. One can pass-through HDR; however, you must set the color_trc and pix_fmt properties on the avformat consumer (see ffmpeg -h full for these values). The avformat consumer automatically converts MLT colorspace (integer value) to FFmpeg's colorspace and color_primaries (unless explicit) options.

Other

  • Cleaned up the examples in src/swig.
  • Changed the x264-medium preset to a higher quality.

New Contributors

Full Changelog: v7.28.0...v7.30.0

v7.28.0

12 Sep 23:00

Choose a tag to compare

What's Changed

This fixes a couple of major regressions in the previous version 7.26.0:

  • Fixed seeking and frozen video due by reverting "Improved performance with intra-only video and reducing the frame rate."
  • Fixed using melt to render MLT XML with OpenGL effects from movit.

Other fixes and changes:

  • Deprecated the composite transition and the sdl and ndi modules.
  • Fixed Android camera video has the wrong frame rate (broken in v7.26.0).
  • Fixed audio not playing for audio-only DTS WMA.
  • Fixed using "https:" URLs in the xml producer.
  • Fixed crash on exit when running melt -query or melt -query links.
  • Added a transition property to the watermark filter. Now, it defaults to using affine.
  • Changed affine transition argument to set rect property if supplied.

v7.26.0

25 Aug 21:22

Choose a tag to compare

What's Changed

Framework

  • Fixed a double-free crash in Mlt::Service::profile().

Modules

  • Fixes and improvements to the avformat producer:
    • Changed to prefer r_frame_rate over avg_frame_rate.
    • Fixed lowres if set too high.
    • Fixed audio_index=all.
    • Fixed variable_frame_rate incorrectly set true on 59.94 fps in Matroska.
    • Improved performance with intra-only video and reducing the frame rate.
    • Fixed mono audio handling regression on FFmpeg 7.
    • Fixed audio samples may be dropped unexpectly esp. with uncompressed.
  • Fixed movit transitions with a non-movit filter on one of its inputs.
  • Fixed duration in the glaxnimate producer off by one frame.
  • Added dropshadow filter to the qt module.
  • Fixed resetting animation in kdenlivetitle producer.
  • Added support for LV2 and VST2 plugins in the jackrack module.
  • Fixed crash using av.declick audio filter.
  • Added subtitle filter and producer and subtitle_feed filter to the plus module.
  • Added subtitle encoding to the avformat consumer (new properties beginning with "subtitle.").
  • Fixed alang in the the avformat consumer.
  • Added #gps_power keyword to the gpstext filter.
  • Fixed tab handling in the kdenlivetitle producer.

Other

  • Added 8- and 10-bit encode presets for SVT-AV1.
  • Fixed building on OpenBSD.
  • Fixed building on musl libc.
  • Fixed consumer properties not updating the automatic profile on the melt command line.
  • Added -loglevel command line option to melt.

v7.24.0

27 Apr 17:11

Choose a tag to compare

What's Changed

Framework

  • Fixed a small memory leak in mlt_repository.
  • Fixed a small memory leak in MltPushConsumer C++ class.
  • Block connecting a null producer to a service.
  • Include locale.h on any GNU libc platform.

Modules

  • Added a new spatialaudio module with filters:
    • ambisonic-decoder
    • ambisonic-encoder
  • Fixed building with FFmpeg 7.
  • Fixed text keywords do not work with non-ASCII filenames on Windows:
    • pixbuf producer
    • opencv_tracker filter
    • dynamictext filter
    • qimage producer
  • Added "meta.media.aspect_ratio" property to the avformat producer.
  • Fixed distort property not working in movit.rect filter.
  • Fixed frames dropping or repeating in the multi consumer.
  • Fixed the dynamic_loudness filter maximizing audio gain.
  • Fixed distortion in the mono filter.
  • Also check for WAYLAND_DISPLAY to detect a graphical session in the qt
    and glaxnimate modules.
  • Fixed the wave filter distorts if wave = 1 with preview scaling.
  • Added the read-only meta.media.%u.codec.layout property to avformat producer.
  • Set the channel_layout property on the frame for the noise and tone
    audio producers.
  • Fixed outline maximum for the text and dynamictext filters.

Other

  • Fixed crash when using -chain from melt.
  • Fixed a small memory leak on Windows fopen().

New Contributors

Full Changelog: v7.22.0...v7.24.0