From bf279fc4b90d8c1c40570ddd361c69831107fbbf Mon Sep 17 00:00:00 2001 From: michaelt Date: Fri, 13 Jan 2017 06:02:29 -0800 Subject: [PATCH] Pass event log to ANA. BUG=webrtc:6845 Review-Url: https://codereview.webrtc.org/2553413002 Cr-Commit-Position: refs/heads/master@{#16052} --- .../audio_network_adaptor_impl.cc | 3 ++- .../audio_network_adaptor_impl.h | 3 +++ .../modules/audio_coding/codecs/audio_encoder.cc | 1 + webrtc/modules/audio_coding/codecs/audio_encoder.h | 2 ++ .../audio_coding/codecs/opus/audio_encoder_opus.cc | 12 +++++++++--- .../audio_coding/codecs/opus/audio_encoder_opus.h | 5 +++++ .../codecs/opus/audio_encoder_opus_unittest.cc | 14 +++++++------- webrtc/voice_engine/channel.cc | 2 +- 8 files changed, 30 insertions(+), 12 deletions(-) diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.cc b/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.cc index a9922b0987..3b767d9b59 100644 --- a/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.cc +++ b/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.cc @@ -14,7 +14,8 @@ namespace webrtc { -AudioNetworkAdaptorImpl::Config::Config() = default; +AudioNetworkAdaptorImpl::Config::Config() + : event_log(nullptr), clock(nullptr){}; AudioNetworkAdaptorImpl::Config::~Config() = default; diff --git a/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.h b/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.h index 549eef9bdd..801a9ccc59 100644 --- a/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.h +++ b/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl.h @@ -22,11 +22,14 @@ namespace webrtc { +class RtcEventLog; + class AudioNetworkAdaptorImpl final : public AudioNetworkAdaptor { public: struct Config { Config(); ~Config(); + RtcEventLog* event_log; const Clock* clock; }; diff --git a/webrtc/modules/audio_coding/codecs/audio_encoder.cc b/webrtc/modules/audio_coding/codecs/audio_encoder.cc index 751f9cf6ff..9e0cf4a510 100644 --- a/webrtc/modules/audio_coding/codecs/audio_encoder.cc +++ b/webrtc/modules/audio_coding/codecs/audio_encoder.cc @@ -66,6 +66,7 @@ rtc::ArrayView> AudioEncoder::ReclaimContainedEncoders() { return nullptr; } bool AudioEncoder::EnableAudioNetworkAdaptor(const std::string& config_string, + RtcEventLog* event_log, const Clock* clock) { return false; } diff --git a/webrtc/modules/audio_coding/codecs/audio_encoder.h b/webrtc/modules/audio_coding/codecs/audio_encoder.h index e1b3d82a5b..47152f9eee 100644 --- a/webrtc/modules/audio_coding/codecs/audio_encoder.h +++ b/webrtc/modules/audio_coding/codecs/audio_encoder.h @@ -23,6 +23,7 @@ namespace webrtc { class Clock; +class RtcEventLog; // This is the interface class for encoders in AudioCoding module. Each codec // type must have an implementation of this class. @@ -163,6 +164,7 @@ class AudioEncoder { // Enables audio network adaptor. Returns true if successful. virtual bool EnableAudioNetworkAdaptor(const std::string& config_string, + RtcEventLog* event_log, const Clock* clock); // Disables audio network adaptor. diff --git a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc index 78f8a4b455..78591e1cb7 100644 --- a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc +++ b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc @@ -181,9 +181,11 @@ AudioEncoderOpus::AudioEncoderOpus( audio_network_adaptor_creator_( audio_network_adaptor_creator ? std::move(audio_network_adaptor_creator) - : [this](const std::string& config_string, const Clock* clock) { + : [this](const std::string& config_string, + RtcEventLog* event_log, + const Clock* clock) { return DefaultAudioNetworkAdaptorCreator(config_string, - clock); + event_log, clock); }), bitrate_smoother_(bitrate_smoother ? std::move(bitrate_smoother) : std::unique_ptr( @@ -268,8 +270,10 @@ void AudioEncoderOpus::SetMaxPlaybackRate(int frequency_hz) { bool AudioEncoderOpus::EnableAudioNetworkAdaptor( const std::string& config_string, + RtcEventLog* event_log, const Clock* clock) { - audio_network_adaptor_ = audio_network_adaptor_creator_(config_string, clock); + audio_network_adaptor_ = + audio_network_adaptor_creator_(config_string, event_log, clock); return audio_network_adaptor_.get() != nullptr; } @@ -526,9 +530,11 @@ void AudioEncoderOpus::ApplyAudioNetworkAdaptor() { std::unique_ptr AudioEncoderOpus::DefaultAudioNetworkAdaptorCreator( const std::string& config_string, + RtcEventLog* event_log, const Clock* clock) const { AudioNetworkAdaptorImpl::Config config; config.clock = clock; + config.event_log = event_log; return std::unique_ptr(new AudioNetworkAdaptorImpl( config, ControllerManagerImpl::Create( config_string, NumChannels(), supported_frame_lengths_ms(), 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 82595abc52..051a60765a 100644 --- a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.h +++ b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.h @@ -25,6 +25,8 @@ namespace webrtc { +class RtcEventLog; + struct CodecInst; class AudioEncoderOpus final : public AudioEncoder { @@ -78,6 +80,7 @@ class AudioEncoderOpus final : public AudioEncoder { using AudioNetworkAdaptorCreator = std::function(const std::string&, + RtcEventLog*, const Clock*)>; AudioEncoderOpus( const Config& config, @@ -106,6 +109,7 @@ class AudioEncoderOpus final : public AudioEncoder { bool SetApplication(Application application) override; void SetMaxPlaybackRate(int frequency_hz) override; bool EnableAudioNetworkAdaptor(const std::string& config_string, + RtcEventLog* event_log, const Clock* clock) override; void DisableAudioNetworkAdaptor() override; void OnReceivedUplinkPacketLossFraction( @@ -151,6 +155,7 @@ class AudioEncoderOpus final : public AudioEncoder { void ApplyAudioNetworkAdaptor(); std::unique_ptr DefaultAudioNetworkAdaptorCreator( const std::string& config_string, + RtcEventLog* event_log, const Clock* clock) const; void MaybeUpdateUplinkBandwidth(); diff --git a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc index 3e80595df2..ff6e628696 100644 --- a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc +++ b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc @@ -59,7 +59,7 @@ AudioEncoderOpusStates CreateCodec(size_t num_channels) { std::weak_ptr mock_ptr( states.mock_audio_network_adaptor); AudioEncoderOpus::AudioNetworkAdaptorCreator creator = [mock_ptr]( - const std::string&, const Clock*) { + const std::string&, RtcEventLog* event_log, const Clock*) { std::unique_ptr adaptor( new NiceMock()); EXPECT_CALL(*adaptor, Die()); @@ -266,7 +266,7 @@ TEST(AudioEncoderOpusTest, SetReceiverFrameLengthRange) { TEST(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnReceivedUplinkPacketLossFraction) { auto states = CreateCodec(2); - states.encoder->EnableAudioNetworkAdaptor("", nullptr); + states.encoder->EnableAudioNetworkAdaptor("", nullptr, nullptr); auto config = CreateEncoderRuntimeConfig(); EXPECT_CALL(**states.mock_audio_network_adaptor, GetEncoderRuntimeConfig()) @@ -283,7 +283,7 @@ TEST(AudioEncoderOpusTest, TEST(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnReceivedUplinkBandwidth) { auto states = CreateCodec(2); - states.encoder->EnableAudioNetworkAdaptor("", nullptr); + states.encoder->EnableAudioNetworkAdaptor("", nullptr, nullptr); auto config = CreateEncoderRuntimeConfig(); EXPECT_CALL(**states.mock_audio_network_adaptor, GetEncoderRuntimeConfig()) @@ -305,7 +305,7 @@ TEST(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnReceivedUplinkBandwidth) { TEST(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnReceivedRtt) { auto states = CreateCodec(2); - states.encoder->EnableAudioNetworkAdaptor("", nullptr); + states.encoder->EnableAudioNetworkAdaptor("", nullptr, nullptr); auto config = CreateEncoderRuntimeConfig(); EXPECT_CALL(**states.mock_audio_network_adaptor, GetEncoderRuntimeConfig()) @@ -321,7 +321,7 @@ TEST(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnReceivedRtt) { TEST(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnReceivedOverhead) { auto states = CreateCodec(2); - states.encoder->EnableAudioNetworkAdaptor("", nullptr); + states.encoder->EnableAudioNetworkAdaptor("", nullptr, nullptr); auto config = CreateEncoderRuntimeConfig(); EXPECT_CALL(**states.mock_audio_network_adaptor, GetEncoderRuntimeConfig()) @@ -450,7 +450,7 @@ TEST(AudioEncoderOpusTest, ConfigComplexityAdaptation) { TEST(AudioEncoderOpusTest, EmptyConfigDoesNotAffectEncoderSettings) { auto states = CreateCodec(2); - states.encoder->EnableAudioNetworkAdaptor("", nullptr); + states.encoder->EnableAudioNetworkAdaptor("", nullptr, nullptr); auto config = CreateEncoderRuntimeConfig(); AudioNetworkAdaptor::EncoderRuntimeConfig empty_config; @@ -471,7 +471,7 @@ TEST(AudioEncoderOpusTest, EmptyConfigDoesNotAffectEncoderSettings) { TEST(AudioEncoderOpusTest, UpdateUplinkBandwidthInAudioNetworkAdaptor) { rtc::ScopedFakeClock fake_clock; auto states = CreateCodec(2); - states.encoder->EnableAudioNetworkAdaptor("", nullptr); + states.encoder->EnableAudioNetworkAdaptor("", nullptr, nullptr); std::array audio; audio.fill(0); rtc::Buffer encoded; diff --git a/webrtc/voice_engine/channel.cc b/webrtc/voice_engine/channel.cc index c12d87c5bf..68f2e2d95c 100644 --- a/webrtc/voice_engine/channel.cc +++ b/webrtc/voice_engine/channel.cc @@ -1532,7 +1532,7 @@ bool Channel::EnableAudioNetworkAdaptor(const std::string& config_string) { audio_coding_->ModifyEncoder([&](std::unique_ptr* encoder) { if (*encoder) { success = (*encoder)->EnableAudioNetworkAdaptor( - config_string, Clock::GetRealTimeClock()); + config_string, event_log_proxy_.get(), Clock::GetRealTimeClock()); } }); return success;