GStreamer 0.11 status 4
wim.taymans at gmail.com
Wed Dec 28 09:24:52 PST 2011
Hello GStreamer Hackers,
I hope you all had a very Merry Christmas and to lighten up the dark
days between Christmas and New Year, here's another 0.11 status update
for all of you.
First, the sad news.. there won't be a 1.0 release this year :( During
the GStreamer summit, a fairly large amount of additional features and
requirements were added to the 0.11 wikipage. While there are not enough
helping hands to implement all those features in a reasonable time
before 1.0 we decided to delay the release with 2 months and try to
implement as many of the items as possible.
The current plan is to freeze beginning of january (instead of the
beginning of november) and have a 2 month stabelization and porting faze
before we try to release 1.0 at end of february.
Let's go over the things that got done since the last status update.
We started with removing our special FOURCC GType. We really only used
it for describing the format in yuv video caps but since those were now
replaced with strings, they became obsolete.
Core saw a lot of stabelization in preparation for the freeze and 1.0
release. Things such as the bindings, unit tests and memory leaks got a
fair bit of attention.
GStreamer traditionally used a timestamp field to store the presentation
timestamp of a buffer but in some cases, this timestamp is simply not
known and only a decoding timestamp is known. We finally replaced the
timestamp field with a DTS and PTS field in GstBuffer. There are not so
many elements using it and the compatibility macros map the old
timestamp to the PTS for now.
After the GStreamer summit, work began on the items on the new wiki
list, which included a lot of API cleanups. Tim-Philipp Müller cleaned
up the URIHandler interface and all vmethods and headers files were
checked and improved.
Stefan Kost did a lot of work on the controller, moving it into the core
and making it a simple delegate of GstObject.
Pad probes got rewritten some more. Probes can be put on both src and
sink pads now. You can filter out what kind of items you want to probe
for and in what direction. It is now also possible to probe in pull mode
and to modify the probed data. Probes were also added for queries.
The acceptcaps and getcaps functions were replaced with queries. This
further reduces the amount of special functions on the pad and uses the
more generic query and event infrastructure for dealing with caps. This
also makes it possible to use the probes to inspect and influence the
results of the caps functions.
The parent object was added to all pad functions. It was a common
pattern to get the parent object and it required some extra work to make
it threadsafe. Now the core will correctly get the parent of the pad and
make sure it does not disappear while calling the pad functions. Add pad
functions also got a GDestroyNotify so that bindings can more easily be
Sticky events got another rewrite. The code should be a lot more simple
and correct. Support was added for multiply sticky events, such as tags
and sink_message events.
For exchanging data with the application, a new GstSample object was
added. This object combines a GstBuffer with its metadata such as
GstCaps and timing information. The object is used in snapshots and for
Support was added to basesrc to do an asynchronous state change to the
PAUSED state. This is mostly useful for network elements when they want
to open a network connection but don't want to block the state change.
Helper Libraries / plugins
The start of october, a lot of plugins were ported to 0.11 to prepare
for the freeze and release of 1.0. Edward also ported gnonlin to 0.11.
This was temporarily put on hold to focus on the new wiki feature list.
Audio caps got reworked in a similar way to the video caps. Caps
properties like width/depth/endianness/signed fields were replaced with
a simple string "format" and media type audio/x-raw. A GstAudioInfo
structure was created with some helper methods to parse caps. Plugins
were ported to this new API.
The video library got support for colorimetry info. Info like chroma
siting, color range, color matrix, transfer function and color primaries
can now be specified on the video metadata. This will allow us to do
more correct colorspace conversion in the future.
Support for multiview was added to the video information along with
better support for variable framerate and interlacing. These features
are not actively used yet by any plugin but we expect that the needed
infrastructure is there to implement this later.
The GDP library was made private and moved into the gdppay and gdpdepay
plugins. The library was not used anymore outside of those plugins and
probably needs some work for the 0.11 API changes.
Porting will continue from january as part of the stabelization and
preparation for the 1.0 release.
There will also be a GStreamer hackfest in Malaga at the end of january
where we will port and fix applications. See more info here:
That's it for this status report, I wish you all a very happy New Year
and hope to see you all in 2012, the year of GStreamer 1.0! :)
More information about the gstreamer-devel