This is to investigate various odd behavior of gapless play with URIs with different versions of gstreamer. The relevant bugs are
-
gstreamer-0.1: "playbin2" leaks threads playing gapless from network URIs https://bugzilla.gnome.org/show_bug.cgi?id=698750
-
gstreamer-1.0: Gapless playing using 'about-to-finish' callback fails with HTTP-URIs https://bugzilla.gnome.org/show_bug.cgi?id=698306
To reproduce:
Build both both versions with
make
(This expects pkg-config to work for gstreamer-0.10 and gstreamer-1.0)
Run a webserver that serves the test sound file.
Webfsd is a lightweight solution (sudo aptitude install webfs). There is a file in the sounds/ directory, let's serve that.
webfsd -r sounds/ -p 9999
Run the binary
./test-loop-0.1 http://localhost:9999/test-sound.ogg
In another shell, watch how the number of threads increase over time
$ while : ; do ps -eLf | grep test-loop | grep -v grep | wc -l ; sleep 1 ; done
.. and after some amount of repeats (~30-100) the whole process just stops working, with many threads stuck.
Running the 1.0 binary:
./test-loop-1.0 http://localhost:9999/test-sound.ogg
This only plays the URI once and then goes into an endless loop.
Same thing works fine with both versions, if the input is a file
./test-loop-0.1 file://`pwd`/sounds/test-sound.ogg
./test-loop-1.0 file://`pwd`/sounds/test-sound.ogg
(works means: plays the same sound indefinetly, and only uses a limited amount of threads).
Tested on Ubuntu 12.04/precise. The 0.10 gstreamer version comes natively with that Ubuntu version, the 1.0.6 version from
deb http://ppa.launchpad.net/gstreamer-developers/ppa/ubuntu precise main