blob: d9f0b7b1440be12a528f510118b98e53cf31f863 [file] [log] [blame]
minyue@webrtc.org31b38da2014-07-16 21:28:26 +00001/*
2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#ifndef WEBRTC_VOICE_ENGINE_NETWORK_PREDICTOR_H_
12#define WEBRTC_VOICE_ENGINE_NETWORK_PREDICTOR_H_
13
14#include "webrtc/base/exp_filter.h"
15#include "webrtc/system_wrappers/interface/clock.h"
16
17namespace webrtc {
18
19namespace voe {
20
21// NetworkPredictor is to predict network conditions e.g., packet loss rate, for
22// sender and/or receiver to cope with changes in the network condition.
23class NetworkPredictor {
24 public:
25 explicit NetworkPredictor(Clock* clock);
26 ~NetworkPredictor() {}
27
28 // Gets the predicted packet loss rate.
29 uint8_t GetLossRate();
30
31 // Updates the packet loss rate predictor, on receiving a new observation of
32 // packet loss rate from past. Input packet loss rate should be in the
33 // interval [0, 255].
34 void UpdatePacketLossRate(uint8_t loss_rate);
35
36 private:
37 Clock* clock_;
38 int64_t last_loss_rate_update_time_ms_;
39
40 // An exponential filter is used to predict packet loss rate.
41 scoped_ptr<rtc::ExpFilter> loss_rate_filter_;
42};
43
44} // namespace voe
45} // namespace webrtc
46#endif // WEBRTC_VOICE_ENGINE_NETWORK_PREDICTOR_H_