[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