If I did as you said. VLC always said the input buffer is empty.





At 2013-10-26 12:05:12,"Ross Finlayson" <finlay...@live555.com> wrote:

    nextTask() = 
envir().taskScheduler().scheduleDelayedTask(20000,(TaskFunc*)FramedSource::afterGetting,
 this);

[...]

   nextTask() = 
envir().taskScheduler().scheduleDelayedTask(8000,(TaskFunc*)FramedSource::afterGetting,
 this);



This is wrong.  Once you've delivered a frame of data (using your 
"GetNextAudioFrame()"/"GetNextVideoFrame()" calls) to the downstream object, 
you shouldn't be delaying at all before you complete delivery of the object.  
Instead, just call
FramedSource::afterGetting(this):
directly, in each case.


Note, however, that you call this ***only if*** you were able to successfully 
deliver a frame of data - i.e., if the acquired frame size was >0.  If, 
instead, you were not able to deliver a frame of data (i.e., the acquired frame 
size was 0), then you must arrange for the delivery (and the call to 
"FramedSource::afterGetting(this):") to take place later, when a frame of data 
becomes available.


Once again, I suggest using the "DeviceSource" code as a model.



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