[gst-devel] how do queries get processed by a pipeline?

Daniel Lenski dlenski at gmail.com
Sat Sep 29 18:35:44 CEST 2007

Anybody? ;-D
Or maybe somebody can point me to another source of information on how
GStreamer handles queries that involve cooperation among elements?


On 9/27/07, Daniel Lenski <dlenski at gmail.com> wrote:
> Hi all,
> I'm working on a plugin, and trying to understand how GStreamer
> processes queries on a pipeline.  For example, if I have this
> pipeline:
> gnomevfssrc location=http://shoutcast/stream ! mad ! fakesink
> ... it will respond to position queries, in both GST_FORMAT_TIME and
> GST_FORMAT_BYTES, but it won't respond to duration queries, since it
> can't determine the stream duration.
> However, if I have this other pipeline:
> filesrc location=/path/song.mp3 ! mad ! fakesink
> ... it will respond to *both* position and duration queries.  One
> thing seems magical to me: how does a duration query in time units
> work???  It must require cooperation between both the filesrc and the
> mad element, since:
> * only the filesrc element knows the file length in bytes
> * only the mad element knows the bitrate
> So how does such a query work?  I've tried using
> gst_pad_set_query_function on pads and watching the queries that come
> through, and haven't figured out anything very useful from that.
> The reason I'm interested in this is because I've made an improved
> version of the Last.FM plugin (original here:
> http://base-art.net/Articles/82/).  The Last.FM radio service
> basically consists of MP3 streams, but it includes out-of-stream
> metadata on the duration of each individual tracks.  With my code I
> make a pipeline like:
> lastfmsrc ! mad ! audioconvert ! autoaudiosink
> Obviously, the mad element can't determine the stream duration, but
> the lastfmsrc CAN.  On the other hand, the mad element CAN determine
> the stream position in time units.  But I don't know how to tell the
> mad element to reset its position to zero when the stream changes to a
> new track.  So I need to understand how to make the queries work
> right.  Thanks for any advice!
> Dan
> PS- The gstreamer design documentation seems to be down.  But I found
> this (very old) document on query handling:
>  Anyone know if there's a newer version?

More information about the gstreamer-devel mailing list