[gst-devel] gapless playback

Sebastian Dröge sebastian.droege at collabora.co.uk
Sun Dec 19 10:00:47 CET 2010


On Thu, 2010-12-16 at 09:58 +0800, Stuart Gray wrote:
> Hi,
> 
> I am seeking some guidance with respect to getting gapless playback
> using decodebin2 and queue2.
> 
> Our system comprises the following:
> 
> arm9 processor
> gst-plugins-bad - 0.10.20-r11.0.6 
> gst-plugins-base - 0.10.31-r11.0.6
> gst-plugins-good - 0.10.25-r11.0.6
> gst-plugins-ugly - 0.10.16-r11.1.6 
> running on openembedded linux with kernel version 2.6.33
> 
> We are decoding audio only streams. This is a concern as reference was
> made to gapless playback for the latest releases:
> 
> "Release notes for GStreamer Base Plug-ins?0.10.31 "Dance Like It's
> 1982"
> 
> Bugs fixed in this release
> 
>      * 628028 : [uridecodebin] Don't enable progressive downloading
> for live streams
>      * 623846 : typefinding: add support for " enhanced ac3 " (eac3)
>      * 602437 : [playbin2] [gapless] Completely broken when switching
> between files with audio/video only
> " 
> 
> The above refers directly to playbin2, but is there anything related
> when using decodebin2 and queue2 as I would assume playbin2 would use
> these also.
> 
> At present we have definite breaks with clicks between tracks.

The gapless playback is handled inside playbin2/playsink only. You can't
do it with only decodebin2 unless you're building the same logic around
it.

Note however, that short before 0.10.31 release the main fix for bug
#602437 was disabled again because it caused problems in other, standard
scenarios that worked before. As such gapless playback is still broken
in almost all cases (unless you're playing audio-only streams only).


As you're decoding audio-only streams you might want to take a look at
rhythmbox's gapless playback too. For audio-only streams there's a much
easier solution for gapless playback: you would simply write an element
that converts the different audio streams that it gets into one,
continous stream and then passes it to the sink. Just make sure that you
*never* change the sinks (changing the complete pipeline state will do
that) state to something below PLAYING, otherwise you'll hear gaps
again.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20101219/9c3a8454/attachment.pgp>


More information about the gstreamer-devel mailing list