[Live-devel] Filter chain question - chain seems to stall

Ross Finlayson finlayson at live555.com
Tue Sep 9 14:15:51 PDT 2008


>We wanted to check our understanding of the normal source-to-sink 
>chain processing. The network side of our chain depends on being 
>called from its sink-ward filter to get started, but afterwards 
>continues on its own to get RTP packets from the network.

Not really.  It is *always* the sink (i.e., at the end of the chain) 
that initiates the data flow for each piece of data.  It (in its 
"continuePlaying()" virtual function) will call "getNextFrame()" on 
its upstream source object.  Its 'after getting' function (which was 
passed in the call to "getNextFrame()") will get called after it has 
received its data from upstream.  This function will usually then 
call "continuePlaying()" (and thus "getNextFrame()") again.

For 'filter' objects, things work similarly.  Its "doGetNextFrame()" 
virtual function gets called (as a result of its downstream object 
calling "getNextFrame()").  This function will usually call 
"getNextFrame()" on the upstream object.  Its 'after getting' 
function (which was passed in the call to "getNextFrame()") will get 
called after it has received its data from upstream.  This function 
will usually call "FramedSource::afterGetting(this)" (ugly, I know) 
to tell the downstream object (filter or sink) that new data is 
available for it.

You should be able to check each of these things, to see where/why 
the chain is stalling.


	Ross Finlayson
	Live Networks, Inc. (LIVE555.COM)
	<http://www.live555.com/>



More information about the live-devel mailing list