From cc42e56c2cb8dcfe467b536f0a4096252b3c5432 Mon Sep 17 00:00:00 2001 From: Henri Herscher Date: Thu, 9 Feb 2006 23:00:36 +0000 Subject: Make sure silence between two chunks cannot be more than 60 seconds (based on RTP timestamp). If the case, drop the chunk. git-svn-id: https://oreka.svn.sourceforge.net/svnroot/oreka/trunk@162 09dcff7a-b715-0410-9601-b79a96267cd0 --- orkaudio/filters/rtpmixer/RtpMixer.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'orkaudio') diff --git a/orkaudio/filters/rtpmixer/RtpMixer.cpp b/orkaudio/filters/rtpmixer/RtpMixer.cpp index 0d02657..6eb26fa 100644 --- a/orkaudio/filters/rtpmixer/RtpMixer.cpp +++ b/orkaudio/filters/rtpmixer/RtpMixer.cpp @@ -124,16 +124,20 @@ void RtpMixer::AudioChunkIn(AudioChunkRef& chunk) // RTP packet does not fit into current buffer // work out how much silence we need to add to the current buffer when shipping size_t silenceSize = details->m_timestamp - m_writeTimestamp; - CreateShipment(silenceSize); - // reset buffer - m_writePtr = m_buffer; - m_readPtr = m_buffer; - m_writeTimestamp = details->m_timestamp; - m_readTimestamp = m_writeTimestamp; + if(silenceSize < (8000*60) ) // sanity check, maximum silence is 60 seconds @8KHz, otherwise, drop the chunk + { + CreateShipment(silenceSize); - // Store new packet - StoreRtpPacket(chunk); + // reset buffer + m_writePtr = m_buffer; + m_readPtr = m_buffer; + m_writeTimestamp = details->m_timestamp; + m_readTimestamp = m_writeTimestamp; + + // Store new packet + StoreRtpPacket(chunk); + } } } else -- cgit v1.2.3