[Live-devel] H264 StreamParser.cpp thrown exception

Ross Finlayson finlayson at live555.com
Wed Jul 20 19:45:33 PDT 2011


>I just noticed that my forked h264 process is dying on startup due to a
>thrown integer exception in StreamParser.cpp NO_MORE_BUFFERED_INPUT.
>Looking into H264VideoStreamParser::parse() method as an example I see
>that this is caught and treated as non fatal.

The "StreamParser" code is somewhat of a 'black art'.  The C++ 
exception occurs if parsing code hits the end of its input buffer, 
and has to read new input (asynchronously, of course) from its data 
source.  The parsing code (for example, the reimplementation of the 
"parse()" virtual function in "H264VideoStreamFramer.cpp") needs to 
catch this exception, and return 0 (as the result of "parse()") if 
this occurs.


>I get encoded h264 data from another process and do a little parsing of
>the raw stream before copying it to the fTo pointer in a method called
>VideoOpenFileSource::readFromFile(). There is also a little state
>machine that ensures an SPS and PPS are sent at the begining of each
>stream within this class.

If you are delivering discrete H.264 NAL units - i.e., one-at-a-time 
- then you should probably be feeding your input data into a 
"H264VideoStreamDiscreteFramer" (rather than into a 
"H264VideoStreamFramer").  In any case, I'm not convinced that you 
need to be using the "StreamParser"-derived code yourself, in your 
own application.
-- 

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


More information about the live-devel mailing list