[Live-devel] Handling timeout in getNextFrame

Zaphod Beeblebrox beeblebrox at sighthound.com
Fri May 1 10:41:17 PDT 2015


Okay, let me try being more specific:




1) The application streams RTSP H264 video. 

2) The source is a stock source created by the stack while initializing H264 RTP stream for RTSP session. Not subclassing for it at all. A very rudimentary “do-nothing” sink is subclassed from MediaSink. The only method the app ever calls on it is startPlaying().

3) The application is using pull, rather than push, model, so after calling


            videoSubsession->readSource()->getNextFrame(

                                                    data,

                                                    size,

                                                    OnData,

                                                    this,

                                                    OnClose,

                                                    this );




it blocks using the following code





        TaskScheduler& scheduler = envir().taskScheduler();




        eventLoopWatchVariable = 0;


        taskRunning = 1;

        if( timeout > 0 ) {

            /* Create a task that will be called if we wait more than timeout ms */

            timeoutTask = scheduler.scheduleDelayedTask( timeout*1000,

                                                        OnTimeout,

                                                        this );

        }

        scheduler.doEventLoop(&eventLoopWatchVariable);

        if( timeout > 0 ) {

            scheduler.unscheduleDelayedTask( timeoutTask );

        }




OnTimeout callback, if it occurs, then simply sets eventLoopWatchVariable (and a variable to determine a timeout had occurred).




4) The timeout scenario seems to occur, when running against a stock live555 server, which loops on a movie clip. In between the clips, depending on the timing of session termination, a timeout may occur, followed by another attempt to getNextFrame.




Hope this makes things clearer. Thanks!









—
Sent from Mailbox

On Fri, May 1, 2015 at 1:24 PM, Ross Finlayson <finlayson at live555.com>
wrote:

>> Have been seeing some errors, where if a timeout occurs in getNextFrame, the next getNextFrame call will result in an abort() call (due to fIsCurrentlyAwaitingData being set).
> What object is this?  Is this a subclass of “FramedSource” that you have written yourself - e.g., to deliver data from a device?  What are you trying to do?  And what is causing this ‘timeout’?
> Please, everybody - this is the second time today that we’ve seen a vague question with very few details about exactly how the “LIVE555 Streaming Media” code is being used.  Please remember that this code is used by thousands of developers around the world, for a variety of different purposes - for developing media player clients, media servers (including network cameras), proxy servers, and probably many other ways as well.
> If you ask a question about the “LIVE555 Streaming Media” code, please try to be specific about exactly what you’re trying to use it for, and where you might be having a problem.
> Ross Finlayson
> Live Networks, Inc.
> http://www.live555.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20150501/a6c37310/attachment.html>


More information about the live-devel mailing list