Update MediaEngine unittests to create Call using Environment
Bug: webrtc:15656 Change-Id: I8016f03fd0640d218344f5a6ab53c4b0663690c0 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/329081 Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/main@{#41260}
This commit is contained in:
parent
4b196371ab
commit
75aa7e94dd
@ -825,6 +825,8 @@ if (rtc_include_tests) {
|
||||
"../api:simulcast_test_fixture_api",
|
||||
"../api/audio_codecs:builtin_audio_decoder_factory",
|
||||
"../api/audio_codecs:builtin_audio_encoder_factory",
|
||||
"../api/environment",
|
||||
"../api/environment:environment_factory",
|
||||
"../api/rtc_event_log",
|
||||
"../api/task_queue",
|
||||
"../api/task_queue:default_task_queue_factory",
|
||||
|
||||
@ -20,9 +20,9 @@
|
||||
|
||||
#include "absl/algorithm/container.h"
|
||||
#include "absl/strings/match.h"
|
||||
#include "api/rtc_event_log/rtc_event_log.h"
|
||||
#include "api/environment/environment.h"
|
||||
#include "api/environment/environment_factory.h"
|
||||
#include "api/rtp_parameters.h"
|
||||
#include "api/task_queue/default_task_queue_factory.h"
|
||||
#include "api/test/mock_encoder_selector.h"
|
||||
#include "api/test/mock_video_bitrate_allocator.h"
|
||||
#include "api/test/mock_video_bitrate_allocator_factory.h"
|
||||
@ -101,6 +101,8 @@ using ::testing::WithArg;
|
||||
using ::webrtc::BitrateConstraints;
|
||||
using ::webrtc::Call;
|
||||
using ::webrtc::CallConfig;
|
||||
using ::webrtc::CreateEnvironment;
|
||||
using ::webrtc::Environment;
|
||||
using ::webrtc::kDefaultScalabilityModeStr;
|
||||
using ::webrtc::RtpExtension;
|
||||
using ::webrtc::RtpPacket;
|
||||
@ -355,13 +357,10 @@ class WebRtcVideoEngineTest : public ::testing::Test {
|
||||
explicit WebRtcVideoEngineTest(const std::string& field_trials)
|
||||
: field_trials_(field_trials),
|
||||
time_controller_(webrtc::Timestamp::Millis(4711)),
|
||||
task_queue_factory_(time_controller_.CreateTaskQueueFactory()),
|
||||
call_(Call::Create([&] {
|
||||
CallConfig call_config(&event_log_);
|
||||
call_config.task_queue_factory = task_queue_factory_.get();
|
||||
call_config.trials = &field_trials_;
|
||||
return call_config;
|
||||
}())),
|
||||
env_(CreateEnvironment(&field_trials_,
|
||||
time_controller_.CreateTaskQueueFactory(),
|
||||
time_controller_.GetClock())),
|
||||
call_(Call::Create(CallConfig(env_))),
|
||||
encoder_factory_(new cricket::FakeWebRtcVideoEncoderFactory),
|
||||
decoder_factory_(new cricket::FakeWebRtcVideoDecoderFactory),
|
||||
video_bitrate_allocator_factory_(
|
||||
@ -398,8 +397,7 @@ class WebRtcVideoEngineTest : public ::testing::Test {
|
||||
|
||||
webrtc::test::ScopedKeyValueConfig field_trials_;
|
||||
webrtc::GlobalSimulatedTimeController time_controller_;
|
||||
webrtc::RtcEventLogNull event_log_;
|
||||
std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory_;
|
||||
Environment env_;
|
||||
// Used in WebRtcVideoEngineVoiceTest, but defined here so it's properly
|
||||
// initialized when the constructor is called.
|
||||
std::unique_ptr<Call> call_;
|
||||
@ -1479,14 +1477,10 @@ TEST(WebRtcVideoEngineNewVideoCodecFactoryTest, Vp8) {
|
||||
EXPECT_CALL(*decoder_factory, CreateVideoDecoder(format)).Times(0);
|
||||
|
||||
// Create a call.
|
||||
webrtc::RtcEventLogNull event_log;
|
||||
webrtc::GlobalSimulatedTimeController time_controller(
|
||||
webrtc::Timestamp::Millis(4711));
|
||||
auto task_queue_factory = time_controller.CreateTaskQueueFactory();
|
||||
CallConfig call_config(&event_log);
|
||||
webrtc::FieldTrialBasedConfig field_trials;
|
||||
call_config.trials = &field_trials;
|
||||
call_config.task_queue_factory = task_queue_factory.get();
|
||||
CallConfig call_config(CreateEnvironment(
|
||||
time_controller.CreateTaskQueueFactory(), time_controller.GetClock()));
|
||||
const std::unique_ptr<Call> call = Call::Create(call_config);
|
||||
|
||||
// Create send channel.
|
||||
@ -1615,18 +1609,11 @@ TEST_F(WebRtcVideoEngineTest, SetVideoRtxEnabled) {
|
||||
|
||||
class WebRtcVideoChannelEncodedFrameCallbackTest : public ::testing::Test {
|
||||
protected:
|
||||
CallConfig GetCallConfig(webrtc::RtcEventLogNull* event_log,
|
||||
webrtc::TaskQueueFactory* task_queue_factory) {
|
||||
CallConfig call_config(event_log);
|
||||
call_config.task_queue_factory = task_queue_factory;
|
||||
call_config.trials = &field_trials_;
|
||||
return call_config;
|
||||
}
|
||||
|
||||
WebRtcVideoChannelEncodedFrameCallbackTest()
|
||||
: task_queue_factory_(time_controller_.CreateTaskQueueFactory()),
|
||||
call_(Call::Create(
|
||||
GetCallConfig(&event_log_, task_queue_factory_.get()))),
|
||||
: env_(CreateEnvironment(&field_trials_,
|
||||
time_controller_.CreateTaskQueueFactory(),
|
||||
time_controller_.GetClock())),
|
||||
call_(Call::Create(CallConfig(env_))),
|
||||
video_bitrate_allocator_factory_(
|
||||
webrtc::CreateBuiltinVideoBitrateAllocatorFactory()),
|
||||
engine_(
|
||||
@ -1676,8 +1663,7 @@ class WebRtcVideoChannelEncodedFrameCallbackTest : public ::testing::Test {
|
||||
webrtc::GlobalSimulatedTimeController time_controller_{
|
||||
Timestamp::Seconds(1000)};
|
||||
webrtc::test::ScopedKeyValueConfig field_trials_;
|
||||
webrtc::RtcEventLogNull event_log_;
|
||||
std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory_;
|
||||
Environment env_;
|
||||
std::unique_ptr<Call> call_;
|
||||
std::unique_ptr<webrtc::VideoBitrateAllocatorFactory>
|
||||
video_bitrate_allocator_factory_;
|
||||
@ -1796,7 +1782,9 @@ TEST_F(WebRtcVideoChannelEncodedFrameCallbackTest, DoesNotDecodeWhenDisabled) {
|
||||
class WebRtcVideoChannelBaseTest : public ::testing::Test {
|
||||
protected:
|
||||
WebRtcVideoChannelBaseTest()
|
||||
: task_queue_factory_(time_controller_.CreateTaskQueueFactory()),
|
||||
: env_(CreateEnvironment(&field_trials_,
|
||||
time_controller_.CreateTaskQueueFactory(),
|
||||
time_controller_.GetClock())),
|
||||
video_bitrate_allocator_factory_(
|
||||
webrtc::CreateBuiltinVideoBitrateAllocatorFactory()),
|
||||
engine_(std::make_unique<webrtc::VideoEncoderFactoryTemplate<
|
||||
@ -1814,10 +1802,7 @@ class WebRtcVideoChannelBaseTest : public ::testing::Test {
|
||||
void SetUp() override {
|
||||
// One testcase calls SetUp in a loop, only create call_ once.
|
||||
if (!call_) {
|
||||
CallConfig call_config(&event_log_);
|
||||
call_config.task_queue_factory = task_queue_factory_.get();
|
||||
call_config.trials = &field_trials_;
|
||||
call_ = Call::Create(call_config);
|
||||
call_ = Call::Create(CallConfig(env_));
|
||||
}
|
||||
|
||||
cricket::MediaConfig media_config;
|
||||
@ -2016,10 +2001,9 @@ class WebRtcVideoChannelBaseTest : public ::testing::Test {
|
||||
webrtc::GlobalSimulatedTimeController time_controller_{
|
||||
Timestamp::Seconds(1000)};
|
||||
|
||||
webrtc::RtcEventLogNull event_log_;
|
||||
webrtc::test::ScopedKeyValueConfig field_trials_;
|
||||
std::unique_ptr<webrtc::test::ScopedKeyValueConfig> override_field_trials_;
|
||||
std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory_;
|
||||
Environment env_;
|
||||
std::unique_ptr<Call> call_;
|
||||
std::unique_ptr<webrtc::VideoBitrateAllocatorFactory>
|
||||
video_bitrate_allocator_factory_;
|
||||
@ -9863,7 +9847,6 @@ class WebRtcVideoChannelSimulcastTest : public ::testing::Test {
|
||||
}
|
||||
|
||||
webrtc::test::ScopedKeyValueConfig field_trials_;
|
||||
webrtc::RtcEventLogNull event_log_;
|
||||
FakeCall fake_call_;
|
||||
cricket::FakeWebRtcVideoEncoderFactory* encoder_factory_;
|
||||
cricket::FakeWebRtcVideoDecoderFactory* decoder_factory_;
|
||||
|
||||
@ -18,8 +18,9 @@
|
||||
#include "absl/types/optional.h"
|
||||
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
|
||||
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
|
||||
#include "api/environment/environment.h"
|
||||
#include "api/environment/environment_factory.h"
|
||||
#include "api/media_types.h"
|
||||
#include "api/rtc_event_log/rtc_event_log.h"
|
||||
#include "api/rtp_parameters.h"
|
||||
#include "api/scoped_refptr.h"
|
||||
#include "api/task_queue/default_task_queue_factory.h"
|
||||
@ -45,6 +46,7 @@
|
||||
#include "test/mock_audio_encoder_factory.h"
|
||||
#include "test/scoped_key_value_config.h"
|
||||
|
||||
namespace {
|
||||
using ::testing::_;
|
||||
using ::testing::ContainerEq;
|
||||
using ::testing::Contains;
|
||||
@ -55,11 +57,11 @@ using ::testing::ReturnPointee;
|
||||
using ::testing::SaveArg;
|
||||
using ::testing::StrictMock;
|
||||
using ::testing::UnorderedElementsAreArray;
|
||||
using ::webrtc::BitrateConstraints;
|
||||
using ::webrtc::Call;
|
||||
using ::webrtc::CallConfig;
|
||||
|
||||
namespace {
|
||||
using webrtc::BitrateConstraints;
|
||||
using ::webrtc::CreateEnvironment;
|
||||
using ::webrtc::Environment;
|
||||
|
||||
constexpr uint32_t kMaxUnsignaledRecvStreams = 4;
|
||||
|
||||
@ -3678,24 +3680,18 @@ TEST(WebRtcVoiceEngineTest, StartupShutdown) {
|
||||
for (bool use_null_apm : {false, true}) {
|
||||
// If the VoiceEngine wants to gather available codecs early, that's fine
|
||||
// but we never want it to create a decoder at this stage.
|
||||
std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory =
|
||||
webrtc::CreateDefaultTaskQueueFactory();
|
||||
Environment env = CreateEnvironment();
|
||||
rtc::scoped_refptr<webrtc::test::MockAudioDeviceModule> adm =
|
||||
webrtc::test::MockAudioDeviceModule::CreateNice();
|
||||
rtc::scoped_refptr<webrtc::AudioProcessing> apm =
|
||||
use_null_apm ? nullptr : webrtc::AudioProcessingBuilder().Create();
|
||||
webrtc::FieldTrialBasedConfig field_trials;
|
||||
cricket::WebRtcVoiceEngine engine(
|
||||
task_queue_factory.get(), adm.get(),
|
||||
&env.task_queue_factory(), adm.get(),
|
||||
webrtc::MockAudioEncoderFactory::CreateUnusedFactory(),
|
||||
webrtc::MockAudioDecoderFactory::CreateUnusedFactory(), nullptr, apm,
|
||||
nullptr, field_trials);
|
||||
nullptr, env.field_trials());
|
||||
engine.Init();
|
||||
webrtc::RtcEventLogNull event_log;
|
||||
CallConfig call_config(&event_log);
|
||||
call_config.trials = &field_trials;
|
||||
call_config.task_queue_factory = task_queue_factory.get();
|
||||
std::unique_ptr<Call> call = Call::Create(call_config);
|
||||
std::unique_ptr<Call> call = Call::Create(CallConfig(env));
|
||||
std::unique_ptr<cricket::VoiceMediaSendChannelInterface> send_channel =
|
||||
engine.CreateSendChannel(
|
||||
call.get(), cricket::MediaConfig(), cricket::AudioOptions(),
|
||||
@ -3713,25 +3709,19 @@ TEST(WebRtcVoiceEngineTest, StartupShutdown) {
|
||||
TEST(WebRtcVoiceEngineTest, StartupShutdownWithExternalADM) {
|
||||
rtc::AutoThread main_thread;
|
||||
for (bool use_null_apm : {false, true}) {
|
||||
std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory =
|
||||
webrtc::CreateDefaultTaskQueueFactory();
|
||||
Environment env = CreateEnvironment();
|
||||
auto adm = rtc::make_ref_counted<
|
||||
::testing::NiceMock<webrtc::test::MockAudioDeviceModule>>();
|
||||
{
|
||||
rtc::scoped_refptr<webrtc::AudioProcessing> apm =
|
||||
use_null_apm ? nullptr : webrtc::AudioProcessingBuilder().Create();
|
||||
webrtc::FieldTrialBasedConfig field_trials;
|
||||
cricket::WebRtcVoiceEngine engine(
|
||||
task_queue_factory.get(), adm.get(),
|
||||
&env.task_queue_factory(), adm.get(),
|
||||
webrtc::MockAudioEncoderFactory::CreateUnusedFactory(),
|
||||
webrtc::MockAudioDecoderFactory::CreateUnusedFactory(), nullptr, apm,
|
||||
nullptr, field_trials);
|
||||
nullptr, env.field_trials());
|
||||
engine.Init();
|
||||
webrtc::RtcEventLogNull event_log;
|
||||
CallConfig call_config(&event_log);
|
||||
call_config.trials = &field_trials;
|
||||
call_config.task_queue_factory = task_queue_factory.get();
|
||||
std::unique_ptr<Call> call = Call::Create(call_config);
|
||||
std::unique_ptr<Call> call = Call::Create(CallConfig(env));
|
||||
std::unique_ptr<cricket::VoiceMediaSendChannelInterface> send_channel =
|
||||
engine.CreateSendChannel(
|
||||
call.get(), cricket::MediaConfig(), cricket::AudioOptions(),
|
||||
@ -3804,24 +3794,18 @@ TEST(WebRtcVoiceEngineTest, HasCorrectPayloadTypeMapping) {
|
||||
TEST(WebRtcVoiceEngineTest, Has32Channels) {
|
||||
rtc::AutoThread main_thread;
|
||||
for (bool use_null_apm : {false, true}) {
|
||||
std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory =
|
||||
webrtc::CreateDefaultTaskQueueFactory();
|
||||
Environment env = CreateEnvironment();
|
||||
rtc::scoped_refptr<webrtc::test::MockAudioDeviceModule> adm =
|
||||
webrtc::test::MockAudioDeviceModule::CreateNice();
|
||||
rtc::scoped_refptr<webrtc::AudioProcessing> apm =
|
||||
use_null_apm ? nullptr : webrtc::AudioProcessingBuilder().Create();
|
||||
webrtc::FieldTrialBasedConfig field_trials;
|
||||
cricket::WebRtcVoiceEngine engine(
|
||||
task_queue_factory.get(), adm.get(),
|
||||
&env.task_queue_factory(), adm.get(),
|
||||
webrtc::MockAudioEncoderFactory::CreateUnusedFactory(),
|
||||
webrtc::MockAudioDecoderFactory::CreateUnusedFactory(), nullptr, apm,
|
||||
nullptr, field_trials);
|
||||
nullptr, env.field_trials());
|
||||
engine.Init();
|
||||
webrtc::RtcEventLogNull event_log;
|
||||
CallConfig call_config(&event_log);
|
||||
call_config.trials = &field_trials;
|
||||
call_config.task_queue_factory = task_queue_factory.get();
|
||||
std::unique_ptr<Call> call = Call::Create(call_config);
|
||||
std::unique_ptr<Call> call = Call::Create(CallConfig(env));
|
||||
|
||||
std::vector<std::unique_ptr<cricket::VoiceMediaSendChannelInterface>>
|
||||
channels;
|
||||
@ -3843,8 +3827,7 @@ TEST(WebRtcVoiceEngineTest, Has32Channels) {
|
||||
TEST(WebRtcVoiceEngineTest, SetRecvCodecs) {
|
||||
rtc::AutoThread main_thread;
|
||||
for (bool use_null_apm : {false, true}) {
|
||||
std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory =
|
||||
webrtc::CreateDefaultTaskQueueFactory();
|
||||
Environment env = CreateEnvironment();
|
||||
// TODO(ossu): I'm not sure of the intent of this test. It's either:
|
||||
// - Check that our builtin codecs are usable by Channel.
|
||||
// - The codecs provided by the engine is usable by Channel.
|
||||
@ -3856,18 +3839,13 @@ TEST(WebRtcVoiceEngineTest, SetRecvCodecs) {
|
||||
webrtc::test::MockAudioDeviceModule::CreateNice();
|
||||
rtc::scoped_refptr<webrtc::AudioProcessing> apm =
|
||||
use_null_apm ? nullptr : webrtc::AudioProcessingBuilder().Create();
|
||||
webrtc::FieldTrialBasedConfig field_trials;
|
||||
cricket::WebRtcVoiceEngine engine(
|
||||
task_queue_factory.get(), adm.get(),
|
||||
&env.task_queue_factory(), adm.get(),
|
||||
webrtc::MockAudioEncoderFactory::CreateUnusedFactory(),
|
||||
webrtc::CreateBuiltinAudioDecoderFactory(), nullptr, apm, nullptr,
|
||||
field_trials);
|
||||
env.field_trials());
|
||||
engine.Init();
|
||||
webrtc::RtcEventLogNull event_log;
|
||||
CallConfig call_config(&event_log);
|
||||
call_config.trials = &field_trials;
|
||||
call_config.task_queue_factory = task_queue_factory.get();
|
||||
std::unique_ptr<Call> call = Call::Create(call_config);
|
||||
std::unique_ptr<Call> call = Call::Create(CallConfig(env));
|
||||
cricket::WebRtcVoiceReceiveChannel channel(
|
||||
&engine, cricket::MediaConfig(), cricket::AudioOptions(),
|
||||
webrtc::CryptoOptions(), call.get(),
|
||||
@ -3880,21 +3858,17 @@ TEST(WebRtcVoiceEngineTest, SetRecvCodecs) {
|
||||
|
||||
TEST(WebRtcVoiceEngineTest, SetRtpSendParametersMaxBitrate) {
|
||||
rtc::AutoThread main_thread;
|
||||
std::unique_ptr<webrtc::TaskQueueFactory> task_queue_factory =
|
||||
webrtc::CreateDefaultTaskQueueFactory();
|
||||
Environment env = CreateEnvironment();
|
||||
rtc::scoped_refptr<webrtc::test::MockAudioDeviceModule> adm =
|
||||
webrtc::test::MockAudioDeviceModule::CreateNice();
|
||||
webrtc::FieldTrialBasedConfig field_trials;
|
||||
FakeAudioSource source;
|
||||
cricket::WebRtcVoiceEngine engine(task_queue_factory.get(), adm.get(),
|
||||
cricket::WebRtcVoiceEngine engine(&env.task_queue_factory(), adm.get(),
|
||||
webrtc::CreateBuiltinAudioEncoderFactory(),
|
||||
webrtc::CreateBuiltinAudioDecoderFactory(),
|
||||
nullptr, nullptr, nullptr, field_trials);
|
||||
nullptr, nullptr, nullptr,
|
||||
env.field_trials());
|
||||
engine.Init();
|
||||
webrtc::RtcEventLogNull event_log;
|
||||
CallConfig call_config(&event_log);
|
||||
call_config.trials = &field_trials;
|
||||
call_config.task_queue_factory = task_queue_factory.get();
|
||||
CallConfig call_config(env);
|
||||
{
|
||||
webrtc::AudioState::Config config;
|
||||
config.audio_mixer = webrtc::AudioMixerImpl::Create();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user