[gst-devel] Re: [gst-cvs] wingo gstreamer: gstreamer/gst/elements/

in7y118 at public.uni-hamburg.de in7y118 at public.uni-hamburg.de
Thu Oct 2 05:53:05 CEST 2003


_An_element_should_never_rely_on_stuff_not_belonging_to_it_.
I'm going to repeat that:
_An_element_should_never_rely_on_stuff_not_belonging_to_it_.

That means: You do not query anything anyhow into the pipeline and rely on it. 
Never ever.

Case in point:
v4lsrc ! encoder ! asfmux ! identity ! filesink
Iterate once.
replace filesink with httpsink
go on iterating
Prefectly legal and not spottable by asfmux. GStreamer is based on the very 
concept that the pipeline can be altered any way imaginable.

Oh and before you try to invent ways to make the above example possible:
{v4lsrc ! encoder ! asfmux ! queue } ! identity ! tee ! { queue ! filesink } { 
tee0. ! queue ! httpsink } { tee0. ! queue ! udpsink } { tee0. ! queue ! 
my_very_funky_not_yet_invented_sink_with_special_features }
Streaming or local mode?

Really, that is a case for a property. Properties are very GStreamer'ish for 
the purpose they are used: Specifying different behaviour of an element that 
can and/or should not be inside the pipeline and are interesting to the 
application. Like the bitrate of an encoder, wether to use id3v1 or id3v2, 
audio output device, stuff like that. They definitely do not suck.

Benjamin


PS: I can't stress this enough. It is really important for the concept of 
GStreamer: The whole pipeline might be different half an iteration from now, 
never rely on anything outside the element.
That's the beauty and the strength of GStreamer in fact.
And it's a heavy burden.
Stuff like queries and so on are application level possibilities to get rough 
estimates about what is happening inside the pipeline. No element should ever 
rely on that though.


Quoting Ronald Bultje <rbultje at ronald.bitfreak.net>:

> Hi Benjamin,
> 
> On Wed, 2003-10-01 at 16:21, in7y118 at public.uni-hamburg.de wrote:
> > That sounds an awful lot like you want a property for that. Especially
> because 
> > you might want to save streamable ASFs to disk or write seekable ASFs to
> http.
> 
> You can't write seekable ASFs to HTTP directly. You need to store it to
> disk first, and then stream the result over HTTP.
> 
> v4lsrc ! encoder ! asfmux ! filesink
> filesrc ! httpsink
> 
> Either way, a property is nice, but it's not gstreamer'ish. Properties
> suck. Event masks are meant for exactly this!
> 
> Ronald
> 
> -- 
> Ronald Bultje <rbultje at ronald.bitfreak.net>
> Linux Video/Multimedia developer
> 
> 
> 
> -------------------------------------------------------
> This sf.net email is sponsored by:ThinkGeek
> Welcome to geek heaven.
> http://thinkgeek.com/sf
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel
> 






More information about the gstreamer-devel mailing list