Jun 2, 2013
Earlier in the year we announced the introduction of
OpenGL-based image processing on the GPU. However, now it is finally available in a release version of the software. Not only that, but we have also added a new, properly integrated property animation API to replace the limited, awkward mlt_geometry API. Here are the features of the new API:
- The time of a keyframe can be set using frame number, time clock string, or a timecode string.
- A negative time value makes it relative to the end of an object's duration.
- Keyframes support 3 forms of interpolation: discrete (no interpolation), linear, and a smooth Catmull-Rom spline.
- Supports a new mlt_rect propery type in addition to string (discrete only), integer, and floating point.
- API for most apps is just a few new, simple methods on the Properties object.
- Integrated with the OpenGL-based effects only at this time to ease the migration - will be extended to other plugins in the next version or two.
Above is a plot of the curve described by the following property value.
0|=50; 50|=100; 100=200; 200~=60; -7:00~=180; -2:00~=100; -1=220
This shows that it is possible to combine a number of things in the same curve. It starts out with discrete keyframes (|), switches to a linear interpolated keyframe (=), and ends with a few smooth spline keyframes (~) set using timecode relative to the end/width (-).
Here are other highlights of the release:
- Improved pause behavior when using buffered rendering in mlt_consumer.
- Added mlt_color type.
- Deprecated mlt_geometry API.
- Support for the latest versions of FFmpeg and Libav (but dropping support
for 0.5 and 0.6 versions).
- Added alpha channel output to avformat consumer.
- Added reconnect and exit_on_disconnect properties to avformat producer.
- Added qglsl consumer to use opengl with avformat, sdi, and decklink.
- Added avsync module with blipflash producer and consumer for testing.
- Added new "count" producer to gtk2 module.
- Changed frei0r to use index-based property names making it impervious to
param name changes (param name still accepted for compatibility).
- Added default parameter values to frei0r metadata.
- Added more python example web services.
- Started a unit test suite.