I have a filter graph with my own file source filter which has a CSourceStream derived output pin. This feeds the MPEG demux filter which has 2 output pins which are both eventually connected to VMR9s. This works OK except that the last sample from one of the MPEG PIDs does not get renderered. At first I thought there may be a problem with the VMR, or the syncing of the two VMRs, but it seems that a filter connected to the demux's corresponding output pin does not receive the final sample. But I found that if I insert a breakpoint into my source filter so that it stopped on the breakpoint with every FillBuffer call, and keep pressing Continue in the debugger then the final sample WAS delivered OK. This makes me wonder whether there is some timing/race problem. When FillBuffer returns S_FALSE (indicating end of file reached), could the graph be getting flushed of samples before the final sample was getting fully processed through to the end of the graph? Could there be something additional I need to do in my source filter to allow the final sample to be processed?
On Sep 19, 1:18 am, "Richard" wrote: > I have a filter graph with my own file source filter which has a > CSourceStream derived output pin. This feeds the MPEG demux filter which has > 2 output pins which are both eventually connected to VMR9s. > > This works OK except that the last sample from one of the MPEG PIDs does not > get renderered. At first I thought there may be a problem with the VMR, or > the syncing of the two VMRs, but it seems that a filter connected to the > demux's corresponding output pin does not receive the final sample. > > But I found that if I insert a breakpoint into my source filter so that it > stopped on the breakpoint with every FillBuffer call, and keep pressing > Continue in the debugger then the final sample WAS delivered OK. This makes > me wonder whether there is some timing/race problem. When FillBuffer returns > S_FALSE (indicating end of file reached), could the graph be getting flushed > of samples before the final sample was getting fully processed through to > the end of the graph? > > Could there be something additional I need to do in my source filter to > allow the final sample to be processed? Do you send an EndOfStream? Also due to the compression mechanism, maybe the decompressor is expecting more frames to come to be able to render this one....
"Michel Roujansky - Senior developer, Starfish Technologies Ltd" wrote in message news:49cd015a-e131-4353-9d88- > Do you send an EndOfStream? > Also due to the compression mechanism, maybe the decompressor is > expecting more frames to come to be able to render this one.... The base class handles the EndOfStream. After a lot of investigating it looks like a bug in the demux filter.