You can download it from GitHub.
The highlights of this version are a new placebo GPU module based on libplacebo,
a 32-bit float default audio sample format, and Adjustment Clips (fx_cut) that
filter only the tracks below them.
mlt_frame.
Use mlt_frame_append_convert_image() to register a converter instead of
setting frame->convert_image directly. Multiple converters are tried in
registration order; the first that succeeds wins. New public API:
mlt_frame_prepend_convert_image()mlt_frame_append_convert_image()mlt_frame_convert_image()mlt_frame_next_convert_image()mlt_frame_has_convert_image()mlt_frame_copy_convert_image()mlt_frame_s::convert_image is now read-only after
init and is permanently set to the dispatcher mlt_frame_convert_image().
A custom function written directly to this field is no longer called.
If you really need that (I have never heard of anyone who does), clear the frame’s
_convert_image_callbacks property
and use mlt_frame_append_convert_image() instead.fx_cut (Adjustment Clip) now applies its filters only to tracks
below it. Higher tracks composite on top of the filtered result.
New image-stack helpers are used by tractor stacking and by fx_cut:
mlt_frame_prepend_image_from_service()mlt_frame_push_image_with_fx_cut()fx_cut (Adjustment Clip).
Cross-producer image sharing (including the reverse fx_cut share) finalizes
an in-progress Movit chain as rgba64 and does not copy producer-keyed
_movit chain state. Same-producer prepends keep the GPU chain. Playlist
fx_cut frames now set _producer so Movit can key the chain.meta. and set. properties are now copied from the producer onto fx_cut frames
so producer annotations reach tractor output. New public API:
mlt_producer_pass_frame_properties()Mlt::Producer::pass_frame_properties()float32 (mlt_audio_f32le).
Added mlt_audio_format_id() and an mlt_audio_format property on the
multi consumer. Conversion between integer and float is lossless and symmetric
(s16 and u8 round-trip exactly).sox filter, which only supports 32-bit integer samples.volume filter’s normalize parameter because it forces
16-bit integer audio. Use dynamic_loudness instead. The volume filter
itself still supports float samples.meta.audio.*).mlt_property_is_anim() so strings that merely contain =
(for example URLs) are not treated as animation.mlt_properties_get_data() no longer returns a data pointer for rect
properties.mlt_luma_map_from_pgm.fx_cut in-point handling in mlt_transition.mlt++ builds by disabling ELF symbol versioning.setlocale.
Parsing and formatting no longer change the process LC_NUMERIC.movit.convert, avcolor_space, imageconvert) are
now attached from data in loader.ini, using the image_convert key.rgba64 is now a valid input as well as an output: FlatInput is
created with GL_UNSIGNED_SHORT and set_pixel_data() uses the 16-bit
overload. Previously, rgba64 was uploaded as 8-bit, which distorted the
image when an OpenGL filter ran on an fx_cut.placebo GPU module (placebo.render, placebo.shader) using
libplacebo for scaling, debanding, dithering, tonemapping, and mpv-style
.hook shaders (D3D11 / Vulkan / OpenGL).decklink consumer when pausing, seeking, and
resuming playback.mix transition (duck_threshold, duck_attenuation,
duck_level, duck_fade_in, duck_fade_out, and an optional prefix
that records the level on the frame as <prefix>duck_level).#frame+1# keyword in dynamictext (1-based frame number).audiolevel filter.avformat.hevc_vaapi encoding.avformat consumer now logs when it finishes.rnnoise so it works at sample rates other than 48 kHz by resampling.frei0r.kaleid0sc0pe and frei0r.squigglevision now report internal threading.frei0r.camerashake (and its blur) with preview scaling.USE_LV2 and USE_VST2 require USE_LADSPA. The LADSPA blacklist.txt
is installed even without JACK, and LV2_PATH is expanded correctly on Windows.affine and qtblend inside mask_apply.qtblend transition so it does not apply pixel-aspect normalization twice.invert property.shape filter alpha subtraction for rgba.qimage and pixbuf.crop when hardware decode and scale are combined with preview scaling.subtitle_feed end-frame calculation.gpsgraphic and gpstext.sdl2 consumer so it no longer freezes on Windows after a few seconds.sdl2_audio so it no longer hangs in consumer_stop() when stopped while paused.s32, float, s32le, f32le, and u8 to the noise producer,
and s16, s32, s32le, f32le, and u8 to tone. Fixed tone
integer conversion to match audioconvert.xml producer when a filter, transition,
link, or producer fails to load.movit.convert leaking a Movit input on every frame when an
effect chain is reused.gpstext (#gps_hr#).gpsgraphic no longer sets time_offset when a GPS file is first loaded.melt prints its progress when it finishes and exits with a non-zero status
when interrupted by a signal.melt on Windows so it no longer ignores window resizing and keyboard transport.melt -jack option not working with PipeWire.Subscribe to News via RSS.