Home | History | Annotate | Download | only in voice_engine
      1 /*
      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/include/clock.h"
     16 
     17 namespace webrtc {
     18 
     19 namespace 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.
     23 class 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   rtc::scoped_ptr<rtc::ExpFilter> loss_rate_filter_;
     42 };
     43 
     44 }  // namespace voe
     45 }  // namespace webrtc
     46 #endif  // WEBRTC_VOICE_ENGINE_NETWORK_PREDICTOR_H_
     47