diff options
author | Henri Herscher <henri@oreka.org> | 2006-02-09 23:00:36 +0000 |
---|---|---|
committer | Henri Herscher <henri@oreka.org> | 2006-02-09 23:00:36 +0000 |
commit | cc42e56c2cb8dcfe467b536f0a4096252b3c5432 (patch) | |
tree | c9f1f96ed7510d111ffb30e29f40750cdfeb5919 /orkaudio/filters/rtpmixer | |
parent | d99a59b0f48efc1c14474ef7b252dace21e480c5 (diff) |
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
Diffstat (limited to 'orkaudio/filters/rtpmixer')
-rw-r--r-- | orkaudio/filters/rtpmixer/RtpMixer.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
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 |