Opened 3 weeks ago
Closed 3 weeks ago
#24066 closed enhancement (fixed)
mlt-7.42.0
| Reported by: | Bruce Dubbs | Owned by: | Joe Locash |
|---|---|---|---|
| Priority: | normal | Milestone: | 13.2 |
| Component: | BOOK | Version: | git |
| Severity: | normal | Keywords: | |
| Cc: |
Description
New minor version.
Change History (2)
comment:1 by , 3 weeks ago
| Owner: | changed from to |
|---|---|
| Status: | new → assigned |
comment:2 by , 3 weeks ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
Note:
See TracTickets
for help on using tickets.

Version 7.42.0 Framework - Added list-based image-conversion callback dispatch on 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()` - API behavior change: `mlt_frame_s::convert_image` is now read-only after init and is permanently set to the dispatcher `mlt_frame_convert_image()`. External code that set this field directly to a custom function will no longer have that function called. If you really need that (never heard of someone 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 used by tractor stacking and this path: - `mlt_frame_prepend_image_from_service()` - `mlt_frame_push_image_with_fx_cut()` - Fixed crash applying a Movit (OpenGL) filter to an `fx_cut` (Adjustment Clip). Cross-producer image sharing (including the reverse fx_cut share) finalizes an in-progress Movit chain to 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. - Copy `meta.` and `set.` properties 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()` - Changed the default audio sample format to `float32` (`mlt_audio_f32le`). Added `mlt_audio_format_id()` and an `mlt_audio_format` property on the `multi` consumer. Integer/float conversion is lossless and symmetric (s16 and u8 round-trips are exact). - Deprecated audio services that only support integer samples. - Propagate per-track audio-level metadata to output frames (`meta.audio.*`). - Improved `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. - Fixed signed integer overflow in `mlt_luma_map_from_pgm`. - Fixed `fx_cut` in-point handling in `mlt_transition`. - Fixed Android `mlt++` builds by disabling ELF symbol versioning. - Fixed a macOS crash in numeric property conversion caused by `setlocale`. Parsing and formatting no longer change the process `LC_NUMERIC`. Modules - Image converters (`movit.convert`, `avcolor_space`, `imageconvert`) are now attached data-driven via `loader.ini` key `image_convert`. - Movit `rgba64` is now a valid *input* as well as 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`. - Added `placebo` GPU module (`placebo.render`, `placebo.shader`) using libplacebo for scaling, debanding, dithering, tonemapping, and mpv-style `.hook` shaders (D3D11 / Vulkan / OpenGL). - Fixed deadlock in the `decklink` consumer when pausing, seeking, and resuming playback. - Added ducking to the `mix` transition (`duck_threshold`, `duck_attenuation`, `duck_level`, `duck_fade_in`, `duck_fade_out`, and an optional prefix for `duck_level` on the frame). - Added `#frame+1#` keyword in `dynamictext` (1-based frame number). - Added more audio formats to the `audiolevel` filter. - FFmpeg 9 support in `avformat`. - Fixed 10-bit `hevc_vaapi` encoding. - Log when the `avformat` consumer finishes. - Fixed `rnnoise` only working with 48 kHz audio. - `frei0r.kaleid0sc0pe` and `frei0r.squigglevision` report internal threading. - Fixed `frei0r.camerashake` (and its blur) with preview scaling. - Skip duplicate OpenFX plugins. - `USE_LV2` and `USE_VST2` require `USE_LADSPA`; install LADSPA `blacklist.txt` without JACK; expand `LV2_PATH` correctly on Windows. - Fixed `affine` and `qtblend` inside `mask_apply`. - `qtblend`: flag to avoid double PAR normalization. - Fixed luma transition alpha scaling, alpha when using a luma file, and documented the `invert` property. - Fixed `shape` filter alpha subtraction for rgba. - Fixed motion-tracker shapes clipping outside the frame. - Fixed colorspace and range of cached images in `qimage` and `pixbuf`. - Fixed `crop` with hardware decode+scale plus preview scale. - Fixed subtitle filter rendering one frame past the end time, and `subtitle_feed` end-frame calculation. - Fixed file-name buffer overflows in `gpsgraphic` and `gpstext`. - Fixed the `sdl2` consumer freezing on Windows after a few seconds. - Fixed `sdl2_audio` hanging in `consumer_stop()` when stopped while paused. - Added `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`. - Fixed a double-free in the `xml` producer when a filter, transition, link, or producer fails to load. - Fixed `movit.convert` leaking a Movit input on every frame when an effect chain is reused. - Fixed the heart-rate keyword in `gpstext` (`#gps_hr#`). - `gpsgraphic` no longer sets `time_offset` when a GPS file is first loaded. Other - `melt` prints progress at the end and exits non-zero when interrupted by a signal. - Fixed `melt` on Windows ignoring window resize and keyboard transport. - Fixed melt `-jack` option not working with PipeWire.Fixed at e480ae3b1b.