Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(808)

Unified Diff: webrtc/modules/audio_coding/neteq/neteq_impl.cc

Issue 1307893004: NetEq: Fixing a bug that caused rtc::checked_cast to trigger (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Adding test description Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/audio_coding/neteq/neteq_impl.cc
diff --git a/webrtc/modules/audio_coding/neteq/neteq_impl.cc b/webrtc/modules/audio_coding/neteq/neteq_impl.cc
index 22e71f7f1d8af82f80d3f46c38cf465c84da7f4e..1afc165bf6bc8dc4a0848059b37fafb5e619a97c 100644
--- a/webrtc/modules/audio_coding/neteq/neteq_impl.cc
+++ b/webrtc/modules/audio_coding/neteq/neteq_impl.cc
@@ -599,7 +599,8 @@ int NetEqImpl::InsertPacketInternal(const WebRtcRTPHeader& rtp_header,
}
// Insert packets in buffer.
- size_t temp_bufsize = packet_buffer_->NumPacketsInBuffer();
+ const size_t buffer_length_before_insert =
+ packet_buffer_->NumPacketsInBuffer();
ret = packet_buffer_->InsertPacketList(
&packet_list,
*decoder_database_,
@@ -655,14 +656,18 @@ int NetEqImpl::InsertPacketInternal(const WebRtcRTPHeader& rtp_header,
delay_manager_->LastDecoderType(dec_info->codec_type);
if (delay_manager_->last_pack_cng_or_dtmf() == 0) {
// Calculate the total speech length carried in each packet.
- temp_bufsize = packet_buffer_->NumPacketsInBuffer() - temp_bufsize;
- temp_bufsize *= decoder_frame_length_;
-
- if ((temp_bufsize > 0) &&
minyue-webrtc 2015/08/27 09:09:30 Since we introduced size_t - size_t here, it shoul
Peter Kasting 2015/08/27 09:14:54 I wouldn't have caught this even had I just done t
- (temp_bufsize != decision_logic_->packet_length_samples())) {
- decision_logic_->set_packet_length_samples(temp_bufsize);
- delay_manager_->SetPacketAudioLength(
- static_cast<int>((1000 * temp_bufsize) / fs_hz_));
+ const size_t buffer_length_after_insert =
+ packet_buffer_->NumPacketsInBuffer();
+
+ if (buffer_length_after_insert > buffer_length_before_insert) {
+ const size_t packet_length_samples =
+ (buffer_length_after_insert - buffer_length_before_insert) *
+ decoder_frame_length_;
+ if (packet_length_samples != decision_logic_->packet_length_samples()) {
+ decision_logic_->set_packet_length_samples(packet_length_samples);
+ delay_manager_->SetPacketAudioLength(
+ rtc::checked_cast<int>((1000 * packet_length_samples) / fs_hz_));
+ }
}
// Update statistics.

Powered by Google App Engine
This is Rietveld 408576698