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

Side by Side Diff: webrtc/modules/video_capture/test/video_capture_unittest.cc

Issue 1888593004: Delete all use of tick_util.h. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebase. Created 4 years, 7 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) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 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
11 #include <stdio.h> 11 #include <stdio.h>
12 12
13 #include <map> 13 #include <map>
14 #include <memory> 14 #include <memory>
15 #include <sstream> 15 #include <sstream>
16 16
17 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
18 #include "webrtc/base/scoped_ref_ptr.h" 18 #include "webrtc/base/scoped_ref_ptr.h"
19 #include "webrtc/base/timeutils.h"
19 #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h" 20 #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h"
20 #include "webrtc/modules/utility/include/process_thread.h" 21 #include "webrtc/modules/utility/include/process_thread.h"
21 #include "webrtc/modules/video_capture/video_capture.h" 22 #include "webrtc/modules/video_capture/video_capture.h"
22 #include "webrtc/modules/video_capture/video_capture_factory.h" 23 #include "webrtc/modules/video_capture/video_capture_factory.h"
23 #include "webrtc/system_wrappers/include/critical_section_wrapper.h" 24 #include "webrtc/system_wrappers/include/critical_section_wrapper.h"
24 #include "webrtc/system_wrappers/include/sleep.h" 25 #include "webrtc/system_wrappers/include/sleep.h"
25 #include "webrtc/system_wrappers/include/tick_util.h"
26 #include "webrtc/video_frame.h" 26 #include "webrtc/video_frame.h"
27 27
28 using webrtc::CriticalSectionWrapper; 28 using webrtc::CriticalSectionWrapper;
29 using webrtc::CriticalSectionScoped; 29 using webrtc::CriticalSectionScoped;
30 using webrtc::SleepMs; 30 using webrtc::SleepMs;
31 using webrtc::TickTime;
32 using webrtc::VideoCaptureAlarm; 31 using webrtc::VideoCaptureAlarm;
33 using webrtc::VideoCaptureCapability; 32 using webrtc::VideoCaptureCapability;
34 using webrtc::VideoCaptureDataCallback; 33 using webrtc::VideoCaptureDataCallback;
35 using webrtc::VideoCaptureFactory; 34 using webrtc::VideoCaptureFactory;
36 using webrtc::VideoCaptureFeedBack; 35 using webrtc::VideoCaptureFeedBack;
37 using webrtc::VideoCaptureModule; 36 using webrtc::VideoCaptureModule;
38 37
39 38
40 #define WAIT_(ex, timeout, res) \ 39 #define WAIT_(ex, timeout, res) \
41 do { \ 40 do { \
42 res = (ex); \ 41 res = (ex); \
43 int64_t start = TickTime::MillisecondTimestamp(); \ 42 int64_t start = rtc::TimeMillis(); \
44 while (!res && TickTime::MillisecondTimestamp() < start + timeout) { \ 43 while (!res && rtc::TimeMillis() < start + timeout) { \
45 SleepMs(5); \ 44 SleepMs(5); \
46 res = (ex); \ 45 res = (ex); \
47 } \ 46 } \
48 } while (0) 47 } while (0)
49 48
50 #define EXPECT_TRUE_WAIT(ex, timeout) \ 49 #define EXPECT_TRUE_WAIT(ex, timeout) \
51 do { \ 50 do { \
52 bool res; \ 51 bool res; \
53 WAIT_(ex, timeout, res); \ 52 WAIT_(ex, timeout, res); \
54 if (!res) EXPECT_TRUE(ex); \ 53 if (!res) EXPECT_TRUE(ex); \
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 // orientation. 110 // orientation.
112 EXPECT_TRUE(height == capability_.height || height == capability_.width); 111 EXPECT_TRUE(height == capability_.height || height == capability_.width);
113 EXPECT_TRUE(width == capability_.width || width == capability_.height); 112 EXPECT_TRUE(width == capability_.width || width == capability_.height);
114 #else 113 #else
115 EXPECT_EQ(height, capability_.height); 114 EXPECT_EQ(height, capability_.height);
116 EXPECT_EQ(width, capability_.width); 115 EXPECT_EQ(width, capability_.width);
117 EXPECT_EQ(rotate_frame_, videoFrame.rotation()); 116 EXPECT_EQ(rotate_frame_, videoFrame.rotation());
118 #endif 117 #endif
119 // RenderTimstamp should be the time now. 118 // RenderTimstamp should be the time now.
120 EXPECT_TRUE( 119 EXPECT_TRUE(
121 videoFrame.render_time_ms() >= TickTime::MillisecondTimestamp()-30 && 120 videoFrame.render_time_ms() >= rtc::TimeMillis()-30 &&
122 videoFrame.render_time_ms() <= TickTime::MillisecondTimestamp()); 121 videoFrame.render_time_ms() <= rtc::TimeMillis());
123 122
124 if ((videoFrame.render_time_ms() > 123 if ((videoFrame.render_time_ms() >
125 last_render_time_ms_ + (1000 * 1.1) / capability_.maxFPS && 124 last_render_time_ms_ + (1000 * 1.1) / capability_.maxFPS &&
126 last_render_time_ms_ > 0) || 125 last_render_time_ms_ > 0) ||
127 (videoFrame.render_time_ms() < 126 (videoFrame.render_time_ms() <
128 last_render_time_ms_ + (1000 * 0.9) / capability_.maxFPS && 127 last_render_time_ms_ + (1000 * 0.9) / capability_.maxFPS &&
129 last_render_time_ms_ > 0)) { 128 last_render_time_ms_ > 0)) {
130 timing_warnings_++; 129 timing_warnings_++;
131 } 130 }
132 131
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 269
271 #ifdef WEBRTC_MAC 270 #ifdef WEBRTC_MAC
272 // Currently fails on Mac 64-bit, see 271 // Currently fails on Mac 64-bit, see
273 // https://bugs.chromium.org/p/webrtc/issues/detail?id=5406 272 // https://bugs.chromium.org/p/webrtc/issues/detail?id=5406
274 #define MAYBE_CreateDelete DISABLED_CreateDelete 273 #define MAYBE_CreateDelete DISABLED_CreateDelete
275 #else 274 #else
276 #define MAYBE_CreateDelete CreateDelete 275 #define MAYBE_CreateDelete CreateDelete
277 #endif 276 #endif
278 TEST_F(VideoCaptureTest, MAYBE_CreateDelete) { 277 TEST_F(VideoCaptureTest, MAYBE_CreateDelete) {
279 for (int i = 0; i < 5; ++i) { 278 for (int i = 0; i < 5; ++i) {
280 int64_t start_time = TickTime::MillisecondTimestamp(); 279 int64_t start_time = rtc::TimeMillis();
281 TestVideoCaptureCallback capture_observer; 280 TestVideoCaptureCallback capture_observer;
282 rtc::scoped_refptr<VideoCaptureModule> module( 281 rtc::scoped_refptr<VideoCaptureModule> module(
283 OpenVideoCaptureDevice(0, &capture_observer)); 282 OpenVideoCaptureDevice(0, &capture_observer));
284 ASSERT_TRUE(module.get() != NULL); 283 ASSERT_TRUE(module.get() != NULL);
285 284
286 VideoCaptureCapability capability; 285 VideoCaptureCapability capability;
287 #ifndef WEBRTC_MAC 286 #ifndef WEBRTC_MAC
288 device_info_->GetCapability(module->CurrentDeviceName(), 0, capability); 287 device_info_->GetCapability(module->CurrentDeviceName(), 0, capability);
289 #else 288 #else
290 capability.width = kTestWidth; 289 capability.width = kTestWidth;
291 capability.height = kTestHeight; 290 capability.height = kTestHeight;
292 capability.maxFPS = kTestFramerate; 291 capability.maxFPS = kTestFramerate;
293 capability.rawType = webrtc::kVideoUnknown; 292 capability.rawType = webrtc::kVideoUnknown;
294 #endif 293 #endif
295 capture_observer.SetExpectedCapability(capability); 294 capture_observer.SetExpectedCapability(capability);
296 ASSERT_NO_FATAL_FAILURE(StartCapture(module.get(), capability)); 295 ASSERT_NO_FATAL_FAILURE(StartCapture(module.get(), capability));
297 296
298 // Less than 4s to start the camera. 297 // Less than 4s to start the camera.
299 EXPECT_LE(TickTime::MillisecondTimestamp() - start_time, 4000); 298 EXPECT_LE(rtc::TimeMillis() - start_time, 4000);
300 299
301 // Make sure 5 frames are captured. 300 // Make sure 5 frames are captured.
302 EXPECT_TRUE_WAIT(capture_observer.incoming_frames() >= 5, kTimeOut); 301 EXPECT_TRUE_WAIT(capture_observer.incoming_frames() >= 5, kTimeOut);
303 302
304 EXPECT_GE(capture_observer.capture_delay(), 0); 303 EXPECT_GE(capture_observer.capture_delay(), 0);
305 304
306 int64_t stop_time = TickTime::MillisecondTimestamp(); 305 int64_t stop_time = rtc::TimeMillis();
307 EXPECT_EQ(0, module->StopCapture()); 306 EXPECT_EQ(0, module->StopCapture());
308 EXPECT_FALSE(module->CaptureStarted()); 307 EXPECT_FALSE(module->CaptureStarted());
309 308
310 // Less than 3s to stop the camera. 309 // Less than 3s to stop the camera.
311 EXPECT_LE(TickTime::MillisecondTimestamp() - stop_time, 3000); 310 EXPECT_LE(rtc::TimeMillis() - stop_time, 3000);
312 } 311 }
313 } 312 }
314 313
315 #ifdef WEBRTC_MAC 314 #ifdef WEBRTC_MAC
316 // Currently fails on Mac 64-bit, see 315 // Currently fails on Mac 64-bit, see
317 // https://bugs.chromium.org/p/webrtc/issues/detail?id=5406 316 // https://bugs.chromium.org/p/webrtc/issues/detail?id=5406
318 #define MAYBE_Capabilities DISABLED_Capabilities 317 #define MAYBE_Capabilities DISABLED_Capabilities
319 #else 318 #else
320 #define MAYBE_Capabilities Capabilities 319 #define MAYBE_Capabilities Capabilities
321 #endif 320 #endif
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 } 484 }
486 485
487 // Test frame rate and no picture alarm. 486 // Test frame rate and no picture alarm.
488 // Flaky on Win32, see webrtc:3270. 487 // Flaky on Win32, see webrtc:3270.
489 #if defined(WEBRTC_WIN) || defined(WEBRTC_MAC) 488 #if defined(WEBRTC_WIN) || defined(WEBRTC_MAC)
490 #define MAYBE_FrameRate DISABLED_FrameRate 489 #define MAYBE_FrameRate DISABLED_FrameRate
491 #else 490 #else
492 #define MAYBE_FrameRate FrameRate 491 #define MAYBE_FrameRate FrameRate
493 #endif 492 #endif
494 TEST_F(VideoCaptureExternalTest, MAYBE_FrameRate) { 493 TEST_F(VideoCaptureExternalTest, MAYBE_FrameRate) {
495 int64_t testTime = 3; 494 uint64_t testTime = 3 * rtc::kNumNanosecsPerSec;
496 TickTime startTime = TickTime::Now(); 495 uint64_t startTime = rtc::TimeNanos();
497 496
498 while ((TickTime::Now() - startTime).Milliseconds() < testTime * 1000) { 497 while ((rtc::TimeNanos() - startTime) < testTime) {
499 size_t length = webrtc::CalcBufferSize(webrtc::kI420, 498 size_t length = webrtc::CalcBufferSize(webrtc::kI420,
500 test_frame_.width(), 499 test_frame_.width(),
501 test_frame_.height()); 500 test_frame_.height());
502 std::unique_ptr<uint8_t[]> test_buffer(new uint8_t[length]); 501 std::unique_ptr<uint8_t[]> test_buffer(new uint8_t[length]);
503 webrtc::ExtractBuffer(test_frame_, length, test_buffer.get()); 502 webrtc::ExtractBuffer(test_frame_, length, test_buffer.get());
504 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(), 503 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(),
505 length, capture_callback_.capability(), 0)); 504 length, capture_callback_.capability(), 0));
506 SleepMs(100); 505 SleepMs(100);
507 } 506 }
508 EXPECT_TRUE(capture_feedback_.frame_rate() >= 8 && 507 EXPECT_TRUE(capture_feedback_.frame_rate() >= 8 &&
509 capture_feedback_.frame_rate() <= 10); 508 capture_feedback_.frame_rate() <= 10);
510 SleepMs(500); 509 SleepMs(500);
511 EXPECT_EQ(webrtc::Raised, capture_feedback_.alarm()); 510 EXPECT_EQ(webrtc::Raised, capture_feedback_.alarm());
512 511
513 startTime = TickTime::Now(); 512 startTime = rtc::TimeNanos();
514 while ((TickTime::Now() - startTime).Milliseconds() < testTime * 1000) { 513 while ((rtc::TimeNanos() - startTime) < testTime) {
515 size_t length = webrtc::CalcBufferSize(webrtc::kI420, 514 size_t length = webrtc::CalcBufferSize(webrtc::kI420,
516 test_frame_.width(), 515 test_frame_.width(),
517 test_frame_.height()); 516 test_frame_.height());
518 std::unique_ptr<uint8_t[]> test_buffer(new uint8_t[length]); 517 std::unique_ptr<uint8_t[]> test_buffer(new uint8_t[length]);
519 webrtc::ExtractBuffer(test_frame_, length, test_buffer.get()); 518 webrtc::ExtractBuffer(test_frame_, length, test_buffer.get());
520 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(), 519 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(),
521 length, capture_callback_.capability(), 0)); 520 length, capture_callback_.capability(), 0));
522 SleepMs(1000 / 30); 521 SleepMs(1000 / 30);
523 } 522 }
524 EXPECT_EQ(webrtc::Cleared, capture_feedback_.alarm()); 523 EXPECT_EQ(webrtc::Cleared, capture_feedback_.alarm());
(...skipping 18 matching lines...) Expand all
543 length, capture_callback_.capability(), 0)); 542 length, capture_callback_.capability(), 0));
544 EXPECT_EQ(0, capture_module_->SetCaptureRotation(webrtc::kVideoRotation_180)); 543 EXPECT_EQ(0, capture_module_->SetCaptureRotation(webrtc::kVideoRotation_180));
545 capture_callback_.SetExpectedCaptureRotation(webrtc::kVideoRotation_180); 544 capture_callback_.SetExpectedCaptureRotation(webrtc::kVideoRotation_180);
546 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(), 545 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(),
547 length, capture_callback_.capability(), 0)); 546 length, capture_callback_.capability(), 0));
548 EXPECT_EQ(0, capture_module_->SetCaptureRotation(webrtc::kVideoRotation_270)); 547 EXPECT_EQ(0, capture_module_->SetCaptureRotation(webrtc::kVideoRotation_270));
549 capture_callback_.SetExpectedCaptureRotation(webrtc::kVideoRotation_270); 548 capture_callback_.SetExpectedCaptureRotation(webrtc::kVideoRotation_270);
550 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(), 549 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(),
551 length, capture_callback_.capability(), 0)); 550 length, capture_callback_.capability(), 0));
552 } 551 }
OLDNEW
« no previous file with comments | « webrtc/modules/utility/source/process_thread_impl_unittest.cc ('k') | webrtc/modules/video_capture/video_capture_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698