Index: webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.h |
diff --git a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.h b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.h |
index 0864c7bfb561b6af167c5ba13fd395571b81b8bf..6d5ab18d472a5438f96daa6ec7ac87f7477dafc2 100644 |
--- a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.h |
+++ b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.h |
@@ -18,6 +18,7 @@ |
#include "webrtc/base/constructormagic.h" |
#include "webrtc/base/optional.h" |
+#include "webrtc/common_audio/smoothing_filter.h" |
#include "webrtc/modules/audio_coding/audio_network_adaptor/include/audio_network_adaptor.h" |
#include "webrtc/modules/audio_coding/codecs/opus/opus_interface.h" |
#include "webrtc/modules/audio_coding/codecs/audio_encoder.h" |
@@ -63,6 +64,7 @@ class AudioEncoderOpus final : public AudioEncoder { |
bool dtx_enabled = false; |
std::vector<int> supported_frame_lengths_ms; |
const Clock* clock = nullptr; |
+ int update_uplink_bandwidth_interval_ms = 200; |
minyue-webrtc
2016/12/28 08:46:07
uplink_bandwidth_update_interval_ms
michaelt
2017/01/09 09:24:05
Done.
|
private: |
#if defined(WEBRTC_ANDROID) || defined(WEBRTC_IOS) || defined(WEBRTC_ARCH_ARM) |
@@ -79,7 +81,8 @@ class AudioEncoderOpus final : public AudioEncoder { |
const Clock*)>; |
AudioEncoderOpus( |
const Config& config, |
- AudioNetworkAdaptorCreator&& audio_network_adaptor_creator = nullptr); |
+ AudioNetworkAdaptorCreator&& audio_network_adaptor_creator = nullptr, |
+ std::unique_ptr<SmoothingFilter> bitrate_smoother = nullptr); |
explicit AudioEncoderOpus(const CodecInst& codec_inst); |
@@ -105,10 +108,11 @@ class AudioEncoderOpus final : public AudioEncoder { |
bool EnableAudioNetworkAdaptor(const std::string& config_string, |
const Clock* clock) override; |
void DisableAudioNetworkAdaptor() override; |
- void OnReceivedUplinkBandwidth(int uplink_bandwidth_bps) override; |
void OnReceivedUplinkPacketLossFraction( |
float uplink_packet_loss_fraction) override; |
- void OnReceivedTargetAudioBitrate(int target_audio_bitrate_bps) override; |
+ void OnReceivedTargetAudioBitrate( |
+ int target_audio_bitrate_bps, |
+ rtc::Optional<int64_t> probing_interval_ms) override; |
void OnReceivedRtt(int rtt_ms) override; |
void OnReceivedOverhead(size_t overhead_bytes_per_packet) override; |
void SetReceiverFrameLengthRange(int min_frame_length_ms, |
@@ -149,6 +153,8 @@ class AudioEncoderOpus final : public AudioEncoder { |
const std::string& config_string, |
const Clock* clock) const; |
+ void MaybeUpdateUplinkBandwidth(); |
+ |
Config config_; |
float packet_loss_rate_; |
std::vector<int16_t> input_buffer_; |
@@ -161,6 +167,8 @@ class AudioEncoderOpus final : public AudioEncoder { |
AudioNetworkAdaptorCreator audio_network_adaptor_creator_; |
std::unique_ptr<AudioNetworkAdaptor> audio_network_adaptor_; |
rtc::Optional<size_t> overhead_bytes_per_packet_; |
+ const std::unique_ptr<SmoothingFilter> bitrate_smoother_; |
+ rtc::Optional<int64_t> bitrate_smoother_last_update_time_; |
RTC_DISALLOW_COPY_AND_ASSIGN(AudioEncoderOpus); |
}; |