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

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: 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
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::Time64(); \
44 while (!res && TickTime::MillisecondTimestamp() < start + timeout) { \ 43 while (!res && rtc::Time64() < 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::Time64()-30 &&
122 videoFrame.render_time_ms() <= TickTime::MillisecondTimestamp()); 121 videoFrame.render_time_ms() <= rtc::Time64());
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::Time64();
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::Time64() - 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::Time64();
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::Time64() - 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 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 486
488 // Test frame rate and no picture alarm. 487 // Test frame rate and no picture alarm.
489 // Flaky on Win32, see webrtc:3270. 488 // Flaky on Win32, see webrtc:3270.
490 #if defined(WEBRTC_WIN) || defined(WEBRTC_MAC) 489 #if defined(WEBRTC_WIN) || defined(WEBRTC_MAC)
491 #define MAYBE_FrameRate DISABLED_FrameRate 490 #define MAYBE_FrameRate DISABLED_FrameRate
492 #else 491 #else
493 #define MAYBE_FrameRate FrameRate 492 #define MAYBE_FrameRate FrameRate
494 #endif 493 #endif
495 TEST_F(VideoCaptureExternalTest, MAYBE_FrameRate) { 494 TEST_F(VideoCaptureExternalTest, MAYBE_FrameRate) {
496 int64_t testTime = 3; 495 int64_t testTime = 3;
497 TickTime startTime = TickTime::Now(); 496 int64_t startTime = rtc::TimeNanos();
stefan-webrtc 2016/04/19 09:19:12 Seems like startTime should be the same type as re
nisse-webrtc 2016/04/19 12:19:25 Done. Typing seem a bit confused, TimeNanos and Ti
stefan-webrtc 2016/04/19 12:40:47 Do you think there's a reason to return uint64_t f
nisse-webrtc 2016/04/19 13:48:50 I don't have a strong opinion here. Changing retur
498 497
499 while ((TickTime::Now() - startTime).Milliseconds() < testTime * 1000) { 498 while ((static_cast<int64_t>(rtc::TimeNanos()) - startTime) /
499 rtc::kNumNanosecsPerMillisec <
500 testTime * 1000) {
500 size_t length = webrtc::CalcBufferSize(webrtc::kI420, 501 size_t length = webrtc::CalcBufferSize(webrtc::kI420,
501 test_frame_.width(), 502 test_frame_.width(),
502 test_frame_.height()); 503 test_frame_.height());
503 std::unique_ptr<uint8_t[]> test_buffer(new uint8_t[length]); 504 std::unique_ptr<uint8_t[]> test_buffer(new uint8_t[length]);
504 webrtc::ExtractBuffer(test_frame_, length, test_buffer.get()); 505 webrtc::ExtractBuffer(test_frame_, length, test_buffer.get());
505 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(), 506 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(),
506 length, capture_callback_.capability(), 0)); 507 length, capture_callback_.capability(), 0));
507 SleepMs(100); 508 SleepMs(100);
508 } 509 }
509 EXPECT_TRUE(capture_feedback_.frame_rate() >= 8 && 510 EXPECT_TRUE(capture_feedback_.frame_rate() >= 8 &&
510 capture_feedback_.frame_rate() <= 10); 511 capture_feedback_.frame_rate() <= 10);
511 SleepMs(500); 512 SleepMs(500);
512 EXPECT_EQ(webrtc::Raised, capture_feedback_.alarm()); 513 EXPECT_EQ(webrtc::Raised, capture_feedback_.alarm());
513 514
514 startTime = TickTime::Now(); 515 startTime = rtc::TimeNanos();
515 while ((TickTime::Now() - startTime).Milliseconds() < testTime * 1000) { 516 while ((static_cast<int64_t>(rtc::TimeNanos()) - startTime) /
517 rtc::kNumNanosecsPerMillisec <
518 testTime * 1000) {
516 size_t length = webrtc::CalcBufferSize(webrtc::kI420, 519 size_t length = webrtc::CalcBufferSize(webrtc::kI420,
517 test_frame_.width(), 520 test_frame_.width(),
518 test_frame_.height()); 521 test_frame_.height());
519 std::unique_ptr<uint8_t[]> test_buffer(new uint8_t[length]); 522 std::unique_ptr<uint8_t[]> test_buffer(new uint8_t[length]);
520 webrtc::ExtractBuffer(test_frame_, length, test_buffer.get()); 523 webrtc::ExtractBuffer(test_frame_, length, test_buffer.get());
521 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(), 524 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(),
522 length, capture_callback_.capability(), 0)); 525 length, capture_callback_.capability(), 0));
523 SleepMs(1000 / 30); 526 SleepMs(1000 / 30);
524 } 527 }
525 EXPECT_EQ(webrtc::Cleared, capture_feedback_.alarm()); 528 EXPECT_EQ(webrtc::Cleared, capture_feedback_.alarm());
(...skipping 18 matching lines...) Expand all
544 length, capture_callback_.capability(), 0)); 547 length, capture_callback_.capability(), 0));
545 EXPECT_EQ(0, capture_module_->SetCaptureRotation(webrtc::kVideoRotation_180)); 548 EXPECT_EQ(0, capture_module_->SetCaptureRotation(webrtc::kVideoRotation_180));
546 capture_callback_.SetExpectedCaptureRotation(webrtc::kVideoRotation_180); 549 capture_callback_.SetExpectedCaptureRotation(webrtc::kVideoRotation_180);
547 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(), 550 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(),
548 length, capture_callback_.capability(), 0)); 551 length, capture_callback_.capability(), 0));
549 EXPECT_EQ(0, capture_module_->SetCaptureRotation(webrtc::kVideoRotation_270)); 552 EXPECT_EQ(0, capture_module_->SetCaptureRotation(webrtc::kVideoRotation_270));
550 capture_callback_.SetExpectedCaptureRotation(webrtc::kVideoRotation_270); 553 capture_callback_.SetExpectedCaptureRotation(webrtc::kVideoRotation_270);
551 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(), 554 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(),
552 length, capture_callback_.capability(), 0)); 555 length, capture_callback_.capability(), 0));
553 } 556 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698