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

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

Issue 2534553002: Replace VideoCaptureDataCallback by VideoSinkInterface. (Closed)
Patch Set: Break overlong lines. Created 4 years 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
(...skipping 11 matching lines...) Expand all
22 #include "webrtc/modules/video_capture/video_capture_factory.h" 22 #include "webrtc/modules/video_capture/video_capture_factory.h"
23 #include "webrtc/system_wrappers/include/critical_section_wrapper.h" 23 #include "webrtc/system_wrappers/include/critical_section_wrapper.h"
24 #include "webrtc/system_wrappers/include/sleep.h" 24 #include "webrtc/system_wrappers/include/sleep.h"
25 #include "webrtc/test/frame_utils.h" 25 #include "webrtc/test/frame_utils.h"
26 #include "webrtc/test/gtest.h" 26 #include "webrtc/test/gtest.h"
27 #include "webrtc/video_frame.h" 27 #include "webrtc/video_frame.h"
28 28
29 using webrtc::CriticalSectionWrapper; 29 using webrtc::CriticalSectionWrapper;
30 using webrtc::CriticalSectionScoped; 30 using webrtc::CriticalSectionScoped;
31 using webrtc::SleepMs; 31 using webrtc::SleepMs;
32 using webrtc::VideoCaptureAlarm;
33 using webrtc::VideoCaptureCapability; 32 using webrtc::VideoCaptureCapability;
34 using webrtc::VideoCaptureDataCallback;
35 using webrtc::VideoCaptureFactory; 33 using webrtc::VideoCaptureFactory;
36 using webrtc::VideoCaptureFeedBack;
37 using webrtc::VideoCaptureModule; 34 using webrtc::VideoCaptureModule;
38 35
39 36
40 #define WAIT_(ex, timeout, res) \ 37 #define WAIT_(ex, timeout, res) \
41 do { \ 38 do { \
42 res = (ex); \ 39 res = (ex); \
43 int64_t start = rtc::TimeMillis(); \ 40 int64_t start = rtc::TimeMillis(); \
44 while (!res && rtc::TimeMillis() < start + timeout) { \ 41 while (!res && rtc::TimeMillis() < start + timeout) { \
45 SleepMs(5); \ 42 SleepMs(5); \
46 res = (ex); \ 43 res = (ex); \
47 } \ 44 } \
48 } while (0) 45 } while (0)
49 46
50 #define EXPECT_TRUE_WAIT(ex, timeout) \ 47 #define EXPECT_TRUE_WAIT(ex, timeout) \
51 do { \ 48 do { \
52 bool res; \ 49 bool res; \
53 WAIT_(ex, timeout, res); \ 50 WAIT_(ex, timeout, res); \
54 if (!res) EXPECT_TRUE(ex); \ 51 if (!res) EXPECT_TRUE(ex); \
55 } while (0) 52 } while (0)
56 53
57 54
58 static const int kTimeOut = 5000; 55 static const int kTimeOut = 5000;
59 static const int kTestHeight = 288; 56 static const int kTestHeight = 288;
60 static const int kTestWidth = 352; 57 static const int kTestWidth = 352;
61 static const int kTestFramerate = 30; 58 static const int kTestFramerate = 30;
62 59
63 class TestVideoCaptureCallback : public VideoCaptureDataCallback { 60 class TestVideoCaptureCallback
61 : public rtc::VideoSinkInterface<webrtc::VideoFrame> {
64 public: 62 public:
65 TestVideoCaptureCallback() 63 TestVideoCaptureCallback()
66 : capture_cs_(CriticalSectionWrapper::CreateCriticalSection()), 64 : capture_cs_(CriticalSectionWrapper::CreateCriticalSection()),
67 capture_delay_(-1),
68 last_render_time_ms_(0), 65 last_render_time_ms_(0),
69 incoming_frames_(0), 66 incoming_frames_(0),
70 timing_warnings_(0), 67 timing_warnings_(0),
71 rotate_frame_(webrtc::kVideoRotation_0) {} 68 rotate_frame_(webrtc::kVideoRotation_0) {}
72 69
73 ~TestVideoCaptureCallback() { 70 ~TestVideoCaptureCallback() {
74 if (timing_warnings_ > 0) 71 if (timing_warnings_ > 0)
75 printf("No of timing warnings %d\n", timing_warnings_); 72 printf("No of timing warnings %d\n", timing_warnings_);
76 } 73 }
77 74
78 virtual void OnIncomingCapturedFrame(const int32_t id, 75 void OnFrame(const webrtc::VideoFrame& videoFrame) override {
79 const webrtc::VideoFrame& videoFrame) {
80 CriticalSectionScoped cs(capture_cs_.get()); 76 CriticalSectionScoped cs(capture_cs_.get());
81 int height = videoFrame.height(); 77 int height = videoFrame.height();
82 int width = videoFrame.width(); 78 int width = videoFrame.width();
83 #if defined(ANDROID) && ANDROID 79 #if defined(ANDROID) && ANDROID
84 // Android camera frames may be rotated depending on test device 80 // Android camera frames may be rotated depending on test device
85 // orientation. 81 // orientation.
86 EXPECT_TRUE(height == capability_.height || height == capability_.width); 82 EXPECT_TRUE(height == capability_.height || height == capability_.width);
87 EXPECT_TRUE(width == capability_.width || width == capability_.height); 83 EXPECT_TRUE(width == capability_.width || width == capability_.height);
88 #else 84 #else
89 EXPECT_EQ(height, capability_.height); 85 EXPECT_EQ(height, capability_.height);
(...skipping 12 matching lines...) Expand all
102 last_render_time_ms_ + (1000 * 0.9) / capability_.maxFPS && 98 last_render_time_ms_ + (1000 * 0.9) / capability_.maxFPS &&
103 last_render_time_ms_ > 0)) { 99 last_render_time_ms_ > 0)) {
104 timing_warnings_++; 100 timing_warnings_++;
105 } 101 }
106 102
107 incoming_frames_++; 103 incoming_frames_++;
108 last_render_time_ms_ = videoFrame.render_time_ms(); 104 last_render_time_ms_ = videoFrame.render_time_ms();
109 last_frame_ = videoFrame.video_frame_buffer(); 105 last_frame_ = videoFrame.video_frame_buffer();
110 } 106 }
111 107
112 virtual void OnCaptureDelayChanged(const int32_t id,
113 const int32_t delay) {
114 CriticalSectionScoped cs(capture_cs_.get());
115 capture_delay_ = delay;
116 }
117
118 void SetExpectedCapability(VideoCaptureCapability capability) { 108 void SetExpectedCapability(VideoCaptureCapability capability) {
119 CriticalSectionScoped cs(capture_cs_.get()); 109 CriticalSectionScoped cs(capture_cs_.get());
120 capability_= capability; 110 capability_= capability;
121 incoming_frames_ = 0; 111 incoming_frames_ = 0;
122 last_render_time_ms_ = 0; 112 last_render_time_ms_ = 0;
123 capture_delay_ = -1;
124 } 113 }
125 int incoming_frames() { 114 int incoming_frames() {
126 CriticalSectionScoped cs(capture_cs_.get()); 115 CriticalSectionScoped cs(capture_cs_.get());
127 return incoming_frames_; 116 return incoming_frames_;
128 } 117 }
129 118
130 int capture_delay() {
131 CriticalSectionScoped cs(capture_cs_.get());
132 return capture_delay_;
133 }
134 int timing_warnings() { 119 int timing_warnings() {
135 CriticalSectionScoped cs(capture_cs_.get()); 120 CriticalSectionScoped cs(capture_cs_.get());
136 return timing_warnings_; 121 return timing_warnings_;
137 } 122 }
138 VideoCaptureCapability capability() { 123 VideoCaptureCapability capability() {
139 CriticalSectionScoped cs(capture_cs_.get()); 124 CriticalSectionScoped cs(capture_cs_.get());
140 return capability_; 125 return capability_;
141 } 126 }
142 127
143 bool CompareLastFrame(const webrtc::VideoFrame& frame) { 128 bool CompareLastFrame(const webrtc::VideoFrame& frame) {
144 CriticalSectionScoped cs(capture_cs_.get()); 129 CriticalSectionScoped cs(capture_cs_.get());
145 return webrtc::test::FrameBufsEqual(last_frame_, 130 return webrtc::test::FrameBufsEqual(last_frame_,
146 frame.video_frame_buffer()); 131 frame.video_frame_buffer());
147 } 132 }
148 133
149 void SetExpectedCaptureRotation(webrtc::VideoRotation rotation) { 134 void SetExpectedCaptureRotation(webrtc::VideoRotation rotation) {
150 CriticalSectionScoped cs(capture_cs_.get()); 135 CriticalSectionScoped cs(capture_cs_.get());
151 rotate_frame_ = rotation; 136 rotate_frame_ = rotation;
152 } 137 }
153 138
154 private: 139 private:
155 std::unique_ptr<CriticalSectionWrapper> capture_cs_; 140 std::unique_ptr<CriticalSectionWrapper> capture_cs_;
156 VideoCaptureCapability capability_; 141 VideoCaptureCapability capability_;
157 int capture_delay_;
158 int64_t last_render_time_ms_; 142 int64_t last_render_time_ms_;
159 int incoming_frames_; 143 int incoming_frames_;
160 int timing_warnings_; 144 int timing_warnings_;
161 rtc::scoped_refptr<webrtc::VideoFrameBuffer> last_frame_; 145 rtc::scoped_refptr<webrtc::VideoFrameBuffer> last_frame_;
162 webrtc::VideoRotation rotate_frame_; 146 webrtc::VideoRotation rotate_frame_;
163 }; 147 };
164 148
165 class TestVideoCaptureFeedBack : public VideoCaptureFeedBack {
166 public:
167 TestVideoCaptureFeedBack() :
168 capture_cs_(CriticalSectionWrapper::CreateCriticalSection()),
169 frame_rate_(0),
170 alarm_(webrtc::Cleared) {
171 }
172
173 virtual void OnCaptureFrameRate(const int32_t id,
174 const uint32_t frameRate) {
175 CriticalSectionScoped cs(capture_cs_.get());
176 frame_rate_ = frameRate;
177 }
178
179 virtual void OnNoPictureAlarm(const int32_t id,
180 const VideoCaptureAlarm reported_alarm) {
181 CriticalSectionScoped cs(capture_cs_.get());
182 alarm_ = reported_alarm;
183 }
184 int frame_rate() {
185 CriticalSectionScoped cs(capture_cs_.get());
186 return frame_rate_;
187
188 }
189 VideoCaptureAlarm alarm() {
190 CriticalSectionScoped cs(capture_cs_.get());
191 return alarm_;
192 }
193
194 private:
195 std::unique_ptr<CriticalSectionWrapper> capture_cs_;
196 unsigned int frame_rate_;
197 VideoCaptureAlarm alarm_;
198 };
199
200 class VideoCaptureTest : public testing::Test { 149 class VideoCaptureTest : public testing::Test {
201 public: 150 public:
202 VideoCaptureTest() : number_of_devices_(0) {} 151 VideoCaptureTest() : number_of_devices_(0) {}
203 152
204 void SetUp() { 153 void SetUp() {
205 device_info_.reset(VideoCaptureFactory::CreateDeviceInfo(0)); 154 device_info_.reset(VideoCaptureFactory::CreateDeviceInfo());
206 assert(device_info_.get()); 155 assert(device_info_.get());
207 number_of_devices_ = device_info_->NumberOfDevices(); 156 number_of_devices_ = device_info_->NumberOfDevices();
208 ASSERT_GT(number_of_devices_, 0u); 157 ASSERT_GT(number_of_devices_, 0u);
209 } 158 }
210 159
211 rtc::scoped_refptr<VideoCaptureModule> OpenVideoCaptureDevice( 160 rtc::scoped_refptr<VideoCaptureModule> OpenVideoCaptureDevice(
212 unsigned int device, 161 unsigned int device,
213 VideoCaptureDataCallback* callback) { 162 rtc::VideoSinkInterface<webrtc::VideoFrame>* callback) {
214 char device_name[256]; 163 char device_name[256];
215 char unique_name[256]; 164 char unique_name[256];
216 165
217 EXPECT_EQ(0, device_info_->GetDeviceName( 166 EXPECT_EQ(0, device_info_->GetDeviceName(
218 device, device_name, 256, unique_name, 256)); 167 device, device_name, 256, unique_name, 256));
219 168
220 rtc::scoped_refptr<VideoCaptureModule> module( 169 rtc::scoped_refptr<VideoCaptureModule> module(
221 VideoCaptureFactory::Create(device, unique_name)); 170 VideoCaptureFactory::Create(unique_name));
222 if (module.get() == NULL) 171 if (module.get() == NULL)
223 return NULL; 172 return NULL;
224 173
225 EXPECT_FALSE(module->CaptureStarted()); 174 EXPECT_FALSE(module->CaptureStarted());
226 175
227 module->RegisterCaptureDataCallback(*callback); 176 module->RegisterCaptureDataCallback(callback);
228 return module; 177 return module;
229 } 178 }
230 179
231 void StartCapture(VideoCaptureModule* capture_module, 180 void StartCapture(VideoCaptureModule* capture_module,
232 VideoCaptureCapability capability) { 181 VideoCaptureCapability capability) {
233 ASSERT_EQ(0, capture_module->StartCapture(capability)); 182 ASSERT_EQ(0, capture_module->StartCapture(capability));
234 EXPECT_TRUE(capture_module->CaptureStarted()); 183 EXPECT_TRUE(capture_module->CaptureStarted());
235 184
236 VideoCaptureCapability resulting_capability; 185 VideoCaptureCapability resulting_capability;
237 EXPECT_EQ(0, capture_module->CaptureSettings(resulting_capability)); 186 EXPECT_EQ(0, capture_module->CaptureSettings(resulting_capability));
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 #endif 218 #endif
270 capture_observer.SetExpectedCapability(capability); 219 capture_observer.SetExpectedCapability(capability);
271 ASSERT_NO_FATAL_FAILURE(StartCapture(module.get(), capability)); 220 ASSERT_NO_FATAL_FAILURE(StartCapture(module.get(), capability));
272 221
273 // Less than 4s to start the camera. 222 // Less than 4s to start the camera.
274 EXPECT_LE(rtc::TimeMillis() - start_time, 4000); 223 EXPECT_LE(rtc::TimeMillis() - start_time, 4000);
275 224
276 // Make sure 5 frames are captured. 225 // Make sure 5 frames are captured.
277 EXPECT_TRUE_WAIT(capture_observer.incoming_frames() >= 5, kTimeOut); 226 EXPECT_TRUE_WAIT(capture_observer.incoming_frames() >= 5, kTimeOut);
278 227
279 EXPECT_GE(capture_observer.capture_delay(), 0);
280
281 int64_t stop_time = rtc::TimeMillis(); 228 int64_t stop_time = rtc::TimeMillis();
282 EXPECT_EQ(0, module->StopCapture()); 229 EXPECT_EQ(0, module->StopCapture());
283 EXPECT_FALSE(module->CaptureStarted()); 230 EXPECT_FALSE(module->CaptureStarted());
284 231
285 // Less than 3s to stop the camera. 232 // Less than 3s to stop the camera.
286 EXPECT_LE(rtc::TimeMillis() - stop_time, 3000); 233 EXPECT_LE(rtc::TimeMillis() - stop_time, 3000);
287 } 234 }
288 } 235 }
289 236
290 #ifdef WEBRTC_MAC 237 #ifdef WEBRTC_MAC
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
401 EXPECT_TRUE_WAIT(capture_observer2.incoming_frames() >= 5, kTimeOut); 348 EXPECT_TRUE_WAIT(capture_observer2.incoming_frames() >= 5, kTimeOut);
402 EXPECT_EQ(0, module2->StopCapture()); 349 EXPECT_EQ(0, module2->StopCapture());
403 EXPECT_EQ(0, module1->StopCapture()); 350 EXPECT_EQ(0, module1->StopCapture());
404 } 351 }
405 352
406 // Test class for testing external capture and capture feedback information 353 // Test class for testing external capture and capture feedback information
407 // such as frame rate and picture alarm. 354 // such as frame rate and picture alarm.
408 class VideoCaptureExternalTest : public testing::Test { 355 class VideoCaptureExternalTest : public testing::Test {
409 public: 356 public:
410 void SetUp() { 357 void SetUp() {
411 capture_module_ = VideoCaptureFactory::Create(0, capture_input_interface_); 358 capture_module_ = VideoCaptureFactory::Create(capture_input_interface_);
412 process_module_ = webrtc::ProcessThread::Create("ProcessThread");
413 process_module_->Start();
414 process_module_->RegisterModule(capture_module_);
415 359
416 VideoCaptureCapability capability; 360 VideoCaptureCapability capability;
417 capability.width = kTestWidth; 361 capability.width = kTestWidth;
418 capability.height = kTestHeight; 362 capability.height = kTestHeight;
419 capability.rawType = webrtc::kVideoYV12; 363 capability.rawType = webrtc::kVideoYV12;
420 capability.maxFPS = kTestFramerate; 364 capability.maxFPS = kTestFramerate;
421 capture_callback_.SetExpectedCapability(capability); 365 capture_callback_.SetExpectedCapability(capability);
422 366
423 rtc::scoped_refptr<webrtc::I420Buffer> buffer = webrtc::I420Buffer::Create( 367 rtc::scoped_refptr<webrtc::I420Buffer> buffer = webrtc::I420Buffer::Create(
424 kTestWidth, kTestHeight, 368 kTestWidth, kTestHeight,
425 kTestWidth, ((kTestWidth + 1) / 2), (kTestWidth + 1) / 2); 369 kTestWidth, ((kTestWidth + 1) / 2), (kTestWidth + 1) / 2);
426 370
427 memset(buffer->MutableDataY(), 127, kTestWidth * kTestHeight); 371 memset(buffer->MutableDataY(), 127, kTestWidth * kTestHeight);
428 memset(buffer->MutableDataU(), 127, 372 memset(buffer->MutableDataU(), 127,
429 ((kTestWidth + 1) / 2) * ((kTestHeight + 1) / 2)); 373 ((kTestWidth + 1) / 2) * ((kTestHeight + 1) / 2));
430 memset(buffer->MutableDataV(), 127, 374 memset(buffer->MutableDataV(), 127,
431 ((kTestWidth + 1) / 2) * ((kTestHeight + 1) / 2)); 375 ((kTestWidth + 1) / 2) * ((kTestHeight + 1) / 2));
432 test_frame_.reset( 376 test_frame_.reset(
433 new webrtc::VideoFrame(buffer, 0, 0, webrtc::kVideoRotation_0)); 377 new webrtc::VideoFrame(buffer, 0, 0, webrtc::kVideoRotation_0));
434 378
435 SleepMs(1); // Wait 1ms so that two tests can't have the same timestamp. 379 SleepMs(1); // Wait 1ms so that two tests can't have the same timestamp.
436 380
437 capture_module_->RegisterCaptureDataCallback(capture_callback_); 381 capture_module_->RegisterCaptureDataCallback(&capture_callback_);
438 capture_module_->RegisterCaptureCallback(capture_feedback_);
439 capture_module_->EnableFrameRateCallback(true);
440 capture_module_->EnableNoPictureAlarm(true);
441 } 382 }
442 383
443 void TearDown() { 384 void TearDown() {
444 process_module_->Stop();
445 } 385 }
446 386
447 webrtc::VideoCaptureExternal* capture_input_interface_; 387 webrtc::VideoCaptureExternal* capture_input_interface_;
448 rtc::scoped_refptr<VideoCaptureModule> capture_module_; 388 rtc::scoped_refptr<VideoCaptureModule> capture_module_;
449 std::unique_ptr<webrtc::ProcessThread> process_module_;
450 std::unique_ptr<webrtc::VideoFrame> test_frame_; 389 std::unique_ptr<webrtc::VideoFrame> test_frame_;
451 TestVideoCaptureCallback capture_callback_; 390 TestVideoCaptureCallback capture_callback_;
452 TestVideoCaptureFeedBack capture_feedback_;
453 }; 391 };
454 392
455 // Test input of external video frames. 393 // Test input of external video frames.
456 TEST_F(VideoCaptureExternalTest, TestExternalCapture) { 394 TEST_F(VideoCaptureExternalTest, TestExternalCapture) {
457 size_t length = webrtc::CalcBufferSize(webrtc::kI420, 395 size_t length = webrtc::CalcBufferSize(webrtc::kI420,
458 test_frame_->width(), 396 test_frame_->width(),
459 test_frame_->height()); 397 test_frame_->height());
460 std::unique_ptr<uint8_t[]> test_buffer(new uint8_t[length]); 398 std::unique_ptr<uint8_t[]> test_buffer(new uint8_t[length]);
461 webrtc::ExtractBuffer(*test_frame_, length, test_buffer.get()); 399 webrtc::ExtractBuffer(*test_frame_, length, test_buffer.get());
462 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(), 400 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(),
463 length, capture_callback_.capability(), 0)); 401 length, capture_callback_.capability(), 0));
464 EXPECT_TRUE(capture_callback_.CompareLastFrame(*test_frame_)); 402 EXPECT_TRUE(capture_callback_.CompareLastFrame(*test_frame_));
465 } 403 }
466 404
467 // Test frame rate and no picture alarm.
468 // Flaky on Win32, see webrtc:3270.
469 #if defined(WEBRTC_WIN) || defined(WEBRTC_MAC)
470 #define MAYBE_FrameRate DISABLED_FrameRate
471 #else
472 #define MAYBE_FrameRate FrameRate
473 #endif
474 TEST_F(VideoCaptureExternalTest, MAYBE_FrameRate) {
475 int64_t testTime = 3 * rtc::kNumNanosecsPerSec;
476 int64_t startTime = rtc::TimeNanos();
477
478 while ((rtc::TimeNanos() - startTime) < testTime) {
479 size_t length = webrtc::CalcBufferSize(webrtc::kI420,
480 test_frame_->width(),
481 test_frame_->height());
482 std::unique_ptr<uint8_t[]> test_buffer(new uint8_t[length]);
483 webrtc::ExtractBuffer(*test_frame_, length, test_buffer.get());
484 EXPECT_EQ(
485 0, capture_input_interface_->IncomingFrame(
486 test_buffer.get(), length, capture_callback_.capability(), 0));
487 SleepMs(100);
488 }
489 EXPECT_TRUE(capture_feedback_.frame_rate() >= 8 &&
490 capture_feedback_.frame_rate() <= 10);
491 SleepMs(500);
492 EXPECT_EQ(webrtc::Raised, capture_feedback_.alarm());
493
494 startTime = rtc::TimeNanos();
495 while ((rtc::TimeNanos() - startTime) < testTime) {
496 size_t length = webrtc::CalcBufferSize(webrtc::kI420,
497 test_frame_->width(),
498 test_frame_->height());
499 std::unique_ptr<uint8_t[]> test_buffer(new uint8_t[length]);
500 webrtc::ExtractBuffer(*test_frame_, length, test_buffer.get());
501 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(),
502 length, capture_callback_.capability(), 0));
503 SleepMs(1000 / 30);
504 }
505 EXPECT_EQ(webrtc::Cleared, capture_feedback_.alarm());
506 // Frame rate might be less than 33 since we have paused providing
507 // frames for a while.
508 EXPECT_TRUE(capture_feedback_.frame_rate() >= 25 &&
509 capture_feedback_.frame_rate() <= 33);
510 }
511
512 TEST_F(VideoCaptureExternalTest, Rotation) { 405 TEST_F(VideoCaptureExternalTest, Rotation) {
513 EXPECT_EQ(0, capture_module_->SetCaptureRotation(webrtc::kVideoRotation_0)); 406 EXPECT_EQ(0, capture_module_->SetCaptureRotation(webrtc::kVideoRotation_0));
514 size_t length = webrtc::CalcBufferSize(webrtc::kI420, 407 size_t length = webrtc::CalcBufferSize(webrtc::kI420,
515 test_frame_->width(), 408 test_frame_->width(),
516 test_frame_->height()); 409 test_frame_->height());
517 std::unique_ptr<uint8_t[]> test_buffer(new uint8_t[length]); 410 std::unique_ptr<uint8_t[]> test_buffer(new uint8_t[length]);
518 webrtc::ExtractBuffer(*test_frame_, length, test_buffer.get()); 411 webrtc::ExtractBuffer(*test_frame_, length, test_buffer.get());
519 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(), 412 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(),
520 length, capture_callback_.capability(), 0)); 413 length, capture_callback_.capability(), 0));
521 EXPECT_EQ(0, capture_module_->SetCaptureRotation(webrtc::kVideoRotation_90)); 414 EXPECT_EQ(0, capture_module_->SetCaptureRotation(webrtc::kVideoRotation_90));
522 capture_callback_.SetExpectedCaptureRotation(webrtc::kVideoRotation_90); 415 capture_callback_.SetExpectedCaptureRotation(webrtc::kVideoRotation_90);
523 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(), 416 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(),
524 length, capture_callback_.capability(), 0)); 417 length, capture_callback_.capability(), 0));
525 EXPECT_EQ(0, capture_module_->SetCaptureRotation(webrtc::kVideoRotation_180)); 418 EXPECT_EQ(0, capture_module_->SetCaptureRotation(webrtc::kVideoRotation_180));
526 capture_callback_.SetExpectedCaptureRotation(webrtc::kVideoRotation_180); 419 capture_callback_.SetExpectedCaptureRotation(webrtc::kVideoRotation_180);
527 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(), 420 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(),
528 length, capture_callback_.capability(), 0)); 421 length, capture_callback_.capability(), 0));
529 EXPECT_EQ(0, capture_module_->SetCaptureRotation(webrtc::kVideoRotation_270)); 422 EXPECT_EQ(0, capture_module_->SetCaptureRotation(webrtc::kVideoRotation_270));
530 capture_callback_.SetExpectedCaptureRotation(webrtc::kVideoRotation_270); 423 capture_callback_.SetExpectedCaptureRotation(webrtc::kVideoRotation_270);
531 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(), 424 EXPECT_EQ(0, capture_input_interface_->IncomingFrame(test_buffer.get(),
532 length, capture_callback_.capability(), 0)); 425 length, capture_callback_.capability(), 0));
533 } 426 }
OLDNEW
« no previous file with comments | « webrtc/modules/video_capture/objc/video_capture.mm ('k') | webrtc/modules/video_capture/video_capture.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698