Hello Ross, Yes, I know that OutPacketBuffer::maxSize=30000 is not enough for handling 56Kb frame, I just trying to handle a situation when OutPacketBuffer::maxSize is set to lower value then a frame that we need to send. I am trying to use fNumTruncatedBytes to proceed somehow big frames according to the information you proposed earlier.
I have something like this: auto frame = mFramesQueue.front(); auto frameLength = frame->GetDataLen() - mLastFrameOffset; if (frameLength > fMaxSize) { memcpy_s(fTo, fMaxSize, frame->GetData() + mLastFrameOffset, fMaxSize); // Update offset mLastFrameOffset += fMaxSize; // Update num of truncated bytes fNumTruncatedBytes = frameLength - fMaxSize; // Set frame size fFrameSize = fMaxSize; } else { memcpy_s(fTo, fMaxSize, frame->GetData() + mLastFrameOffset, frameLength); // Remove frame from the queue mFramesQueue.pop(); // Set frame time gettimeofday(&fPresentationTime, NULL); // Reset num of truncated bytes fNumTruncatedBytes = 0; // Reset offset mLastFrameOffset = 0; // Set frame size fFrameSize = frameLength; } So, I take frame from the queue and if output buffer size is not enough to copy whole frame - I copy only fMaxSize bytes to output buffer and save mLastFrameOffset to proceed other part of frame in next doGetNextFrame call. But this approach fails with error described earlier just after the first part of the frame is copied to output buffer. Best regards, ----------------------------------------- Victor Vitkovskiy Senior software developer mailto: victor.vitkovs...@mirasys.com www.mirasys.com -----Original Message----- From: live-devel <live-devel-boun...@us.live555.com> On Behalf Of Ross Finlayson Sent: Wednesday, 26 January 2022 14:03 To: LIVE555 Streaming Media - development & use <live-de...@us.live555.com> Subject: Re: [Live-devel] [Mirasys] Live555 RTSP server questions EXTERNAL > On Jan 26, 2022, at 10:28 PM, Victor Vitkovskiy > <victor.vitkovs...@mirasys.com> wrote: > > Hello Ross, > > Thank you for information. > > I have tried like you said, but I have this error: > MultiFramedRTPSink::afterGettingFrame1(): The input frame data was too > large for our buffer size (30480). 26917 bytes of trailing data was dropped! > Correct this by increasing "OutPacketBuffer::maxSize" to at least 56917, > *before* creating this 'RTPSink'. (Current value is 30000.) I have set > OutPacketBuffer::maxSize to 30000 and frame in this case is 56917. > I copied 30000 bytes to fTo buffer and set fFrameSize to fMaxSize value > (30000), also fNumTruncatedBytes is 26917. > > Seems that we need to add also RTP header data to this 30000 buffer (480 > bytes) and that’s why I have an error, is this correct? No. Our software automatically takes the size of the RTP header (which, BTW, is 12 bytes, note 480 bytes) into account. You don’t have to care about this. Your problem is that your value of "OutPacketBuffer::maxSize” is too low. I suggest setting it to 300000, as is done in “testOnDemandRTSPServer.cpp”. 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 _______________________________________________ live-devel mailing list live-devel@lists.live555.com http://lists.live555.com/mailman/listinfo/live-devel