Index: webrtc/media/base/videoengine_unittest.h |
diff --git a/webrtc/media/base/videoengine_unittest.h b/webrtc/media/base/videoengine_unittest.h |
index 929c948d4505a97449b04cf477ac1f8f8eb2a5e3..d9565ba8a9514ebe793a99b63f96c5a199bab7bd 100644 |
--- a/webrtc/media/base/videoengine_unittest.h |
+++ b/webrtc/media/base/videoengine_unittest.h |
@@ -125,7 +125,8 @@ class VideoMediaChannelTest : public testing::Test, |
cricket::VideoFormat::FpsToInterval(30), |
cricket::FOURCC_I420); |
EXPECT_EQ(cricket::CS_RUNNING, video_capturer_->Start(format)); |
- EXPECT_TRUE(channel_->SetCapturer(kSsrc, video_capturer_.get())); |
+ EXPECT_TRUE( |
+ channel_->SetVideoSend(kSsrc, true, nullptr, video_capturer_.get())); |
} |
virtual cricket::FakeVideoCapturer* CreateFakeVideoCapturer() { |
@@ -162,7 +163,8 @@ class VideoMediaChannelTest : public testing::Test, |
cricket::FOURCC_I420); |
EXPECT_EQ(cricket::CS_RUNNING, video_capturer_2_->Start(format)); |
- EXPECT_TRUE(channel_->SetCapturer(kSsrc + 2, video_capturer_2_.get())); |
+ EXPECT_TRUE(channel_->SetVideoSend(kSsrc + 2, true, nullptr, |
+ video_capturer_2_.get())); |
} |
virtual void TearDown() { |
channel_.reset(); |
@@ -375,7 +377,8 @@ class VideoMediaChannelTest : public testing::Test, |
// Test that SetSend works. |
void SetSend() { |
EXPECT_FALSE(channel_->sending()); |
- EXPECT_TRUE(channel_->SetCapturer(kSsrc, video_capturer_.get())); |
+ EXPECT_TRUE( |
+ channel_->SetVideoSend(kSsrc, true, nullptr, video_capturer_.get())); |
EXPECT_TRUE(SetOneCodec(DefaultCodec())); |
EXPECT_FALSE(channel_->sending()); |
EXPECT_TRUE(SetSend(true)); |
@@ -569,7 +572,7 @@ class VideoMediaChannelTest : public testing::Test, |
EXPECT_EQ(cricket::CS_RUNNING, capturer->Start(format)); |
EXPECT_TRUE(channel_->AddSendStream( |
cricket::StreamParams::CreateLegacy(5678))); |
- EXPECT_TRUE(channel_->SetCapturer(5678, capturer.get())); |
+ EXPECT_TRUE(channel_->SetVideoSend(5678, true, nullptr, capturer.get())); |
EXPECT_TRUE(channel_->AddRecvStream( |
cricket::StreamParams::CreateLegacy(5678))); |
EXPECT_TRUE(channel_->SetSink(5678, &renderer2)); |
@@ -605,7 +608,7 @@ class VideoMediaChannelTest : public testing::Test, |
EXPECT_EQ(kTestWidth, info.senders[1].send_frame_width); |
EXPECT_EQ(kTestHeight, info.senders[1].send_frame_height); |
// The capturer must be unregistered here as it runs out of it's scope next. |
- EXPECT_TRUE(channel_->SetCapturer(5678, NULL)); |
+ EXPECT_TRUE(channel_->SetVideoSend(5678, true, nullptr, nullptr)); |
} |
// Test that we can set the bandwidth. |
@@ -642,7 +645,8 @@ class VideoMediaChannelTest : public testing::Test, |
EXPECT_TRUE(SetDefaultCodec()); |
EXPECT_TRUE(channel_->AddSendStream( |
cricket::StreamParams::CreateLegacy(999))); |
- EXPECT_TRUE(channel_->SetCapturer(999u, video_capturer_.get())); |
+ EXPECT_TRUE( |
+ channel_->SetVideoSend(999u, true, nullptr, video_capturer_.get())); |
EXPECT_TRUE(SetSend(true)); |
EXPECT_TRUE(WaitAndSendFrame(0)); |
EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); |
@@ -708,7 +712,8 @@ class VideoMediaChannelTest : public testing::Test, |
EXPECT_TRUE(channel_->AddSendStream( |
cricket::StreamParams::CreateLegacy(789u))); |
- EXPECT_TRUE(channel_->SetCapturer(789u, video_capturer_.get())); |
+ EXPECT_TRUE( |
+ channel_->SetVideoSend(789u, true, nullptr, video_capturer_.get())); |
EXPECT_EQ(rtp_packets, NumRtpPackets()); |
// Wait 30ms to guarantee the engine does not drop the frame. |
EXPECT_TRUE(WaitAndSendFrame(30)); |
@@ -777,7 +782,7 @@ class VideoMediaChannelTest : public testing::Test, |
// test which is related to screencast logic. |
cricket::VideoOptions video_options; |
video_options.is_screencast = rtc::Optional<bool>(true); |
- channel_->SetVideoSend(kSsrc, true, &video_options); |
+ channel_->SetVideoSend(kSsrc, true, &video_options, nullptr); |
cricket::VideoFormat format(480, 360, |
cricket::VideoFormat::FpsToInterval(30), |
@@ -791,7 +796,7 @@ class VideoMediaChannelTest : public testing::Test, |
int captured_frames = 1; |
for (int iterations = 0; iterations < 2; ++iterations) { |
- EXPECT_TRUE(channel_->SetCapturer(kSsrc, capturer.get())); |
+ EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr, capturer.get())); |
rtc::Thread::Current()->ProcessMessages(time_between_send); |
EXPECT_TRUE(capturer->CaptureCustomFrame(format.width, format.height, |
cricket::FOURCC_I420)); |
@@ -806,7 +811,7 @@ class VideoMediaChannelTest : public testing::Test, |
EXPECT_EQ(format.height, renderer_.height()); |
captured_frames = renderer_.num_rendered_frames() + 1; |
EXPECT_FALSE(renderer_.black_frame()); |
- EXPECT_TRUE(channel_->SetCapturer(kSsrc, NULL)); |
+ EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr, nullptr)); |
// Make sure a black frame is generated within the specified timeout. |
// The black frame should be the resolution of the previous frame to |
// prevent expensive encoder reconfigurations. |
@@ -828,8 +833,9 @@ class VideoMediaChannelTest : public testing::Test, |
} |
} |
- // Tests that if RemoveCapturer is called without a capturer ever being |
- // added, the plugin shouldn't crash (and no black frame should be sent). |
+ // Tests that if SetVideoSend is called with a NULL capturer after the |
+ // capturer was already removed, the application doesn't crash (and no black |
+ // frame is sent). |
void RemoveCapturerWithoutAdd() { |
EXPECT_TRUE(SetOneCodec(DefaultCodec())); |
EXPECT_TRUE(SetSend(true)); |
@@ -841,13 +847,12 @@ class VideoMediaChannelTest : public testing::Test, |
// tightly. |
rtc::Thread::Current()->ProcessMessages(30); |
// Remove the capturer. |
- EXPECT_TRUE(channel_->SetCapturer(kSsrc, NULL)); |
+ EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr, nullptr)); |
// Wait for one black frame for removing the capturer. |
EXPECT_FRAME_WAIT(2, 640, 400, kTimeout); |
- // No capturer was added, so this RemoveCapturer should |
- // fail. |
- EXPECT_FALSE(channel_->SetCapturer(kSsrc, NULL)); |
+ // No capturer was added, so this SetVideoSend shouldn't do anything. |
+ EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr, nullptr)); |
rtc::Thread::Current()->ProcessMessages(300); |
// Verify no more frames were sent. |
EXPECT_EQ(2, renderer_.num_rendered_frames()); |
@@ -889,11 +894,11 @@ class VideoMediaChannelTest : public testing::Test, |
EXPECT_EQ(cricket::CS_RUNNING, capturer2->Start(capture_format)); |
// State for all the streams. |
EXPECT_TRUE(SetOneCodec(DefaultCodec())); |
- // A limitation in the lmi implementation requires that SetCapturer() is |
+ // A limitation in the lmi implementation requires that SetVideoSend() is |
// called after SetOneCodec(). |
// TODO(hellner): this seems like an unnecessary constraint, fix it. |
- EXPECT_TRUE(channel_->SetCapturer(1, capturer1.get())); |
- EXPECT_TRUE(channel_->SetCapturer(2, capturer2.get())); |
+ EXPECT_TRUE(channel_->SetVideoSend(1, true, nullptr, capturer1.get())); |
+ EXPECT_TRUE(channel_->SetVideoSend(2, true, nullptr, capturer2.get())); |
EXPECT_TRUE(SetSend(true)); |
// Test capturer associated with engine. |
const int kTestWidth = 160; |
@@ -908,13 +913,11 @@ class VideoMediaChannelTest : public testing::Test, |
EXPECT_FRAME_ON_RENDERER_WAIT( |
renderer2, 1, kTestWidth, kTestHeight, kTimeout); |
// Successfully remove the capturer. |
- EXPECT_TRUE(channel_->SetCapturer(kSsrc, NULL)); |
- // Fail to re-remove the capturer. |
- EXPECT_FALSE(channel_->SetCapturer(kSsrc, NULL)); |
+ EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr, nullptr)); |
// The capturers must be unregistered here as it runs out of it's scope |
// next. |
- EXPECT_TRUE(channel_->SetCapturer(1, NULL)); |
- EXPECT_TRUE(channel_->SetCapturer(2, NULL)); |
+ EXPECT_TRUE(channel_->SetVideoSend(1, true, nullptr, nullptr)); |
+ EXPECT_TRUE(channel_->SetVideoSend(2, true, nullptr, nullptr)); |
} |
void HighAspectHighHeightCapturer() { |
@@ -947,13 +950,13 @@ class VideoMediaChannelTest : public testing::Test, |
EXPECT_EQ(cricket::CS_RUNNING, capturer->Start(capture_format)); |
// Capture frame to not get same frame timestamps as previous capturer. |
capturer->CaptureFrame(); |
- EXPECT_TRUE(channel_->SetCapturer(kSsrc, capturer.get())); |
+ EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr, capturer.get())); |
EXPECT_TRUE(rtc::Thread::Current()->ProcessMessages(30)); |
EXPECT_TRUE(capturer->CaptureCustomFrame(kWidth, kHeight, |
cricket::FOURCC_ARGB)); |
EXPECT_GT_FRAME_ON_RENDERER_WAIT( |
renderer, 2, kScaledWidth, kScaledHeight, kTimeout); |
- EXPECT_TRUE(channel_->SetCapturer(kSsrc, NULL)); |
+ EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr, nullptr)); |
} |
// Tests that we can adapt video resolution with 16:10 aspect ratio properly. |
@@ -1073,46 +1076,47 @@ class VideoMediaChannelTest : public testing::Test, |
640, 480, |
cricket::VideoFormat::FpsToInterval(30), |
cricket::FOURCC_I420)); |
- EXPECT_TRUE(channel_->SetCapturer(kSsrc, &video_capturer)); |
+ EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr, &video_capturer)); |
EXPECT_TRUE(SetSend(true)); |
EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_)); |
EXPECT_EQ(0, renderer_.num_rendered_frames()); |
// Mute the channel and expect black output frame. |
int frame_count = 0; |
- EXPECT_TRUE(channel_->SetVideoSend(kSsrc, false, nullptr)); |
+ EXPECT_TRUE(channel_->SetVideoSend(kSsrc, false, nullptr, &video_capturer)); |
EXPECT_TRUE(video_capturer.CaptureFrame()); |
++frame_count; |
EXPECT_EQ_WAIT(frame_count, renderer_.num_rendered_frames(), kTimeout); |
EXPECT_TRUE(renderer_.black_frame()); |
// Unmute the channel and expect non-black output frame. |
- EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr)); |
+ EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr, &video_capturer)); |
EXPECT_TRUE(rtc::Thread::Current()->ProcessMessages(30)); |
EXPECT_TRUE(video_capturer.CaptureFrame()); |
++frame_count; |
EXPECT_EQ_WAIT(frame_count, renderer_.num_rendered_frames(), kTimeout); |
EXPECT_FALSE(renderer_.black_frame()); |
// Test that we can also Mute using the correct send stream SSRC. |
- EXPECT_TRUE(channel_->SetVideoSend(kSsrc, false, nullptr)); |
+ EXPECT_TRUE(channel_->SetVideoSend(kSsrc, false, nullptr, &video_capturer)); |
EXPECT_TRUE(rtc::Thread::Current()->ProcessMessages(30)); |
EXPECT_TRUE(video_capturer.CaptureFrame()); |
++frame_count; |
EXPECT_EQ_WAIT(frame_count, renderer_.num_rendered_frames(), kTimeout); |
EXPECT_TRUE(renderer_.black_frame()); |
- EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr)); |
+ EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr, &video_capturer)); |
EXPECT_TRUE(rtc::Thread::Current()->ProcessMessages(30)); |
EXPECT_TRUE(video_capturer.CaptureFrame()); |
++frame_count; |
EXPECT_EQ_WAIT(frame_count, renderer_.num_rendered_frames(), kTimeout); |
EXPECT_FALSE(renderer_.black_frame()); |
// Test that muting an existing stream succeeds even if it's muted. |
- EXPECT_TRUE(channel_->SetVideoSend(kSsrc, false, nullptr)); |
- EXPECT_TRUE(channel_->SetVideoSend(kSsrc, false, nullptr)); |
+ EXPECT_TRUE(channel_->SetVideoSend(kSsrc, false, nullptr, &video_capturer)); |
+ EXPECT_TRUE(channel_->SetVideoSend(kSsrc, false, nullptr, &video_capturer)); |
// Test that unmuting an existing stream succeeds even if it's not muted. |
- EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr)); |
- EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr)); |
+ EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr, &video_capturer)); |
+ EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr, &video_capturer)); |
// Test that muting an invalid stream fails. |
- EXPECT_FALSE(channel_->SetVideoSend(kSsrc+1, false, nullptr)); |
- EXPECT_TRUE(channel_->SetCapturer(kSsrc, NULL)); |
+ EXPECT_FALSE( |
+ channel_->SetVideoSend(kSsrc + 1, false, nullptr, &video_capturer)); |
+ EXPECT_TRUE(channel_->SetVideoSend(kSsrc, true, nullptr, nullptr)); |
} |
// Test that multiple send streams can be created and deleted properly. |