Re: The GNOME Journal, February Edition



I might have it.  Do we want to add these edits into the gstreamer
article?

sri 
On Thu, 2006-02-16 at 08:27 -0500, Scott Bronson wrote:
> I notice that the article that I edited didn't make the cut...  That's
> OK, except that the one currently on the site has a number of grammar
> and style issues...  It uses "0.8" five times in two sentences, bad
> pluralization ("GStreamer being a library wether [sic.] many of the
> improvements actually makes"), ...
> 
> In case it was lost, here's what I sent Sriram on the Jan 21st (with a
> few minor fixups that I noticed just now).  NOTE: this doesn't have
> the much better parting statement that Christian Schaller came up
> with.  Sriram, do you still have that?
> 
> 
> GStreamer 0.10 - What's in it for the users 
>                                                  By Christian Schaller
> 
> The newest version of GStreamer, the Gnome multimedia framework, was
> released just before Christmas.  Its release announcement described
> the new features available to developers but neglected to talk about
> its improved user experience.  This article will introduce the
> improvements users will notice as they upgrade from 0.8 to 0.10 and
> offer some background into what makes them possible.  Of course,
> because GStreamer is a library, many applications will need to be
> updated to benefit from these features.
> 
> 
> 
> 
> Background
> It became clear to the GStreamer development community that, after two
> years of development, version 0.8 was suffering from a number of
> fundamental design flaws  For instance, threading was added 0.8 almost
> as an afterthought so it was predictable that it would suffer from a
> number of threading issues.  Stressing the framework would easily lead
> to crashes, especially on hyperthreaded or multi-CPU systems.  Also,
> performance was bad when seeking or switching files, leading to a poor
> user experience.  Fixing these flaws would require some rather large
> changes.
> 
> Now that hyperthreaded and multithreaded systems are becoming popular,
> it was clear that the project should create a strong threading model
> and then write GStreamer to fit that model.  It was quite common for
> an old GStreamer application to become unresponsive.  In fact, if you
> ever tried moving the seeker bar in Totem back and forth at rapid
> speed in GStreamer 0.8 you will probably see a segfault. The new
> GStreamer should not crash and will even show the images blurring by
> as you scan.  Even though 0.10's internals are very different from
> 0.8's, care was taken to ensure that its API remains very compatible.
> Sound Juicer was ported in one day.
> 
> 
> 
> 
> Fixed Registry
> Most of the support requests in the #gstreamer IRC channel came from
> people whose GStreamer applications were refusing to use their
> installed plugins. This was usually because the registry of usable
> plugins, manually updated by the package installation system, was
> updated wrong. While things improved during the lifetime of 0.8 as
> distributions took more care to run gst-register, it still caused a
> lot of grief. GStreamer 0.10 registers plugins automatically (when? at
> app launch?  continually while the app is running?) so they
> automatically made available and gst-register no longer exists.
> 
> 
> 
> 
> Improved Packaging
> Most distributions, for legal reasons, only ship a small subset of
> GStreamer 0.8 plugins. Because GStreamer's plugins are built from the
> same source module, each packager was forced to split it up to remove
> components that were illegal or unwise to use in their particular area
> of operation.  The amount of custom code caused a number of problems
> for users.  To solve this, 0.10 has five plugin modules called base,
> good, ugly, bad and ffmpeg. Base and good contain plugins that any
> distribution can ship without fear of potential legal issues. Ugly
> contains well-maintained plugins which may or may have legal issues of
> some form, generally patent or license issues. Bad is an incubation
> area where new plugins mature before moving to good or ugly.  If a
> plugin never  matures, it may remain in bad for the rest of its life.
> ffmpeg contains wrappers for all the codecs in the ffmpeg package.
> This new scheme will allow downstream packagers to have more
> consistent package naming and installation scripts, making it easier
> for users to discover and install the plugins that they need.
> 
> The base package is not intended to contain all the plugins required
> by a typical GStreamer setup. Instead, it contains one important
> example of each type of GStreamer plugin. The code and documentation
> for base plugins will remain current so developers will always be able
> to create new plugins from a known working code base.
> 
> 
> 
> 
> Better Playback System
> While playback in 0.8 did become quite good, it would never meet the
> high standards of the GStreamer team.  0.10 provides the
> infrastructure required for a much better playback experience.
> Switching tracks is very fast now, as close to instant as possible.
> Seeking should be much more responsive and the return to playback
> after seek is also very clean. A fun little feature of the new
> architecture is that if you seek in an audio file (in Totem for
> instance) and have a visualization active, you can watch the
> visualization change along with the seeking.
> 
> 
> 
> 
> Audio and Video Syncronisation
> GStreamer 0.10 has functions that should ensure 100% A/V
> syncronisation even for very long streams. For instance if you used
> Thoggen to RIP DVD's with 0.8, you might have experienced that audio
> and video slowly drifted apart as the movie played.  In 0.10, no
> matter how long the stream is or how often you seek around in the
> stream, the audio and video should stay locked together. GStreamer
> also features a system allowing synchronized recording from multiple
> sources, like a webcam and your soundcard microphone which will give a
> better result for applications like Flumotion and video conferencing
> systems like Farsight.
> 
> 
> 
> 
> Improved Plugins
> In 0.8, many plugins that should have worked together would somehow
> fail. This was especially true for less-used plugins that lacked the
> developer time required to shake out all the corner cases. For
> instance, sending audio to to alsa, oss, esound, and artsd should be a
> straightforward operation, yet each back-end had its own
> idiosyncrasies that needed to be worked around. An operation that
> would work perfectly for one person would fail horribly for another,
> and it would be entirely unclear just where the difference was. To
> solve this, 0.10 plugins now derive from a base class that handles the
> common operations.  This allows all plugins to share a lot more code.
> It's possible for work on the most important plugins to benefit those
> with a smaller audience too.  Ultimately, this code sharing will
> ensure that plugins will now behave much more consistently.
> 
> GStreamer 0.10 also makes it much easier to integrate applications
> into the various desktop environments.  Old applications would link
> against a tiny helper library to access the GStreamer gconf keys.  In
> 0.10, GConf is supported by a set of plugins. Both a Gtk-only
> application like bmpx or a Qt/KDE application like Amarok can use the
> GConf plugins today.  This allows Amarok to integrate more tightly
> with the Gnome desktop and, if the appropriate plugins are written,
> could allow bmpx and other Gnome applications to integrate more
> tightly with KDE.
> 
> Various plugins have also improved. GStreamer 0.10 comes with a fully
> functional Real Media demuxer which, when used in conjunction with
> ffmpeg or the Windows .dll loader plugin, can give support for Real
> Media formats. An MMS plugin adds support for the mmsh protocol, so
> Windows Media streaming audio (internet radio) should now work as
> well.
> 
> 
> 
> 
> Support for RTP
> A lot of work has been put into Real Time Protocol (RTP) support for
> GStreamer.  This makes it a much more suitable foundation for Voice
> Over IP (VOIP) and videoconferencing applications.  There is even an
> effort afoot to port Ekiga (formerly GNOME Meeting) to GStreamer this
> year. The Farsight project is also working in this area, aiming to
> support all instant messenger, VoIP and videoconferencing systems.
> 
> I hope this has been a useful introduction to the much improved user
> experience of GStreamer 0.10.  And, of course, application developers
> will continue to provide additional improvements and changes beyond
> what exists in the GStreamer core. 
> _______________________________________________
> Gnome-journal-list mailing list
> Gnome-journal-list gnome org
> http://mail.gnome.org/mailman/listinfo/gnome-journal-list




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]