GStreamer 0.10.10 review

Download
by rbytes.net on

GStreamer is a library that allows the construction of graphs of media-handling components, ranging from simple Ogg/Vorbis playback t

License: GPL (GNU General Public License)
File size: 2447K
Developer: Wim Taymans
0 stars award from rbytes.net

GStreamer is a library that allows the construction of graphs of media-handling components, ranging from simple Ogg/Vorbis playback to complex audio (mixing) and video (non-linear editing) processing.

Applications can take advantage of advances in codec and filter technology transparently. Developers can add new codecs and filters by writing a simple plugin with a clean, generic interface.

GStreamer is released under the LGPL.

Here are some key features of "GStreamer":
Multiplatform

GStreamer has been ported to a wide range of operating systems, processors and compilers. This include but are not limited to Linux on i86,PPC, ARM using GCC. Solaris on x86 and SPARC using both GCC and Forte, MacOSX, Microsoft Windows using MS Visual Developer and IBM OS/400.

Comprehensive Core Library

Graph-based structure allows arbitrary pipeline construction
Based on GLib 2.0 object model for object-oriented design and inheritance
Small core library of less than 150KB, about 10 K lines of code
Pluggable scheduling system capable of dealing with most pipeline structures
Multi-threaded pipelines are trivial and transparent to construct
Clean and simple API for both plugin and application developers
Extremely lightweight data passing means very high performance/low latency
Complete debugging system for both core and plugin/app developers
Clocking to ensure global inter-stream synchronization

Intelligent Plugin Architecture

Dynamically loaded plugins provide elements and media types, demand-loaded via an XML registry, similar to ld.so.cache
Element interface handles all known types of sources, filters, sinks
Capabilities system allows verification of element compatibility using MIME types and media-specific properties
Autoplugging uses capabilities system to complete complex paths automatically
Pipelines can be saved to XML and loaded back to working state
Resource friendly plugins don't waste RAM

Extensive Development Tools

Graphical editor allows pipelines to be built quickly, run, and saved as XML
gst-launch command-line tool enables even quicker prototyping and testing, similar to ecasound
All tools written as libraries to allow easy reuse
A lot of documentation, including partially completed manual and plugin writer's guide
Large selection of test programs and example code
Access to GStreamer API with various programming language

What's New in This Release:
Thread-safe

Designed from the ground up to be a thread-safe framework. GStreamer 0.10 will work flawlessly on multi-CPU and hyper-threaded systems which are getting more and more commonplace these days while hiding the complexity of threads away from most application developers.

Pre-rolling and seeking improvements

GStreamer 0.10 implements pre-rolling. This means all your media playback applications will do instant start/stop, and 'video scrubbing' when seeking, and has accurate audio/video synchronisation.

RTP Suppport

Thanks to the help of the Farsight project, Nokia, Instituto Nokia de Tecnologia and Fluendo, GStreamer 0.10 includes great support for the RTP protocol and has payload encoders and decoders for a wide variety of formats. This means creating VoIP applications with GStreamer will now be easy.

Fraction based frame rates

GStreamer 0.10 specifies frame rates in fractions. This allows for correct specification of commonly used frame rates and allows elimination of rounding errors which could otherwise cause loss of synchronization.

No more manual registry maintenance

One thing that constantly caused problems for our users in earlier releases was the registry which needed to be carefully maintained by packagers and application developers. GStreamer 0.10 takes care of keeping its internal registry in sync automatically and should through that make life better for many of our users.

Improved developer documentation

The community has put a lot of effort into improving the GStreamer documentation. The GStreamer core now follows a policy of not allowing API additions without the new API being fully documented. All GStreamer plug-ins also generate documentation now, making it easier for developers and users to see what kind of plug-ins are available and what the plug-ins are capable of. There are also a wide range of documents available now which explain the overall design of the various GStreamer sub-modules.

Better performance and smaller overhead

The GStreamer framework now has less overhead and higher performance than 0.8. Some benchmarks now show it running twice as fast. These speedups are especially an advantage for the use of GStreamer in embedded systems.

Improvements in clock handling

Our new master/slave clock implementation allows for network clocks which will ensure, when implemented in your application, that even if you have multiple devices spread out on your network running GStreamer-based applications, they will be playing or recording fully synchronized with each other. Our new clock selection algorithms makes sure the clocks of live sources are preferred over the clocks of sink elements, ensuring good results when decoding RTP streams, for instance.

Base classes

GStreamer 0.10 provides a set of element base classes which implement the common functionality of sinks, sources and transforms. They enable both easier plugin development and highly consistent behavior between plug-ins of the same type.

New controller subsystem

GstController takes over from the DParams infrastructure of GStreamer 0.8. GstController provides timed parameter changes synchronised with the data stream. This means that having your applications do timed parameter adjustments on elements is easier than ever, for instance timing the crossfading of two audio or two video tracks.

GStreamer 0.10.10 keywords