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

Side by Side Diff: content/browser/renderer_host/media/video_capture_host_unittest.cc

Issue 500653003: Video capture frame size: separate coded size and visible size. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix content_unittests build. Created 6 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <map> 5 #include <map>
6 #include <string> 6 #include <string>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/file_util.h" 10 #include "base/file_util.h"
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
119 dump_video_(false) {} 119 dump_video_(false) {}
120 120
121 // A list of mock methods. 121 // A list of mock methods.
122 MOCK_METHOD4(OnNewBufferCreated, 122 MOCK_METHOD4(OnNewBufferCreated,
123 void(int device_id, 123 void(int device_id,
124 base::SharedMemoryHandle handle, 124 base::SharedMemoryHandle handle,
125 int length, 125 int length,
126 int buffer_id)); 126 int buffer_id));
127 MOCK_METHOD2(OnBufferFreed, 127 MOCK_METHOD2(OnBufferFreed,
128 void(int device_id, int buffer_id)); 128 void(int device_id, int buffer_id));
129 MOCK_METHOD4(OnBufferFilled, 129 MOCK_METHOD5(OnBufferFilled,
130 void(int device_id, 130 void(int device_id,
131 int buffer_id, 131 int buffer_id,
132 const media::VideoCaptureFormat& format, 132 const media::VideoCaptureFormat& format,
133 const gfx::Rect& visible_rect,
133 base::TimeTicks timestamp)); 134 base::TimeTicks timestamp));
134 MOCK_METHOD5(OnMailboxBufferFilled, 135 MOCK_METHOD5(OnMailboxBufferFilled,
135 void(int device_id, 136 void(int device_id,
136 int buffer_id, 137 int buffer_id,
137 const gpu::MailboxHolder& mailbox_holder, 138 const gpu::MailboxHolder& mailbox_holder,
138 const media::VideoCaptureFormat& format, 139 const media::VideoCaptureFormat& format,
139 base::TimeTicks timestamp)); 140 base::TimeTicks timestamp));
140 MOCK_METHOD2(OnStateChanged, void(int device_id, VideoCaptureState state)); 141 MOCK_METHOD2(OnStateChanged, void(int device_id, VideoCaptureState state));
141 142
142 // Use class DumpVideo to write I420 video to file. 143 // Use class DumpVideo to write I420 video to file.
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 std::map<int, base::SharedMemory*>::iterator it = 216 std::map<int, base::SharedMemory*>::iterator it =
216 filled_dib_.find(buffer_id); 217 filled_dib_.find(buffer_id);
217 ASSERT_TRUE(it != filled_dib_.end()); 218 ASSERT_TRUE(it != filled_dib_.end());
218 delete it->second; 219 delete it->second;
219 filled_dib_.erase(it); 220 filled_dib_.erase(it);
220 } 221 }
221 222
222 void OnBufferFilledDispatch(int device_id, 223 void OnBufferFilledDispatch(int device_id,
223 int buffer_id, 224 int buffer_id,
224 const media::VideoCaptureFormat& frame_format, 225 const media::VideoCaptureFormat& frame_format,
226 const gfx::Rect& visible_rect,
225 base::TimeTicks timestamp) { 227 base::TimeTicks timestamp) {
226 base::SharedMemory* dib = filled_dib_[buffer_id]; 228 base::SharedMemory* dib = filled_dib_[buffer_id];
227 ASSERT_TRUE(dib != NULL); 229 ASSERT_TRUE(dib != NULL);
228 if (dump_video_) { 230 if (dump_video_) {
229 if (!format_.IsValid()) { 231 if (!format_.IsValid()) {
230 dumper_.StartDump(frame_format.frame_size.width(), 232 dumper_.StartDump(frame_format.frame_size.width(),
231 frame_format.frame_size.height()); 233 frame_format.frame_size.height());
232 format_ = frame_format; 234 format_ = frame_format;
233 } 235 }
234 ASSERT_EQ(format_.frame_size.width(), frame_format.frame_size.width()) 236 ASSERT_EQ(format_.frame_size.width(), frame_format.frame_size.width())
235 << "Dump format does not handle variable resolution."; 237 << "Dump format does not handle variable resolution.";
236 ASSERT_EQ(format_.frame_size.height(), frame_format.frame_size.height()) 238 ASSERT_EQ(format_.frame_size.height(), frame_format.frame_size.height())
237 << "Dump format does not handle variable resolution."; 239 << "Dump format does not handle variable resolution.";
238 dumper_.NewVideoFrame(dib->memory()); 240 dumper_.NewVideoFrame(dib->memory());
239 } 241 }
240 242
241 OnBufferFilled(device_id, buffer_id, frame_format, timestamp); 243 OnBufferFilled(device_id, buffer_id, frame_format, visible_rect, timestamp);
242 if (return_buffers_) { 244 if (return_buffers_) {
243 VideoCaptureHost::OnReceiveEmptyBuffer(device_id, buffer_id, 0); 245 VideoCaptureHost::OnReceiveEmptyBuffer(device_id, buffer_id, 0);
244 } 246 }
245 } 247 }
246 248
247 void OnMailboxBufferFilledDispatch(int device_id, 249 void OnMailboxBufferFilledDispatch(int device_id,
248 int buffer_id, 250 int buffer_id,
249 const gpu::MailboxHolder& mailbox_holder, 251 const gpu::MailboxHolder& mailbox_holder,
250 const media::VideoCaptureFormat& format, 252 const media::VideoCaptureFormat& format,
251 base::TimeTicks timestamp) { 253 base::TimeTicks timestamp) {
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 opened_session_id_ = kInvalidMediaCaptureSessionId; 388 opened_session_id_ = kInvalidMediaCaptureSessionId;
387 } 389 }
388 390
389 protected: 391 protected:
390 void StartCapture() { 392 void StartCapture() {
391 EXPECT_CALL(*host_.get(), OnNewBufferCreated(kDeviceId, _, _, _)) 393 EXPECT_CALL(*host_.get(), OnNewBufferCreated(kDeviceId, _, _, _))
392 .Times(AnyNumber()) 394 .Times(AnyNumber())
393 .WillRepeatedly(Return()); 395 .WillRepeatedly(Return());
394 396
395 base::RunLoop run_loop; 397 base::RunLoop run_loop;
396 EXPECT_CALL(*host_.get(), OnBufferFilled(kDeviceId, _, _, _)) 398 EXPECT_CALL(*host_.get(), OnBufferFilled(kDeviceId, _, _, _, _))
397 .Times(AnyNumber()) 399 .Times(AnyNumber())
398 .WillOnce(ExitMessageLoop(message_loop_, run_loop.QuitClosure())); 400 .WillOnce(ExitMessageLoop(message_loop_, run_loop.QuitClosure()));
399 401
400 media::VideoCaptureParams params; 402 media::VideoCaptureParams params;
401 params.requested_format = media::VideoCaptureFormat( 403 params.requested_format = media::VideoCaptureFormat(
402 gfx::Size(352, 288), 30, media::PIXEL_FORMAT_I420); 404 gfx::Size(352, 288), 30, media::PIXEL_FORMAT_I420);
403 host_->OnStartCapture(kDeviceId, opened_session_id_, params); 405 host_->OnStartCapture(kDeviceId, opened_session_id_, params);
404 run_loop.Run(); 406 run_loop.Run();
405 } 407 }
406 408
(...skipping 12 matching lines...) Expand all
419 run_loop.RunUntilIdle(); 421 run_loop.RunUntilIdle();
420 } 422 }
421 423
422 #ifdef DUMP_VIDEO 424 #ifdef DUMP_VIDEO
423 void CaptureAndDumpVideo(int width, int height, int frame_rate) { 425 void CaptureAndDumpVideo(int width, int height, int frame_rate) {
424 InSequence s; 426 InSequence s;
425 EXPECT_CALL(*host_.get(), OnNewBufferCreated(kDeviceId, _, _, _)) 427 EXPECT_CALL(*host_.get(), OnNewBufferCreated(kDeviceId, _, _, _))
426 .Times(AnyNumber()).WillRepeatedly(Return()); 428 .Times(AnyNumber()).WillRepeatedly(Return());
427 429
428 base::RunLoop run_loop; 430 base::RunLoop run_loop;
429 EXPECT_CALL(*host_, OnBufferFilled(kDeviceId, _, _, _)) 431 EXPECT_CALL(*host_, OnBufferFilled(kDeviceId, _, _, _, _))
430 .Times(AnyNumber()) 432 .Times(AnyNumber())
431 .WillOnce(ExitMessageLoop(message_loop_, run_loop.QuitClosure())); 433 .WillOnce(ExitMessageLoop(message_loop_, run_loop.QuitClosure()));
432 434
433 media::VideoCaptureParams params; 435 media::VideoCaptureParams params;
434 params.requested_format = 436 params.requested_format =
435 media::VideoCaptureFormat(gfx::Size(width, height), frame_rate); 437 media::VideoCaptureFormat(gfx::Size(width, height), frame_rate);
436 host_->SetDumpVideo(true); 438 host_->SetDumpVideo(true);
437 host_->OnStartCapture(kDeviceId, opened_session_id_, params); 439 host_->OnStartCapture(kDeviceId, opened_session_id_, params);
438 run_loop.Run(); 440 run_loop.Run();
439 } 441 }
(...skipping 11 matching lines...) Expand all
451 453
452 run_loop.Run(); 454 run_loop.Run();
453 455
454 host_->SetReturnReceivedDibs(false); 456 host_->SetReturnReceivedDibs(false);
455 // Expect the VideoCaptureDevice has been stopped 457 // Expect the VideoCaptureDevice has been stopped
456 EXPECT_EQ(0u, host_->entries_.size()); 458 EXPECT_EQ(0u, host_->entries_.size());
457 } 459 }
458 460
459 void NotifyPacketReady() { 461 void NotifyPacketReady() {
460 base::RunLoop run_loop; 462 base::RunLoop run_loop;
461 EXPECT_CALL(*host_.get(), OnBufferFilled(kDeviceId, _, _, _)) 463 EXPECT_CALL(*host_.get(), OnBufferFilled(kDeviceId, _, _, _, _))
462 .Times(AnyNumber()) 464 .Times(AnyNumber())
463 .WillOnce(ExitMessageLoop(message_loop_, run_loop.QuitClosure())) 465 .WillOnce(ExitMessageLoop(message_loop_, run_loop.QuitClosure()))
464 .RetiresOnSaturation(); 466 .RetiresOnSaturation();
465 run_loop.Run(); 467 run_loop.Run();
466 } 468 }
467 469
468 void ReturnReceivedPackets() { 470 void ReturnReceivedPackets() {
469 host_->ReturnReceivedDibs(kDeviceId); 471 host_->ReturnReceivedDibs(kDeviceId);
470 } 472 }
471 473
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 #ifdef DUMP_VIDEO 538 #ifdef DUMP_VIDEO
537 TEST_F(VideoCaptureHostTest, CaptureAndDumpVideoVga) { 539 TEST_F(VideoCaptureHostTest, CaptureAndDumpVideoVga) {
538 CaptureAndDumpVideo(640, 480, 30); 540 CaptureAndDumpVideo(640, 480, 30);
539 } 541 }
540 TEST_F(VideoCaptureHostTest, CaptureAndDump720P) { 542 TEST_F(VideoCaptureHostTest, CaptureAndDump720P) {
541 CaptureAndDumpVideo(1280, 720, 30); 543 CaptureAndDumpVideo(1280, 720, 30);
542 } 544 }
543 #endif 545 #endif
544 546
545 } // namespace content 547 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698