Ross, Thanks for your answer.
I tried it and I still get a stack overflow. 1) I had to modify the buffer size in liveMedia\MPEG2TransportStreamFromESSource.cpp(198) due to the following error message MultiFramedRTPSource::doGetNextFrame1(): The total received frame size exceeds the client's buffer size (99961). 41451 bytes of trailing data will be dropped! MPEG2TransportStreamFromESSource: input buffer too small; increase "MAX_INPUT_ES_FRAME_SIZE" in "MPEG2TransportStreamFromESSource" by at least 41451 bytes! 2) My overflowed stack look like this: FramedSource::afterGetting MPEG2TransportStreamMultiplexor::doGetNextFrame FramedSource::getNextFrame FileSink::continuePlaying FileSink::afterGettingFrame FileSink::afterGettingFrame FramedSource::afterGetting MPEG2TransportStreamMultiplexor::doGetNextFrame FramedSource::getNextFrame FileSink::continuePlaying FileSink::afterGettingFrame FileSink::afterGettingFrame FramedSource::afterGetting MPEG2TransportStreamMultiplexor::doGetNextFrame FramedSource::getNextFrame FileSink::continuePlaying FileSink::afterGettingFrame FileSink::afterGettingFrame FramedSource::afterGetting MPEG2TransportStreamMultiplexor::doGetNextFrame FramedSource::getNextFrame FileSink::continuePlaying FileSink::afterGettingFrame FileSink::afterGettingFrame FramedSource::afterGetting MPEG2TransportStreamMultiplexor::doGetNextFrame MPEG2TransportStreamMultiplexor::handleNewBuffer InputESSourceRecord::deliverBufferToClient MPEG2TransportStreamFromESSource::awaitNewBuffer InputESSourceRecord::afterGettingFrame1 InputESSourceRecord::afterGettingFrame FramedSource::afterGetting MultiFramedRTPSource::doGetNextFrame1 MultiFramedRTPSource::networkReadHandler1 MultiFramedRTPSource::networkReadHandler BasicTaskScheduler::SingleStep BasicTaskScheduler0::doEventLoop 3.) I saw the following comment in the code: liveMedia\MultiFramedRTPSource.cpp(198) // Call our own 'after getting' function, so that the downstream object can consume the data: if (fReorderingBuffer->isEmpty()) { // Common case optimization: There are no more queued incoming packets, so this code will not get // executed again without having first returned to the event loop. Call our 'after getting' function // directly, because there's no risk of a long chain of recursion (and thus stack overflow): afterGetting(this); I am definitely going through this code path. Do you have any advice? Thanks Markus. From: live-devel-boun...@ns.live555.com [mailto:live-devel-boun...@ns.live555.com] On Behalf Of Ross Finlayson Sent: Thursday, April 18, 2013 2:00 AM To: LIVE555 Streaming Media - development & use Subject: Re: [Live-devel] saving incoming RTP A/V stream as MPEG-2 transport stream Do I call [...]sink->startPlaying( Yes, of course. All LIVE555-based applications call "startPlaying()" on one or more 'sink' objects (subclasses of "MediaSink"). (For "testRTSPClient" and the "*Streamer" applications, this is done just before entering the event loop; for the RTSP server applications, this is done when handling an event within the event loop.) The big difference between "testRTSPClient" and your proposed application is that "testRTSPClient" creates several "DummySink" objects (one for each subsession), and calls "startPlaying()" on each one. Your application, on the other hand, will have just one 'sink' object - a "FileSink" - and you will call "startPlaying()" on it (just once!), with the "MPEG2TransportStreamFromESSource" object as source parameter. I suggest that your "continueAfterSETUP()" function call "addNewVideoSource()" or "addNewAudioSource()" (depending on the media type) on the "MPEG2TransportStreamFromESSource" object (using the corresponding subsession's "readSource()" as parameter). Then, for the *final* "continueAfterSETUP()" call only, call "startPlaying()" on the "FileSink" object. How Do I feed a MPEG2TransportStreamFromESSource into the file sink? By calling "startPlaying()" on it (just once). 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