[gst-devel] changes to adder

Andy Wingo wingo at pobox.com
Mon Sep 9 11:31:01 CEST 2002


On Mon, 09 Sep 2002, Thomas Vander Stichele wrote:

> Hi,
> 
> I've been asked to explain my commits to adder, so here's the simple 
> explanation.

Thanks, and sorry for the monday morning crabbiness ;) -- It's just that
I have thought a lot about adder, and worked on it quite a bit in the
past, although I know you originally wrote it. It is a crucial part of
audio mixing, so anything that affects it needs a little discussing,
that's all.

> I think that adder should always send data, regardless of the fact if it 
> has any input to it.  If it doesn't, it should send out zeroes, of course.
> In my head, gst-launch adder ! osssrc should work, useless though it is in 
                                 osssink, of course (typo)
> practical life.  Also, the same should work in gst-editor.

Right, these should work. I thought I had adder ! osssink working, but
if not that needed to be fixed, somehow...

> The reason I think this should work is that there are apps that will use 
> adder, and connect and disconnect inputs to it as necessary.  Adder 
> shouldn't stop working when all inputs are gone, and shouldn't wait to 
> start working when none of it's inputs are connected.

> A prerequisite for that launch line to work is a way to set audio format 
> properties on the cmd line - I guess this is what Andy objects to, though 
> I'm not sure.

Well, let's see. The real requirement is that adder ! osssink work. If
that can be done without having properties, that would be nice (ie,
adder defaults to S16/native endian stereo 44.1 kHz or something). However,
consider the case that you want to determine the exact format that adder
will be outputting: do you add a float/int property? width, depth, rate?
channels? Well, that's quite a bit, and one might imagine a case in
which you would want to set properties for every potential src-sink
connection.

There is a defined method to set specific media properties on a
connection, gst_{pad,element}_connect_filtered (). This will provide for
the specific determining of media properties on a connection. There's no
need to be able to set the rate on the adder itself, imho -- that is far
more flexibly done with the _filtered connection routines.

Now, wrt adder ! osssink. Just put in a default setup, and have adder do
a set_caps on the src pad in READY->PAUSED if no sink pad is connected.
Much easier than mucking about trying to sync properties with caps,
which is a tricky piece of code. Also, there's a minimal chance of
breaking the adder with this simple approach.

Thoughts?

wingo.




More information about the gstreamer-devel mailing list