Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

GMFBridge EOS Problem

11 views
Skip to first unread message

Cyborg

unread,
Dec 15, 2009, 12:02:20 PM12/15/09
to
I'm having a problem with EOS while using the bridge. I have an input
graph that consists of a source filter, parser/demux/decoder filter,
and then the bridge sink filter. The output graph has the bridge
source filter followed by the DV encoder, avi mux and file writer
filters.

The problem occurs when the parser/demux/decoder filter detects the
EOS (on a worker thread) and calls DeliverEndOfStream on both the
audio and video output pins. Only one of the bridge sink's input pins
gets the EndOfStream method called. This results in the
BridgeSink::OnEOS method only getting called once where the first EOS
is discarded. OnEOS does not get called a second time to invoke the
BridgeController's OnEndOfSegment method.

The parser/demux/decoder filter uses the COutputQueue class on it's
output pins and each output queue does queue a EOS_PACKET. I'm not
sure why BridgeSinkInput::EndOfStream is called on only one of the
bridge sink filter's input pins. It appears that one of the output
queue instances on the upstream filter's pins is not processing an
EOS_PACKET.

Any help is greatly appreciated...

Geraint Davies

unread,
Dec 16, 2009, 12:23:09 PM12/16/09
to

I guess that the EOS has not reached the sink pin because there is a
queue of buffers waiting. These buffers are being held up by the mux,
waiting for more data from the other stream, which is at EOS. In a
single graph, the first EOS would reach the mux and tell it to finish
off without waiting for more data to balance the streams.

Here, I think you need to increase the buffering at the bridge so that
you can get all your data into buffers downstream of the bridge, even
with a disparity between the streams.

G

0 new messages