[gst-devel] GStreamer status, 21 October 2005

Andy Wingo wingo at pobox.com
Fri Oct 21 07:42:00 CEST 2005


God kveld GStreamer hackere,

Happy Friday to everyone across the land. The days slip by and we still
do work, accelerating time's arrow by reducing entropy in our CVS.
Depressing? No my friends, we party while the ship sinks. At least when
we're not reading dinosaur comics[0], that is.

[0] http://www.qwantz.com/index.pl?comic=116


The Flocculator
---------------

Remember Wim's state change patch from last week? It turns out that it
had some nasty deadlocks due to a kind of mayonnaise policy[1] regarding
the state lock. The state lock was being used (1) to synchronize access
to the state variables on elements; (2) to serialize calls to
gst_element_get_state; and (3) to serialize calls to
gst_element_set_state. With such a broad lock, adding recursion only
made the deadlocks trickier to find and understand.

The ultimate solution to this problem was to redefine the role of the
state lock. Now it is private to GstElement, and is only used to
serialize calls to gst_element_set_state. Accessing the state variables
themselves is done with the normal object lock. Bins are notified of
asynchronous state changes via a new STATE_DIRTY message, which tells
bins that a state recalculation is needed. It's still not entirely
elegant internally, but application writers should now have a library
that Just Works(tm).

In light of these changes, in addition to the 600 unread dinosaur
comics, the API freeze was postponed until Wednesday evening. It will be
in effect until 14 November. The releases should hopefully come out
today; as it turns out it takes time to distcheck 7 modules on a puny
Thinkpad laptop.

Of course, given the extra opportunity to break API, various malevolent
hackers were busy doing just that. Position and duration queries were
split, as position changes frequently but duration does not. In addition
position queries are now handled by sink elements, which makes the query
results sample-accurate. Duration changes are now broadcast via messages
as well. There was some further win32 porting done, autoconf flogged
Thomas a bit more, some plugin version-checking helper functions found
their way in, and dates in GstTag objects are now of type GST_TYPE_DATE.

[1] More is better!


API Freeze Status
-----------------

Totally frozen dude! This is just like being in a stable series. No
changes in properties, no changes in API, no changes in ABI, &c. At this
point, if there are changes that need to made, they should be filed in
bugzilla as blocking bug #319388 so they can be reviewed and maybe
applied on 14 November.


Plug It In, Plug It In
----------------------

In addition to the churn this week related to the position/duration
query changes, and the date tag type change, the plugins saw a lot of
hacking this week. Here's a brief run-down:

  base: decodebin and playbin now change state asynchronously (only
        going to PAUSED when all streams are decoded), buffer-frames
        removed from float audio caps (see [2]), typefinding updates,
        bugfixes in oggmux, theoraenc, ffmpegcolorspace, and some build
        system flaggelation by Thomas

  good: lots of elements ported -- matroska demuxer and muxer, pngdec,
        alphacolor, videomixer, flxdec; bugfixes in wavparse, videobox;
        level uses ELEMENT messages (instead of APPLICATION)

   bad: build fixes, speed updates from 0.8, faac ported better

  ugly: a52dec ported, siddec fixes

[2] http://article.gmane.org/gmane.comp.video.gstreamer.devel/13647


Everyone Likes Numbers
----------------------

Core files changed since the last summary               : 247
Lines added since the last summary                      : 4522
Lines removed                                           : 6266
Net change in core value according to sloccount(1)      : -$58,893 [3]
Total number of GStreamer bugs as of today              : 213
Number opened in the last week                          : 19
Number closed in the last week                          : 11
Net change                                              : +8
Rank among most buggy projects hosted in gnome bugzilla : 8

[3] Thomas stole $69,000 of testsuites for 0.8-only features and has
laundered it to Belgium. If anyone seek him, ask him to bankroll your
bar tab -- the guy is loaded!


Current Releases
----------------

0.9.4 should come out later today, but as I write this these are still
the latest releases:

Latest development versions:
    gstreamer:        0.9.3
    gst-plugins-base: 0.9.3
    gst-plugins-good: 0.9.3
    gst-plugins-ugly: 0.9.3
    gst-plugins-bad:  0.9.3
    gst-ffmpeg:       0.9.3
    gst-python:       0.9.3

Latest stable versions:
    gstreamer:        0.8.11
    gst-plugins:      0.8.11
    gst-ffmpeg:       0.8.6
    gst-python:       0.8.2


Featured Application: Totem
---------------------------

Christian Schaller has brought this breathtaking report back from his
Norvegian holidays:

    Every system needs a good video player and in the GStreamer world
    the best one out there is Totem. Totem is the default media player
    in GNOME and has seen a lot of development put into making it very
    mature and well featured, like support for Infrared remotes, video
    thumbnails for Nautilus, support for various playlist formats and
    much work put into optimizing usability. And maybe best of all you
    can already use it with GStreamer 0.9 by using the patch from GNOME
    bugzilla bug 313086. More information on the Totem homepage:

    http://www.gnome.org/projects/totem/


Well people, by my count I've got about 300 dinosaur comics left to read
and only another 2 hours of work. So enough of this playing around, it's
time to get serious. Have a quite fine weekend.
-- 
Andy Wingo
http://wingolog.org/






More information about the gstreamer-devel mailing list