[Live-devel] Live555 EventLoop Crash

David J Myers david.myers at panogenics.com
Wed Dec 21 07:22:14 PST 2011


Hi Ross,

>> On further examination of my encoded frame data, it looks like an I-frame
consists of 3 NAL units, each preceded by 00 00 00 01, the first NALU is 17
bytes long, the second NALU is 9 bytes long, and the 3rd NALU is the rest of
the frame size. Each P-frame is just one NALU.

>> My code is now using H264VideoStreamDiscreteFramer and sending each NAL
unit one by one. So each I-Frame is sent with 3 calls to afterGetting(this).

 

>You can do this only if each call to "afterGetting(this)" corresponds to
exactly one earlier call to "doGetNextFrame()".  I.e., you *must not* call
"afterGetting(this)" more than once for each call to "doGetNextFrame()".

 

>I.e, if you want to deliver these three NAL units - one at a time - to the
downstream object (in this case, a "H264VideoStreamDiscreteFramer"), then
you must really do so 'one at a time'.  Each call to "doGetNextFrame()" must
be followed by one (and only one) data delivery, followed by a call to
"FramedSource::afterGetting()".

 

>If you do this properly, though, then this should produce a proper RTSP/RTP
stream.  (However, I suggest that you test this first with "openRTSP",
rather than VLC.)

 

Ok, understood. How do I get these extra calls to doGetNextFrame()?
Currently I'm getting one call to doGetNextFrame(), but I'm then sending all
three NAL units for the frame which, as you say, doesn't produce a decent
stream. - David 

 

 

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20111221/f8fd8a8d/attachment.html>


More information about the live-devel mailing list