(First, note that if you are receiving the mailing list as a ‘digest’, you 
should fix the “Subject:” line of your emails when you compose a reply.)


>> Why are you delaying the call to "FramedSource::afterGetting(this)" by 50 ms?
> 
> 
> But why not?

Because it’s putting the delay in the wrong place - i.e., after the data has 
been delivered to the downstream object, but before a RTP packet has been sent. 
 In other words, you’re unnecessarily delaying the sending of the first (and 
subsequent) RTP packets.

If you want to introduce a delay between sending RTP packets, then the right 
way to do this is to set the “fDurationInMicroseconds” member variable when you 
deliver the frame data.  This will cause the RTP packet to get sent 
immediately, but will delay the subsequent call to “doGetNextFrame()” (to 
request the next frame of data).


> If, e.g., my source has a 1fps frame rate, why not wait 900ms avoid a 
> busy-wait?

If your source has a 1 fps frame rate, then you *may* set 
“fDurationInMicroseconds” to 1000000 (i.e., 1 million) each time you deliver a 
frame’s data (i.e., each time you copy data to the pointer pointed to by 
“fTo”).  *Then*, you notify the downstream object that the frame delivery has 
been done, by calling
        FramedSource::afterGetting(this);
i.e., without any delay.

However, because you are streaming from a ‘live’ source, you don’t really need 
to set “fDurationInMicroseconds” at all (in which case it will be left at its 
default value of 0).  But your use of the term “busy-wait” suggests that you 
are thinking about this code wrong - i.e., you think that you need to 
periodically ‘poll’ your encoder for data.  This is wrong.  LIVE555-based 
applications are event driven.  The right way to get data from an external 
encoder is to make the arrival of data an asynchronous ‘event’ - either by 
reading from a socket (if the encoder is an open file or pipe), or by 
encapsulating your encoder in a separate thread that calls “triggerEvent()” 
(the only LIVE555 function that can be called from an external thread) when new 
encoded data becomes available.  I suggest that you read 
“liveMedia/DeviceSource.cpp” once again - noting in particular the comments in 
that file.


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