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

Reply via email to