This is a minor maintenance release, but it is interesting because it now enables usage of libswscale as the default choice for image scaling, image format conversion, and color space conversion. That gives better quality and performance. In addition, there are some improvements in the sdl_preview consumer to make it suitable for use in OpenShot 1.1. (Thu, 11 Mar 2010 06:51:32 GMT)
This is an enhancement release, confined mainly to the modules rather than the framework. In particular, this adds support for VDPAU, YADIF, and HD-SDI technologies!
configure: added --disable-sse2
framework: * mlt_cache: added mlt_cache_set_size() * mlt_filter: added data property "service" - set when attached * mlt_frame: - added Doxygen docs - added "previous frame" and "next frame" data properties - available when its producer has _need_previous_next=1 * mlt_playlist: added support for negative out point same as length-1 * mlt_service: - added mlt_service_cache_purge() - added "_need_previous_next" handling in mlt_service_get_frame() - added firing event "service-changed" in mlt_service_attach()
modules: * avformat producer: - added decoding H.264 with NVIDIA VDPAU Requires FFmpeg built with vdpau. This is automatically detected and enabled. You can disable this by setting environment variable MLT_NO_VDPAU=1 or property novdpau=1. - added caching of FFmpeg contexts and decoded images This allows large numbers of clips in a project avoiding limitations with number of threads and file descriptors permitted per process. You can disable image caching with property noimagecache=1. - added variant of producer named avformat-novalidate - restored support for video4linux(2) * avformat consumer: added apre, fpre, and vpre preset properties * crop filter: added center_bias integer property * deinterlace filter: added the excellent YADIF as a method * kdenlivetitle producer: added text outlining * linsys/sdi consumer: - added support for HD-SDI - changed name from "linsys_sdi" to just "sdi" * oldfilm filter: added "uneven development" effect * xml producer: add support for unspecified out points
profiles: * added several missing ATSC (HD) profiles * change descriptions from using Hz to fps (Tue, 16 Feb 2010 07:00:51 GMT)
Since its inception, MLT has been limping along on linear-blending for deinterlacing, but I just added the world-class YADIF deinterlace filter! It is not a new MLT filter that you need to manually apply; rather, it is integrated with the existing one. It is the new default when you are not playing through SDL (i.e. Kdenlive and OpenShot). SDL defaults to linear interpolation (i.e. onefield), which is faster and will not making seeking on AVCHD suck any more than it already does. Encoding through avformat and SDI outputs default to YADIF (which, of course, gets applied only when required).
This took quite a bit of work because this filter requires the preceding and following frames' images to the current frame being processed, and the framework was not equipped to provide that. Also, there were quite a few pitfalls along the way. (Fri, 05 Feb 2010 05:03:48 GMT)
Yesterday, I introduced a fatal bug shortly before the 0.4.8 release. Actually, a bug fix exposed a different bug. So, this release is a "hot fix" release. (Wed, 09 Dec 2009 04:44:39 GMT)
Last week I added support for VDPAU decoding of H.264. This is working and stable, but it is not yet pushed to the public Git repository. Currently, one can only load about 10-20 AVCHD clips - depending upon video memory. I have to refactor the FFmpeg (avformat) module to take advantage of the new LRU mlt_cache. Previously, this was difficult due to all the numerous properties it was using. Well, just after the 0.4.6 release, I had refactored it to use a mlt_producer child structure. This was done partly to be more efficient and gave me an opportunity to have a thorough re-review of this code before embarking on a major change I promised in exchange for getting the Linsys SDI consumer as open source and a card with which to test it. I know; I am rambling. The point is that it should be fairly easy to now make it use the cache, which means it will also be possible to support hundreds of clips in a project with random access. (Previously, hundreds could only be supported for sequential access by usage of the autoclose=1 property on the playlist object.)
Whew! OK, now for the not-so-great part. I was hoping this could give a good performance boost especially for seeking as that took a major hit in performance in 0.4.6 in exchange for accuracy and quality. Unfortunately, on my MacBook Pro with a Geforce 8600M GT, I am only seeing about a one second improvement in seek performance and this is without disabling the in-loop deblocking filter on the CPU test. I see about 33% improvement in time to simply decode frames as-fast-as-possible and about a 10% reduction in CPU utilization during real-time playback. Why is this? Well for one, MLT uses packed 4:2:2 for its Y'CbCr colorspace and even though the API seems to indicate it can provide this, neither of my 2 systems that can support VDPAU can provide this. Therefore, it must still do a colorspace conversion on the CPU. The overhead of sending the bitstream to the GPU and especially receiving the uncompressed decoded image back into system memory seems to counter-compensate the gains provided by the GPU. I do plan to keep this code and try to integrate the deinterlacer and perhaps some other filters to make it more compelling. However, it means I am going to wait until after today's release to further it and make it available. (Mon, 30 Nov 2009 17:56:27 GMT)
This release is an enhancement release along with numerous build, A/V synch, concurrency, and other bug fixes.
configure: new option --avformat-svn-version
modules: * avformat: much improved seeking on H.264/MPEG2-TS (AVCHD) (Ivan Schreter) * core: new imageconvert and audioconvert filters (framework refactorization) * linsys: new SDI consumer (Broadcast Centre Europe) * qimage: new kdenlivetitle producer (J.B. Mardelle and Marco Gittler) * sdl: new audio_only consumer for OS X
mlt++ and swig: update bindings
framework: * refactored image format conversion mlt_frame.h: - added convert_image() virtual function - added mlt_image_format_name() - removed many mlt_convert_ and scaling/padding functions * refactored audio format conversion mlt_frame.h: - mlt_get_audio() virtual function parameters changed - added convert_audio() virtual function - mlt_frame_get_audio() parameters changed - added mlt_frame_set_audio() - added mlt_audio_format_name() mlt_types.h: - deprecated mlt_audio_pcm - added mlt_audio_s16 - added mlt_audio_s32 - added mlt_audio_float (Wed, 07 Oct 2009 08:03:42 GMT)
It lives! For a while now, MLT has worked on Mac OS X, but it was not possible to embed the MLT video window into a native Carbon or Cocoa application. However, with a new SDL audio-only consumer, an application can retrieve the image in a MLT frame-show event handler and paint it as desired. In the case of Kdenlive, I used a custom QGLWidget: http://www.kdenlive.org/forum/kdenlive-macosx-available-testing#comment-4663 (Wed, 09 Sep 2009 20:48:03 GMT)
Thanks to Linsys and Broadcast Centre Europe, MLT Git trunk now features a fully open source SDI output capability. Whereas the closed BlueFish444 module also supports HD, this is currently SD only. (Wed, 09 Sep 2009 20:45:53 GMT)
Here are some things that are happening since the v0.4.4 release. First, already committed to the Git tree, image conversion throughout the framework and modules has been refactored to reduce the number of conversions and only convert when necessary. This benefit in performance and quality is most noticeable when applying multiple frei0r-based filters. However, it also helps with the development and maintenance of the code.
Currently, I am working on the same for the audio where the benefit is most noticeable when applying multiple LADSPA or SoX-based filters. This is not yet in the Git tree.
Also, I have been working on the ability to embed the SDL window inside of Qt applications on Mac OS X (based on avidemux's approach). Embedding is currently working in my test app, and I am working on handling resize events. I am rather worried about making this work stably.
Finally, Broadcast Centre Europe has contributed an open source consumer for the Linsys SD SDI card. They have sent me a card and the code, but I have not yet had a chance to review and commit this. (Sat, 25 Jul 2009 04:53:07 GMT)