summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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