1*d9f75844SAndroid Build Coastguard Worker /* 2*d9f75844SAndroid Build Coastguard Worker * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. 3*d9f75844SAndroid Build Coastguard Worker * 4*d9f75844SAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license 5*d9f75844SAndroid Build Coastguard Worker * that can be found in the LICENSE file in the root of the source 6*d9f75844SAndroid Build Coastguard Worker * tree. An additional intellectual property rights grant can be found 7*d9f75844SAndroid Build Coastguard Worker * in the file PATENTS. All contributing project authors may 8*d9f75844SAndroid Build Coastguard Worker * be found in the AUTHORS file in the root of the source tree. 9*d9f75844SAndroid Build Coastguard Worker */ 10*d9f75844SAndroid Build Coastguard Worker 11*d9f75844SAndroid Build Coastguard Worker #ifndef MODULES_PACING_INTERVAL_BUDGET_H_ 12*d9f75844SAndroid Build Coastguard Worker #define MODULES_PACING_INTERVAL_BUDGET_H_ 13*d9f75844SAndroid Build Coastguard Worker 14*d9f75844SAndroid Build Coastguard Worker #include <stddef.h> 15*d9f75844SAndroid Build Coastguard Worker #include <stdint.h> 16*d9f75844SAndroid Build Coastguard Worker 17*d9f75844SAndroid Build Coastguard Worker namespace webrtc { 18*d9f75844SAndroid Build Coastguard Worker 19*d9f75844SAndroid Build Coastguard Worker // TODO(tschumim): Reflector IntervalBudget so that we can set a under- and 20*d9f75844SAndroid Build Coastguard Worker // over-use budget in ms. 21*d9f75844SAndroid Build Coastguard Worker class IntervalBudget { 22*d9f75844SAndroid Build Coastguard Worker public: 23*d9f75844SAndroid Build Coastguard Worker explicit IntervalBudget(int initial_target_rate_kbps); 24*d9f75844SAndroid Build Coastguard Worker IntervalBudget(int initial_target_rate_kbps, bool can_build_up_underuse); 25*d9f75844SAndroid Build Coastguard Worker void set_target_rate_kbps(int target_rate_kbps); 26*d9f75844SAndroid Build Coastguard Worker 27*d9f75844SAndroid Build Coastguard Worker // TODO(tschumim): Unify IncreaseBudget and UseBudget to one function. 28*d9f75844SAndroid Build Coastguard Worker void IncreaseBudget(int64_t delta_time_ms); 29*d9f75844SAndroid Build Coastguard Worker void UseBudget(size_t bytes); 30*d9f75844SAndroid Build Coastguard Worker 31*d9f75844SAndroid Build Coastguard Worker size_t bytes_remaining() const; 32*d9f75844SAndroid Build Coastguard Worker double budget_ratio() const; 33*d9f75844SAndroid Build Coastguard Worker int target_rate_kbps() const; 34*d9f75844SAndroid Build Coastguard Worker 35*d9f75844SAndroid Build Coastguard Worker private: 36*d9f75844SAndroid Build Coastguard Worker int target_rate_kbps_; 37*d9f75844SAndroid Build Coastguard Worker int64_t max_bytes_in_budget_; 38*d9f75844SAndroid Build Coastguard Worker int64_t bytes_remaining_; 39*d9f75844SAndroid Build Coastguard Worker bool can_build_up_underuse_; 40*d9f75844SAndroid Build Coastguard Worker }; 41*d9f75844SAndroid Build Coastguard Worker 42*d9f75844SAndroid Build Coastguard Worker } // namespace webrtc 43*d9f75844SAndroid Build Coastguard Worker 44*d9f75844SAndroid Build Coastguard Worker #endif // MODULES_PACING_INTERVAL_BUDGET_H_ 45