From e352578bc8f98bf66523580c92f85fbfac6ee333 Mon Sep 17 00:00:00 2001 From: ossu Date: Wed, 25 May 2016 07:37:43 -0700 Subject: [PATCH] Moved injection of AudioDecoderFactory into voe::Channel. Channel's API remains unchanged, but the creation of a BuiltinAudioDecoderFactory is now in Channel. The next step would be to amend Channel's API (through CreateChannel, I believe) to allow an AudioDecoderFactory to be sent along. BUG=webrtc:5805 Review-Url: https://codereview.webrtc.org/1992763002 Cr-Commit-Position: refs/heads/master@{#12893} --- webrtc/modules/audio_coding/acm2/acm_receiver.cc | 2 +- .../audio_coding/acm2/acm_receiver_unittest_oldapi.cc | 2 ++ .../modules/audio_coding/acm2/audio_coding_module.cc | 10 ++++++++++ .../modules/audio_coding/include/audio_coding_module.h | 2 ++ webrtc/modules/audio_coding/neteq/include/neteq.h | 6 +++++- webrtc/modules/audio_coding/neteq/neteq.cc | 7 +++++-- .../neteq/neteq_external_decoder_unittest.cc | 4 +++- webrtc/modules/audio_coding/neteq/neteq_impl.cc | 7 ++++--- webrtc/modules/audio_coding/neteq/neteq_impl.h | 4 +++- .../modules/audio_coding/neteq/neteq_impl_unittest.cc | 5 +++-- .../audio_coding/neteq/neteq_stereo_unittest.cc | 7 +++++-- webrtc/modules/audio_coding/neteq/neteq_unittest.cc | 5 +++-- .../neteq/tools/neteq_external_decoder_test.cc | 3 ++- .../audio_coding/neteq/tools/neteq_performance_test.cc | 3 ++- .../audio_coding/neteq/tools/neteq_quality_test.cc | 4 +++- .../modules/audio_coding/neteq/tools/neteq_rtpplay.cc | 4 +++- .../modules/audio_coding/test/TwoWayCommunication.cc | 2 ++ webrtc/modules/utility/source/coder.cc | 2 ++ webrtc/voice_engine/channel.cc | 2 ++ 19 files changed, 62 insertions(+), 19 deletions(-) diff --git a/webrtc/modules/audio_coding/acm2/acm_receiver.cc b/webrtc/modules/audio_coding/acm2/acm_receiver.cc index 8c07631e3a..c15239f0f3 100644 --- a/webrtc/modules/audio_coding/acm2/acm_receiver.cc +++ b/webrtc/modules/audio_coding/acm2/acm_receiver.cc @@ -49,7 +49,7 @@ bool IsCng(int codec_id) { AcmReceiver::AcmReceiver(const AudioCodingModule::Config& config) : last_audio_decoder_(nullptr), last_audio_buffer_(new int16_t[AudioFrame::kMaxDataSizeSamples]), - neteq_(NetEq::Create(config.neteq_config)), + neteq_(NetEq::Create(config.neteq_config, config.decoder_factory)), clock_(config.clock), resampled_last_output_frame_(true) { assert(clock_); diff --git a/webrtc/modules/audio_coding/acm2/acm_receiver_unittest_oldapi.cc b/webrtc/modules/audio_coding/acm2/acm_receiver_unittest_oldapi.cc index b57b7ef446..174fff799a 100644 --- a/webrtc/modules/audio_coding/acm2/acm_receiver_unittest_oldapi.cc +++ b/webrtc/modules/audio_coding/acm2/acm_receiver_unittest_oldapi.cc @@ -18,6 +18,7 @@ #include "webrtc/base/safe_conversions.h" #include "webrtc/modules/audio_coding/include/audio_coding_module.h" #include "webrtc/modules/audio_coding/acm2/audio_coding_module_impl.h" +#include "webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory.h" #include "webrtc/modules/audio_coding/neteq/tools/rtp_generator.h" #include "webrtc/system_wrappers/include/clock.h" #include "webrtc/test/test_suite.h" @@ -60,6 +61,7 @@ class AcmReceiverTestOldApi : public AudioPacketizationCallback, packet_sent_(false), last_packet_send_timestamp_(timestamp_), last_frame_type_(kEmptyFrame) { + config_.decoder_factory = CreateBuiltinAudioDecoderFactory(); } ~AcmReceiverTestOldApi() {} diff --git a/webrtc/modules/audio_coding/acm2/audio_coding_module.cc b/webrtc/modules/audio_coding/acm2/audio_coding_module.cc index c4dd349cc4..03064fbefb 100644 --- a/webrtc/modules/audio_coding/acm2/audio_coding_module.cc +++ b/webrtc/modules/audio_coding/acm2/audio_coding_module.cc @@ -14,6 +14,7 @@ #include "webrtc/common_types.h" #include "webrtc/modules/audio_coding/acm2/audio_coding_module_impl.h" #include "webrtc/modules/audio_coding/acm2/rent_a_codec.h" +#include "webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory.h" #include "webrtc/system_wrappers/include/clock.h" #include "webrtc/system_wrappers/include/trace.h" @@ -24,6 +25,7 @@ AudioCodingModule* AudioCodingModule::Create(int id) { Config config; config.id = id; config.clock = Clock::GetRealTimeClock(); + config.decoder_factory = CreateBuiltinAudioDecoderFactory(); return Create(config); } @@ -31,10 +33,18 @@ AudioCodingModule* AudioCodingModule::Create(int id, Clock* clock) { Config config; config.id = id; config.clock = clock; + config.decoder_factory = CreateBuiltinAudioDecoderFactory(); return Create(config); } AudioCodingModule* AudioCodingModule::Create(const Config& config) { + if (!config.decoder_factory) { + // TODO(ossu): Backwards compatibility. Will be removed after a deprecation + // cycle. + Config config_copy = config; + config_copy.decoder_factory = CreateBuiltinAudioDecoderFactory(); + return new acm2::AudioCodingModuleImpl(config_copy); + } return new acm2::AudioCodingModuleImpl(config); } diff --git a/webrtc/modules/audio_coding/include/audio_coding_module.h b/webrtc/modules/audio_coding/include/audio_coding_module.h index daf9ac8ae9..5b35bcf7a5 100644 --- a/webrtc/modules/audio_coding/include/audio_coding_module.h +++ b/webrtc/modules/audio_coding/include/audio_coding_module.h @@ -18,6 +18,7 @@ #include "webrtc/base/deprecation.h" #include "webrtc/base/optional.h" #include "webrtc/common_types.h" +#include "webrtc/modules/audio_coding/codecs/audio_decoder_factory.h" #include "webrtc/modules/audio_coding/include/audio_coding_module_typedefs.h" #include "webrtc/modules/audio_coding/neteq/include/neteq.h" #include "webrtc/modules/include/module.h" @@ -72,6 +73,7 @@ class AudioCodingModule { int id; NetEq::Config neteq_config; Clock* clock; + rtc::scoped_refptr decoder_factory; }; /////////////////////////////////////////////////////////////////////////// diff --git a/webrtc/modules/audio_coding/neteq/include/neteq.h b/webrtc/modules/audio_coding/neteq/include/neteq.h index 3a9de1d260..fd1041a1ea 100644 --- a/webrtc/modules/audio_coding/neteq/include/neteq.h +++ b/webrtc/modules/audio_coding/neteq/include/neteq.h @@ -17,6 +17,7 @@ #include "webrtc/base/constructormagic.h" #include "webrtc/base/optional.h" +#include "webrtc/base/scoped_ref_ptr.h" #include "webrtc/common_types.h" #include "webrtc/modules/audio_coding/neteq/audio_decoder_impl.h" #include "webrtc/typedefs.h" @@ -26,6 +27,7 @@ namespace webrtc { // Forward declarations. class AudioFrame; struct WebRtcRTPHeader; +class AudioDecoderFactory; struct NetEqNetworkStatistics { uint16_t current_buffer_size_ms; // Current jitter buffer size in ms. @@ -133,7 +135,9 @@ class NetEq { // Creates a new NetEq object, with parameters set in |config|. The |config| // object will only have to be valid for the duration of the call to this // method. - static NetEq* Create(const NetEq::Config& config); + static NetEq* Create( + const NetEq::Config& config, + const rtc::scoped_refptr& decoder_factory); virtual ~NetEq() {} diff --git a/webrtc/modules/audio_coding/neteq/neteq.cc b/webrtc/modules/audio_coding/neteq/neteq.cc index 2d1ce724ca..e3b9f8be92 100644 --- a/webrtc/modules/audio_coding/neteq/neteq.cc +++ b/webrtc/modules/audio_coding/neteq/neteq.cc @@ -34,8 +34,11 @@ std::string NetEq::Config::ToString() const { // Creates all classes needed and inject them into a new NetEqImpl object. // Return the new object. -NetEq* NetEq::Create(const NetEq::Config& config) { - return new NetEqImpl(config, NetEqImpl::Dependencies(config)); +NetEq* NetEq::Create( + const NetEq::Config& config, + const rtc::scoped_refptr& decoder_factory) { + return new NetEqImpl(config, + NetEqImpl::Dependencies(config, decoder_factory)); } } // namespace webrtc diff --git a/webrtc/modules/audio_coding/neteq/neteq_external_decoder_unittest.cc b/webrtc/modules/audio_coding/neteq/neteq_external_decoder_unittest.cc index 25fa1a7365..f92e36c026 100644 --- a/webrtc/modules/audio_coding/neteq/neteq_external_decoder_unittest.cc +++ b/webrtc/modules/audio_coding/neteq/neteq_external_decoder_unittest.cc @@ -13,6 +13,7 @@ #include #include "testing/gmock/include/gmock/gmock.h" +#include "webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory.h" #include "webrtc/modules/audio_coding/neteq/mock/mock_external_decoder_pcm16b.h" #include "webrtc/modules/audio_coding/neteq/tools/input_audio_file.h" #include "webrtc/modules/audio_coding/neteq/tools/neteq_external_decoder_test.h" @@ -178,7 +179,8 @@ class NetEqExternalVsInternalDecoderTest : public NetEqExternalDecoderUnitTest, NetEq::Config config; config.sample_rate_hz = CodecSampleRateHz(NetEqDecoder::kDecoderPCM16Bswb32kHz); - neteq_internal_.reset(NetEq::Create(config)); + neteq_internal_.reset( + NetEq::Create(config, CreateBuiltinAudioDecoderFactory())); } void SetUp() override { diff --git a/webrtc/modules/audio_coding/neteq/neteq_impl.cc b/webrtc/modules/audio_coding/neteq/neteq_impl.cc index 5e98b88ff4..7aeeb73f39 100644 --- a/webrtc/modules/audio_coding/neteq/neteq_impl.cc +++ b/webrtc/modules/audio_coding/neteq/neteq_impl.cc @@ -22,7 +22,6 @@ #include "webrtc/base/trace_event.h" #include "webrtc/common_audio/signal_processing/include/signal_processing_library.h" #include "webrtc/modules/audio_coding/codecs/audio_decoder.h" -#include "webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory.h" #include "webrtc/modules/audio_coding/neteq/accelerate.h" #include "webrtc/modules/audio_coding/neteq/background_noise.h" #include "webrtc/modules/audio_coding/neteq/buffer_level_filter.h" @@ -55,10 +54,12 @@ namespace webrtc { -NetEqImpl::Dependencies::Dependencies(const NetEq::Config& config) +NetEqImpl::Dependencies::Dependencies( + const NetEq::Config& config, + const rtc::scoped_refptr& decoder_factory) : tick_timer(new TickTimer), buffer_level_filter(new BufferLevelFilter), - decoder_database(new DecoderDatabase(CreateBuiltinAudioDecoderFactory())), + decoder_database(new DecoderDatabase(decoder_factory)), delay_peak_detector(new DelayPeakDetector(tick_timer.get())), delay_manager(new DelayManager(config.max_packets_in_buffer, delay_peak_detector.get(), diff --git a/webrtc/modules/audio_coding/neteq/neteq_impl.h b/webrtc/modules/audio_coding/neteq/neteq_impl.h index cc5550411f..58b705b408 100644 --- a/webrtc/modules/audio_coding/neteq/neteq_impl.h +++ b/webrtc/modules/audio_coding/neteq/neteq_impl.h @@ -72,7 +72,9 @@ class NetEqImpl : public webrtc::NetEq { // before sending the struct to the NetEqImpl constructor. However, there // are dependencies between some of the classes inside the struct, so // swapping out one may make it necessary to re-create another one. - explicit Dependencies(const NetEq::Config& config); + explicit Dependencies( + const NetEq::Config& config, + const rtc::scoped_refptr& decoder_factory); ~Dependencies(); std::unique_ptr tick_timer; diff --git a/webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc b/webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc index 43db87f4fa..6e6226af53 100644 --- a/webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc +++ b/webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc @@ -16,6 +16,7 @@ #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" #include "webrtc/base/safe_conversions.h" +#include "webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory.h" #include "webrtc/modules/audio_coding/neteq/accelerate.h" #include "webrtc/modules/audio_coding/neteq/expand.h" #include "webrtc/modules/audio_coding/neteq/mock/mock_audio_decoder.h" @@ -59,7 +60,7 @@ class NetEqImplTest : public ::testing::Test { NetEqImplTest() { config_.sample_rate_hz = 8000; } void CreateInstance() { - NetEqImpl::Dependencies deps(config_); + NetEqImpl::Dependencies deps(config_, CreateBuiltinAudioDecoderFactory()); // Get a local pointer to NetEq's TickTimer object. tick_timer_ = deps.tick_timer.get(); @@ -205,7 +206,7 @@ class NetEqImplTest : public ::testing::Test { // TODO(hlundin): Move to separate file? TEST(NetEq, CreateAndDestroy) { NetEq::Config config; - NetEq* neteq = NetEq::Create(config); + NetEq* neteq = NetEq::Create(config, CreateBuiltinAudioDecoderFactory()); delete neteq; } diff --git a/webrtc/modules/audio_coding/neteq/neteq_stereo_unittest.cc b/webrtc/modules/audio_coding/neteq/neteq_stereo_unittest.cc index e1a9922b0b..14b65627f8 100644 --- a/webrtc/modules/audio_coding/neteq/neteq_stereo_unittest.cc +++ b/webrtc/modules/audio_coding/neteq/neteq_stereo_unittest.cc @@ -16,6 +16,7 @@ #include #include "testing/gtest/include/gtest/gtest.h" +#include "webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory.h" #include "webrtc/modules/audio_coding/codecs/pcm16b/pcm16b.h" #include "webrtc/modules/audio_coding/neteq/include/neteq.h" #include "webrtc/modules/audio_coding/neteq/tools/input_audio_file.h" @@ -63,8 +64,10 @@ class NetEqStereoTest : public ::testing::TestWithParam { last_arrival_time_(0) { NetEq::Config config; config.sample_rate_hz = sample_rate_hz_; - neteq_mono_ = NetEq::Create(config); - neteq_ = NetEq::Create(config); + rtc::scoped_refptr factory = + CreateBuiltinAudioDecoderFactory(); + neteq_mono_ = NetEq::Create(config, factory); + neteq_ = NetEq::Create(config, factory); input_ = new int16_t[frame_size_samples_]; encoded_ = new uint8_t[2 * frame_size_samples_]; input_multi_channel_ = new int16_t[frame_size_samples_ * num_channels_]; diff --git a/webrtc/modules/audio_coding/neteq/neteq_unittest.cc b/webrtc/modules/audio_coding/neteq/neteq_unittest.cc index 24a8774ae4..d17936757a 100644 --- a/webrtc/modules/audio_coding/neteq/neteq_unittest.cc +++ b/webrtc/modules/audio_coding/neteq/neteq_unittest.cc @@ -24,6 +24,7 @@ #include "testing/gtest/include/gtest/gtest.h" #include "webrtc/base/sha1digest.h" #include "webrtc/base/stringencode.h" +#include "webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory.h" #include "webrtc/modules/audio_coding/neteq/tools/audio_loop.h" #include "webrtc/modules/audio_coding/neteq/tools/rtp_file_source.h" #include "webrtc/modules/audio_coding/codecs/pcm16b/pcm16b.h" @@ -315,7 +316,7 @@ NetEqDecodingTest::NetEqDecodingTest() } void NetEqDecodingTest::SetUp() { - neteq_ = NetEq::Create(config_); + neteq_ = NetEq::Create(config_, CreateBuiltinAudioDecoderFactory()); NetEqNetworkStatistics stat; ASSERT_EQ(0, neteq_->NetworkStatistics(&stat)); algorithmic_delay_ms_ = stat.current_buffer_size_ms; @@ -1666,7 +1667,7 @@ class NetEqDecodingTestTwoInstances : public NetEqDecodingTest { } void CreateSecondInstance() { - neteq2_.reset(NetEq::Create(config2_)); + neteq2_.reset(NetEq::Create(config2_, CreateBuiltinAudioDecoderFactory())); ASSERT_TRUE(neteq2_); LoadDecoders(neteq2_.get()); } diff --git a/webrtc/modules/audio_coding/neteq/tools/neteq_external_decoder_test.cc b/webrtc/modules/audio_coding/neteq/tools/neteq_external_decoder_test.cc index 7a51256af2..206e0ab6b4 100644 --- a/webrtc/modules/audio_coding/neteq/tools/neteq_external_decoder_test.cc +++ b/webrtc/modules/audio_coding/neteq/tools/neteq_external_decoder_test.cc @@ -11,6 +11,7 @@ #include "webrtc/modules/audio_coding/neteq/tools/neteq_external_decoder_test.h" +#include "webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory.h" #include "testing/gtest/include/gtest/gtest.h" #include "webrtc/base/format_macros.h" @@ -25,7 +26,7 @@ NetEqExternalDecoderTest::NetEqExternalDecoderTest(NetEqDecoder codec, channels_(decoder_->Channels()) { NetEq::Config config; config.sample_rate_hz = sample_rate_hz_; - neteq_.reset(NetEq::Create(config)); + neteq_.reset(NetEq::Create(config, CreateBuiltinAudioDecoderFactory())); printf("%" PRIuS "\n", channels_); } diff --git a/webrtc/modules/audio_coding/neteq/tools/neteq_performance_test.cc b/webrtc/modules/audio_coding/neteq/tools/neteq_performance_test.cc index d0052c28a8..73e004c720 100644 --- a/webrtc/modules/audio_coding/neteq/tools/neteq_performance_test.cc +++ b/webrtc/modules/audio_coding/neteq/tools/neteq_performance_test.cc @@ -11,6 +11,7 @@ #include "webrtc/modules/audio_coding/neteq/tools/neteq_performance_test.h" #include "webrtc/base/checks.h" +#include "webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory.h" #include "webrtc/modules/audio_coding/codecs/pcm16b/pcm16b.h" #include "webrtc/modules/audio_coding/neteq/include/neteq.h" #include "webrtc/modules/audio_coding/neteq/tools/audio_loop.h" @@ -42,7 +43,7 @@ int64_t NetEqPerformanceTest::Run(int runtime_ms, // Initialize NetEq instance. NetEq::Config config; config.sample_rate_hz = kSampRateHz; - NetEq* neteq = NetEq::Create(config); + NetEq* neteq = NetEq::Create(config, CreateBuiltinAudioDecoderFactory()); // Register decoder in |neteq|. if (neteq->RegisterPayloadType(kDecoderType, kDecoderName, kPayloadType) != 0) return -1; diff --git a/webrtc/modules/audio_coding/neteq/tools/neteq_quality_test.cc b/webrtc/modules/audio_coding/neteq/tools/neteq_quality_test.cc index 2983cebe9d..d2379f09e0 100644 --- a/webrtc/modules/audio_coding/neteq/tools/neteq_quality_test.cc +++ b/webrtc/modules/audio_coding/neteq/tools/neteq_quality_test.cc @@ -11,6 +11,7 @@ #include #include #include "webrtc/base/checks.h" +#include "webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory.h" #include "webrtc/modules/audio_coding/neteq/tools/neteq_quality_test.h" #include "webrtc/modules/audio_coding/neteq/tools/output_audio_file.h" #include "webrtc/modules/audio_coding/neteq/tools/output_wav_file.h" @@ -245,7 +246,8 @@ NetEqQualityTest::NetEqQualityTest(int block_duration_ms, NetEq::Config config; config.sample_rate_hz = out_sampling_khz_ * 1000; - neteq_.reset(NetEq::Create(config)); + neteq_.reset( + NetEq::Create(config, webrtc::CreateBuiltinAudioDecoderFactory())); max_payload_bytes_ = in_size_samples_ * channels_ * sizeof(int16_t); in_data_.reset(new int16_t[in_size_samples_ * channels_]); } diff --git a/webrtc/modules/audio_coding/neteq/tools/neteq_rtpplay.cc b/webrtc/modules/audio_coding/neteq/tools/neteq_rtpplay.cc index bee973048e..756a9cf3f0 100644 --- a/webrtc/modules/audio_coding/neteq/tools/neteq_rtpplay.cc +++ b/webrtc/modules/audio_coding/neteq/tools/neteq_rtpplay.cc @@ -26,6 +26,7 @@ #include "gflags/gflags.h" #include "webrtc/base/checks.h" #include "webrtc/base/safe_conversions.h" +#include "webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory.h" #include "webrtc/modules/audio_coding/codecs/pcm16b/pcm16b.h" #include "webrtc/modules/audio_coding/neteq/include/neteq.h" #include "webrtc/modules/audio_coding/neteq/tools/input_audio_file.h" @@ -474,7 +475,8 @@ int main(int argc, char* argv[]) { // Initialize NetEq instance. NetEq::Config config; config.sample_rate_hz = sample_rate_hz; - NetEq* neteq = NetEq::Create(config); + NetEq* neteq = + NetEq::Create(config, CreateBuiltinAudioDecoderFactory()); RegisterPayloadTypes(neteq); diff --git a/webrtc/modules/audio_coding/test/TwoWayCommunication.cc b/webrtc/modules/audio_coding/test/TwoWayCommunication.cc index b59ff1fdcc..a5cf79e86a 100644 --- a/webrtc/modules/audio_coding/test/TwoWayCommunication.cc +++ b/webrtc/modules/audio_coding/test/TwoWayCommunication.cc @@ -23,6 +23,7 @@ #include "testing/gtest/include/gtest/gtest.h" #include "webrtc/engine_configurations.h" #include "webrtc/common_types.h" +#include "webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory.h" #include "webrtc/modules/audio_coding/test/PCMFile.h" #include "webrtc/modules/audio_coding/test/utility.h" #include "webrtc/system_wrappers/include/trace.h" @@ -40,6 +41,7 @@ TwoWayCommunication::TwoWayCommunication(int testMode) // The clicks will be more obvious in FAX mode. TODO(henrik.lundin) Really? config.neteq_config.playout_mode = kPlayoutFax; config.id = 2; + config.decoder_factory = CreateBuiltinAudioDecoderFactory(); _acmB.reset(AudioCodingModule::Create(config)); config.id = 4; _acmRefB.reset(AudioCodingModule::Create(config)); diff --git a/webrtc/modules/utility/source/coder.cc b/webrtc/modules/utility/source/coder.cc index 3c065e7c2b..248cd488b6 100644 --- a/webrtc/modules/utility/source/coder.cc +++ b/webrtc/modules/utility/source/coder.cc @@ -9,6 +9,7 @@ */ #include "webrtc/common_types.h" +#include "webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory.h" #include "webrtc/modules/include/module_common_types.h" #include "webrtc/modules/utility/source/coder.h" @@ -19,6 +20,7 @@ AudioCodingModule::Config GetAcmConfig(uint32_t id) { // This class does not handle muted output. config.neteq_config.enable_muted_state = false; config.id = id; + config.decoder_factory = CreateBuiltinAudioDecoderFactory(); return config; } } // namespace diff --git a/webrtc/voice_engine/channel.cc b/webrtc/voice_engine/channel.cc index c2b9542053..742e53e836 100644 --- a/webrtc/voice_engine/channel.cc +++ b/webrtc/voice_engine/channel.cc @@ -21,6 +21,7 @@ #include "webrtc/base/timeutils.h" #include "webrtc/common.h" #include "webrtc/config.h" +#include "webrtc/modules/audio_coding/codecs/builtin_audio_decoder_factory.h" #include "webrtc/modules/audio_device/include/audio_device.h" #include "webrtc/modules/audio_processing/include/audio_processing.h" #include "webrtc/modules/include/module_common_types.h" @@ -825,6 +826,7 @@ Channel::Channel(int32_t channelId, acm_config.neteq_config.enable_fast_accelerate = config.Get().enabled; acm_config.neteq_config.enable_muted_state = true; + acm_config.decoder_factory = CreateBuiltinAudioDecoderFactory(); audio_coding_.reset(AudioCodingModule::Create(acm_config)); _outputAudioLevel.Clear();