> Could it be that calling deliverFrame() multiple times might be wrong?

Yes, that's wrong.  Your "doGetNextFrame()" function should deliver one, and 
only one, H.264 NAL unit (note, not a H.264 'frame') each time it's called.  
Note that if - at the time that "doGetNextFrame()" is called - no H.264 NAL 
unit is currently available, your "doGetNextFrame()" implementation should 
return immediately, and your "deliverFrame()" function must not get called 
again until later, when a new H.264 NAL unit becomes available.  I suggest 
reviewing the "DeviceSource" demo code, and note how it uses an 'event trigger' 
(signaled from a separate thread) to do this.

Also, because you're delivering discrete H.264 NAL units (i.e., one at a time), 
your "OnDemandServerMediaSubclass::createNewStreamSource()" implementation 
should be feeding your input source object into a 
"H264VideoStreamDiscreteFramer", not a "H264VideoStreamFramer".  (Note that, in 
this case, the H.264 NAL units from your input source must *not* begin with a 
'start code' (0x00 0x00 0x00 0x01).)

Finally, because you're delivering from a live source (rather than a 
prerecorded source like a file), you don't need to set 
"fDurationInMicroseconds".

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

Reply via email to