As a second thought, I guess I just do a plain "return" in doGetNextFrame if there is no data ..

.. and then do as the faq says, i.e. arrange FramedSource::afterGetting(this) call once there _is_ data, right?

Sorry for the spam!

On 15.09.2016 17:15, sampsa wrote:
Hi,

I have a custom source, based on the "MyByteStreamMemoryBufferSource"

Frames appear to this source most of the time in frame "bursts" .. first no frames, then suddenly a lots of them

In pseudocode:
----------------
// Sources/Filters:
bytesource =MyByteStreamMemoryBufferSource::createNew(env,(uint8_t*)(buf),len,False,0,0);
videoSource  =H264VideoStreamDiscreteFramer::createNew(env, bytesource);
// connection: bytesource -> videoSource [filter]

// Sinks:
videoSink    =H264VideoRTPSink::createNew(env, rtpGroupsock, 96);

videoSink->startPlaying(*(videoSource), afterPlaying, [pars to afterPlaying]);
// connection: videSource [filter] -> videoSink
---------------

So, after startPlaying, "videoSink" starts pinging videoSource and running bytesource's "doGetNextFrame".

In the case data has arrived to bytesource, I have to call in bytesource's "doGetNextFrame" method:

FramedSource::afterGetting(this);

However, as videosink pings bytesource's "doGetNextFrame" constantly, there are instants when data has not yet arrived to bytesource's memory buffer.
What am I supposed to do in such case..?

* Of course, I can't do a straight "return" from "doGetNextFrame" .. that would break up the re-scheduling.
* Something along the lines
envir().taskScheduler().scheduleDelayedTask(0,(TaskFunc*)FramedSource::afterGetting, this); .. i.e. scheduling via the event loop, maybe ? (but there is still a problem - see the next point) * Actually, I'd prefer not to call FramedSource::afterGetting at all, because there is no data, i.e. the fFrameSize=0 (!) * .. and blocking the call to FramedSource::afterGetting(this) until data has arrive to bytesource's memory buffer blocks the live555 event loop

What is the sane/standard way of doing this? Or maybe I have misunderstood something fundamental ..


Regards,

Sampsa


_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to