-
Notifications
You must be signed in to change notification settings - Fork 363
Expand file tree
/
Copy pathNEWS
More file actions
2781 lines (2381 loc) · 115 KB
/
NEWS
File metadata and controls
2781 lines (2381 loc) · 115 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
MLT Release Notes
-----------------
Version 7.38.0
Framework
- Added dynamic hash table for `mlt_properties` for better performance.
- Fixed memory corruption in `mlt_pool`.
- Added warning on file open failure when parsing in `mlt_properties`.
Modules
- Added `hwaccel_scale` filter with preview scaling (scale_vaapi, scale_vulkan, scale_d3d11, scale_vt (macOS)).
This adds an environment variable `MLT_AVFORMAT_HWACCEL_PPS` to provide a
limiter to hwaccel because transfering uncompressed video between memory
CPU and GPU memory is heavy.
PPS = maximum pixels per second. Anything over it skips hwaccel.
- Added *basic* support for **OpenFX** *filter* plugins.
OpenFX has many features. This is a summary of what is NOT yet included:
- GPU rendering
- exotic parameter types: Integer2D, Integer3D, Double3D, Custom, Bytes, Page, PushButton
- plugin-driven keyframe animation; but MLT-driven does work
- tile-, slice-, or frame-based multi-threading (only plugin internal threading)
- multi-resolution
- temporal clip access
- overlays & dialogs
- timeline queries (e.g. `getTime()`)
- generator, transition, retimer
- parametric curves
- Added `lut` parameter to `avformat` producer.
- Added `attached_pic` property to `avformat` consumer.
- Added `movit.overlay_blend` video filter.
- Added `compositing` property to `movit.overlay` transition.
- Added constant-power crossfade to `mix` audio transition.
- Added rounded corner support for `rect` in `kdenlivetitle`.
- Added typewriter properties to `subtitle` filter.
- Added underline and strikethrough to the `text` and `qtext` filters.
- Changed `qtext` `style` property to support family named styles.
- Added anchor point support for arbitrary rotations in `qtblend`.
- Allow relative paths for images in `kdenlivetitle`.
- Updated Glaxnimate module to version 0.6.0.
- Switched to `QImage` scaling when downscaling in `qtblend`.
- Deprecated `obscure` and `watermark` filters.
- Install the jackrack module's blacklist files.
- Fixed subtitle stream type metadata.
- Fixed mutex initialization in `avformat` no-validate mode.
- Fixed crash when using `linearblend` deinterlacer.
- Fixed black bar with HEVC hwaccel decode and scale on Windows.
- Fixed crash with hardware scaler and interlaced video.
- Fixed converting 8-bit full to limited range with hwaccel.
- Fixed alpha in 12-bit ProRes with alpha.
- Fixed `movit` linear color not matching CPU filters.
- Fixed `multi` consumer making extra linear color conversions.
- Fixed regression writing raw FLAC.
- Fixed `qtblend` filter returning unexpectedly large frames.
- Fixed `qtext` outline encroaching on fill color.
- Fixed wrong last+ frame when `eof=loop` in Glaxnimate.
- Fixed `brightness` filter on track below a clip with transparency.
Other
- Fixed crash during exit cleanup in `melt`.
- Continued build improvements for MSVC.
- A lot of metadata fixes and improvements.
- Many fixes to API documentation.
- Added C++ and Python to the API docs.
- Added two 10-bit VP9 encoding presets.
Version 7.36.1
- Fixed construcing a new producer with a null profile.
- Fixed constructing a `xml-clip` profile.
Version 7.36.0
Framework
- Added `mlt_image_default_colorspace()`
- Added `mlt_image_default_trc()`
- Added `mlt_image_default_primaries()`
- Added `mlt_color_convert_trc()`
- Added the `mlt_consumer` property `mlt_color_trc` to drive a new
`color_transform` normalizer filter. This sets the color transfer
function to use for image/video effects. It is beneficial and
correct to use linear color for any pixel mixing whether for blending
or interpolation.
- Removed `atexit(mlt_factory_close)` in `mlt_factory_init()`. Close the
factory yourself if you feel the need to (not generally needed when
exiting a process).
- Prevent possible crash in `mlt_service_connect_producer()`.
- Added `mlt_profile_is_valid()` and `Mlt::Profile::is_valid()`.
- Fixed crash on invalid profile (CVE-2025-65834) in:
* `mlt_consumer_start()`
* `mlt_factory_producer()`
* `xml` producer
Modules
- Drop support for Qt 5.
- Fixed bad color in `luma` transition's dissolve (regression in v7.34.0).
- Fixed HLG HDR broken in `decklink` consumer (regression in v7.34.0).
- Fixed warnings when flushing audio in the `avformat` consumer.
- Added support for `hwaccel=vulkan` to the `avformat` producer.
- Added a `color_transform` normalizer filter to the core module to convert
all image/video producers to and from linear color. It is abstract in the
core module and drives the following filters:
* `avfilter.zscale`
* `sws_colortransform`
* `avfilter.scale`
- Added filter `sws_colortransform` that is more efficient than `avfilter.swscale`
but requires FFmpeg 8.
- Changed the default property values of the `null` consumer:
* `real_time`: -1
* `terminate_on_pause`: 1
- Changed the `luma` and `movit.luma` transitions to progress linearly with
linear `color_trc`.
- Fixed the alpha channel dropped by the `xml-clip` producer.
- Added `mlt_image_rgba64` format to:
* `avcolor_space` filter
* `avdeinterlace` filter
* `affine` filter and transition
* `audiolevelgraph` filter
* `audiospectrum` filter
* `audiowaveform` filter
* `autofade` filter
* `avformat` producer and consumers
* `box_blur` filter
* `brightness` filter
* `pillar_echo` filter
* `color` producer
* `dropshadow` filter
* `dynamictext` filter (when used with `qtext`)
* `frei0r.alpha0ps` filter
* `frei0r.alphagrad` filter
* `frei0r.alphaspot` filter
* `frei0r.bluescreen0r` filter
* `frei0r.select0r` filter
* `frei0r.transparency` filter
* `gpsgraphic` filter
* `gpstext` filter
* `gradientmap` filter
* `hslprimaries` filter
* `hslrange` filter
* `kdenlivetitle` producer
* `lift_gamma_gain` filter
* `lightshow` filter
* `mask_apply` (when used with `qtblend`)
* `movit.convert` filter
* `outline` filter
* `qtblend` filter and transition
* `qtcrop` filter
* `qtext` producer
* `shape` filter
* `spot_remover` filter
* `strobe` filter
* `subtitle` filter (when used with `qtext`)
* `swscale` filter
* `text` filter (when used with `qtext`)
* `timeremap` link
* `timer` filter (when used with `qtext`)
* `vqm` transition
- Changed the `mask_apply` filter default transition to `qtblend`.
- Removed the maximum for the `alpha` property on the `brightness` filter
so that you can _increase_ the opacity of an existing alpha channel.
- Fixed background image scaling in the `gpsgraphic` filter.
- Fix audio artifacts with pcm_s24le in mkv in `avformat` producer.
Other
- Removed bitrate and quality limits in the vp9 and webm `avformat` presets.
- Fixed melt on Windows not reading file path/name with extended characters
(regression in v7.34.0).
- Fixed building the ruby bindings with Ruby 3.0.
- More fixes for MSVC.
- Removed `win32/strptime.c` and replaced with Qt functions.
- Stop showing `melt` usage on error exit.
Version 7.34.1
- Fixed compiling with Qt 5.
Version 7.34.0
Framework
- Added `mlt_image_rgba64` format. This change touched core, avformat, and qt modules as well.
- Added `mlt_color_trc`, `mlt_color_primaries`, and more `mlt_colorspace`s along with functions:
* `mlt_image_color_trc_name`
* `mlt_image_color_trc_id`
* `mlt_image_colorspace_name`
* `mlt_image_colorspace_id`
* `mlt_image_color_pri_name`
* `mlt_image_color_pri_id`
- Fixed some minor memory leaks with `cppcheck`.
Modules
- Added rgba and rgba64 formats to the `luma` transition.
- Added rgba64 format to `affine` filter and transition.
- Added rgba64 format to the `qtblend` transition.
- Added support for FFmpeg 8 to the `avformat` module.
- Fixed audio `panner` filter for 5.1 channel layout.
- Fixed converting 10-bit full to limited range in `avformat` producer (regression in v7.30.0).
- Fixed shadow not working for multi-line template titles in `kdenlivetitle` producer.
- Fixed `mask_apply` filter with custom transition.
- Added `input_chmask` & `output_chmask` properties to `mono` filter.
- Added `channel_mask` property to LADSPA/LV2/VST2 filters.
- Added `channel_mask` to the `volume` filter.
- Added an `outline` video filter.
- Fixed a deadlock on image with a `%` in the name in `qimage` producer.
- Added scrubbing to the `decklink` consumer.
- Fixed `&` not decoded to `&` in the `xml` producer.
- Fixed converting BT.709 to BT.2020 in the `avformat` module.
- Fixed building a `ladspa` module without JACK as dependency.
- Deprecate a JACK Rack XML file in the `jackrack` and `ladspa` modules.
- Added filter `qtblend_mode`.
- Fixed incorrect alpha channel breaking optimization of `qtblend`.
- Fixed pixel format gbrap (Ut Video with alpha channel) in the `avformat` producer.
- Fixed `opencv_tracker` filter on cut playlist clips.
- Fixed warning about missing color range for `avfilter`s that use it (e.g. `avfilter.colorspace`).
- Added typewriter properties to the `qtext` filter.
- Fixed color distortion or a crash if using hwaccel with orientation rotation in `avformat` producer.
Other
- Enable Qt 6 and disable Qt 5 modules in CMake by default.
- Disable the SDL1 module in CMake by default.
- Changed `melt` now exits with 1 if the producer is invalid.
- Various changes to work with MSVC compiler.
- Changed SVT-AV1 encode presets to VBR for Opus audio.
- Fixed initializing Qt on the main thread in `melt`.
- Documented the `-progress2` option for `melt`.
- Increased the minimum C++ version to C++20.
- Converted many modules to use CMake `find_package()`.
- Added `libgen.c` and `libgen.h` for MSVC.
Version 7.32.0
Framework
* Added `mlt_service_set_consumer()` and `Mlt::Service::set_consumer().
* Optimized `mlt_multitrack` to not request a frame from a producer that is
both hidden and muted.
Modules
* Fixed pixel format for VP8/VP9 streams in `avformat` producer.
* Fixed `yuva422p` pixel format in `avformat` producer.
* Added `MLT_AVFORMAT_HWACCEL` & `MLT_AVFORMAT_HWACCEL_DEVICE` environment
variables to `avformat` producer.
* Updated `decklink` module for recent hardware and drivers.
* Added `colorspace` and `color_trc` (including HDR) properties to the
`decklink` consumer.
* Fixed silencing extra audio channel (e.g. 6 => 8) in `decklink` consumer.
* Fixed 5.1 C/LFE channels swapped over HDMI in `decklink` consumer.
* Fixed text outline had sharp angles in `kdenlivetitle` producer.
* Fixed default gamma to be Rec. 709 for 10-bit Y'CbCr from `movit` module.
* Added support for HLG gamma to `movit` module (requires ddennedy/movit fork).
* Fixed `opencv_tracker` filter should require multiple keyframes to be ready.
* Fixed OpenCV crash on `rect` <= 1 pixel in `opencv_tracker` filter.
* Fixed aspect ratio in `qtblend` filter and transition.
* Fixed `QT_QPA_PLATFORM=offscreen` not working in qt and glaxnimate modules.
* Improved preview scaling in `qtblend` filter.
* Fixed requesting huge images on multiple `qtblend` filters or transitions.
* Fixed `sdl2` consumer on macOS.
* Fixed the `strobe` filter not working with `movit`.
* Fixed color and gamma using `timeremap` link with `movit`.
* Fixed consumer properties (e.g. `channels`) missing on `qglsl` consumer
injected by the `xml` producer.
Version 7.30.0
Framework
* Fixed `Mlt::Producer::set_creation_time()` not exported on i686.
* Fixed `Mlt::Properties::set(int64_t)` symbol version.
* Fixed `mlt_factory_init()` on Linux/BSD may fail to initialize when
compiled with `-DRELOCATABLE`.
* Added generic non-drop-frame timecode in `mlt_property.c`.
Previously, it was only done for 30000/1001 and 60000/1001 frame rates,
but 24000/1001 is especially important as well.
* Added support for MLT XML embedded in chains.
This, along with `xml-clip` producer handles mismatching frame rate
between parent and child producers and facilites time-affecting links on
the child.
* Added `mlt_image_full_range(const char *color_range)` where any of the
following strings return true (1): `full`, `jpeg`, `pc`.
Modules
* Added `xml-clip` producer.
* Fixed link `in` and `out` properties arenot serialized in the `xml` consumer.
* Added `hslprimaries` and `hslrange` filters to the `plus` module.
* Added a `gradientmap` filter to the `plus` module.
* Fixed `avfilter` audio filters with FFmpeg 7.
* Fixed incorrect frame rate for AVCHD (and possibly others) in `avformat`.
* Fixed `window_id` property in consumer `sdl2` by using
`SDL_CreateWindowFrom()`, especially important for embedding in GTK+ or Qt.
* Fixed text not rendering in transition `vqm` since Qt 6.
* Added `decimals` keyword to `gpstext` filter and move `RAW` keyword check.
* Fixed `time_offset` property handling in `gpstext` filter.
* Fixed reading and writing SRT files with unicode in the path.
* Fixed `subtitle_feed` filter on producers with an in point > 0.
* Fixed opaque alpha channels become translucent in `luma` transition.
* Fixed a crash in the `mix` transition with `consumer` producer.
* Fixed `freeze` filter freezing too much.
* Fixed `avfilter.fillborders` with preview scaling.
* Fixed non-proportional scaling in `qtblend` transition and filter.
* Fixed `avfilter` color distortion with `mlt_image_rgb` and `mlt_image_rgba`.
* Extended support for `colorspace=2020` consumer propeerty and the BT.2020
colorspace in the `avformat` producer and consumer.
This does not imply HDR, which is signaled through a `color_trc` property.
* Added support for `mlt_image_yuv420p10`, `mlt_image_yuv444p10`, and
`mlt_image_yuv422p16` in `avfilter`, `swscale`, and `rescale` filters.
This facilitates using these pixel formats end-to-end when using only
FFmpeg producers, certain avfilters, and `avformat` consumer.
This means it is possible to do 10-bit end-to-end on the CPU when being
careful to select compatible components and options to avoid conversions.
One can pass-through HDR; however, you must set the `color_trc` and
`pix_fmt` properties on the `avformat` consumer (see `ffmpeg -h full` for
these values). The `avformat` consumer automatically converts MLT
`colorspace` (integer value) to FFmpeg's `colorspace` and `color_primaries`
(unless explicit) options.
Other
* Cleaned up the examples in `src/swig`.
* Changed the `x264-medium` preset to a higher quality.
Version 7.28.0
This fixes a couple of major regressions in the previous version 7.26.0:
* Fixed seeking and frozen video due by reverting "Improved performance with
intra-only video and reducing the frame rate."
* Fixed using `melt` to render MLT XML with OpenGL effects from `movit`.
Other fixes and changes:
* Deprecated the `composite` transition and the `sdl` and `ndi` modules.
* Fixed Android camera video has the wrong frame rate (broken in v7.26.0).
* Fixed audio not playing for audio-only DTS WMA.
* Fixed using "https:" URLs in the `xml` producer.
* Fixed crash on exit when running `melt -query` or `melt -query links`.
* Added a `transition` property to the `watermark` filter. Now, it defaults
to using `affine`.
* Changed `affine` transition argument to set `rect` property if supplied.
Version 7.26.0
Framework
* Fixed a double-free crash in `Mlt::Service::profile()`.
Modules
* Fixes and improvements to the `avformat` producer:
- Changed to prefer `r_frame_rate` over `avg_frame_rate`.
- Fixed `lowres` if set too high.
- Fixed `audio_index=all`.
- Fixed `variable_frame_rate` incorrectly set true on 59.94 fps in Matroska.
- Improved performance with intra-only video and reducing the frame rate.
- Fixed mono audio handling regression on FFmpeg 7.
- Fixed audio samples may be dropped unexpectly esp. with uncompressed.
* Fixed `movit` transitions with a non-movit filter on one of its inputs.
* Fixed duration in the `glaxnimate` producer off by one frame.
* Added `dropshadow` filter to the `qt` module.
* Fixed resetting animation in `kdenlivetitle` producer.
* Added support for LV2 and VST2 plugins in the `jackrack` module.
* Fixed crash using `av.declick` audio filter on FFmpeg 7.
* Added `subtitle` filter and producer and `subtitle_feed` filter to the `plus` module.
* Added subtitle encoding to the `avformat` consumer (new properties beginning with "subtitle.").
* Fixed `alang` in the the `avformat` consumer.
* Added `#gps_power` keyword to the `gpstext` filter.
* Fixed tab handling in the `kdenlivetitle` producer.
Other
* Added 8- and 10-bit encode presets for SVT-AV1.
* Fixed building on OpenBSD.
* Fixed building on musl libc.
* Fixed consumer properties not updating the automatic profile on the `melt` command line.
* Added `-loglevel` command line option to `melt`.
Version 7.24.0
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()`.
Version 7.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 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.
Version 7.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 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_style`s 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` <kbd>Shift+H</kbd> and <kbd>Shift+L</kbd> keyboard
shortcuts when the SDL2 window has focus.
Version 7.18.0
Framework
* Fixed `mlt_frame_get_audio` fails on `mlt_audio_none`.
* Added `mlt_audio_free_data()`.
* Added `meta.playlist.clip_position` and `meta.playlist.clip_length`
properties to `mlt_playlist`.
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.
Version 7.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` 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.
Version 7.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` 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 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.
* Fixed aspect ratio issues in `qtblend` filter transform.
* 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`.
Version 7.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 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.
Version 7.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()`
* 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`.
Version 7.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 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`.
Version 7.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()` 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_frame`s.
* 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
name of a folder for the `qimage` producer.
* Fixed a crash in `avformat` producer if the `rotate` property is set after
the first frame is fetched.
* Added the `invert_mask` property to the `shape` video filter.
* Changed `avformat` producer to normalize frame rates very close to
non-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
color 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`).
Version 7.4.0
The main highlight of this version is property animation for avfilter!
Framework
* Added more constructors and assignment operators in C++ wrapper:
- `Mlt::Filter::Filter(Mlt::Filter*)`
- `Mlt::Link::Link(Mlt::Link*)`
- `Mlt::Link::Link(Mlt::Service&)`
- `Mlt::Link::Link(Mlt::Link&)`
- `Mlt::Link::Link(Mlt::Link const&)`
- `Mlt::Link::operator=(Mlt::Link const&)`
- `Mlt::Service::Service(Mlt::Service*)`
* Fixed serialized animation in `mlt_animation_serialize_cut_tf()` and
`mlt_animation_serialize_cut()` to include a trailing keyframe value.
Modules
* Added property animation for `avfilter` filters.
This only works for numeric parameters, but many libavfilter options that
have a type string are actually numeric in nature but accept a string
expression.
* Added `rotate` property to `avformat` producer to override orientation.
* Changed `jackrack` module to silence false LADSPA plugin loading errors.
* Fixed a crash in the `oldfilm` filter when using preview scaling.
* Fixed `timeremap` link distorts audio when speed is zero.
* Added nautical mile and knot units of measure to the `gpstext` filter.
* Fixed full range color handling with embedded tractor (e.g. same track
transition).
* Fixed device capture in `avformat` producer regression in version 7.2.0.
* Fixed a crash in the `matte` transition.
Version 7.2.0
This is the first major maintenance release for the new major version 7
rendering it much more production ready. Plus there are a few nice new features.
Framework
* Added support for `mlt_properties` as a child of `mlt_properties`
including XML (de)serialization:
- `mlt_property_set_properties()`
- `mlt_property_get_properties()`
- `mlt_properties_set_properties()`
- `mlt_properties_get_properties()`
- `mlt_properties_get_properties_at)(`
- `Mlt::Properties::set()`
- `Mlt::Properties::get_props()`
- `Mlt::Properties::get_props_at()`
Applications can use this to store structured data in its own namespace,
for example "shotcut:markers". And modules could use this for hierarchical
parameters.
* Fixed crash in `mlt_transition` upon inserting or removing a track.
* Stopped loading `mlt_profile` until needed in `mlt_chain` creation.
Modules
* Added filter `gpstext` that is similar to `dynamictext` based on data in a
GPX file.
* Added speed parameter to `timer` filter.
* Added WebP presets for `avformat` consumer.
* Added a pixelate option to the `opencv_tracker` filter's `blur` property.
* Fixed `center_bias` of `crop` filter not working with `use_profile`.
* Fixed some missing RGB `mlt_image_format` renames after change in v7.0.0.
This primarily affected presets and service metadata.
* Fixed a crash when changing preview scaling in `timeremap` link.
* Fixes problems due to adding redundant normalize filters upon loading a
producer from XML.
* Ensure filters added by the `loader` producer always come first in list.
* Fixed a crash using `shape` and `affine` filters together on `color` producer.
* Fixed a crash when a `vidstab` file fails to open.
* Changed `vidstab` filter to save its file in ASCII text mode.
* Fixed a clang LTO error in the `decklink` module.
* Fixed a video decoding regression on some videos in the `avformat` producer.
* Fixed a crash in the `audiowaveform` filter.
* Fixed loading a relative filename from XML for `mask_start` with `shape`.
* Fixed "#filedate#" in `dynamictext` filter when used with `timeremap` link.
* Fixed `timer` filter's new `speed` property interaction with `start` delay.
* Fixed a crash with YUYV422 (YUY2) input in `avformat` producer.
* Fixed data race condition in `timeremap` link.
* Fixed compiling `avformat` module with FFmpeg git beyond v4.4 with
many deprecations removed.
* Fixed alpha channel size calculation in `brightness` filter.