Greetings,

I am following the FAQ example and have modified 'testMPEG4VideoStreamer' and 'DeviceSource.cpp' to take framed input from my MPEG4 video encoder, but I am having trouble getting it working properly.

I have first verified my video data by writing it out to a file then streaming it from that file to VLC via the unmodified testMPEG4VideoStreamer. This works just fine. When I modify the program to take my live framed source, at issue is doGetNextFrame() does not get called fast enough to keep up with my video data. Some possible issues:

- I run liveMedia in one thread, and the video source FIFO in another. When I call deliverFrame() it is from the FIFO thread, not the liveMedia thread. Is this a no-no?

- My card doesn't support more than 22 frame buffers. Once these fill up dropped frames are to be expected. Will I have to add intermediate buffering? Does liveMedia take some time to digest the initial start of the stream, or can I expect deliverFrame() to be called with low latency at most times?

The cadence of video frame enqueues (denoted by +) to liveMedia doGetNextFrames (denoted by -) looks something like this:

-+-+++++++++++++++++++++++-+-+-+-+-+-+-+-+-----------------------+-+++++++++++++++++++++++-----------------------+++++++++++++++++++++++

liveMedia accepts the first two frames right away, then my FIFO fills up, then in about 1 second intervals doGetNextFrame() is called 8 times, then a burst of doGetNextFrame() as the FIFO is emptied at once, followed by the FIFO filling up again.

Some info: - In my deliverFrame() I don't set fDurationInMicroseconds, as this is a live feed. - I set the presentation time like so: gettimeofday(&fPresentationTime, NULL); - I connect my videoSource via the MPEG4VideoStreamDiscreteFramer to the videoSink

Any ideas?

Thanks,

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

Reply via email to