| 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..82595abc52b0605b305c30abb6a67e1888cb2e5d 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"
|
| @@ -62,7 +63,8 @@ class AudioEncoderOpus final : public AudioEncoder {
|
| int complexity_threshold_window_bps = 1500;
|
| bool dtx_enabled = false;
|
| std::vector<int> supported_frame_lengths_ms;
|
| - const Clock* clock = nullptr;
|
| + const Clock* clock = Clock::GetRealTimeClock();
|
| + int uplink_bandwidth_update_interval_ms = 200;
|
|
|
| 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 OnReceivedUplinkBandwidth(
|
| + 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);
|
| };
|
|
|