diff --git a/modules/audio_coding/BUILD.gn b/modules/audio_coding/BUILD.gn index 1fb13e5519..efa43ea01a 100644 --- a/modules/audio_coding/BUILD.gn +++ b/modules/audio_coding/BUILD.gn @@ -144,7 +144,6 @@ rtc_static_library("audio_coding") { "..:module_api", "../../api:array_view", "../../api/audio_codecs:audio_codecs_api", - "../../api/audio_codecs:builtin_audio_decoder_factory", ":audio_coding_module_typedefs", ":neteq", ":rent_a_codec", @@ -1461,6 +1460,7 @@ if (rtc_include_tests) { "../../rtc_base:checks", ":audio_coding", ":neteq_tools", + "../../api/audio_codecs:builtin_audio_decoder_factory", "../../api/audio_codecs:audio_codecs_api", "../../rtc_base:rtc_base_approved", "../../test:test_support", @@ -1488,6 +1488,7 @@ if (rtc_include_tests) { "../..:typedefs", "../../:webrtc_common", "../../api:optional", + "../../api/audio_codecs:builtin_audio_decoder_factory", "../../rtc_base:rtc_base_approved", "../../system_wrappers", "../../system_wrappers:system_wrappers_default", @@ -1520,6 +1521,7 @@ if (rtc_include_tests) { "../..:typedefs", "../../:webrtc_common", "../../api:optional", + "../../api/audio_codecs:builtin_audio_decoder_factory", "../../rtc_base:rtc_base_approved", "../../system_wrappers", "../../system_wrappers:system_wrappers_default", diff --git a/modules/audio_coding/acm2/acm_send_test.cc b/modules/audio_coding/acm2/acm_send_test.cc index 307c9066b1..09a6c80ba7 100644 --- a/modules/audio_coding/acm2/acm_send_test.cc +++ b/modules/audio_coding/acm2/acm_send_test.cc @@ -15,6 +15,7 @@ #include #include "api/audio_codecs/audio_encoder.h" +#include "api/audio_codecs/builtin_audio_decoder_factory.h" #include "modules/audio_coding/include/audio_coding_module.h" #include "modules/audio_coding/neteq/tools/input_audio_file.h" #include "modules/audio_coding/neteq/tools/packet.h" @@ -28,7 +29,12 @@ AcmSendTestOldApi::AcmSendTestOldApi(InputAudioFile* audio_source, int source_rate_hz, int test_duration_ms) : clock_(0), - acm_(webrtc::AudioCodingModule::Create(&clock_)), + acm_(webrtc::AudioCodingModule::Create([this] { + AudioCodingModule::Config config; + config.clock = &clock_; + config.decoder_factory = CreateBuiltinAudioDecoderFactory(); + return config; + }())), audio_source_(audio_source), source_rate_hz_(source_rate_hz), input_block_size_samples_( diff --git a/modules/audio_coding/acm2/audio_coding_module.cc b/modules/audio_coding/acm2/audio_coding_module.cc index 53b9177fd1..0c296636f5 100644 --- a/modules/audio_coding/acm2/audio_coding_module.cc +++ b/modules/audio_coding/acm2/audio_coding_module.cc @@ -12,7 +12,6 @@ #include -#include "api/audio_codecs/builtin_audio_decoder_factory.h" #include "modules/audio_coding/acm2/acm_receiver.h" #include "modules/audio_coding/acm2/acm_resampler.h" #include "modules/audio_coding/acm2/codec_manager.h" @@ -1243,8 +1242,11 @@ ANAStats AudioCodingModuleImpl::GetANAStats() const { } // namespace -AudioCodingModule::Config::Config() - : neteq_config(), clock(Clock::GetRealTimeClock()) { +AudioCodingModule::Config::Config( + rtc::scoped_refptr decoder_factory) + : neteq_config(), + clock(Clock::GetRealTimeClock()), + decoder_factory(decoder_factory) { // Post-decode VAD is disabled by default in NetEq, however, Audio // Conference Mixer relies on VAD decisions and fails without them. neteq_config.enable_post_decode_vad = true; @@ -1253,34 +1255,7 @@ AudioCodingModule::Config::Config() AudioCodingModule::Config::Config(const Config&) = default; AudioCodingModule::Config::~Config() = default; -AudioCodingModule* AudioCodingModule::Create(int id) { - RTC_UNUSED(id); - return Create(); -} - -// Create module -AudioCodingModule* AudioCodingModule::Create() { - Config config; - config.clock = Clock::GetRealTimeClock(); - config.decoder_factory = CreateBuiltinAudioDecoderFactory(); - return Create(config); -} - -AudioCodingModule* AudioCodingModule::Create(Clock* clock) { - Config config; - 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 AudioCodingModuleImpl(config_copy); - } return new AudioCodingModuleImpl(config); } diff --git a/modules/audio_coding/acm2/audio_coding_module_unittest.cc b/modules/audio_coding/acm2/audio_coding_module_unittest.cc index aaa4230d1e..24f0c3f416 100644 --- a/modules/audio_coding/acm2/audio_coding_module_unittest.cc +++ b/modules/audio_coding/acm2/audio_coding_module_unittest.cc @@ -166,7 +166,12 @@ class AudioCodingModuleTestOldApi : public ::testing::Test { void TearDown() {} void SetUp() { - acm_.reset(AudioCodingModule::Create(clock_)); + acm_.reset(AudioCodingModule::Create([this] { + AudioCodingModule::Config config; + config.clock = clock_; + config.decoder_factory = CreateBuiltinAudioDecoderFactory(); + return config; + }())); rtp_utility_->Populate(&rtp_header_); diff --git a/modules/audio_coding/include/audio_coding_module.h b/modules/audio_coding/include/audio_coding_module.h index 12c98eeec8..85225c27c6 100644 --- a/modules/audio_coding/include/audio_coding_module.h +++ b/modules/audio_coding/include/audio_coding_module.h @@ -66,7 +66,8 @@ class AudioCodingModule { public: struct Config { - Config(); + explicit Config( + rtc::scoped_refptr decoder_factory = nullptr); Config(const Config&); ~Config(); @@ -75,17 +76,6 @@ class AudioCodingModule { rtc::scoped_refptr decoder_factory; }; - /////////////////////////////////////////////////////////////////////////// - // Creation and destruction of a ACM. - // - // The second method is used for testing where a simulated clock can be - // injected into ACM. ACM will take the ownership of the object clock and - // delete it when destroyed. - // - // TODO(solenberg): Remove once downstream projects are updated. - RTC_DEPRECATED static AudioCodingModule* Create(int id); - static AudioCodingModule* Create(); - static AudioCodingModule* Create(Clock* clock); static AudioCodingModule* Create(const Config& config); virtual ~AudioCodingModule() = default; diff --git a/modules/audio_coding/test/APITest.cc b/modules/audio_coding/test/APITest.cc index dbf5ad4534..ed4c2be69b 100644 --- a/modules/audio_coding/test/APITest.cc +++ b/modules/audio_coding/test/APITest.cc @@ -19,6 +19,7 @@ #include #include +#include "api/audio_codecs/builtin_audio_decoder_factory.h" #include "common_types.h" // NOLINT(build/include) #include "modules/audio_coding/codecs/audio_format_conversion.h" #include "modules/audio_coding/test/utility.h" @@ -47,8 +48,10 @@ void APITest::Wait(uint32_t waitLengthMs) { } APITest::APITest() - : _acmA(AudioCodingModule::Create()), - _acmB(AudioCodingModule::Create()), + : _acmA(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))), + _acmB(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))), _channel_A2B(NULL), _channel_B2A(NULL), _writeToFile(true), diff --git a/modules/audio_coding/test/EncodeDecodeTest.cc b/modules/audio_coding/test/EncodeDecodeTest.cc index c765f68502..4d47e4efef 100644 --- a/modules/audio_coding/test/EncodeDecodeTest.cc +++ b/modules/audio_coding/test/EncodeDecodeTest.cc @@ -15,6 +15,7 @@ #include #include +#include "api/audio_codecs/builtin_audio_decoder_factory.h" #include "common_types.h" // NOLINT(build/include) #include "modules/audio_coding/codecs/audio_format_conversion.h" #include "modules/audio_coding/include/audio_coding_module.h" @@ -269,7 +270,8 @@ void EncodeDecodeTest::Perform() { codePars[1] = 0; codePars[2] = 0; - std::unique_ptr acm(AudioCodingModule::Create()); + std::unique_ptr acm(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))); struct CodecInst sendCodecTmp; numCodecs = acm->NumberOfCodecs(); @@ -320,7 +322,8 @@ std::string EncodeDecodeTest::EncodeToFile(int fileType, int codeId, int* codePars, int testMode) { - std::unique_ptr acm(AudioCodingModule::Create()); + std::unique_ptr acm(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))); RTPFile rtpFile; std::string fileName = webrtc::test::TempFilename(webrtc::test::OutputPath(), "encode_decode_rtp"); diff --git a/modules/audio_coding/test/PacketLossTest.cc b/modules/audio_coding/test/PacketLossTest.cc index a6c56fa780..45714c4bfd 100644 --- a/modules/audio_coding/test/PacketLossTest.cc +++ b/modules/audio_coding/test/PacketLossTest.cc @@ -12,6 +12,7 @@ #include +#include "api/audio_codecs/builtin_audio_decoder_factory.h" #include "test/gtest.h" #include "test/testsupport/fileutils.h" @@ -127,7 +128,9 @@ void PacketLossTest::Perform() { #ifndef WEBRTC_CODEC_OPUS return; #else - std::unique_ptr acm(AudioCodingModule::Create()); + AudioCodingModule::Config config; + config.decoder_factory = CreateBuiltinAudioDecoderFactory(); + std::unique_ptr acm(AudioCodingModule::Create(config)); int codec_id = acm->Codec("opus", 48000, channels_); diff --git a/modules/audio_coding/test/TestAllCodecs.cc b/modules/audio_coding/test/TestAllCodecs.cc index 3a968c99cc..f8debe9ec1 100644 --- a/modules/audio_coding/test/TestAllCodecs.cc +++ b/modules/audio_coding/test/TestAllCodecs.cc @@ -14,6 +14,7 @@ #include #include +#include "api/audio_codecs/builtin_audio_decoder_factory.h" #include "common_types.h" // NOLINT(build/include) #include "modules/audio_coding/codecs/audio_format_conversion.h" #include "modules/audio_coding/include/audio_coding_module.h" @@ -104,8 +105,10 @@ void TestPack::reset_payload_size() { } TestAllCodecs::TestAllCodecs(int test_mode) - : acm_a_(AudioCodingModule::Create()), - acm_b_(AudioCodingModule::Create()), + : acm_a_(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))), + acm_b_(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))), channel_a_to_b_(NULL), test_count_(0), packet_size_samples_(0), diff --git a/modules/audio_coding/test/TestRedFec.cc b/modules/audio_coding/test/TestRedFec.cc index 034c5954af..ef0e92b2ea 100644 --- a/modules/audio_coding/test/TestRedFec.cc +++ b/modules/audio_coding/test/TestRedFec.cc @@ -12,6 +12,7 @@ #include +#include "api/audio_codecs/builtin_audio_decoder_factory.h" #include "common_types.h" // NOLINT(build/include) #include "modules/audio_coding/codecs/audio_format_conversion.h" #include "modules/audio_coding/include/audio_coding_module_typedefs.h" @@ -34,21 +35,24 @@ namespace webrtc { namespace { - const char kNameL16[] = "L16"; - const char kNamePCMU[] = "PCMU"; - const char kNameCN[] = "CN"; - const char kNameRED[] = "RED"; - const char kNameISAC[] = "ISAC"; - const char kNameG722[] = "G722"; - const char kNameOPUS[] = "opus"; -} + +const char kNameL16[] = "L16"; +const char kNamePCMU[] = "PCMU"; +const char kNameCN[] = "CN"; +const char kNameRED[] = "RED"; +const char kNameISAC[] = "ISAC"; +const char kNameG722[] = "G722"; +const char kNameOPUS[] = "opus"; + +} // namespace TestRedFec::TestRedFec() - : _acmA(AudioCodingModule::Create()), - _acmB(AudioCodingModule::Create()), + : _acmA(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))), + _acmB(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))), _channelA2B(NULL), - _testCntr(0) { -} + _testCntr(0) {} TestRedFec::~TestRedFec() { if (_channelA2B != NULL) { diff --git a/modules/audio_coding/test/TestStereo.cc b/modules/audio_coding/test/TestStereo.cc index ba86719fe8..2002068d66 100644 --- a/modules/audio_coding/test/TestStereo.cc +++ b/modules/audio_coding/test/TestStereo.cc @@ -14,6 +14,7 @@ #include +#include "api/audio_codecs/builtin_audio_decoder_factory.h" #include "common_types.h" // NOLINT(build/include) #include "modules/audio_coding/codecs/audio_format_conversion.h" #include "modules/audio_coding/include/audio_coding_module_typedefs.h" @@ -108,8 +109,10 @@ void TestPackStereo::set_lost_packet(bool lost) { } TestStereo::TestStereo(int test_mode) - : acm_a_(AudioCodingModule::Create()), - acm_b_(AudioCodingModule::Create()), + : acm_a_(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))), + acm_b_(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))), channel_a2b_(NULL), test_cntr_(0), pack_size_samp_(0), @@ -120,11 +123,13 @@ TestStereo::TestStereo(int test_mode) l16_16khz_pltype_(-1), l16_32khz_pltype_(-1) #ifdef PCMA_AND_PCMU - , pcma_pltype_(-1) - , pcmu_pltype_(-1) + , + pcma_pltype_(-1), + pcmu_pltype_(-1) #endif #ifdef WEBRTC_CODEC_OPUS - , opus_pltype_(-1) + , + opus_pltype_(-1) #endif { // test_mode = 0 for silent test (auto test) diff --git a/modules/audio_coding/test/TestVADDTX.cc b/modules/audio_coding/test/TestVADDTX.cc index 8064448989..586563895b 100644 --- a/modules/audio_coding/test/TestVADDTX.cc +++ b/modules/audio_coding/test/TestVADDTX.cc @@ -12,6 +12,7 @@ #include +#include "api/audio_codecs/builtin_audio_decoder_factory.h" #include "modules/audio_coding/codecs/audio_format_conversion.h" #include "modules/audio_coding/test/PCMFile.h" #include "modules/audio_coding/test/utility.h" @@ -62,8 +63,10 @@ void ActivityMonitor::GetStatistics(uint32_t* counter) { } TestVadDtx::TestVadDtx() - : acm_send_(AudioCodingModule::Create()), - acm_receive_(AudioCodingModule::Create()), + : acm_send_(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))), + acm_receive_(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))), channel_(new Channel), monitor_(new ActivityMonitor) { EXPECT_EQ(0, acm_send_->RegisterTransportCallback(channel_.get())); diff --git a/modules/audio_coding/test/TwoWayCommunication.cc b/modules/audio_coding/test/TwoWayCommunication.cc index 8049436cd0..1ed5a72e46 100644 --- a/modules/audio_coding/test/TwoWayCommunication.cc +++ b/modules/audio_coding/test/TwoWayCommunication.cc @@ -34,8 +34,10 @@ namespace webrtc { #define MAX_FILE_NAME_LENGTH_BYTE 500 TwoWayCommunication::TwoWayCommunication(int testMode) - : _acmA(AudioCodingModule::Create()), - _acmRefA(AudioCodingModule::Create()), + : _acmA(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))), + _acmRefA(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))), _testMode(testMode) { AudioCodingModule::Config config; // The clicks will be more obvious in FAX mode. TODO(henrik.lundin) Really? @@ -60,7 +62,8 @@ TwoWayCommunication::~TwoWayCommunication() { void TwoWayCommunication::ChooseCodec(uint8_t* codecID_A, uint8_t* codecID_B) { - std::unique_ptr tmpACM(AudioCodingModule::Create()); + std::unique_ptr tmpACM(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))); uint8_t noCodec = tmpACM->NumberOfCodecs(); CodecInst codecInst; printf("List of Supported Codecs\n"); diff --git a/modules/audio_coding/test/delay_test.cc b/modules/audio_coding/test/delay_test.cc index 407f7095cb..e1e9d71525 100644 --- a/modules/audio_coding/test/delay_test.cc +++ b/modules/audio_coding/test/delay_test.cc @@ -15,6 +15,7 @@ #include #include +#include "api/audio_codecs/builtin_audio_decoder_factory.h" #include "common_types.h" // NOLINT(build/include) #include "modules/audio_coding/codecs/audio_format_conversion.h" #include "modules/audio_coding/include/audio_coding_module.h" @@ -64,8 +65,10 @@ struct TestSettings { class DelayTest { public: DelayTest() - : acm_a_(AudioCodingModule::Create()), - acm_b_(AudioCodingModule::Create()), + : acm_a_(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))), + acm_b_(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))), channel_a2b_(new Channel), test_cntr_(0), encoding_sample_rate_hz_(8000) {} diff --git a/modules/audio_coding/test/iSACTest.cc b/modules/audio_coding/test/iSACTest.cc index a44259fbbe..a847132741 100644 --- a/modules/audio_coding/test/iSACTest.cc +++ b/modules/audio_coding/test/iSACTest.cc @@ -23,6 +23,7 @@ #include #endif +#include "api/audio_codecs/builtin_audio_decoder_factory.h" #include "modules/audio_coding/codecs/audio_format_conversion.h" #include "modules/audio_coding/test/utility.h" #include "system_wrappers/include/event_wrapper.h" @@ -67,8 +68,10 @@ int16_t SetISAConfig(ACMTestISACConfig& isacConfig, AudioCodingModule* acm, } ISACTest::ISACTest(int testMode) - : _acmA(AudioCodingModule::Create()), - _acmB(AudioCodingModule::Create()), + : _acmA(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))), + _acmB(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))), _testMode(testMode) {} ISACTest::~ISACTest() {} diff --git a/modules/audio_coding/test/insert_packet_with_timing.cc b/modules/audio_coding/test/insert_packet_with_timing.cc index 2f9bb681e7..d34fa20d77 100644 --- a/modules/audio_coding/test/insert_packet_with_timing.cc +++ b/modules/audio_coding/test/insert_packet_with_timing.cc @@ -13,6 +13,7 @@ #include +#include "api/audio_codecs/builtin_audio_decoder_factory.h" #include "common_types.h" // NOLINT(build/include) #include "modules/audio_coding/codecs/audio_format_conversion.h" #include "modules/audio_coding/include/audio_coding_module.h" @@ -56,20 +57,31 @@ const int kPlayoutPeriodMs = 10; namespace webrtc { +namespace { + +AudioCodingModule::Config AcmConfig(Clock* clock) { + AudioCodingModule::Config config; + config.clock = clock; + config.decoder_factory = CreateBuiltinAudioDecoderFactory(); + return config; +} + +} // namespace + class InsertPacketWithTiming { public: InsertPacketWithTiming() : sender_clock_(new SimulatedClock(0)), receiver_clock_(new SimulatedClock(0)), - send_acm_(AudioCodingModule::Create(sender_clock_)), - receive_acm_(AudioCodingModule::Create(receiver_clock_)), + send_acm_(AudioCodingModule::Create(AcmConfig(sender_clock_))), + receive_acm_(AudioCodingModule::Create(AcmConfig(receiver_clock_))), channel_(new Channel), seq_num_fid_(fopen(FLAG_seq_num, "rt")), send_ts_fid_(fopen(FLAG_send_ts, "rt")), receive_ts_fid_(fopen(FLAG_receive_ts, "rt")), pcm_out_fid_(fopen(FLAG_output, "wb")), samples_in_1ms_(48), - num_10ms_in_codec_frame_(2), // Typical 20 ms frames. + num_10ms_in_codec_frame_(2), // Typical 20 ms frames. time_to_insert_packet_ms_(3), // An arbitrary offset on pushing packet. next_receive_ts_(0), time_to_playout_audio_ms_(kPlayoutPeriodMs), diff --git a/modules/audio_coding/test/opus_test.cc b/modules/audio_coding/test/opus_test.cc index b7acc0f7c6..d3afd6bb0d 100644 --- a/modules/audio_coding/test/opus_test.cc +++ b/modules/audio_coding/test/opus_test.cc @@ -14,6 +14,7 @@ #include +#include "api/audio_codecs/builtin_audio_decoder_factory.h" #include "common_types.h" // NOLINT(build/include) #include "modules/audio_coding/codecs/audio_format_conversion.h" #include "modules/audio_coding/codecs/opus/opus_interface.h" @@ -27,7 +28,8 @@ namespace webrtc { OpusTest::OpusTest() - : acm_receiver_(AudioCodingModule::Create()), + : acm_receiver_(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))), channel_a2b_(NULL), counter_(0), payload_type_(255), diff --git a/modules/audio_coding/test/target_delay_unittest.cc b/modules/audio_coding/test/target_delay_unittest.cc index 03135da6c4..575dd706b5 100644 --- a/modules/audio_coding/test/target_delay_unittest.cc +++ b/modules/audio_coding/test/target_delay_unittest.cc @@ -10,6 +10,7 @@ #include +#include "api/audio_codecs/builtin_audio_decoder_factory.h" #include "common_types.h" // NOLINT(build/include) #include "modules/audio_coding/codecs/pcm16b/pcm16b.h" #include "modules/audio_coding/include/audio_coding_module.h" @@ -22,7 +23,9 @@ namespace webrtc { class TargetDelayTest : public ::testing::Test { protected: - TargetDelayTest() : acm_(AudioCodingModule::Create()) {} + TargetDelayTest() + : acm_(AudioCodingModule::Create( + AudioCodingModule::Config(CreateBuiltinAudioDecoderFactory()))) {} ~TargetDelayTest() {} diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn index 732d1e3ffc..3e7f28d7b9 100644 --- a/sdk/BUILD.gn +++ b/sdk/BUILD.gn @@ -647,6 +647,7 @@ if (is_ios || is_mac) { ":videosource_objc", "../api:libjingle_peerconnection_api", "../api:video_frame_api", + "../api/audio_codecs:builtin_audio_decoder_factory", "../api/video_codecs:video_codecs_api", "../common_video", "../media:rtc_media_base",