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

Side by Side Diff: webrtc/video/video_send_stream_tests.cc

Issue 1891733002: Change pre_encode_callback to get a const frame. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Do per-frame delay by calling SleepMs. Created 4 years, 8 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
« no previous file with comments | « webrtc/video/end_to_end_tests.cc ('k') | webrtc/video/vie_encoder.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 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 #include <algorithm> // max 10 #include <algorithm> // max
(...skipping 793 matching lines...) Expand 10 before | Expand all | Expand 10 after
804 // 2. As soon as the RTP stream has been detected, signal a low REMB value to 804 // 2. As soon as the RTP stream has been detected, signal a low REMB value to
805 // suspend the stream. 805 // suspend the stream.
806 // 3. Wait until |kSuspendTimeFrames| have been captured without seeing any RTP 806 // 3. Wait until |kSuspendTimeFrames| have been captured without seeing any RTP
807 // packets. 807 // packets.
808 // 4. Signal a high REMB and then wait for the RTP stream to start again. 808 // 4. Signal a high REMB and then wait for the RTP stream to start again.
809 // When the stream is detected again, and the stats show that the stream 809 // When the stream is detected again, and the stats show that the stream
810 // is no longer suspended, the test ends. 810 // is no longer suspended, the test ends.
811 TEST_F(VideoSendStreamTest, SuspendBelowMinBitrate) { 811 TEST_F(VideoSendStreamTest, SuspendBelowMinBitrate) {
812 static const int kSuspendTimeFrames = 60; // Suspend for 2 seconds @ 30 fps. 812 static const int kSuspendTimeFrames = 60; // Suspend for 2 seconds @ 30 fps.
813 813
814 class RembObserver : public test::SendTest, public I420FrameCallback { 814 class RembObserver : public test::SendTest,
815 public rtc::VideoSinkInterface<VideoFrame> {
815 public: 816 public:
816 RembObserver() 817 RembObserver()
817 : SendTest(kDefaultTimeoutMs), 818 : SendTest(kDefaultTimeoutMs),
818 clock_(Clock::GetRealTimeClock()), 819 clock_(Clock::GetRealTimeClock()),
819 test_state_(kBeforeSuspend), 820 test_state_(kBeforeSuspend),
820 rtp_count_(0), 821 rtp_count_(0),
821 last_sequence_number_(0), 822 last_sequence_number_(0),
822 suspended_frame_count_(0), 823 suspended_frame_count_(0),
823 low_remb_bps_(0), 824 low_remb_bps_(0),
824 high_remb_bps_(0) { 825 high_remb_bps_(0) {
(...skipping 30 matching lines...) Expand all
855 if (stats.suspended == false) { 856 if (stats.suspended == false) {
856 // Stats flipped to false. Test is complete. 857 // Stats flipped to false. Test is complete.
857 observation_complete_.Set(); 858 observation_complete_.Set();
858 } 859 }
859 SendRtcpFeedback(0); // REMB is only sent if value is > 0. 860 SendRtcpFeedback(0); // REMB is only sent if value is > 0.
860 } 861 }
861 862
862 return SEND_PACKET; 863 return SEND_PACKET;
863 } 864 }
864 865
865 // This method implements the I420FrameCallback. 866 // This method implements the rtc::VideoSinkInterface
866 void FrameCallback(VideoFrame* video_frame) override { 867 void OnFrame(const VideoFrame& video_frame) override {
867 rtc::CritScope lock(&crit_); 868 rtc::CritScope lock(&crit_);
868 if (test_state_ == kDuringSuspend && 869 if (test_state_ == kDuringSuspend &&
869 ++suspended_frame_count_ > kSuspendTimeFrames) { 870 ++suspended_frame_count_ > kSuspendTimeFrames) {
870 VideoSendStream::Stats stats = stream_->GetStats(); 871 VideoSendStream::Stats stats = stream_->GetStats();
871 EXPECT_TRUE(stats.suspended); 872 EXPECT_TRUE(stats.suspended);
872 SendRtcpFeedback(high_remb_bps_); 873 SendRtcpFeedback(high_remb_bps_);
873 test_state_ = kWaitingForPacket; 874 test_state_ = kWaitingForPacket;
874 } 875 }
875 } 876 }
876 877
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
1165 // New bitrate should be reconfigured above the previous max. As there's no 1166 // New bitrate should be reconfigured above the previous max. As there's no
1166 // network connection this shouldn't be flaky, as no bitrate should've been 1167 // network connection this shouldn't be flaky, as no bitrate should've been
1167 // reported in between. 1168 // reported in between.
1168 EXPECT_EQ(bitrate_config.start_bitrate_bps / 1000, 1169 EXPECT_EQ(bitrate_config.start_bitrate_bps / 1000,
1169 encoder.GetStartBitrateKbps()); 1170 encoder.GetStartBitrateKbps());
1170 1171
1171 DestroyStreams(); 1172 DestroyStreams();
1172 } 1173 }
1173 1174
1174 TEST_F(VideoSendStreamTest, CapturesTextureAndVideoFrames) { 1175 TEST_F(VideoSendStreamTest, CapturesTextureAndVideoFrames) {
1175 class FrameObserver : public I420FrameCallback { 1176 class FrameObserver : public rtc::VideoSinkInterface<VideoFrame> {
1176 public: 1177 public:
1177 FrameObserver() : output_frame_event_(false, false) {} 1178 FrameObserver() : output_frame_event_(false, false) {}
1178 1179
1179 void FrameCallback(VideoFrame* video_frame) override { 1180 void OnFrame(const VideoFrame& video_frame) override {
1180 output_frames_.push_back(*video_frame); 1181 output_frames_.push_back(video_frame);
1181 output_frame_event_.Set(); 1182 output_frame_event_.Set();
1182 } 1183 }
1183 1184
1184 void WaitOutputFrame() { 1185 void WaitOutputFrame() {
1185 const int kWaitFrameTimeoutMs = 3000; 1186 const int kWaitFrameTimeoutMs = 3000;
1186 EXPECT_TRUE(output_frame_event_.Wait(kWaitFrameTimeoutMs)) 1187 EXPECT_TRUE(output_frame_event_.Wait(kWaitFrameTimeoutMs))
1187 << "Timeout while waiting for output frames."; 1188 << "Timeout while waiting for output frames.";
1188 } 1189 }
1189 1190
1190 const std::vector<VideoFrame>& output_frames() const { 1191 const std::vector<VideoFrame>& output_frames() const {
(...skipping 1121 matching lines...) Expand 10 before | Expand all | Expand 10 after
2312 observation_complete_.Set(); 2313 observation_complete_.Set();
2313 } 2314 }
2314 } 2315 }
2315 } test; 2316 } test;
2316 2317
2317 RunBaseTest(&test); 2318 RunBaseTest(&test);
2318 } 2319 }
2319 #endif 2320 #endif
2320 2321
2321 } // namespace webrtc 2322 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/video/end_to_end_tests.cc ('k') | webrtc/video/vie_encoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698