[gst-devel] The 1.0 plan

Wim Taymans wim.taymans at gmail.com
Tue Nov 9 13:53:30 CET 2010


Hello GStreamer hackers,

As most of you know, we'll be starting the new 0.11 development this month. This
development effort should then eventually lead to a version 1.0 by the end of
2011.  We've collected a fair amount of desired changes and features [1], some of
them easy to implement and others not so much.

Since the list of changes is rather large, we will have to have a strong focus
on the most pressing parts while making sure that the smaller changes can be
implemented on top of that.  

In this mail I would like to give a highlevel overview of the pressing problems
we would like to see fixed for 1.0. More detailed information can be found in
various places [1][2] and will be fleshed out even more as we go.

The purpose is to give people an idea of the problems that will be fixed and
what new use case will become possible or easier. This list is mostly collected
from talking to people and the experiences of the past 5 years of GStreamer
0.10 development. 

There are 4 areas that need improvements. Each of those areas can be further
subdivided in smaller subtasks [4].

1) General cleanups. This includes small things like removing old or bad API
   that we have hanging around, cleaning up structs, fixing the padding, adding
   GstFlowReturn for events [6], etc..

2) Performance improvements. The biggest one here is to rework the Caps system
   to make it faster. We have several ideas here: incremental caps [3] and
   reducing the amount of caps fields. Other ideas include changing the
   datastructure for caps. We are also going to change reverse negotiation and
   untie it from the allocation of data.

3) Extensible Buffer metadata. We're going to make it possible to dynamically
   attach metadata to buffers. The goal is to make it much easier to integrate
   with various hardware, DSPs and APIs like OpenMax, OpenGL, Cairo. Things like
   strides, cropping and regions of interest should be looked into. We would
   like to make sure that GStreamer elements can do zero-copy data passing for
   the most common use cases. See [5]

4) Improve dynamic pipeline handling. Problems with events being lost and
   newsegment accumulation cause difficulties when dynamically constructing
   complicated pipelines. We would like to make the timing mode more
   comprehensive and controllable from the application.

I would like to ask everyone of you to see that this list is not missing
anything important that you think needs to be considered for 1.0. All ideas
are welcome and I would suggest to add them to the wiki [1]. Please try to focus
on new core features and improvements (bug fixes, documentation, new plugins,
performance improvements and other things that don't require API changes
continues as usual in the 0.10 branch). I would also like to see how you think
the API can be improved or how things can be done better API-wise.

One of the big missing items on this list is improving the documentation. We've
been thinking again about making a book for 1.0. It always boils down to the
fact that most core developers would gladly write a chapter or two here and
there but the missing part, it seems, is someone who would take charge of
organizing and proofreading all this. If anyone feels like taking the lead
here, we would be very very happy hackers.

In practice, I would like to encourage people to make git branches with
experiments and proposed solutions. I would also like to encourage you to add
your ideas and suggestions to the wiki or this mailing-list.  We'll take 2 more
weeks to collect suggestions and to think about new ideas. Around the end of
November we should start the 0.11 branch to start merging branches and porting
elements.

I would also like to do the weekly status updates of the 0.11 branch to let
people know where we are. 

Exciting times ahead!

Wim


[1] http://gstreamer.freedesktop.org/wiki/ZeroPointEleven
[2] http://cgit.freedesktop.org/~wtay/gstreamer/tree/docs/random/plan-0.11.txt?h=working&id=5c05a15e7cd2327e98d0177fdce8e5be3215aa05
[3] http://cgit.freedesktop.org/~ensonic/gstreamer/log/?h=lazycaps
[4] http://cgit.freedesktop.org/~wtay/gstreamer/tree/docs/random/use-cases-0.11.txt?h=working&id=5ca09f1421847264e69cb111b0887a00d8a58bf9
[5] http://cgit.freedesktop.org/~wtay/gstreamer/log/?h=buffermeta
[6] http://cgit.freedesktop.org/~wtay/gstreamer/log/?h=events2






More information about the gstreamer-devel mailing list