Thank you,
I added a static hook to schedule another *doGetNextFrame()* call and it's
working as expected. Except for one thing which seems to be an issue with my
usage of the TaskScheduler. I added a ByteStreamFileSource to the output video
and the funny thing is: scheduled events from the ByteStreamFileSource
immediately stop being executed when the first data is available in MySource.
These are different objects and in in MySource I do the following:
every time data available:
nextTask() =
envir().taskScheduler().scheduleDelayedTask(0,(TaskFunc*)FramedSource::afterGetting,
this);
every time no data available:
nextTask() =
envir().taskScheduler().scheduleDelayedTask(100,(TaskFunc*)MySource::doGetNextFrameStatic,
this);
and in the ByteStreamFileSource there is also this frequent call:
nextTask() =
envir().taskScheduler().scheduleDelayedTask(0,(TaskFunc*)FramedSource::afterGetting,
this);
Both sources do work alone and there is nothing wrong with the FileSource, the
problems occurs only when two video sources being read in parallel. When I
start my application usually data in MySource isn't instantly available so
every time there is *no data* -> so it schedules doGetNextFrameStatic(). At
the same time data from the ByteFileSource is being read. After it has read
it's frame, it schedules the next frame to *FramedSource::afterGetting(this)*
which is being called. The problems occurs the moment data in MySource is
available and this object also schedules a call to
*FramedSource::afterGetting(this)* -- it seams it somehow overwrites the call
from ByteStreamFileSource to read the next frame; of course the function
pointer is probably the same but the *this* parameter is different and
*nextTask()* should point to a different TaskToken since they are both
different objects.
What is going wrong here? Do I have to handle things differently when adding
multiple video streams or where lies my mistake?
Thank you very much,
HW
----- Original Message ----
From: Ross Finlayson <[EMAIL PROTECTED]>
To: LIVE555 Streaming Media - development & use <[EMAIL PROTECTED]>
Sent: Thursday, November 13, 2008 7:13:20 PM
Subject: Re: [Live-devel] doGetNextFrame() timing in mpeg2ts context
> Is there maybe a way to directly schedule a call to *doGetNextFrame()* in the
> event loop since this is not a static function or what would be the
> alternative
The alternative is to write a static member function that then calls
"doGetNextFrame()", and have "scheduleDelayedTask()" arrange to call the static
member function. There are several examples of this in the code already.
Also, as I noted last time, you should not call "usleep(10)"; instead, pass 10
as the (delay) parameter to "scheduleDelayedTask()".
_______________________________________________
live-devel mailing list
[email protected]
http://lists.live555.com/mailman/listinfo/live-devel