diff --git a/api/neteq/BUILD.gn b/api/neteq/BUILD.gn index b995b22fef..63881ae6b8 100644 --- a/api/neteq/BUILD.gn +++ b/api/neteq/BUILD.gn @@ -21,9 +21,11 @@ rtc_source_set("neteq_api") { "..:rtp_headers", "..:rtp_packet_info", "..:scoped_refptr", + "../../rtc_base:checks", "../../rtc_base:stringutils", "../../system_wrappers:system_wrappers", "../audio_codecs:audio_codecs_api", + "../environment", "../units:timestamp", "//third_party/abseil-cpp/absl/types:optional", ] diff --git a/api/neteq/neteq_factory.h b/api/neteq/neteq_factory.h index 526a1282f5..8ee3680f22 100644 --- a/api/neteq/neteq_factory.h +++ b/api/neteq/neteq_factory.h @@ -14,7 +14,10 @@ #include #include "api/audio_codecs/audio_decoder_factory.h" +#include "api/environment/environment.h" #include "api/neteq/neteq.h" +#include "api/scoped_refptr.h" +#include "rtc_base/checks.h" #include "system_wrappers/include/clock.h" namespace webrtc { @@ -27,10 +30,21 @@ class NetEqFactory { // 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. + virtual std::unique_ptr Create( + const Environment& env, + const NetEq::Config& config, + scoped_refptr decoder_factory) const { + return CreateNetEq(config, decoder_factory, &env.clock()); + } + virtual std::unique_ptr CreateNetEq( const NetEq::Config& config, const rtc::scoped_refptr& decoder_factory, - Clock* clock) const = 0; + Clock* clock) const { + // TODO: b/356878416 - Delete this function when all callers are migrated + // to `Create` function above. + RTC_CHECK_NOTREACHED(); + } }; } // namespace webrtc diff --git a/modules/audio_coding/acm2/acm_receiver.cc b/modules/audio_coding/acm2/acm_receiver.cc index 13ad1a31a8..ca79a576d4 100644 --- a/modules/audio_coding/acm2/acm_receiver.cc +++ b/modules/audio_coding/acm2/acm_receiver.cc @@ -39,12 +39,12 @@ namespace { std::unique_ptr CreateNetEq( NetEqFactory* neteq_factory, const NetEq::Config& config, - Clock* clock, - const rtc::scoped_refptr& decoder_factory) { + const Environment& env, + scoped_refptr decoder_factory) { if (neteq_factory) { - return neteq_factory->CreateNetEq(config, decoder_factory, clock); + return neteq_factory->Create(env, config, std::move(decoder_factory)); } - return DefaultNetEqFactory().CreateNetEq(config, decoder_factory, clock); + return DefaultNetEqFactory().Create(env, config, std::move(decoder_factory)); } } // namespace @@ -60,8 +60,8 @@ AcmReceiver::AcmReceiver(const Environment& env, Config config) : env_(env), neteq_(CreateNetEq(config.neteq_factory, config.neteq_config, - &env_.clock(), - config.decoder_factory)), + env_, + std::move(config.decoder_factory))), resampled_last_output_frame_(true) { ClearSamples(last_audio_buffer_); }