We are very interested to retrieve raw data from IP cameras (MJPEG,
MPEG4, H.264) via RTSP and using your Live 555.
In order to do it we implemented the Demux class which inherit from
the class FramedSource.
Inside de Demux class we have the AfterReadingFrame which is call
each time a frame is available.
Definition of AfterReadingFrame.
static void AfterReadingFrame(void* clientData, unsigned
frameSize,unsigned /*numTruncatedBytes*/,struct timeval
presentationTime,unsigned /*durationInMicroseconds*/);
The function AfterReadingFrame is passed to the getNextFrame as seen below.
subsession->readSource()->getNextFrame(m_FrameBuffer,MAX_RTP_FRAME_SIZE,RTSP.AfterReadingFrame,subsession,onSourceClosure,subsession);
Inside of the AfterReadingFrame function we are accessing to the
frame buffer, variable fTo and looking for the frame size from the
variable fFrameSize
No, this is wrong. The class variables "fTo" and "fFrameSize" are
used only if you are implementing the "doGetNextFrame()" virtual
function - i.e., only if you are implementing a media source (that
delivers data to some downstream object). (If you don't plan to
implement a media source, then you should be inherting from
"MediaSink", not "FramedSource".)
Instead, things are quite simple - the actual parameters to your
"AfterReadingFrame()" function contain all of the information that
you need:
- "clientData" will be "subsession" (i.e., the
"afterGettingClientData" parameter that you passed to the call to
"getNextFrame()"
- "frameSize" will be the size of the delivered frame, which will
have *already* been delivered into "m_FrameBuffer" (the "to"
parameter that you passed to the call to "getNextFrame()"
- "presentationTime" will be the presentation time of the delivered
frame of data.
In other words, in your "AfterReadingFrame()" function, you already
have a delivered frame of data. It's in "m_FrameBuffer", and is of
length "frameSize", and has presentation time "presentationTime".
--
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