[gst-devel] Rhythmbox+Pause+GstStaticPadTemplate & GstAudioClock

Lennart Poettering mztfgernzre at 0pointer.de
Fri Sep 10 18:06:06 CEST 2004


Hi!

I am currently working on a polypaudio sound server sink for
gstreamer. It already works quite fine with gst-launch, but has its
issues with rhythmbox: everything seems to work except one thing: when
clicking on "pause" in the GUI while a stream is being played the sink
gets destroyed. When resuming the sink is created again. However, this
time the capabilities are fixed to the worst values possible. For the
pads I specified the follwoign static caps:

GST_STATIC_CAPS(
            "audio/x-raw-int, "
            "endianness = (int) { LITTLE_ENDIAN , BIG_ENDIAN  }, "
            "signed = (boolean) TRUE, "
            "width = (int) 16, "
            "depth = (int) 16, "
            "rate = (int) [ 1000, 192000 ], "
            "channels = (int) [ 1, 16 ]"
)

On resume gstreamer selects 16bit at 1000 Hz with a single channel,
regardless of the qualitiy of the file played! When fixing the static
capabilities to 44100Hz and 2 channels, everything works fine. The
sink is chain based an uses its own link function.

See 
http://0pointer.de/cgi-bin/viewcvs.cgi/trunk/src/polypsink.c?rev=3&root=gst-polyp&view=auto
for the sources

Since i suspected a memory allocation error or something like this
(allthough valgrind couldn't find anything) i commented out most of
the code and thus created something like a
nullsink:

http://0pointer.de/cgi-bin/viewcvs.cgi/trunk/src/nullsink.c?rev=3&root=gst-polyp&view=auto

The problem stays the same. 

This is gstreamer 0.8.5 from Debian.

BTW: initially I used the Hz range 1 .. 96000. This triggered a horrible bug
in libaudioscaler.so: it tried to allocate -7 bytes via malloc. Funny.

Another question: why doesn't rhythmbox just pause the pipeline when
the user clicks on pause in the GUI? why is it destroyed completely?

I'd like to support a clock for the polypaudio sink. The OSS and
esound drivers use a class GstAudioClock for that. Unfortunately
there's no documentation for that class and it isn't provided in
debian's libstreamer0.8-dev package. Is there any reason for that?
Should I create a GstClock subclass of my own and don't make use of
GstAudioClock?

Thank you,
      Lennart

-- 
name { Lennart Poettering } loc { Hamburg - Germany }
mail { mzft (at) 0pointer (dot) de } gpg { 1A015CC4 }  
www { http://0pointer.de/lennart/ } icq# { 11060553 }




More information about the gstreamer-devel mailing list