summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenri Herscher <henri@oreka.org>2006-02-09 23:00:36 +0000
committerHenri Herscher <henri@oreka.org>2006-02-09 23:00:36 +0000
commitcc42e56c2cb8dcfe467b536f0a4096252b3c5432 (patch)
treec9f1f96ed7510d111ffb30e29f40750cdfeb5919
parentd99a59b0f48efc1c14474ef7b252dace21e480c5 (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
-rw-r--r--orkaudio/filters/rtpmixer/RtpMixer.cpp20
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