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/ _______________________________________________ live-devel mailing list live-devel@lists.live555.com http://lists.live555.com/mailman/listinfo/live-devel