This is the exact stream format I get from my encoders
Given nal type 7 = SPS,8 = PPS, 5 = IDR slices, and 1 = Diff frames
I see [7][8][5][1][1][1][1][1]  of 6fps streams less than Mp
I see [7][8][5][5][5][1][1][1][1][1] on 6ms multimega-pixel streams.

Some streams to NOT have the  SPS and PPS in the stream so I datamine them from 
the SDP packet and remember them for insertion into the stream. This makes 
libavcodec happy. I always send the encoder a SPS+PPS + IDRSlice  as an 
aggregated frame (00 00 01 in front of each, it need that delimetter)

I have a filter that does this aggregation for me.


From: live-devel-boun...@ns.live555.com 
[mailto:live-devel-boun...@ns.live555.com] On Behalf Of David J Myers
Sent: Wednesday, December 21, 2011 9:22 AM
To: live-de...@ns.live555.com
Subject: Re: [Live-devel] Live555 EventLoop Crash

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



________________________________
No virus found in this message.
Checked by AVG - www.avg.com<http://www.avg.com>
Version: 2012.0.1890 / Virus Database: 2109/4694 - Release Date: 12/21/11
_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to