Skip to content

Releases: mltframework/mlt

v7.24.0

27 Apr 17:11
Compare
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

v7.22.0

29 Nov 05:47
Compare
Choose a tag to compare

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 old mlt_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 in Mlt::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 in dynamictext filter.
  • Added opacity property to filters that use qtext:
    • dynamictext
    • gpstext
    • qtext
    • timer
  • Added fade_video, fade_audio, and fade_color properties to autofade 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

02 Oct 05:18
Compare
Choose a tag to compare

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 or mlt_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 the core module.
  • Added keywords to gpstext filter:
    • #gps_cadence#
    • #gps_grade_degrees#
    • #gps_grade_percentage#
    • #gps_temperature#
  • Added some color_styles to the gpsgraphic 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 of gpsgraphic filter:
    • mmin or m/min
    • ftmin or ft/min
  • Added keywords to dynamictext filter:
    • #basename#
    • #filename#
  • Fixed installing filter_audioseam.yml.
  • Added an avlink link to the avformat module for FFmpeg filters that can benefit from future frames such as adeclick.
  • Added the preserve_alpha property to the box_blur filter.
  • Fixed loading service metadata for the qt6 and glaxnimate-qt6 modules.
  • Fixed a crash when changing the rotate property in avformat producer with interlace video.
  • Add astream and vstream properties to avformat producer. Unlike audio_index and video_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's mlt_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 Linux nvidia driver.

Other

  • Fix compiling on Android (not supported by the core developers).
  • Changed the avformat consumer FLAC preset to use the flac format.
  • Fixed the melt Shift+H and Shift+L keyboard shortcuts when the SDL2 window has focus.

v7.18.0

28 Jul 18:22
Compare
Choose a tag to compare

Framework

  • Added mlt_audio_free_data().
  • Added meta.playlist.clip_position and meta.playlist.clip_length properties to mlt_playlist.
  • Fixed mlt_frame_get_audio fails on mlt_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 in xml 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 in timeremap link.
  • Fixed a color level problem with sRGB inputs in the movit module.
  • Fixed avformat producer's deallocation function for AVCodecContext.
  • Fixed field order of qtblend and frei0r.cairoblend transitions.
  • Changed the avformat producer seek_threshold default to 64.
  • Updated ebur128 filter to version 1.2.6.

v7.16.0

07 May 18:39
Compare
Choose a tag to compare

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 property prefill is greater than 1.
  • Fixed a couple of data races in mlt_events and mlt_consumer.
  • Fixed a crash in mlt_frame_clone() with movit and the mask_start filter.

Modules

  • Fixed regressions in version 7.14.0:
    • memory and thread count usage in swresample and resample links
    • automatic profile support in melt
    • crash in count producer
  • Upgraded the glaxnimate git submodule to version 0.5.3.
  • Added avformat/avdeinterlace (default) and xine/deinterlace links.
  • Fixed deinterlacing in the multi and qglsl 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 or force_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 when mlt_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 the opencv.tracker filter.
  • Added the property fix_background_alpha to the luma transition.

Other

  • Added -query links to melt 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

06 Mar 19:12
Compare
Choose a tag to compare

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 to mlt_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() for mlt_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 breaking crop 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 in avformat producer.
  • Added separate demuxing thread in avformat producer.
  • Added filtergraph property to the avformat producer.
  • Fixed filter movit.convert's CPU image converter in mlt_tractor and mlt_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 a consumer producer.
  • Fixed using opencv.tracker filter with mlt_chain.
  • Added interlace-aware chroma conversion from mlt_image_yuv422 to yuv420p in the avformat consumer.
  • Added the speed_map property to the timeremap link.
  • Fixed the loader producer not injecting the consumer producer when a xml 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 on loader but prevents adding movit-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

19 Nov 20:01
Compare
Choose a tag to compare

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 to dynamic_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 when threads property not set.

Other

  • Fixed leaking the xml producer in melt when the XML contains a consumer element but no profile information.
  • Fixed symbol not found error in rtaudio consumer.

v7.10.0

01 Nov 11:04
Compare
Choose a tag to compare

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()
  • 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 and BUILD_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 not glaxnimate (still a work-in-progress).
  • Added support for WebP animation to qimage producer.
  • Added gps_graphic filter to the qt 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 the qtblend 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 when resource property changes.
  • Added the alpha_operation property to the shape filter.
  • Updated the glaxnimate git submodule to version 0.5.1.
  • Fixed lines filter in oldfilm regression in v7.6.0.
  • Added dbpeak property to the audiolevel filter in dB.
  • Fixed memory leak using some frei0r plugins in conjunction with an affine that animates the rect 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

22 Jun 19:58
Compare
Choose a tag to compare

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 the multi consumer.
  • Fixed reloading updated results in the loudness filter.
  • Fixed image_mode=blend in the timeremap 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

29 Mar 18:45
Compare
Choose a tag to compare

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() and previous_key() with error checking.
  • Fixed the moduledir and mltdatadir variables in the pkg-config file.
  • Removed calling setlocale() in mlt_factory_init() (moved to melt option -setlocale).
  • Added mlt_properties_copy() and Mlt::Properties::copy().
  • Changed some primarily internal property names to consolidate on "consumer." as a prefix convention for all consumer properties copied to mlt_frames.
  • Added consumer property deinterlacer to replace deprecated deinterlace_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 or frame_rate_den in mlt_consumer.
  • Added performance optimization for a single slice in mlt_slices.

Modules

  • Added audiolevelgraph video filter to the qt module.
  • Added property segment_gap to the audiospectrum video filter.
  • Added segments property to the audiolevelgraph and audiospectrum 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 the rotate property is set after first frame is fetched.
  • Added the invert_mask property to the shape 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 and chroma_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 producer
    • avcolor_space
    • brightness
    • resize
    • luma transition
    • movit.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 remember docker run --init).