Releases: mltframework/mlt
Releases Β· mltframework/mlt
v7.24.0
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
produceropencv_tracker
filterdynamictext
filterqimage
producer
- Added "meta.media.aspect_ratio" property to the
avformat
producer. - Fixed
distort
property not working inmovit.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 theqt
andglaxnimate
modules. - Fixed the
wave
filter distorts ifwave
= 1 with preview scaling. - Added the read-only
meta.media.%u.codec.layout
property toavformat
producer. - Set the
channel_layout
property on the frame for thenoise
andtone
audio producers. - Fixed
outline
maximum for thetext
anddynamictext
filters.
Other
- Fixed crash when using
-chain
frommelt
. - 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
v7.22.0
Framework
- Added new functions:
mlt_property_is_color()
mlt_property_is_numeric()
mlt_property_is_rect()
- Many new keyframe types:
mlt_keyframe_smooth_loose
-~=
(same as oldmlt_keyframe_smooth
- Unity Catmull-Rom spline)mlt_keyframe_smooth_natural
-$=
(Centripetal Catmull-Rom spline with natural slope)mlt_keyframe_smooth_tight
--=
(Centripetal Catmull-Rom spline with 0 slope)mlt_keyframe_sinusoidal_in
-a=
mlt_keyframe_sinusoidal_out
-b=
mlt_keyframe_sinusoidal_in_out
-c=
mlt_keyframe_quadratic_in
-d=
mlt_keyframe_quadratic_out
-e=
mlt_keyframe_quadratic_in_out
-f=
mlt_keyframe_cubic_in
-g=
mlt_keyframe_cubic_out
-h=
mlt_keyframe_cubic_in_out
-i=
mlt_keyframe_quartic_in
-j=
mlt_keyframe_quartic_out
-k=
mlt_keyframe_quartic_in_out
-l=
mlt_keyframe_quintic_in
-m=
mlt_keyframe_quintic_out
-n=
mlt_keyframe_quintic_in_out
-o=
mlt_keyframe_exponential_in
-p=
mlt_keyframe_exponential_out
-q=
mlt_keyframe_exponential_in_out
-r=
mlt_keyframe_circular_in
-s=
mlt_keyframe_circular_out
-t=
mlt_keyframe_circular_in_out
-u=
mlt_keyframe_back_in
-v=
mlt_keyframe_back_out
-w=
mlt_keyframe_back_in_out
-x=
mlt_keyframe_elastic_in
-y=
mlt_keyframe_elastic_out
-z=
mlt_keyframe_elastic_in_out
-A=
mlt_keyframe_bounce_in
-B=
mlt_keyframe_bounce_out
-C=
mlt_keyframe_bounce_in_out
-D=
- Fixed missing support for
mlt_service_transition
inMlt::Producer()
C++ constructor.
Modules
- Fixed
rotoscoping
filter crash on image with height = 0. - Fixed crashed due to
qtblend
transition requesting an image of 0 width or height. - Added support for RtAudio 6 in the
rtaudio
consumer. - Fixed
createdate
keyword deletes preceeding text indynamictext
filter. - Added
opacity
property to filters that useqtext
:dynamictext
gpstext
qtext
timer
- Added
fade_video
,fade_audio
, andfade_color
properties toautofade
filter. - Added backwards compatibility for changed filter names in frei0r v2.3.1:
frei0r.measure_pr0be
frei0r.measure_pr0file
frei0r.tehroxx0r
frei0r.alpha0ps_alpha0ps
frei0r.alpha0ps_alphagrad
frei0r.alpha0ps_alphaspot
frei0r.denoise_hqdn3d
- Fixed a memory leak in
avformat
producer with consumer deinterlacer=yadif. - Fixed
qimage
producer color if consumer color_range=pc pix_fmt=yuv444p.
Other
- Fixed
ten_bit/ProRes 422
avformat preset produced ProRes 444. - Fixed
YouTube
avformat preset did not output high profile with some hardware encoders.
v7.20.0
Framework
- Fixed "blank" in a playlist does not have audio normalization filters.
- Fixed serializing
mlt_color
transparent black as "#00000000" when the property was set using an integer ormlt_color
. - Fixed
mlt_chain_set_source()
would always fetch a frame from the producer even if it has "meta.media.frame_rate_num" and "meta.media.frame_rate_den" properties making things slow. - Fixed
Mlt::Chain
leaking memory.
Modules
- Added a
blank
producer to thecore
module. - Added keywords to
gpstext
filter:#gps_cadence#
#gps_grade_degrees#
#gps_grade_percentage#
#gps_temperature#
- Added some
color_style
s to thegpsgraphic
filter:- 10 = color by speed (max 100 km/h)
- 11 = color by grade (max 90 degrees)
- 12 = color by grade (max 20 degrees)
- Added more unit formats to
legend_unit
property ofgpsgraphic
filter:mmin
orm/min
ftmin
orft/min
- Added keywords to
dynamictext
filter:#basename#
#filename#
- Fixed installing
filter_audioseam.yml
. - Added an
avlink
link to theavformat
module for FFmpeg filters that can benefit from future frames such asadeclick
. - Added the
preserve_alpha
property to thebox_blur
filter. - Fixed loading service metadata for the
qt6
andglaxnimate-qt6
modules. - Fixed a crash when changing the
rotate
property inavformat
producer with interlace video. - Add
astream
andvstream
properties to avformat producer. Unlikeaudio_index
andvideo_index
are absolute indices across the entire array of streams regardless their type, these new 0-based properties are relative to the type audio or video. For example, astream=1 is the second audio stream. - Fixed a possible crash in the
avformat
producer'smlt_producer_probe
virtual function. - Updated the
glaxnimate
module to version 0.5.4. - Fixed the
sdl2
consumer crashing with the Linux radeonsi_dri driver and showing only all black with the Linuxnvidia
driver.
Other
- Fix compiling on Android (not supported by the core developers).
- Changed the
avformat
consumerFLAC
preset to use theflac
format. - Fixed the
melt
Shift+H and Shift+L keyboard shortcuts when the SDL2 window has focus.
v7.18.0
Framework
- Added
mlt_audio_free_data()
. - Added
meta.playlist.clip_position
andmeta.playlist.clip_length
properties tomlt_playlist
. - Fixed
mlt_frame_get_audio
fails onmlt_audio_none
.
Modules
- Added two audio filters to core module to be used on a playlist/track:
audioseam
autofade
- Fixed a crash in
vidstab
filter on image format change. - Fixed font weight in
qtext
filter on Qt 6. - Fixed yuv420p not working in
rescale
filter. - Fixed text shadow outline in
kdenlivetitle
producer. - Fixed crash when changing the profile with
count
producer. - Fixed constructor corruption in
frei0r
module. - Fixed
deinterlace
link was added to invalid producer inxml
producer. - Fixed producers not indicating progressive scan video:
kdenlivetitle
pango
qimage
qtext
- Fixed video scan mode detection in
avformat
producers that only indicate
on their container format and not on frames such as Ut Video in Matroska. - Fixed very large images in
qimage
producer on Qt 6. - Fixed seeking on clips that use
speed_map
intimeremap
link. - Fixed a color level problem with sRGB inputs in the
movit
module. - Fixed
avformat
producer's deallocation function forAVCodecContext
. - Fixed field order of
qtblend
andfrei0r.cairoblend
transitions. - Changed the
avformat
producerseek_threshold
default to 64. - Updated
ebur128
filter to version 1.2.6.
v7.16.0
Framework
- Added a
chain_normalizers.ini
to the data directory. - Added New C functions to support deinterlacer links:
mlt_deinterlacer_name()
mlt_deinterlacer_id()
mlt_link_filter_init()
mlt_link_filter_metadata()
mlt_cache_put_frame_audio()
mlt_cache_put_frame_image()
mlt_frame_clone_audio()
mlt_frame_clone_image()
- Added support for loading a filter as a link via
mlt_link_filter_init()
. - Added enum
mlt_deinterlacer
with:mlt_deinterlacer_none
mlt_deinterlacer_onefield
mlt_deinterlacer_linearblend
mlt_deinterlacer_weave
mlt_deinterlacer_bob
mlt_deinterlacer_greedy
mlt_deinterlacer_yadif_nospatial
mlt_deinterlacer_yadif
mlt_deinterlacer_bwdif
mlt_deinterlacer_estdif
mlt_deinterlacer_invalid
- Added new 10-bit YUV members to enum
mlt_image_format
:mlt_image_yuv420p10
mlt_image_yuv444p10
- Fixed a deadlock and improved quality of start of playback when
mlt_consumer
propertyprefill
is greater than 1. - Fixed a couple of data races in
mlt_events
andmlt_consumer
. - Fixed a crash in
mlt_frame_clone()
with movit and themask_start
filter.
Modules
- Fixed regressions in version 7.14.0:
- memory and thread count usage in
swresample
andresample
links - automatic profile support in
melt
- crash in
count
producer
- memory and thread count usage in
- Upgraded the
glaxnimate
git submodule to version 0.5.3. - Added avformat/
avdeinterlace
(default) and xine/deinterlace
links. - Fixed deinterlacing in the
multi
andqglsl
consumers. - Added 10-bit video support to
movit.convert
filter. - Several things in the
avformat
producer:- Fixed artifacts decoding raw FLAC audio.
- Fixed a potential crash on
mlt_producer_probe()
. - Fixed seeking on music with album art.
- Fixed possible infinite loop on end-of-file.
- Fixed a potential deadlock.
- Fixed chroma bleeding on interlaced yuv420p.
- Fixed
color_range
orforce_full_range
sometimes not working. - Fixed
autorotate
property not working with a chain. - Added audio caching.
- Deprecated the
mute_on_pause
property.
- Fixed FFmpeg version 6 compilation error.
- Fixed rendering the text outline in
kdenlivetitle
producer. - Fixed
'movit.rect
property animation. - Fixed corrupt video in
crop
filter whenmlt_image_yuv420p
requested. - Fixed possible null pointer crashes in some audio filters:
audiolevel
volume
loudness
- Fixed a possible roi assert crash in
opencv.tracker
filter. - Added support for "Nano"
algo
to theopencv.tracker
filter. - Added the property
fix_background_alpha
to theluma
transition.
Other
- Added
-query links
tomelt
command line. - Added
avformat
consumer presets for 10-bit video:- AV1
- DNxHR-HQ
- FFV1
- ProRes 422
- ProRes 444
- ProRes HQ
- x264-high10
- x265-main10
- Added a
clang-format
target to CMake and reformatted all code. - Added warnings as errors with some exceptions to CMake with
Debug
build type and gcc. - Fixed numerous warnings throughout the code.
v7.14.0
Framework
- Added functions to get detailed info about a producer more directly (without having to get a frame and get its image in the case of
avformat producer, for example):mlt_producer_probe()
Mlt::Producer::probe()
- Added functions to add normalizer links to chains (based on a
chain_loader.ini
configuration data file:mlt_chain_attach_normalizers()
Mlt::Chain::attach_normalizers()
- Changed
locale_t
tomlt_locale_t
to avoid redefinition on some systems (e.g. clang/llvm on win32). - Fixed the value provided with event "consumer-thread-join" to be
mlt_event_data_thread
as documented. - Fixed
mlt_image_format_planes()
formlt_image_yuv420p
.
Modules
- Added a
swresample
link to the avformat module. - Added a
resample
link to the resample module. - Fixed compatibility of avformat module with FFmpeg version 6.
- Fixed
rotoscoping
filter when request image size different than profile. - Fixed
timeremap
link breakingcrop
filter. - Fixed audio/video sync in
avformat
producer when the video start time is not 0. - Improved seeking on a WMA audio file in
avformat
producer. - Optimization to set
AVDISCARD_ALL
on disinterested streams inavformat
producer. - Added separate demuxing thread in
avformat
producer. - Added
filtergraph
property to theavformat
producer. - Fixed filter
movit.convert
's CPU image converter inmlt_tractor
andmlt_frame_clone()
. - Fixed using
movit
module with mlt_chain. - Fixed 10-bit full range YUV color input with Movit.
- Fixed aspect ratio issues in
qtblend
filter transform. - Fixed the
movit.luma
transition. - Changed the
qglsl
consumer to use an OpenGL core profile version 3.2 context to make it compatible with recent Movit versions. - Upgraded
glaxnimate
git submodule to version 0.5.2. - Fixed
xml
producer incorrectly adds a path prefix to aconsumer
producer. - Fixed using
opencv.tracker
filter withmlt_chain
. - Added interlace-aware chroma conversion from mlt_image_yuv422 to yuv420p in the
avformat
consumer. - Added the
speed_map
property to thetimeremap
link. - Fixed the
loader
producer not injecting theconsumer
producer when axml
producer changes the frame rate. - Fixed 'loader' producer corrupts the profile colorspace and description when it injects a
consumer
producer. - Added a
loader-nogl
producer to the core module based onloader
but prevents addingmovit
-based filters. - Changed
count
producer to take an optional string argument with the name of a loader producer. - Fixed
yadif
deinterlace not working in a mlt_chain. - Fixed the bob, weave, greedy, onefield
deinterlace
filter methods on x86-64 architecture.
Other
- Fixed SWIG python shadow functions for mlt7.
- Added CMake build option
MOD_GLAXNIMATE_QT6
.
v7.12.0
This version is released soon after 7.10.0 to fix a couple of major new bugs in the popular qtblend
and frei0r.cairoblend
transitions. It also includes new color animation APIs with sensible interpolation!
Framework
- Added new color animation APIs:
mlt_property_set_color()
mlt_property_get_color()
mlt_property_anim_set_color()
mlt_property_anim_get_color()
mlt_properties_anim_set_color()
mlt_properties_anim_get_color()
Mlt::Properties::anim_get_color(char const*, int, int)
Mlt::Properties::anim_set(char const*, mlt_color, int, int, mlt_keyframe_type)
Modules
- Updated the following services to support animation of color properties:
frei0r
(any color parameter in any frei0r plugin)chroma
chroma_hold
audiolevelgraph
audiospectrum
audiowaveform
gpsgraphic
gpstext
qtcrop
qtext
- Added
discontinuity_reset
property todynamic_loudness
filter. - Fixed
qtblend
transition not blending with an opaque rgba image. - Added support for the "finer" engine in Rubberband version 3.
- Fixed crash in
frei0r.cairoblend
whenthreads
property not set.
Other
- Fixed leaking the xml producer in
melt
when the XML contains aconsumer
element but no profile information. - Fixed symbol not found error in
rtaudio
consumer.
v7.10.0
The highlight of this version is support for Qt 6.
Framework
- Fixed some unguarded null pointers.
- Added
MLT_REPOSITORY_DENY
environment variable to skip loading a module (colon delimited list of file names without extension, for example "libmltqt"). - Fixed frame corruption with one frame transition.
- Changed so-called test-card frame with audio to show a checkerboard:
- Added
mlt_image_fill_checkerboard()
- Added
mlt_image_fill_white()
- Added
- Preserve the producer
creation_time
property when creating a chain. - Added
mlt_image_rgba_opaque()
. - Fixed getting a property as a timecode or clock value with 24 or 23.98 fps in
mlt_property.c
.
Modules
- Added support for Qt 6:
- Added
MOD_QT6
andBUILD_TESTS_WITH_QT6
CMake options. - Allow installing building and installing both Qt 5 & 6 modules.
- Avoid loading both Qt 5 & 6 modules by preferring Qt 5 (use MLT_REPOSITORY_DENY=libmltqt to block Qt 5 and use Qt 6).
- This is limited to the
qt
module for now and notglaxnimate
(still a work-in-progress).
- Added
- Added support for WebP animation to
qimage
producer. - Added
gps_graphic
filter to theqt
module. - Added the
format
property in each producer's get_frame method to indicate the producer's default/preferred mlt_image_format to facilitate an optimization in theqtblend
transition when the B frame is opaque and has the same aspect ratio. - Added property animation to all audio visualization filters in the
qt
module. - Improved TGA format detection in
qimage
filter. - Fixed
qtblend
transition has incorrect scaling with consumer scaling. - Fixed an case of incorrect alpha scaling in
qtblend
transition. - Fixed
luma
transition not updated whenresource
property changes. - Added the
alpha_operation
property to theshape
filter. - Updated the
glaxnimate
git submodule to version 0.5.1. - Fixed
lines
filter inoldfilm
regression in v7.6.0. - Added
dbpeak
property to theaudiolevel
filter in dB. - Fixed memory leak using some frei0r plugins in conjunction with an
affine
that animates therect
property.
Other
- Fixed building for musl.
- Fixed underlinking iconv in
gdk
module on MinGW. - Fixed SWIG CMake options can overwrite each other.
- Fixed SWIG 4 no longer generates a
mlt.php
.
v7.8.0
This highlight of this version is a new glaxnimate producer to render 2D vector art and animation.
Framework
- Added
mlt_frame_get_alpha_size()
and refactored code to use it. - Fixed a possible null pointer crash in
mlt_service_apply_filters()
.
Modules
- Added a
glaxnimate
producer to the glaxnimate module. - Added new file extensions for
glaxnimate
producer: json, lottie, rawr, tgs. - Removed Qt4 compatibility from the qt module.
- Added Qt6 compatibility to the qt module.
- Added new file extensions for
qimage
producer: avif, heic, heif, jxl. - Fixed
color_range
when using themulti
consumer. - Fixed reloading updated
results
in theloudness
filter. - Fixed
image_mode=blend
in thetimeremap
link. - Fixed crash regression in
swscale
filter with odd size YUV image. - Fixed the
choppy
filter may result in black frames with transitions. - Prevent a crash in
avfilter
producer for a bug in glibc with_FORTIFY_SOURCE=3
.
v7.6.0
This version adds image slice-threading to many filters and full support for full range color. All inputs are normalized to and processed at
the range specified by the consumer property color_range
that defaults to tv/mpeg (limited).
Framework
- Added
Mlt::Animation::next_key()
andprevious_key()
with error checking. - Fixed the
moduledir
andmltdatadir
variables in the pkg-config file. - Removed calling
setlocale()
inmlt_factory_init()
(moved tomelt
option-setlocale
). - Added
mlt_properties_copy()
andMlt::Properties::copy()
. - Changed some primarily internal property names to consolidate on "consumer." as a prefix convention for all consumer properties copied to
mlt_frame
s. - Added consumer property
deinterlacer
to replace deprecateddeinterlace_method
. - Fixed full range color from producer to consumer.
- Added
mlt_slices_size_slice()
helper function. - Fixed choppy playback due to large values in
frame_rate_num
orframe_rate_den
inmlt_consumer
. - Added performance optimization for a single slice in
mlt_slices
.
Modules
- Added
audiolevelgraph
video filter to theqt
module. - Added property
segment_gap
to theaudiospectrum
video filter. - Added
segments
property to theaudiolevelgraph
andaudiospectrum
filters. - Fixed loading image sequence with extended UTF-8 characters in the of a folder for the
qimage
producer. - Fixed a crash in
avformat
producer if therotate
property is set after first frame is fetched. - Added the
invert_mask
property to theshape
video filter. - Changed
avformat
producer to normalize frame rates very close to integer broadcast frames 24/1.001, 30/1.001, and 60/1.001. - Converted the
chroma
andchroma_hold
filters'key
property to a proper type. - Added slice threading to:
avformat
producer (with FFmpeg v5)swsscale
(with FFmpeg v5)lift_gamma_gain
shape
charcoal
vignette
wave
threshold
tcolor
sepia
mirror
invert
grain
lines
spot_remover
- Improved the speed of the
oldfilm
filter. - Added a faster
box_blur
filter to the core module and deprecated the boxblur` filter in the kdenlive module. - Fixed preview scaling for the
avfilter.gblur
filter. - Fixed incorrect text overlap in
kdenlivetitle
producer. - Improved audio synchronization in
avformat
when playing in reverse. - Added much more service metadata (documentation).
- Fixed full range 10-bit video input in
avformat
producer. - Fixed full range color handling in:
avformat
produceravcolor_space
brightness
resize
luma
transitionmovit.convert
charcoal
invert
shape
- Fixed identifying unsupported colorspaces in
avformat
producer. - Fixed preserving the alpha channel in the
avfilter.fspp
filter.
Other
- Some CMake fixes.
- Added
dumb-init
to the docker (no need to rememberdocker run --init
).