From 33d5f69d5e73026c88712d0a81e10f8dbdc4deb8 Mon Sep 17 00:00:00 2001 From: "henrik.lundin@webrtc.org" Date: Fri, 13 Jan 2012 07:46:50 +0000 Subject: [PATCH] Fix issue 218 with new solution This one is slightly more elegant and efficient. BUG=http://code.google.com/p/webrtc/issues/detail?id=218 TEST= Review URL: http://webrtc-codereview.appspot.com/344009 git-svn-id: http://webrtc.googlecode.com/svn/trunk@1420 4adac7df-926f-26a2-2b94-8c16560cd09d --- .../audio_coding/main/source/acm_neteq.cc | 43 +++++++++---------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/src/modules/audio_coding/main/source/acm_neteq.cc b/src/modules/audio_coding/main/source/acm_neteq.cc index 30a6a1e36d..dd02cc6f31 100644 --- a/src/modules/audio_coding/main/source/acm_neteq.cc +++ b/src/modules/audio_coding/main/source/acm_neteq.cc @@ -475,40 +475,37 @@ ACMNetEQ::NetworkStatistics( int waiting_times[kArrayLen]; int waiting_times_len = WebRtcNetEQ_GetRawFrameWaitingTimes( _inst[0], kArrayLen, waiting_times); - if (waiting_times_len >= 0) + if (waiting_times_len > 0) { std::vector waiting_times_vec(waiting_times, waiting_times + waiting_times_len); sort(waiting_times_vec.begin(), waiting_times_vec.end()); size_t size = waiting_times_vec.size(); assert(size == static_cast(waiting_times_len)); - if (size == 0) + if (size % 2 == 0) { - statistics->meanWaitingTimeMs = -1; - statistics->medianWaitingTimeMs = -1; - statistics->minWaitingTimeMs = -1; - statistics->maxWaitingTimeMs = -1; + statistics->medianWaitingTimeMs = + (waiting_times_vec[size / 2 - 1] + + waiting_times_vec[size / 2]) / 2; } else { - if (size % 2 == 0) - { - statistics->medianWaitingTimeMs = - (waiting_times_vec[size / 2 - 1] + - waiting_times_vec[size / 2]) / 2; - } - else - { - statistics->medianWaitingTimeMs = waiting_times_vec[size / 2]; - } - statistics->minWaitingTimeMs = waiting_times_vec.front(); - statistics->maxWaitingTimeMs = waiting_times_vec.back(); - double sum = 0; - for (size_t i = 0; i < size; ++i) { - sum += waiting_times_vec[i]; - } - statistics->meanWaitingTimeMs = static_cast(sum / size); + statistics->medianWaitingTimeMs = waiting_times_vec[size / 2]; } + statistics->minWaitingTimeMs = waiting_times_vec.front(); + statistics->maxWaitingTimeMs = waiting_times_vec.back(); + double sum = 0; + for (size_t i = 0; i < size; ++i) { + sum += waiting_times_vec[i]; + } + statistics->meanWaitingTimeMs = static_cast(sum / size); + } + else if (waiting_times_len == 0) + { + statistics->meanWaitingTimeMs = -1; + statistics->medianWaitingTimeMs = -1; + statistics->minWaitingTimeMs = -1; + statistics->maxWaitingTimeMs = -1; } else {