Releases: mltframework/mlt
v7.38.0
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_propertiesfor 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_scalefilter with preview scaling (scale_vaapi, scale_vulkan, scale_d3d11, scale_vt (macOS)). - Added an environment variable
MLT_AVFORMAT_HWACCEL_PPSto 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
lutparameter toavformatproducer. - Added
attached_picproperty toavformatconsumer. - Added
movit.overlay_blendvideo filter. - Added
compositingproperty tomovit.overlaytransition. - Added constant-power crossfade to
mixaudio transition. - Added rounded corner support for
rectinkdenlivetitle. - Added typewriter properties to
subtitlefilter. - Added underline and strikethrough to the
textandqtextfilters. - Changed
qtextstyleproperty 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
QImagescaling when downscaling inqtblend. - Deprecated
obscureandwatermarkfilters. - Install the jackrack module's blacklist files.
- Fixed subtitle stream type metadata.
- Fixed mutex initialization in
avformatno-validate mode. - Fixed crash when using
linearblenddeinterlacer. - 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
movitlinear color not matching CPU filters. - Fixed
multiconsumer making extra linear color conversions. - Fixed regression writing raw FLAC.
- Fixed
qtblendfilter returning unexpectedly large frames. - Fixed
qtextoutline encroaching on fill color. - Fixed wrong last+ frame when
eof=loopin Glaxnimate. - Fixed
brightnessfilter 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
- @oedmilsonfernandes made their first contribution in #1196
- @chocolateimage made their first contribution in #1211
- @balooii made their first contribution in #1110
- @guchangx made their first contribution in #1223
Full Changelog: v7.36.1...v7.38.0
v7.36.1
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
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_consumerpropertymlt_color_trcto drive a newcolor_transformnormalizer 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)inmlt_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()andMlt::Profile::is_valid(). - Fixed crash on invalid profile (CVE-2025-65834) in:
mlt_consumer_start()mlt_factory_producer()xmlproducer
Modules
- Drop support for Qt 5.
- Fixed bad color in
lumatransition's dissolve (regression in v7.34.0). - Fixed HLG HDR broken in
decklinkconsumer (regression in v7.34.0). - Fixed warnings when flushing audio in the
avformatconsumer. - Added support for
hwaccel=vulkanto theavformatproducer. - Added a
color_transformnormalizer 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.zscalesws_colortransformavfilter.scale
- Added filter
sws_colortransformthat is more efficient thanavfilter.swscalebut requires FFmpeg 8. - Changed the default property values of the
nullconsumer:real_time: -1terminate_on_pause: 1
- Changed the
lumaandmovit.lumatransitions to progress linearly with linearcolor_trc. - Fixed the alpha channel dropped by the
xml-clipproducer. - Added
mlt_image_rgba64format to:avcolor_spacefilteravdeinterlacefilteraffinefilter and transitionaudiolevelgraphfilteraudiospectrumfilteraudiowaveformfilterautofadefilteravformatproducer and consumersbox_blurfilterbrightnessfilterpillar_echofiltercolorproducerdropshadowfilterdynamictextfilter (when used withqtext)frei0r.alpha0psfilterfrei0r.alphagradfilterfrei0r.alphaspotfilterfrei0r.bluescreen0rfilterfrei0r.select0rfilterfrei0r.transparencyfiltergpsgraphicfiltergpstextfiltergradientmapfilterhslprimariesfilterhslrangefilterkdenlivetitleproducerlift_gamma_gainfilterlightshowfiltermask_apply(when used withqtblend)movit.convertfilteroutlinefilterqtblendfilter and transitionqtcropfilterqtextproducershapefilterspot_removerfilterstrobefiltersubtitlefilter (when used withqtext)swscalefiltertextfilter (when used withqtext)timeremaplinktimerfilter (when used withqtext)vqmtransition
- Changed the
mask_applyfilter default transition toqtblend. - Removed the maximum for the
alphaproperty on thebrightnessfilter so that you can increase the opacity of an existing alpha channel. - Fixed background image scaling in the
gpsgraphicfilter. - Fix audio artifacts with pcm_s24le in mkv in
avformatproducer.
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
avformatpresets. - Fixed building the ruby bindings with Ruby 3.0.
- More fixes for MSVC.
- Removed
win32/strptime.cand replaced with Qt functions. - Stop showing
meltusage on error exit.
New Contributors
Full Changelog: v7.34.1...v7.36.0
v7.34.1
Fixed compiling with Qt 5.
Full Changelog: v7.34.0...v7.34.1
v7.34.0
What's Changed
Framework
- Added
mlt_image_rgba64format. This change touched core, avformat, and qt modules as well. - Added
mlt_color_trc,mlt_color_primaries, and moremlt_colorspaces along with functions:mlt_image_color_trc_namemlt_image_color_trc_idmlt_image_colorspace_namemlt_image_colorspace_idmlt_image_color_pri_namemlt_image_color_pri_id
- Fixed some minor memory leaks with
cppcheck.
Modules
- Added rgba and rgba64 formats to the
lumatransition. - Added rgba64 format to
affinefilter and transition. - Added rgba64 format to the
qtblendtransition. - Added support for FFmpeg 8 to the
avformatmodule. - Fixed audio
pannerfilter for 5.1 channel layout. - Fixed converting 10-bit full to limited range in
avformatproducer (regression in v7.30.0). - Fixed shadow not working for multi-line template titles in
kdenlivetitleproducer. - Fixed
mask_applyfilter with custom transition. - Added
input_chmask&output_chmaskproperties tomonofilter. - Added
channel_maskproperty to LADSPA/LV2/VST2 filters. - Added
channel_maskto thevolumefilter. - Added an
outlinevideo filter. - Fixed a deadlock on image with a
%in the name inqimageproducer. - Added scrubbing to the
decklinkconsumer. - Fixed
&not decoded to&in thexmlproducer. - Fixed converting BT.709 to BT.2020 in the
avformatmodule. - Fixed building a
ladspamodule without JACK as dependency. - Deprecate a JACK Rack XML file in the
jackrackandladspamodules. - Added filter
qtblend_mode. - Fixed incorrect alpha channel breaking optimization of
qtblend. - Fixed pixel format gbrap (Ut Video with alpha channel) in the
avformatproducer. - Fixed
opencv_trackerfilter on cut playlist clips. - Fixed warning about missing color range for
avfilters that use it (e.g.avfilter.colorspace). - Added typewriter properties to the
qtextfilter. - Fixed color distortion or a crash if using hwaccel with orientation rotation in
avformatproducer.
Other
- Enable Qt 6 and disable Qt 5 modules in CMake by default.
- Disable the SDL1 module in CMake by default.
- Changed
meltnow 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
-progress2option formelt. - Increased the minimum C++ version to C++20.
- Converted many modules to use CMake
find_package(). - Added
libgen.candlibgen.hfor MSVC.
New Contributors
- @sammiler made their first contribution in #1141
Full Changelog: v7.32.0...v7.34.0
v7.32.0
What's Changed
Framework
- Added
mlt_service_set_consumer()andMlt::Service::set_consumer(). - Optimized
mlt_multitrackto not request a frame from a producer that both hidden and muted.
Modules
- Fixed pixel format for VP8/VP9 streams in
avformatproducer. - Fixed
yuva422ppixel format inavformatproducer. - Added
MLT_AVFORMAT_HWACCEL&MLT_AVFORMAT_HWACCEL_DEVICEenvironment variables toavformatproducer. - Updated
decklinkmodule for recent hardware and drivers. - Added
colorspaceandcolor_trc(including HDR) properties to thedecklinkconsumer. - Fixed silencing extra audio channel (e.g. 6 => 8) in
decklinkconsumer. - Fixed 5.1 C/LFE channels swapped over HDMI in
decklinkconsumer. - Fixed text outline had sharp angles in
kdenlivetitleproducer. - Fixed default gamma to be Rec. 709 for 10-bit Y'CbCr from
movitmodule. - Added support for HLG gamma to
movitmodule (requires ddennedy/movit fork). - Fixed
opencv_trackerfilter should require multiple keyframes to be ready. - Fixed OpenCV crash on
rect<= 1 pixel inopencv_trackerfilter. - Fixed aspect ratio in
qtblendfilter and transition. - Fixed
QT_QPA_PLATFORM=offscreennot working in qt and glaxnimate modules. - Improved preview scaling in
qtblendfilter. - Fixed requesting huge images on multiple
qtblendfilters or transitions. - Fixed
sdl2consumer on macOS. - Fixed the
strobefilter not working withmovit. - Fixed color and gamma using
timeremaplink withmovit. - Fixed consumer properties (e.g.
channels) missing onqglslconsumer injected by thexmlproducer.
New Contributors
- @evertvorster made their first contribution in #1066
Full Changelog: v7.30.0...v7.32.0
v7.30.0
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 withxml-clipproducer 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-clipproducer. - Fixed link
inandoutproperties arenot serialized in thexmlconsumer. - Added
hslprimariesandhslrangefilters to theplusmodule. - Added a
gradientmapfilter to theplusmodule. - Fixed
avfilteraudio filters with FFmpeg 7. - Fixed incorrect frame rate for AVCHD (and possibly others) in
avformat. - Fixed
window_idproperty in consumersdl2by usingSDL_CreateWindowFrom(), especially important for embedding in GTK+ or Qt. - Fixed text not rendering in transition
vqmsince Qt 6. - Added
decimalskeyword togpstextfilter and moveRAWkeyword check. - Fixed
time_offsetproperty handling ingpstextfilter. - Fixed reading and writing SRT files with unicode in the path.
- Fixed
subtitle_feedfilter on producers with an in point > 0. - Fixed opaque alpha channels become translucent in
lumatransition. - Fixed a crash in the
mixtransition withconsumerproducer. - Fixed
freezefilter freezing too much. - Fixed
avfilter.fillborderswith preview scaling. - Fixed non-proportional scaling in
qtblendtransition and filter. - Fixed
avfiltercolor distortion withmlt_image_rgbandmlt_image_rgba. - Extended support for
colorspace=2020consumer property and the BT.2020 colorspace in theavformatproducer and consumer.
This does not imply HDR, which is signaled through acolor_trcproperty. - Added support for
mlt_image_yuv420p10,mlt_image_yuv444p10, andmlt_image_yuv422p16inavfilter,swscale, andrescalefilters.
This facilitates using these pixel formats end-to-end when using only FFmpeg producers, certain avfilters, andavformatconsumer. 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 thecolor_trcandpix_fmtproperties on theavformatconsumer (seeffmpeg -h fullfor these values). Theavformatconsumer automatically converts MLTcolorspace(integer value) to FFmpeg'scolorspaceandcolor_primaries(unless explicit) options.
Other
- Cleaned up the examples in
src/swig. - Changed the
x264-mediumpreset to a higher quality.
New Contributors
- @jonata made their first contribution in #1033
- @Integral-Tech made their first contribution in #1048
- @YakoYakoYokuYoku made their first contribution in #1046
Full Changelog: v7.28.0...v7.30.0
v7.28.0
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
meltto render MLT XML with OpenGL effects frommovit.
Other fixes and changes:
- Deprecated the
compositetransition and thesdlandndimodules. - 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
xmlproducer. - Fixed crash on exit when running
melt -queryormelt -query links. - Added a
transitionproperty to thewatermarkfilter. Now, it defaults to usingaffine. - Changed
affinetransition argument to setrectproperty if supplied.
v7.26.0
What's Changed
Framework
- Fixed a double-free crash in
Mlt::Service::profile().
Modules
- Fixes and improvements to the
avformatproducer:- Changed to prefer
r_frame_rateoveravg_frame_rate. - Fixed
lowresif set too high. - Fixed
audio_index=all. - Fixed
variable_frame_rateincorrectly 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.
- Changed to prefer
- Fixed
movittransitions with a non-movit filter on one of its inputs. - Fixed duration in the
glaxnimateproducer off by one frame. - Added
dropshadowfilter to theqtmodule. - Fixed resetting animation in
kdenlivetitleproducer. - Added support for LV2 and VST2 plugins in the
jackrackmodule. - Fixed crash using
av.declickaudio filter. - Added
subtitlefilter and producer andsubtitle_feedfilter to theplusmodule. - Added subtitle encoding to the
avformatconsumer (new properties beginning with "subtitle."). - Fixed
alangin the theavformatconsumer. - Added
#gps_powerkeyword to thegpstextfilter. - Fixed tab handling in the
kdenlivetitleproducer.
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
meltcommand line. - Added
-loglevelcommand line option tomelt.
v7.24.0
What's Changed
Framework
- Fixed a small memory leak in
mlt_repository. - Fixed a small memory leak in
MltPushConsumerC++ class. - Block connecting a null producer to a service.
- Include
locale.hon any GNU libc platform.
Modules
- Added a new
spatialaudiomodule with filters:ambisonic-decoderambisonic-encoder
- Fixed building with FFmpeg 7.
- Fixed text keywords do not work with non-ASCII filenames on Windows:
pixbufproduceropencv_trackerfilterdynamictextfilterqimageproducer
- Added "meta.media.aspect_ratio" property to the
avformatproducer. - Fixed
distortproperty not working inmovit.rectfilter. - Fixed frames dropping or repeating in the
multiconsumer. - Fixed the
dynamic_loudnessfilter maximizing audio gain. - Fixed distortion in the
monofilter. - Also check for
WAYLAND_DISPLAYto detect a graphical session in theqt
andglaxnimatemodules. - Fixed the
wavefilter distorts ifwave= 1 with preview scaling. - Added the read-only
meta.media.%u.codec.layoutproperty toavformatproducer. - Set the
channel_layoutproperty on the frame for thenoiseandtone
audio producers. - Fixed
outlinemaximum for thetextanddynamictextfilters.
Other
- Fixed crash when using
-chainfrommelt. - Fixed a small memory leak on Windows
fopen().
New Contributors
- @mtasaka made their first contribution in #963
- @emmetoneillpdx made their first contribution in #965
- @hmartinez82 made their first contribution in #974
- @pinotree made their first contribution in #925
Full Changelog: v7.22.0...v7.24.0