[Live-devel] Need Help with test*Streamer From a Live Source
Chris
cjc3 at verizon.net
Sun Dec 27 23:00:59 PST 2009
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
More information about the live-devel
mailing list