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

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: In WebRtcVideoSendStream::SetOptions, modify only options specified by the caller. Created 4 years, 10 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 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 channel_->SetRecvParameters(parameters); 121 channel_->SetRecvParameters(parameters);
122 EXPECT_TRUE(channel_->AddSendStream(DefaultSendStreamParams())); 122 EXPECT_TRUE(channel_->AddSendStream(DefaultSendStreamParams()));
123 video_capturer_.reset(CreateFakeVideoCapturer()); 123 video_capturer_.reset(CreateFakeVideoCapturer());
124 cricket::VideoFormat format(640, 480, 124 cricket::VideoFormat format(640, 480,
125 cricket::VideoFormat::FpsToInterval(30), 125 cricket::VideoFormat::FpsToInterval(30),
126 cricket::FOURCC_I420); 126 cricket::FOURCC_I420);
127 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_->Start(format)); 127 EXPECT_EQ(cricket::CS_RUNNING, video_capturer_->Start(format));
128 EXPECT_TRUE(channel_->SetCapturer(kSsrc, video_capturer_.get())); 128 EXPECT_TRUE(channel_->SetCapturer(kSsrc, video_capturer_.get()));
129 } 129 }
130 130
131 virtual cricket::FakeVideoCapturer* CreateFakeVideoCapturer(
132 bool is_screencast) {
133 return new cricket::FakeVideoCapturer(is_screencast);
134 }
131 virtual cricket::FakeVideoCapturer* CreateFakeVideoCapturer() { 135 virtual cricket::FakeVideoCapturer* CreateFakeVideoCapturer() {
132 return new cricket::FakeVideoCapturer(); 136 return CreateFakeVideoCapturer(false);
133 } 137 }
134 138
135 // Utility method to setup an additional stream to send and receive video. 139 // Utility method to setup an additional stream to send and receive video.
136 // Used to test send and recv between two streams. 140 // Used to test send and recv between two streams.
137 void SetUpSecondStream() { 141 void SetUpSecondStream() {
138 SetUpSecondStreamWithNoRecv(); 142 SetUpSecondStreamWithNoRecv();
139 // Setup recv for second stream. 143 // Setup recv for second stream.
140 EXPECT_TRUE(channel_->AddRecvStream( 144 EXPECT_TRUE(channel_->AddRecvStream(
141 cricket::StreamParams::CreateLegacy(kSsrc + 2))); 145 cricket::StreamParams::CreateLegacy(kSsrc + 2)));
142 // Make the second renderer available for use by a new stream. 146 // Make the second renderer available for use by a new stream.
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after
551 cricket::StreamParams::CreateLegacy(kSsrc))); 555 cricket::StreamParams::CreateLegacy(kSsrc)));
552 EXPECT_TRUE(channel_->SetSink(kSsrc, &renderer_)); 556 EXPECT_TRUE(channel_->SetSink(kSsrc, &renderer_));
553 EXPECT_TRUE(SetSend(true)); 557 EXPECT_TRUE(SetSend(true));
554 EXPECT_TRUE(SendFrame()); 558 EXPECT_TRUE(SendFrame());
555 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout); 559 EXPECT_TRUE_WAIT(NumRtpPackets() > 0, kTimeout);
556 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout); 560 EXPECT_FRAME_WAIT(1, DefaultCodec().width, DefaultCodec().height, kTimeout);
557 561
558 // Add an additional capturer, and hook up a renderer to receive it. 562 // Add an additional capturer, and hook up a renderer to receive it.
559 cricket::FakeVideoRenderer renderer2; 563 cricket::FakeVideoRenderer renderer2;
560 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer( 564 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer(
561 CreateFakeVideoCapturer()); 565 CreateFakeVideoCapturer(true));
562 capturer->SetScreencast(true);
563 const int kTestWidth = 160; 566 const int kTestWidth = 160;
564 const int kTestHeight = 120; 567 const int kTestHeight = 120;
565 cricket::VideoFormat format(kTestWidth, kTestHeight, 568 cricket::VideoFormat format(kTestWidth, kTestHeight,
566 cricket::VideoFormat::FpsToInterval(5), 569 cricket::VideoFormat::FpsToInterval(5),
567 cricket::FOURCC_I420); 570 cricket::FOURCC_I420);
568 EXPECT_EQ(cricket::CS_RUNNING, capturer->Start(format)); 571 EXPECT_EQ(cricket::CS_RUNNING, capturer->Start(format));
569 EXPECT_TRUE(channel_->AddSendStream( 572 EXPECT_TRUE(channel_->AddSendStream(
570 cricket::StreamParams::CreateLegacy(5678))); 573 cricket::StreamParams::CreateLegacy(5678)));
571 EXPECT_TRUE(channel_->SetCapturer(5678, capturer.get())); 574 EXPECT_TRUE(channel_->SetCapturer(5678, capturer.get()));
572 EXPECT_TRUE(channel_->AddRecvStream( 575 EXPECT_TRUE(channel_->AddRecvStream(
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
762 codec.width = 320; 765 codec.width = 320;
763 codec.height = 240; 766 codec.height = 240;
764 const int time_between_send = TimeBetweenSend(codec); 767 const int time_between_send = TimeBetweenSend(codec);
765 EXPECT_TRUE(SetOneCodec(codec)); 768 EXPECT_TRUE(SetOneCodec(codec));
766 EXPECT_TRUE(SetSend(true)); 769 EXPECT_TRUE(SetSend(true));
767 EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_)); 770 EXPECT_TRUE(channel_->SetSink(kDefaultReceiveSsrc, &renderer_));
768 EXPECT_EQ(0, renderer_.num_rendered_frames()); 771 EXPECT_EQ(0, renderer_.num_rendered_frames());
769 EXPECT_TRUE(SendFrame()); 772 EXPECT_TRUE(SendFrame());
770 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout); 773 EXPECT_FRAME_WAIT(1, codec.width, codec.height, kTimeout);
771 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer( 774 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer(
772 CreateFakeVideoCapturer()); 775 CreateFakeVideoCapturer(true));
773 capturer->SetScreencast(true); 776
777 cricket::VideoOptions video_options;
778 video_options.is_screencast = rtc::Optional<bool>(true);
779 channel_->SetVideoSend(kSsrc, true, &video_options);
780
774 cricket::VideoFormat format(480, 360, 781 cricket::VideoFormat format(480, 360,
775 cricket::VideoFormat::FpsToInterval(30), 782 cricket::VideoFormat::FpsToInterval(30),
776 cricket::FOURCC_I420); 783 cricket::FOURCC_I420);
777 EXPECT_EQ(cricket::CS_RUNNING, capturer->Start(format)); 784 EXPECT_EQ(cricket::CS_RUNNING, capturer->Start(format));
778 // All capturers start generating frames with the same timestamp. ViE does 785 // All capturers start generating frames with the same timestamp. ViE does
779 // not allow the same timestamp to be used. Capture one frame before 786 // not allow the same timestamp to be used. Capture one frame before
780 // associating the capturer with the channel. 787 // associating the capturer with the channel.
781 EXPECT_TRUE(capturer->CaptureCustomFrame(format.width, format.height, 788 EXPECT_TRUE(capturer->CaptureCustomFrame(format.width, format.height,
782 cricket::FOURCC_I420)); 789 cricket::FOURCC_I420));
783 790
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
859 capture_format.interval = cricket::VideoFormat::FpsToInterval(30); 866 capture_format.interval = cricket::VideoFormat::FpsToInterval(30);
860 // Set up additional stream 1. 867 // Set up additional stream 1.
861 cricket::FakeVideoRenderer renderer1; 868 cricket::FakeVideoRenderer renderer1;
862 EXPECT_FALSE(channel_->SetSink(1, &renderer1)); 869 EXPECT_FALSE(channel_->SetSink(1, &renderer1));
863 EXPECT_TRUE(channel_->AddRecvStream( 870 EXPECT_TRUE(channel_->AddRecvStream(
864 cricket::StreamParams::CreateLegacy(1))); 871 cricket::StreamParams::CreateLegacy(1)));
865 EXPECT_TRUE(channel_->SetSink(1, &renderer1)); 872 EXPECT_TRUE(channel_->SetSink(1, &renderer1));
866 EXPECT_TRUE(channel_->AddSendStream( 873 EXPECT_TRUE(channel_->AddSendStream(
867 cricket::StreamParams::CreateLegacy(1))); 874 cricket::StreamParams::CreateLegacy(1)));
868 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer1( 875 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer1(
869 CreateFakeVideoCapturer()); 876 CreateFakeVideoCapturer(true));
870 capturer1->SetScreencast(true);
871 EXPECT_EQ(cricket::CS_RUNNING, capturer1->Start(capture_format)); 877 EXPECT_EQ(cricket::CS_RUNNING, capturer1->Start(capture_format));
872 // Set up additional stream 2. 878 // Set up additional stream 2.
873 cricket::FakeVideoRenderer renderer2; 879 cricket::FakeVideoRenderer renderer2;
874 EXPECT_FALSE(channel_->SetSink(2, &renderer2)); 880 EXPECT_FALSE(channel_->SetSink(2, &renderer2));
875 EXPECT_TRUE(channel_->AddRecvStream( 881 EXPECT_TRUE(channel_->AddRecvStream(
876 cricket::StreamParams::CreateLegacy(2))); 882 cricket::StreamParams::CreateLegacy(2)));
877 EXPECT_TRUE(channel_->SetSink(2, &renderer2)); 883 EXPECT_TRUE(channel_->SetSink(2, &renderer2));
878 EXPECT_TRUE(channel_->AddSendStream( 884 EXPECT_TRUE(channel_->AddSendStream(
879 cricket::StreamParams::CreateLegacy(2))); 885 cricket::StreamParams::CreateLegacy(2)));
880 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer2( 886 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer2(
881 CreateFakeVideoCapturer()); 887 CreateFakeVideoCapturer(true));
882 capturer2->SetScreencast(true);
883 EXPECT_EQ(cricket::CS_RUNNING, capturer2->Start(capture_format)); 888 EXPECT_EQ(cricket::CS_RUNNING, capturer2->Start(capture_format));
884 // State for all the streams. 889 // State for all the streams.
885 EXPECT_TRUE(SetOneCodec(DefaultCodec())); 890 EXPECT_TRUE(SetOneCodec(DefaultCodec()));
886 // A limitation in the lmi implementation requires that SetCapturer() is 891 // A limitation in the lmi implementation requires that SetCapturer() is
887 // called after SetOneCodec(). 892 // called after SetOneCodec().
888 // TODO(hellner): this seems like an unnecessary constraint, fix it. 893 // TODO(hellner): this seems like an unnecessary constraint, fix it.
889 EXPECT_TRUE(channel_->SetCapturer(1, capturer1.get())); 894 EXPECT_TRUE(channel_->SetCapturer(1, capturer1.get()));
890 EXPECT_TRUE(channel_->SetCapturer(2, capturer2.get())); 895 EXPECT_TRUE(channel_->SetCapturer(2, capturer2.get()));
891 EXPECT_TRUE(SetSend(true)); 896 EXPECT_TRUE(SetSend(true));
892 // Test capturer associated with engine. 897 // Test capturer associated with engine.
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
927 EXPECT_TRUE(channel_->SetSink(kSsrc, &renderer)); 932 EXPECT_TRUE(channel_->SetSink(kSsrc, &renderer));
928 EXPECT_EQ(0, renderer.num_rendered_frames()); 933 EXPECT_EQ(0, renderer.num_rendered_frames());
929 934
930 EXPECT_TRUE(SendFrame()); 935 EXPECT_TRUE(SendFrame());
931 EXPECT_GT_FRAME_ON_RENDERER_WAIT( 936 EXPECT_GT_FRAME_ON_RENDERER_WAIT(
932 renderer, 1, codec.width, codec.height, kTimeout); 937 renderer, 1, codec.width, codec.height, kTimeout);
933 938
934 // Registering an external capturer is currently the same as screen casting 939 // Registering an external capturer is currently the same as screen casting
935 // (update the test when this changes). 940 // (update the test when this changes).
936 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer( 941 rtc::scoped_ptr<cricket::FakeVideoCapturer> capturer(
937 CreateFakeVideoCapturer()); 942 CreateFakeVideoCapturer(true));
938 capturer->SetScreencast(true);
939 const std::vector<cricket::VideoFormat>* formats = 943 const std::vector<cricket::VideoFormat>* formats =
940 capturer->GetSupportedFormats(); 944 capturer->GetSupportedFormats();
941 cricket::VideoFormat capture_format = (*formats)[0]; 945 cricket::VideoFormat capture_format = (*formats)[0];
942 EXPECT_EQ(cricket::CS_RUNNING, capturer->Start(capture_format)); 946 EXPECT_EQ(cricket::CS_RUNNING, capturer->Start(capture_format));
943 // Capture frame to not get same frame timestamps as previous capturer. 947 // Capture frame to not get same frame timestamps as previous capturer.
944 capturer->CaptureFrame(); 948 capturer->CaptureFrame();
945 EXPECT_TRUE(channel_->SetCapturer(kSsrc, capturer.get())); 949 EXPECT_TRUE(channel_->SetCapturer(kSsrc, capturer.get()));
946 EXPECT_TRUE(rtc::Thread::Current()->ProcessMessages(30)); 950 EXPECT_TRUE(rtc::Thread::Current()->ProcessMessages(30));
947 EXPECT_TRUE(capturer->CaptureCustomFrame(kWidth, kHeight, 951 EXPECT_TRUE(capturer->CaptureCustomFrame(kWidth, kHeight,
948 cricket::FOURCC_ARGB)); 952 cricket::FOURCC_ARGB));
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
1182 rtc::scoped_ptr<C> channel_; 1186 rtc::scoped_ptr<C> channel_;
1183 cricket::FakeNetworkInterface network_interface_; 1187 cricket::FakeNetworkInterface network_interface_;
1184 cricket::FakeVideoRenderer renderer_; 1188 cricket::FakeVideoRenderer renderer_;
1185 cricket::VideoMediaChannel::Error media_error_; 1189 cricket::VideoMediaChannel::Error media_error_;
1186 1190
1187 // Used by test cases where 2 streams are run on the same channel. 1191 // Used by test cases where 2 streams are run on the same channel.
1188 cricket::FakeVideoRenderer renderer2_; 1192 cricket::FakeVideoRenderer renderer2_;
1189 }; 1193 };
1190 1194
1191 #endif // WEBRTC_MEDIA_BASE_VIDEOENGINE_UNITTEST_H_ NOLINT 1195 #endif // WEBRTC_MEDIA_BASE_VIDEOENGINE_UNITTEST_H_ NOLINT
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698