> Right now H264or5VideoStreamParser can return 0 from parse() without
> requesting more data from input source which leads to frame
> delivery process becomes stalled (as 
> MPEGVideoStreamFramer::continueReadProcessing()
> does not call afterGetting() in this case either).
> This can happen for several reasons:
>  1. Simply if input stream contains 2 or more consecutive start codes (AFAIK 
> this
> should never happen in valid byte stream, but parser should not break if
> it happens).

OK, fair enough.


>  2. As a result of following sequence of events:
>    a. Parser reads all bytes prior to next start code, then gets
> interrupted because there is no more data available.
>    b. stopGettingFrames() gets called on framer and next frame is requested
> via getNextFrame(). This discards parsed data from previous frame and
> parser now assumes that it is reading new frame and thus already read
> start code.
>    c. Parser receives next bytes from input source which are the start
> code.
> 
> This patch moves start code parsing (and discarding) to the beginning of
> parsing current frame.

Right now I don’t see any justification for making just a drastic rearrangement 
of the existing code, which works well in almost all practical situations.  The 
situation (2.) that you describe - where stream reading resumes after a call to 
“stopGettingFrames()” - can be handled simply by defining the 
“doStopGettingFrames()” virtual function - in “H264or5VideoStreamFramer” - to 
call “flushInput()” in the parser, which will set the “fHaveSeenFirstStartCode” 
variable to False.  In that case, the right thing should happen if reading 
starts again later.

If I were to make just that change, then I don’t see the need to change 
anything else, except perhaps to handle the case of consecutive start codes 
(which isn’t a high priority, because - as you note - it shouldn’t happen in 
any valid byte stream).  But in any case that could be handled with just a 
minor change to the existing code.


Ross Finlayson
Live Networks, Inc.
http://www.live555.com/

_______________________________________________
live-devel mailing list
[email protected]
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to