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 Joe Locash, 3 weeks ago

Owner: changed from blfs-book to Joe Locash
Status: new → assigned

comment:2 by Joe Locash, 3 weeks ago

Resolution: → fixed
Status: assigned → closed
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.

Note: See TracTickets for help on using tickets.