Chromium Code Reviews| Index: webrtc/modules/remote_bitrate_estimator/test/estimators/nada.cc | 
| diff --git a/webrtc/modules/remote_bitrate_estimator/test/estimators/nada.cc b/webrtc/modules/remote_bitrate_estimator/test/estimators/nada.cc | 
| index c28749d1d3aa703e161125a0917f6ad97ad37a2f..6cf21992734719d709951dc0ee76feeefcc70e59 100644 | 
| --- a/webrtc/modules/remote_bitrate_estimator/test/estimators/nada.cc | 
| +++ b/webrtc/modules/remote_bitrate_estimator/test/estimators/nada.cc | 
| @@ -30,14 +30,13 @@ namespace bwe { | 
| const int NadaBweReceiver::kMedian; | 
| const int NadaBweSender::kMinRefRateKbps; | 
| const int NadaBweSender::kMaxRefRateKbps; | 
| -const int64_t NadaBweReceiver::kReceivingRateTimeWindowMs; | 
| NadaBweReceiver::NadaBweReceiver(int flow_id) | 
| - : BweReceiver(flow_id), | 
| + : BweReceiver(flow_id, kReceivingRateTimeWindowMs), | 
| clock_(0), | 
| last_feedback_ms_(0), | 
| recv_stats_(ReceiveStatistics::Create(&clock_)), | 
| - baseline_delay_ms_(0), | 
| + baseline_delay_ms_(10000), // Initialized as an upper bound. | 
| delay_signal_ms_(0), | 
| last_congestion_signal_ms_(0), | 
| last_delays_index_(0), | 
| @@ -59,13 +58,16 @@ void NadaBweReceiver::ReceivePacket(int64_t arrival_time_ms, | 
| media_packet.payload_size(), false); | 
| int64_t delay_ms = arrival_time_ms - | 
| media_packet.creation_time_us() / 1000; // Refered as x_n. | 
| + | 
| // The min should be updated within the first 10 minutes. | 
| if (clock_.TimeInMilliseconds() < 10 * 60 * 1000) { | 
| baseline_delay_ms_ = std::min(baseline_delay_ms_, delay_ms); | 
| } | 
| + | 
| delay_signal_ms_ = delay_ms - baseline_delay_ms_; // Refered as d_n. | 
| last_delays_ms_[(last_delays_index_++) % kMedian] = delay_signal_ms_; | 
| int size = std::min(last_delays_index_, kMedian); | 
| + | 
| int64_t median_filtered_delay_ms_ = MedianFilter(last_delays_ms_, size); | 
| exp_smoothed_delay_ms_ = ExponentialSmoothingFilter( | 
| median_filtered_delay_ms_, exp_smoothed_delay_ms_, kAlpha); | 
| @@ -115,61 +117,9 @@ FeedbackPacket* NadaBweReceiver::GetFeedback(int64_t now_ms) { | 
| // Sends a tuple containing latest values of <d_hat_n, d_tilde_n, x_n, x'_n, | 
| // R_r> and additional information. | 
| - return new NadaFeedback(flow_id_, now_ms, exp_smoothed_delay_ms_, | 
| + return new NadaFeedback(flow_id_, now_ms * 1000, exp_smoothed_delay_ms_, | 
| est_queuing_delay_signal_ms_, congestion_signal_ms, | 
| - derivative, RecentReceivingRate(), | 
| - corrected_send_time_ms); | 
| -} | 
| - | 
| -// For a given time window, compute the receiving speed rate in kbps. | 
| -// As described below, three cases are considered depending on the number of | 
| -// packets received. | 
| -size_t NadaBweReceiver::RecentReceivingRate() { | 
| - // If the receiver didn't receive any packet, return 0. | 
| - if (received_packets_.empty()) { | 
| - return 0.0f; | 
| - } | 
| - size_t total_size = 0; | 
| - int number_packets = 0; | 
| - | 
| - PacketNodeIt node_it = received_packets_.begin(); | 
| - | 
| - int64_t last_time_ms = (*node_it)->arrival_time_ms; | 
| - int64_t start_time_ms = last_time_ms; | 
| - PacketNodeIt end = received_packets_.end(); | 
| - | 
| - // Stops after including the first packet out of the timeWindow. | 
| - // Ameliorates results when there are wide gaps between packets. | 
| - // E.g. Large packets : p1(0ms), p2(3000ms). | 
| - while (node_it != end) { | 
| - total_size += (*node_it)->payload_size; | 
| - last_time_ms = (*node_it)->arrival_time_ms; | 
| - ++number_packets; | 
| - if ((*node_it)->arrival_time_ms < | 
| - start_time_ms - kReceivingRateTimeWindowMs) { | 
| - break; | 
| - } | 
| - ++node_it; | 
| - } | 
| - | 
| - int64_t corrected_time_ms; | 
| - // If the receiver received a single packet, return its size*8/timeWindow. | 
| - if (number_packets == 1) { | 
| - corrected_time_ms = kReceivingRateTimeWindowMs; | 
| - } | 
| - // If the receiver received multiple packets, use as time interval the gap | 
| - // between first and last packet falling in the timeWindow corrected by the | 
| - // factor number_packets/(number_packets-1). | 
| - // E.g: Let timeWindow = 500ms, payload_size = 500 bytes, number_packets = 2, | 
| - // packets received at t1(0ms) and t2(499 or 501ms). This prevent the function | 
| - // from returning ~2*8, sending instead a more likely ~1*8 kbps. | 
| - else { | 
| - corrected_time_ms = (number_packets * (start_time_ms - last_time_ms)) / | 
| - (number_packets - 1); | 
| - } | 
| - | 
| - // Converting from bytes/ms to kbits/s. | 
| - return static_cast<size_t>(8 * total_size / corrected_time_ms); | 
| + derivative, RecentKbps(), corrected_send_time_ms); | 
| } | 
| int64_t NadaBweReceiver::MedianFilter(int64_t* last_delays_ms, int size) { | 
| @@ -194,15 +144,15 @@ int64_t NadaBweReceiver::ExponentialSmoothingFilter(int64_t new_value, | 
| NadaBweSender::NadaBweSender(int kbps, BitrateObserver* observer, Clock* clock) | 
| : clock_(clock), | 
| observer_(observer), | 
| - bitrate_kbps_(kbps), | 
| original_operating_mode_(true) { | 
| + bitrate_kbps_ = kMinRefRateKbps; // Referred as "Reference Rate" = R_n. | 
| } | 
| NadaBweSender::NadaBweSender(BitrateObserver* observer, Clock* clock) | 
| : clock_(clock), | 
| observer_(observer), | 
| - bitrate_kbps_(kMinRefRateKbps), | 
| original_operating_mode_(true) { | 
| + bitrate_kbps_ = kMinRefRateKbps; // Referred as "Reference Rate" = R_n. | 
| 
 
stefan-webrtc
2015/07/07 12:46:37
Why don't we set this in the initializer list any
 
magalhaesc
2015/07/08 18:12:31
Now it is a member of the upper class BweSender. I
 
 | 
| } | 
| NadaBweSender::~NadaBweSender() { |