Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(336)

Side by Side Diff: webrtc/media/base/videoengine_unittest.h

Issue 1711763003: New flag is_screencast in VideoOptions. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebase, on top of suspend_below_min_bitrate change. Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 channel_->SetRecvParameters(parameters); 122 channel_->SetRecvParameters(parameters);
123 EXPECT_TRUE(channel_->AddSendStream(DefaultSendStreamParams())); 123 EXPECT_TRUE(channel_->AddSendStream(DefaultSendStreamParams()));
124 video_capturer_.reset(CreateFakeVideoCapturer()); 124 video_capturer_.reset(CreateFakeVideoCapturer());
125 cricket::VideoFormat format(640, 480, 125 cricket::VideoFormat format(640, 480,
126 cricket::VideoFormat::FpsToInterval(30), 126 cricket::VideoFormat::FpsToInterval(30),
127 cricket::FOURCC_I420); 127 cricket::FOURCC_I420);
128 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_->Start(format)); 128 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_->Start(format));
129 EXPECT_TRUE(channel_->SetCapturer(kSsrc, video_capturer_.get())); 129 EXPECT_TRUE(channel_->SetCapturer(kSsrc, video_capturer_.get()));
130 } 130 }
131 131
132 virtual cricket::FakeVideoCapturer* CreateFakeVideoCapturer(
133 bool is_screencast) {
134 return new cricket::FakeVideoCapturer(is_screencast);
135 }
132 virtual cricket::FakeVideoCapturer* CreateFakeVideoCapturer() { 136 virtual cricket::FakeVideoCapturer* CreateFakeVideoCapturer() {
133 return new cricket::FakeVideoCapturer(); 137 return CreateFakeVideoCapturer(false);
134 } 138 }
135 139
136 // Utility method to setup an additional stream to send and receive video. 140 // Utility method to setup an additional stream to send and receive video.
137 // Used to test send and recv between two streams. 141 // Used to test send and recv between two streams.
138 void SetUpSecondStream() { 142 void SetUpSecondStream() {
139 SetUpSecondStreamWithNoRecv(); 143 SetUpSecondStreamWithNoRecv();
140 // Setup recv for second stream. 144 // Setup recv for second stream.
141 EXPECT_TRUE(channel_->AddRecvStream( 145 EXPECT_TRUE(channel_->AddRecvStream(
142 cricket::StreamParams::CreateLegacy(kSsrc + 2))); 146 cricket::StreamParams::CreateLegacy(kSsrc + 2)));
143 // Make the second renderer available for use by a new stream. 147 // Make the second renderer available for use by a new stream.
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after
552 cricket::StreamParams::CreateLegacy(kSsrc))); 556 cricket::StreamParams::CreateLegacy(kSsrc)));
553 EXPECT_TRUE(channel_->SetSink(kSsrc, &renderer_)); 557 EXPECT_TRUE(channel_->SetSink(kSsrc, &renderer_));
554 EXPECT_TRUE(SetSend(true)); 558 EXPECT_TRUE(SetSend(true));
555 EXPECT_TRUE(SendFrame()); 559 EXPECT_TRUE(SendFrame());
556 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); 560 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout);
557 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); 561 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout);
558 562
559 // Add an additional capturer, and hook up a renderer to receive it. 563 // Add an additional capturer, and hook up a renderer to receive it.
560 cricket::FakeVideoRenderer renderer2; 564 cricket::FakeVideoRenderer renderer2;
561 std::unique_ptr<cricket::FakeVideoCapturer> capturer( 565 std::unique_ptr<cricket::FakeVideoCapturer> capturer(
562 CreateFakeVideoCapturer()); 566 CreateFakeVideoCapturer(true));
563 capturer->SetScreencast(true);
564 const int kTestWidth = 160; 567 const int kTestWidth = 160;
565 const int kTestHeight = 120; 568 const int kTestHeight = 120;
566 cricket::VideoFormat format(kTestWidth, kTestHeight, 569 cricket::VideoFormat format(kTestWidth, kTestHeight,
567 cricket::VideoFormat::FpsToInterval(5), 570 cricket::VideoFormat::FpsToInterval(5),
568 cricket::FOURCC_I420); 571 cricket::FOURCC_I420);
569 EXPECT_EQ(cricket::CS_RUNNING, capturer->Start(format)); 572 EXPECT_EQ(cricket::CS_RUNNING, capturer->Start(format));
570 EXPECT_TRUE(channel_->AddSendStream( 573 EXPECT_TRUE(channel_->AddSendStream(
571 cricket::StreamParams::CreateLegacy(5678))); 574 cricket::StreamParams::CreateLegacy(5678)));
572 EXPECT_TRUE(channel_->SetCapturer(5678, capturer.get())); 575 EXPECT_TRUE(channel_->SetCapturer(5678, capturer.get()));
573 EXPECT_TRUE(channel_->AddRecvStream( 576 EXPECT_TRUE(channel_->AddRecvStream(
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
763 codec.width = 320; 766 codec.width = 320;
764 codec.height = 240; 767 codec.height = 240;
765 const int time_between_send = TimeBetweenSend(codec); 768 const int time_between_send = TimeBetweenSend(codec);
766 EXPECT_TRUE(SetOneCodec(codec)); 769 EXPECT_TRUE(SetOneCodec(codec));
767 EXPECT_TRUE(SetSend(true)); 770 EXPECT_TRUE(SetSend(true));
768 EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_)); 771 EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_));
769 EXPECT_EQ(0, renderer_.num_rendered_frames()); 772 EXPECT_EQ(0, renderer_.num_rendered_frames());
770 EXPECT_TRUE(SendFrame()); 773 EXPECT_TRUE(SendFrame());
771 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); 774 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout);
772 std::unique_ptr<cricket::FakeVideoCapturer> capturer( 775 std::unique_ptr<cricket::FakeVideoCapturer> capturer(
773 CreateFakeVideoCapturer()); 776 CreateFakeVideoCapturer(true));
774 capturer->SetScreencast(true); 777
778 cricket::VideoOptions video_options;
779 video_options.is_screencast = rtc::Optional<bool>(true);
780 channel_->SetVideoSend(kSsrc, true, &video_options);
781
775 cricket::VideoFormat format(480, 360, 782 cricket::VideoFormat format(480, 360,
776 cricket::VideoFormat::FpsToInterval(30), 783 cricket::VideoFormat::FpsToInterval(30),
777 cricket::FOURCC_I420); 784 cricket::FOURCC_I420);
778 EXPECT_EQ(cricket::CS_RUNNING, capturer->Start(format)); 785 EXPECT_EQ(cricket::CS_RUNNING, capturer->Start(format));
779 // All capturers start generating frames with the same timestamp. ViE does 786 // All capturers start generating frames with the same timestamp. ViE does
780 // not allow the same timestamp to be used. Capture one frame before 787 // not allow the same timestamp to be used. Capture one frame before
781 // associating the capturer with the channel. 788 // associating the capturer with the channel.
782 EXPECT_TRUE(capturer->CaptureCustomFrame(format.width, format.height, 789 EXPECT_TRUE(capturer->CaptureCustomFrame(format.width, format.height,
783 cricket::FOURCC_I420)); 790 cricket::FOURCC_I420));
784 791
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
860 capture_format.interval = cricket::VideoFormat::FpsToInterval(30); 867 capture_format.interval = cricket::VideoFormat::FpsToInterval(30);
861 // Set up additional stream 1. 868 // Set up additional stream 1.
862 cricket::FakeVideoRenderer renderer1; 869 cricket::FakeVideoRenderer renderer1;
863 EXPECT_FALSE(channel_->SetSink(1, &renderer1)); 870 EXPECT_FALSE(channel_->SetSink(1, &renderer1));
864 EXPECT_TRUE(channel_->AddRecvStream( 871 EXPECT_TRUE(channel_->AddRecvStream(
865 cricket::StreamParams::CreateLegacy(1))); 872 cricket::StreamParams::CreateLegacy(1)));
866 EXPECT_TRUE(channel_->SetSink(1, &renderer1)); 873 EXPECT_TRUE(channel_->SetSink(1, &renderer1));
867 EXPECT_TRUE(channel_->AddSendStream( 874 EXPECT_TRUE(channel_->AddSendStream(
868 cricket::StreamParams::CreateLegacy(1))); 875 cricket::StreamParams::CreateLegacy(1)));
869 std::unique_ptr<cricket::FakeVideoCapturer> capturer1( 876 std::unique_ptr<cricket::FakeVideoCapturer> capturer1(
870 CreateFakeVideoCapturer()); 877 CreateFakeVideoCapturer(true));
871 capturer1->SetScreencast(true); 878
872 EXPECT_EQ(cricket::CS_RUNNING, capturer1->Start(capture_format)); 879 EXPECT_EQ(cricket::CS_RUNNING, capturer1->Start(capture_format));
873 // Set up additional stream 2. 880 // Set up additional stream 2.
874 cricket::FakeVideoRenderer renderer2; 881 cricket::FakeVideoRenderer renderer2;
875 EXPECT_FALSE(channel_->SetSink(2, &renderer2)); 882 EXPECT_FALSE(channel_->SetSink(2, &renderer2));
876 EXPECT_TRUE(channel_->AddRecvStream( 883 EXPECT_TRUE(channel_->AddRecvStream(
877 cricket::StreamParams::CreateLegacy(2))); 884 cricket::StreamParams::CreateLegacy(2)));
878 EXPECT_TRUE(channel_->SetSink(2, &renderer2)); 885 EXPECT_TRUE(channel_->SetSink(2, &renderer2));
879 EXPECT_TRUE(channel_->AddSendStream( 886 EXPECT_TRUE(channel_->AddSendStream(
880 cricket::StreamParams::CreateLegacy(2))); 887 cricket::StreamParams::CreateLegacy(2)));
881 std::unique_ptr<cricket::FakeVideoCapturer> capturer2( 888 std::unique_ptr<cricket::FakeVideoCapturer> capturer2(
882 CreateFakeVideoCapturer()); 889 CreateFakeVideoCapturer(true));
883 capturer2->SetScreencast(true);
884 EXPECT_EQ(cricket::CS_RUNNING, capturer2->Start(capture_format)); 890 EXPECT_EQ(cricket::CS_RUNNING, capturer2->Start(capture_format));
885 // State for all the streams. 891 // State for all the streams.
886 EXPECT_TRUE(SetOneCodec(DefaultCodec())); 892 EXPECT_TRUE(SetOneCodec(DefaultCodec()));
887 // A limitation in the lmi implementation requires that SetCapturer() is 893 // A limitation in the lmi implementation requires that SetCapturer() is
888 // called after SetOneCodec(). 894 // called after SetOneCodec().
889 // TODO(hellner): this seems like an unnecessary constraint, fix it. 895 // TODO(hellner): this seems like an unnecessary constraint, fix it.
890 EXPECT_TRUE(channel_->SetCapturer(1, capturer1.get())); 896 EXPECT_TRUE(channel_->SetCapturer(1, capturer1.get()));
891 EXPECT_TRUE(channel_->SetCapturer(2, capturer2.get())); 897 EXPECT_TRUE(channel_->SetCapturer(2, capturer2.get()));
892 EXPECT_TRUE(SetSend(true)); 898 EXPECT_TRUE(SetSend(true));
893 // Test capturer associated with engine. 899 // Test capturer associated with engine.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
928 EXPECT_TRUE(channel_->SetSink(kSsrc, &renderer)); 934 EXPECT_TRUE(channel_->SetSink(kSsrc, &renderer));
929 EXPECT_EQ(0, renderer.num_rendered_frames()); 935 EXPECT_EQ(0, renderer.num_rendered_frames());
930 936
931 EXPECT_TRUE(SendFrame()); 937 EXPECT_TRUE(SendFrame());
932 EXPECT_GT_FRAME_ON_RENDERER_WAIT( 938 EXPECT_GT_FRAME_ON_RENDERER_WAIT(
933 renderer, 1, codec.width, codec.height, kTimeout); 939 renderer, 1, codec.width, codec.height, kTimeout);
934 940
935 // Registering an external capturer is currently the same as screen casting 941 // Registering an external capturer is currently the same as screen casting
936 // (update the test when this changes). 942 // (update the test when this changes).
937 std::unique_ptr<cricket::FakeVideoCapturer> capturer( 943 std::unique_ptr<cricket::FakeVideoCapturer> capturer(
938 CreateFakeVideoCapturer()); 944 CreateFakeVideoCapturer(true));
939 capturer->SetScreencast(true);
940 const std::vector<cricket::VideoFormat>* formats = 945 const std::vector<cricket::VideoFormat>* formats =
941 capturer->GetSupportedFormats(); 946 capturer->GetSupportedFormats();
942 cricket::VideoFormat capture_format = (*formats)[0]; 947 cricket::VideoFormat capture_format = (*formats)[0];
943 EXPECT_EQ(cricket::CS_RUNNING, capturer->Start(capture_format)); 948 EXPECT_EQ(cricket::CS_RUNNING, capturer->Start(capture_format));
944 // Capture frame to not get same frame timestamps as previous capturer. 949 // Capture frame to not get same frame timestamps as previous capturer.
945 capturer->CaptureFrame(); 950 capturer->CaptureFrame();
946 EXPECT_TRUE(channel_->SetCapturer(kSsrc, capturer.get())); 951 EXPECT_TRUE(channel_->SetCapturer(kSsrc, capturer.get()));
947 EXPECT_TRUE(rtc::Thread::Current()->ProcessMessages(30)); 952 EXPECT_TRUE(rtc::Thread::Current()->ProcessMessages(30));
948 EXPECT_TRUE(capturer->CaptureCustomFrame(kWidth, kHeight, 953 EXPECT_TRUE(capturer->CaptureCustomFrame(kWidth, kHeight,
949 cricket::FOURCC_ARGB)); 954 cricket::FOURCC_ARGB));
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
1183 std::unique_ptr<C> channel_; 1188 std::unique_ptr<C> channel_;
1184 cricket::FakeNetworkInterface network_interface_; 1189 cricket::FakeNetworkInterface network_interface_;
1185 cricket::FakeVideoRenderer renderer_; 1190 cricket::FakeVideoRenderer renderer_;
1186 cricket::VideoMediaChannel::Error media_error_; 1191 cricket::VideoMediaChannel::Error media_error_;
1187 1192
1188 // Used by test cases where 2 streams are run on the same channel. 1193 // Used by test cases where 2 streams are run on the same channel.
1189 cricket::FakeVideoRenderer renderer2_; 1194 cricket::FakeVideoRenderer renderer2_;
1190 }; 1195 };
1191 1196
1192 #endif // WEBRTC_MEDIA_BASE_VIDEOENGINE_UNITTEST_H_ NOLINT 1197 #endif // WEBRTC_MEDIA_BASE_VIDEOENGINE_UNITTEST_H_ NOLINT
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698