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

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

Issue 1204063005: Reland: Video Capture: extract storage info from pixel format in VideoCaptureFormat. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: dcheng@s https://codereview.chromium.org/1210743003/#ps20001 Created 5 years, 5 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 // 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 // Unit test for VideoCaptureController. 5 // Unit test for VideoCaptureController.
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 base::kNullProcessHandle, 309 base::kNullProcessHandle,
310 200, 310 200,
311 session_200); 311 session_200);
312 ASSERT_EQ(3, controller_->GetClientCount()); 312 ASSERT_EQ(3, controller_->GetClientCount());
313 313
314 // Now, simulate an incoming captured buffer from the capture device. As a 314 // Now, simulate an incoming captured buffer from the capture device. As a
315 // side effect this will cause the first buffer to be shared with clients. 315 // side effect this will cause the first buffer to be shared with clients.
316 uint8 buffer_no = 1; 316 uint8 buffer_no = 1;
317 ASSERT_EQ(0.0, device_->GetBufferPoolUtilization()); 317 ASSERT_EQ(0.0, device_->GetBufferPoolUtilization());
318 scoped_ptr<media::VideoCaptureDevice::Client::Buffer> buffer( 318 scoped_ptr<media::VideoCaptureDevice::Client::Buffer> buffer(
319 device_->ReserveOutputBuffer(media::PIXEL_FORMAT_I420, 319 device_->ReserveOutputBuffer(capture_resolution, media::PIXEL_FORMAT_I420,
320 capture_resolution)); 320 media::PIXEL_STORAGE_CPU));
321 ASSERT_TRUE(buffer.get()); 321 ASSERT_TRUE(buffer.get());
322 ASSERT_EQ(1.0 / kPoolSize, device_->GetBufferPoolUtilization()); 322 ASSERT_EQ(1.0 / kPoolSize, device_->GetBufferPoolUtilization());
323 memset(buffer->data(), buffer_no++, buffer->size()); 323 memset(buffer->data(), buffer_no++, buffer->size());
324 { 324 {
325 InSequence s; 325 InSequence s;
326 EXPECT_CALL(*client_a_, DoBufferCreated(client_a_route_1)).Times(1); 326 EXPECT_CALL(*client_a_, DoBufferCreated(client_a_route_1)).Times(1);
327 EXPECT_CALL(*client_a_, 327 EXPECT_CALL(*client_a_,
328 DoI420BufferReady(client_a_route_1, capture_resolution)) 328 DoI420BufferReady(client_a_route_1, capture_resolution))
329 .Times(1); 329 .Times(1);
330 } 330 }
(...skipping 28 matching lines...) Expand all
359 double resource_utilization_in_metadata = -1.0; 359 double resource_utilization_in_metadata = -1.0;
360 ASSERT_TRUE(video_frame->metadata()->GetDouble( 360 ASSERT_TRUE(video_frame->metadata()->GetDouble(
361 media::VideoFrameMetadata::RESOURCE_UTILIZATION, 361 media::VideoFrameMetadata::RESOURCE_UTILIZATION,
362 &resource_utilization_in_metadata)); 362 &resource_utilization_in_metadata));
363 ASSERT_EQ(0.5, resource_utilization_in_metadata); 363 ASSERT_EQ(0.5, resource_utilization_in_metadata);
364 364
365 // Second buffer which ought to use the same shared memory buffer. In this 365 // Second buffer which ought to use the same shared memory buffer. In this
366 // case pretend that the Buffer pointer is held by the device for a long 366 // case pretend that the Buffer pointer is held by the device for a long
367 // delay. This shouldn't affect anything. 367 // delay. This shouldn't affect anything.
368 scoped_ptr<media::VideoCaptureDevice::Client::Buffer> buffer2 = 368 scoped_ptr<media::VideoCaptureDevice::Client::Buffer> buffer2 =
369 device_->ReserveOutputBuffer(media::PIXEL_FORMAT_I420, 369 device_->ReserveOutputBuffer(capture_resolution, media::PIXEL_FORMAT_I420,
370 capture_resolution); 370 media::PIXEL_STORAGE_CPU);
371 ASSERT_TRUE(buffer2.get()); 371 ASSERT_TRUE(buffer2.get());
372 memset(buffer2->data(), buffer_no++, buffer2->size()); 372 memset(buffer2->data(), buffer_no++, buffer2->size());
373 video_frame = 373 video_frame =
374 WrapI420Buffer(capture_resolution, static_cast<uint8*>(buffer2->data())); 374 WrapI420Buffer(capture_resolution, static_cast<uint8*>(buffer2->data()));
375 ASSERT_FALSE(video_frame->metadata()->HasKey( 375 ASSERT_FALSE(video_frame->metadata()->HasKey(
376 media::VideoFrameMetadata::RESOURCE_UTILIZATION)); 376 media::VideoFrameMetadata::RESOURCE_UTILIZATION));
377 client_a_->resource_utilization_ = 0.5; 377 client_a_->resource_utilization_ = 0.5;
378 client_b_->resource_utilization_ = 3.14; 378 client_b_->resource_utilization_ = 3.14;
379 device_->OnIncomingCapturedVideoFrame(buffer2.Pass(), video_frame, 379 device_->OnIncomingCapturedVideoFrame(buffer2.Pass(), video_frame,
380 base::TimeTicks()); 380 base::TimeTicks());
(...skipping 23 matching lines...) Expand all
404 controller_->AddClient(client_b_route_2, 404 controller_->AddClient(client_b_route_2,
405 client_b_.get(), 405 client_b_.get(),
406 base::kNullProcessHandle, 406 base::kNullProcessHandle,
407 1, 407 1,
408 session_1); 408 session_1);
409 Mock::VerifyAndClearExpectations(client_b_.get()); 409 Mock::VerifyAndClearExpectations(client_b_.get());
410 410
411 // Third, fourth, and fifth buffers. Pretend they all arrive at the same time. 411 // Third, fourth, and fifth buffers. Pretend they all arrive at the same time.
412 for (int i = 0; i < kPoolSize; i++) { 412 for (int i = 0; i < kPoolSize; i++) {
413 scoped_ptr<media::VideoCaptureDevice::Client::Buffer> buffer = 413 scoped_ptr<media::VideoCaptureDevice::Client::Buffer> buffer =
414 device_->ReserveOutputBuffer(media::PIXEL_FORMAT_I420, 414 device_->ReserveOutputBuffer(capture_resolution,
415 capture_resolution); 415 media::PIXEL_FORMAT_I420,
416 media::PIXEL_STORAGE_CPU);
416 ASSERT_TRUE(buffer.get()); 417 ASSERT_TRUE(buffer.get());
417 memset(buffer->data(), buffer_no++, buffer->size()); 418 memset(buffer->data(), buffer_no++, buffer->size());
418 video_frame = 419 video_frame =
419 WrapI420Buffer(capture_resolution, static_cast<uint8*>(buffer->data())); 420 WrapI420Buffer(capture_resolution, static_cast<uint8*>(buffer->data()));
420 device_->OnIncomingCapturedVideoFrame(buffer.Pass(), video_frame, 421 device_->OnIncomingCapturedVideoFrame(buffer.Pass(), video_frame,
421 base::TimeTicks()); 422 base::TimeTicks());
422 } 423 }
423 // ReserveOutputBuffer ought to fail now, because the pool is depleted. 424 // ReserveOutputBuffer ought to fail now, because the pool is depleted.
424 ASSERT_FALSE(device_->ReserveOutputBuffer(media::PIXEL_FORMAT_I420, 425 ASSERT_FALSE(
425 capture_resolution).get()); 426 device_->ReserveOutputBuffer(capture_resolution, media::PIXEL_FORMAT_I420,
427 media::PIXEL_STORAGE_CPU).get());
426 428
427 // The new client needs to be told of 3 buffers; the old clients only 2. 429 // The new client needs to be told of 3 buffers; the old clients only 2.
428 EXPECT_CALL(*client_b_, DoBufferCreated(client_b_route_2)).Times(kPoolSize); 430 EXPECT_CALL(*client_b_, DoBufferCreated(client_b_route_2)).Times(kPoolSize);
429 EXPECT_CALL(*client_b_, 431 EXPECT_CALL(*client_b_,
430 DoI420BufferReady(client_b_route_2, capture_resolution)) 432 DoI420BufferReady(client_b_route_2, capture_resolution))
431 .Times(kPoolSize); 433 .Times(kPoolSize);
432 EXPECT_CALL(*client_a_, DoBufferCreated(client_a_route_1)) 434 EXPECT_CALL(*client_a_, DoBufferCreated(client_a_route_1))
433 .Times(kPoolSize - 1); 435 .Times(kPoolSize - 1);
434 EXPECT_CALL(*client_a_, 436 EXPECT_CALL(*client_a_,
435 DoI420BufferReady(client_a_route_1, capture_resolution)) 437 DoI420BufferReady(client_a_route_1, capture_resolution))
(...skipping 13 matching lines...) Expand all
449 Mock::VerifyAndClearExpectations(client_b_.get()); 451 Mock::VerifyAndClearExpectations(client_b_.get());
450 452
451 // Now test the interaction of client shutdown and buffer delivery. 453 // Now test the interaction of client shutdown and buffer delivery.
452 // Kill A1 via renderer disconnect (synchronous). 454 // Kill A1 via renderer disconnect (synchronous).
453 controller_->RemoveClient(client_a_route_1, client_a_.get()); 455 controller_->RemoveClient(client_a_route_1, client_a_.get());
454 // Kill B1 via session close (posts a task to disconnect). 456 // Kill B1 via session close (posts a task to disconnect).
455 EXPECT_CALL(*client_b_, DoEnded(client_b_route_1)).Times(1); 457 EXPECT_CALL(*client_b_, DoEnded(client_b_route_1)).Times(1);
456 controller_->StopSession(300); 458 controller_->StopSession(300);
457 // Queue up another buffer. 459 // Queue up another buffer.
458 scoped_ptr<media::VideoCaptureDevice::Client::Buffer> buffer3 = 460 scoped_ptr<media::VideoCaptureDevice::Client::Buffer> buffer3 =
459 device_->ReserveOutputBuffer(media::PIXEL_FORMAT_I420, 461 device_->ReserveOutputBuffer(capture_resolution, media::PIXEL_FORMAT_I420,
460 capture_resolution); 462 media::PIXEL_STORAGE_CPU);
461 ASSERT_TRUE(buffer3.get()); 463 ASSERT_TRUE(buffer3.get());
462 memset(buffer3->data(), buffer_no++, buffer3->size()); 464 memset(buffer3->data(), buffer_no++, buffer3->size());
463 video_frame = 465 video_frame =
464 WrapI420Buffer(capture_resolution, static_cast<uint8*>(buffer3->data())); 466 WrapI420Buffer(capture_resolution, static_cast<uint8*>(buffer3->data()));
465 device_->OnIncomingCapturedVideoFrame(buffer3.Pass(), video_frame, 467 device_->OnIncomingCapturedVideoFrame(buffer3.Pass(), video_frame,
466 base::TimeTicks()); 468 base::TimeTicks());
467 469
468 scoped_ptr<media::VideoCaptureDevice::Client::Buffer> buffer4 = 470 scoped_ptr<media::VideoCaptureDevice::Client::Buffer> buffer4 =
469 device_->ReserveOutputBuffer(media::PIXEL_FORMAT_I420, 471 device_->ReserveOutputBuffer(capture_resolution, media::PIXEL_FORMAT_I420,
470 capture_resolution); 472 media::PIXEL_STORAGE_CPU);
471 { 473 {
472 // Kill A2 via session close (posts a task to disconnect, but A2 must not 474 // Kill A2 via session close (posts a task to disconnect, but A2 must not
473 // be sent either of these two buffers). 475 // be sent either of these two buffers).
474 EXPECT_CALL(*client_a_, DoEnded(client_a_route_2)).Times(1); 476 EXPECT_CALL(*client_a_, DoEnded(client_a_route_2)).Times(1);
475 controller_->StopSession(200); 477 controller_->StopSession(200);
476 } 478 }
477 ASSERT_TRUE(buffer4.get()); 479 ASSERT_TRUE(buffer4.get());
478 memset(buffer4->data(), buffer_no++, buffer4->size()); 480 memset(buffer4->data(), buffer_no++, buffer4->size());
479 video_frame = 481 video_frame =
480 WrapI420Buffer(capture_resolution, static_cast<uint8*>(buffer4->data())); 482 WrapI420Buffer(capture_resolution, static_cast<uint8*>(buffer4->data()));
(...skipping 16 matching lines...) Expand all
497 int mailbox_buffers = kPoolSize / 2; 499 int mailbox_buffers = kPoolSize / 2;
498 #endif 500 #endif
499 int shm_buffers = kPoolSize - mailbox_buffers; 501 int shm_buffers = kPoolSize - mailbox_buffers;
500 if (shm_buffers == mailbox_buffers) { 502 if (shm_buffers == mailbox_buffers) {
501 shm_buffers--; 503 shm_buffers--;
502 mailbox_buffers++; 504 mailbox_buffers++;
503 } 505 }
504 506
505 for (int i = 0; i < shm_buffers; ++i) { 507 for (int i = 0; i < shm_buffers; ++i) {
506 scoped_ptr<media::VideoCaptureDevice::Client::Buffer> buffer = 508 scoped_ptr<media::VideoCaptureDevice::Client::Buffer> buffer =
507 device_->ReserveOutputBuffer(media::PIXEL_FORMAT_I420, 509 device_->ReserveOutputBuffer(capture_resolution,
508 capture_resolution); 510 media::PIXEL_FORMAT_I420,
511 media::PIXEL_STORAGE_CPU);
509 ASSERT_TRUE(buffer.get()); 512 ASSERT_TRUE(buffer.get());
510 video_frame = 513 video_frame =
511 WrapI420Buffer(capture_resolution, static_cast<uint8*>(buffer->data())); 514 WrapI420Buffer(capture_resolution, static_cast<uint8*>(buffer->data()));
512 device_->OnIncomingCapturedVideoFrame(buffer.Pass(), video_frame, 515 device_->OnIncomingCapturedVideoFrame(buffer.Pass(), video_frame,
513 base::TimeTicks()); 516 base::TimeTicks());
514 } 517 }
515 std::vector<uint32> mailbox_syncpoints(mailbox_buffers); 518 std::vector<uint32> mailbox_syncpoints(mailbox_buffers);
516 std::vector<uint32> release_syncpoints(mailbox_buffers); 519 std::vector<uint32> release_syncpoints(mailbox_buffers);
517 for (int i = 0; i < mailbox_buffers; ++i) { 520 for (int i = 0; i < mailbox_buffers; ++i) {
518 scoped_ptr<media::VideoCaptureDevice::Client::Buffer> buffer = 521 scoped_ptr<media::VideoCaptureDevice::Client::Buffer> buffer =
519 device_->ReserveOutputBuffer(media::PIXEL_FORMAT_TEXTURE, 522 device_->ReserveOutputBuffer(capture_resolution,
520 capture_resolution); 523 media::PIXEL_FORMAT_ARGB,
524 media::PIXEL_STORAGE_TEXTURE);
521 ASSERT_TRUE(buffer.get()); 525 ASSERT_TRUE(buffer.get());
522 #if !defined(OS_ANDROID) 526 #if !defined(OS_ANDROID)
523 mailbox_syncpoints[i] = 527 mailbox_syncpoints[i] =
524 ImageTransportFactory::GetInstance()->GetGLHelper()->InsertSyncPoint(); 528 ImageTransportFactory::GetInstance()->GetGLHelper()->InsertSyncPoint();
525 #endif 529 #endif
526 device_->OnIncomingCapturedVideoFrame( 530 device_->OnIncomingCapturedVideoFrame(
527 buffer.Pass(), 531 buffer.Pass(),
528 WrapMailboxBuffer(gpu::MailboxHolder(gpu::Mailbox::Generate(), 0, 532 WrapMailboxBuffer(gpu::MailboxHolder(gpu::Mailbox::Generate(), 0,
529 mailbox_syncpoints[i]), 533 mailbox_syncpoints[i]),
530 base::Bind(&CacheSyncPoint, &release_syncpoints[i]), 534 base::Bind(&CacheSyncPoint, &release_syncpoints[i]),
531 capture_resolution), 535 capture_resolution),
532 base::TimeTicks()); 536 base::TimeTicks());
533 } 537 }
534 // ReserveOutputBuffers ought to fail now regardless of buffer format, because 538 // ReserveOutputBuffers ought to fail now regardless of buffer format, because
535 // the pool is depleted. 539 // the pool is depleted.
536 ASSERT_FALSE(device_->ReserveOutputBuffer(media::PIXEL_FORMAT_I420, 540 ASSERT_FALSE(
537 capture_resolution).get()); 541 device_->ReserveOutputBuffer(capture_resolution, media::PIXEL_FORMAT_I420,
538 ASSERT_FALSE(device_->ReserveOutputBuffer(media::PIXEL_FORMAT_TEXTURE, 542 media::PIXEL_STORAGE_CPU).get());
539 capture_resolution).get()); 543 ASSERT_FALSE(
544 device_->ReserveOutputBuffer(capture_resolution, media::PIXEL_FORMAT_ARGB,
545 media::PIXEL_STORAGE_TEXTURE).get());
540 EXPECT_CALL(*client_b_, 546 EXPECT_CALL(*client_b_,
541 DoI420BufferReady(client_b_route_2, capture_resolution)) 547 DoI420BufferReady(client_b_route_2, capture_resolution))
542 .Times(shm_buffers); 548 .Times(shm_buffers);
543 EXPECT_CALL(*client_b_, 549 EXPECT_CALL(*client_b_,
544 DoTextureBufferReady(client_b_route_2, capture_resolution)) 550 DoTextureBufferReady(client_b_route_2, capture_resolution))
545 .Times(mailbox_buffers); 551 .Times(mailbox_buffers);
546 #if !defined(OS_ANDROID) 552 #if !defined(OS_ANDROID)
547 EXPECT_CALL(*client_b_, DoBufferDestroyed(client_b_route_2)); 553 EXPECT_CALL(*client_b_, DoBufferDestroyed(client_b_route_2));
548 #endif 554 #endif
549 base::RunLoop().RunUntilIdle(); 555 base::RunLoop().RunUntilIdle();
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
584 590
585 // Second client connects after the error state. It also should get told of 591 // Second client connects after the error state. It also should get told of
586 // the error. 592 // the error.
587 EXPECT_CALL(*client_b_, DoError(route_id)).Times(1); 593 EXPECT_CALL(*client_b_, DoError(route_id)).Times(1);
588 controller_->AddClient( 594 controller_->AddClient(
589 route_id, client_b_.get(), base::kNullProcessHandle, 200, session_200); 595 route_id, client_b_.get(), base::kNullProcessHandle, 200, session_200);
590 base::RunLoop().RunUntilIdle(); 596 base::RunLoop().RunUntilIdle();
591 Mock::VerifyAndClearExpectations(client_b_.get()); 597 Mock::VerifyAndClearExpectations(client_b_.get());
592 598
593 scoped_ptr<media::VideoCaptureDevice::Client::Buffer> buffer( 599 scoped_ptr<media::VideoCaptureDevice::Client::Buffer> buffer(
594 device_->ReserveOutputBuffer(media::PIXEL_FORMAT_I420, 600 device_->ReserveOutputBuffer(capture_resolution, media::PIXEL_FORMAT_I420,
595 capture_resolution)); 601 media::PIXEL_STORAGE_CPU));
596 ASSERT_TRUE(buffer.get()); 602 ASSERT_TRUE(buffer.get());
597 scoped_refptr<media::VideoFrame> video_frame = 603 scoped_refptr<media::VideoFrame> video_frame =
598 WrapI420Buffer(capture_resolution, static_cast<uint8*>(buffer->data())); 604 WrapI420Buffer(capture_resolution, static_cast<uint8*>(buffer->data()));
599 device_->OnIncomingCapturedVideoFrame(buffer.Pass(), video_frame, 605 device_->OnIncomingCapturedVideoFrame(buffer.Pass(), video_frame,
600 base::TimeTicks()); 606 base::TimeTicks());
601 607
602 base::RunLoop().RunUntilIdle(); 608 base::RunLoop().RunUntilIdle();
603 } 609 }
604 610
605 // Exercises the OnError() codepath of VideoCaptureController, and tests the 611 // Exercises the OnError() codepath of VideoCaptureController, and tests the
(...skipping 14 matching lines...) Expand all
620 gfx::Size(10, 10), 25, media::PIXEL_FORMAT_ARGB); 626 gfx::Size(10, 10), 25, media::PIXEL_FORMAT_ARGB);
621 627
622 // Start the device. Then, before the first buffer, signal an error and 628 // Start the device. Then, before the first buffer, signal an error and
623 // deliver the buffer. The error should be propagated to clients; the buffer 629 // deliver the buffer. The error should be propagated to clients; the buffer
624 // should not be. 630 // should not be.
625 base::RunLoop().RunUntilIdle(); 631 base::RunLoop().RunUntilIdle();
626 Mock::VerifyAndClearExpectations(client_a_.get()); 632 Mock::VerifyAndClearExpectations(client_a_.get());
627 633
628 const gfx::Size dims(320, 240); 634 const gfx::Size dims(320, 240);
629 scoped_ptr<media::VideoCaptureDevice::Client::Buffer> buffer( 635 scoped_ptr<media::VideoCaptureDevice::Client::Buffer> buffer(
630 device_->ReserveOutputBuffer(media::PIXEL_FORMAT_I420, dims)); 636 device_->ReserveOutputBuffer(dims, media::PIXEL_FORMAT_I420,
637 media::PIXEL_STORAGE_CPU));
631 ASSERT_TRUE(buffer.get()); 638 ASSERT_TRUE(buffer.get());
632 639
633 scoped_refptr<media::VideoFrame> video_frame = 640 scoped_refptr<media::VideoFrame> video_frame =
634 WrapI420Buffer(dims, static_cast<uint8*>(buffer->data())); 641 WrapI420Buffer(dims, static_cast<uint8*>(buffer->data()));
635 device_->OnError("Test Error"); 642 device_->OnError("Test Error");
636 device_->OnIncomingCapturedVideoFrame(buffer.Pass(), video_frame, 643 device_->OnIncomingCapturedVideoFrame(buffer.Pass(), video_frame,
637 base::TimeTicks()); 644 base::TimeTicks());
638 645
639 EXPECT_CALL(*client_a_, DoError(route_id)).Times(1); 646 EXPECT_CALL(*client_a_, DoError(route_id)).Times(1);
640 base::RunLoop().RunUntilIdle(); 647 base::RunLoop().RunUntilIdle();
(...skipping 15 matching lines...) Expand all
656 // buffer. 663 // buffer.
657 const size_t kScratchpadSizeInBytes = 400; 664 const size_t kScratchpadSizeInBytes = 400;
658 unsigned char data[kScratchpadSizeInBytes]; 665 unsigned char data[kScratchpadSizeInBytes];
659 // Initialize memory to satisfy DrMemory tests. 666 // Initialize memory to satisfy DrMemory tests.
660 memset(data, 0, kScratchpadSizeInBytes); 667 memset(data, 0, kScratchpadSizeInBytes);
661 const gfx::Size capture_resolution(10, 10); 668 const gfx::Size capture_resolution(10, 10);
662 ASSERT_GE(kScratchpadSizeInBytes, capture_resolution.GetArea() * 4u) 669 ASSERT_GE(kScratchpadSizeInBytes, capture_resolution.GetArea() * 4u)
663 << "Scratchpad is too small to hold the largest pixel format (ARGB)."; 670 << "Scratchpad is too small to hold the largest pixel format (ARGB).";
664 671
665 const int kSessionId = 100; 672 const int kSessionId = 100;
666 // This Test skips PIXEL_FORMAT_TEXTURE and PIXEL_FORMAT_UNKNOWN. 673 for (int format = 0; format < media::PIXEL_FORMAT_MAX; ++format) {
667 for (int format = 0; format < media::PIXEL_FORMAT_TEXTURE; ++format) { 674 if (format == media::PIXEL_FORMAT_UNKNOWN)
675 continue;
668 media::VideoCaptureParams params; 676 media::VideoCaptureParams params;
669 params.requested_format = media::VideoCaptureFormat( 677 params.requested_format = media::VideoCaptureFormat(
670 capture_resolution, 30, media::VideoPixelFormat(format)); 678 capture_resolution, 30, media::VideoPixelFormat(format));
671 679
672 // Start with one client. 680 // Start with one client.
673 const VideoCaptureControllerID route_id(0x99); 681 const VideoCaptureControllerID route_id(0x99);
674 controller_->AddClient(route_id, 682 controller_->AddClient(route_id,
675 client_a_.get(), 683 client_a_.get(),
676 base::kNullProcessHandle, 684 base::kNullProcessHandle,
677 kSessionId, 685 kSessionId,
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
744 EXPECT_EQ(coded_size.width(), size_and_rotation.output_resolution.width()); 752 EXPECT_EQ(coded_size.width(), size_and_rotation.output_resolution.width());
745 EXPECT_EQ(coded_size.height(), 753 EXPECT_EQ(coded_size.height(),
746 size_and_rotation.output_resolution.height()); 754 size_and_rotation.output_resolution.height());
747 755
748 EXPECT_EQ(kSessionId, controller_->RemoveClient(route_id, client_a_.get())); 756 EXPECT_EQ(kSessionId, controller_->RemoveClient(route_id, client_a_.get()));
749 Mock::VerifyAndClearExpectations(client_a_.get()); 757 Mock::VerifyAndClearExpectations(client_a_.get());
750 } 758 }
751 } 759 }
752 760
753 } // namespace content 761 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698