| Index: media/video/capture/video_capture_device_unittest.cc
|
| diff --git a/media/video/capture/video_capture_device_unittest.cc b/media/video/capture/video_capture_device_unittest.cc
|
| index 3b470d111a7287d18ea9d9afeb42d562d3e00565..705167def5510dea41454b5fd6b46236a993d81a 100644
|
| --- a/media/video/capture/video_capture_device_unittest.cc
|
| +++ b/media/video/capture/video_capture_device_unittest.cc
|
| @@ -58,7 +58,6 @@ using ::testing::_;
|
| using ::testing::AnyNumber;
|
| using ::testing::Return;
|
| using ::testing::AtLeast;
|
| -using ::testing::SaveArg;
|
|
|
| namespace media {
|
|
|
| @@ -69,8 +68,7 @@ class MockClient : public media::VideoCaptureDevice::Client {
|
| const gfx::Size& dimensions));
|
| MOCK_METHOD0(OnErr, void());
|
|
|
| - explicit MockClient(
|
| - base::Callback<void(const VideoCaptureCapability&)> frame_cb)
|
| + explicit MockClient(base::Callback<void(const VideoCaptureFormat&)> frame_cb)
|
| : main_thread_(base::MessageLoopProxy::current()), frame_cb_(frame_cb) {}
|
|
|
| virtual void OnError() OVERRIDE {
|
| @@ -83,9 +81,9 @@ class MockClient : public media::VideoCaptureDevice::Client {
|
| int rotation,
|
| bool flip_vert,
|
| bool flip_horiz,
|
| - const VideoCaptureCapability& frame_info)
|
| + const VideoCaptureFormat& format)
|
| OVERRIDE {
|
| - main_thread_->PostTask(FROM_HERE, base::Bind(frame_cb_, frame_info));
|
| + main_thread_->PostTask(FROM_HERE, base::Bind(frame_cb_, format));
|
| }
|
|
|
| virtual void OnIncomingCapturedBuffer(const scoped_refptr<Buffer>& buffer,
|
| @@ -98,7 +96,7 @@ class MockClient : public media::VideoCaptureDevice::Client {
|
|
|
| private:
|
| scoped_refptr<base::MessageLoopProxy> main_thread_;
|
| - base::Callback<void(const VideoCaptureCapability&)> frame_cb_;
|
| + base::Callback<void(const VideoCaptureFormat&)> frame_cb_;
|
| };
|
|
|
| class VideoCaptureDeviceTest : public testing::Test {
|
| @@ -123,8 +121,8 @@ class VideoCaptureDeviceTest : public testing::Test {
|
| &VideoCaptureDeviceTest::OnFrameCaptured, base::Unretained(this))));
|
| }
|
|
|
| - void OnFrameCaptured(const VideoCaptureCapability& frame_info) {
|
| - last_frame_info_ = frame_info;
|
| + void OnFrameCaptured(const VideoCaptureFormat& format) {
|
| + last_format_ = format;
|
| run_loop_->QuitClosure().Run();
|
| }
|
|
|
| @@ -133,9 +131,7 @@ class VideoCaptureDeviceTest : public testing::Test {
|
| run_loop_->Run();
|
| }
|
|
|
| - const VideoCaptureCapability& last_frame_info() const {
|
| - return last_frame_info_;
|
| - }
|
| + const VideoCaptureFormat& last_format() const { return last_format_; }
|
|
|
| #if defined(OS_WIN)
|
| base::win::ScopedCOMInitializer initialize_com_;
|
| @@ -144,7 +140,7 @@ class VideoCaptureDeviceTest : public testing::Test {
|
| scoped_ptr<base::MessageLoop> loop_;
|
| scoped_ptr<base::RunLoop> run_loop_;
|
| scoped_ptr<MockClient> client_;
|
| - VideoCaptureCapability last_frame_info_;
|
| + VideoCaptureFormat last_format_;
|
| };
|
|
|
| TEST_F(VideoCaptureDeviceTest, OpenInvalidDevice) {
|
| @@ -176,17 +172,16 @@ TEST_F(VideoCaptureDeviceTest, CaptureVGA) {
|
| EXPECT_CALL(*client_, OnErr())
|
| .Times(0);
|
|
|
| - VideoCaptureCapability capture_format(640,
|
| - 480,
|
| - 30,
|
| - PIXEL_FORMAT_I420,
|
| - ConstantResolutionVideoCaptureDevice);
|
| - device->AllocateAndStart(capture_format,
|
| - client_.PassAs<Client>());
|
| + VideoCaptureParams capture_params;
|
| + capture_params.requested_format.frame_size.SetSize(640, 480);
|
| + capture_params.requested_format.frame_rate = 30;
|
| + capture_params.requested_format.pixel_format = PIXEL_FORMAT_I420;
|
| + capture_params.allow_resolution_change = false;
|
| + device->AllocateAndStart(capture_params, client_.PassAs<Client>());
|
| // Get captured video frames.
|
| WaitForCapturedFrame();
|
| - EXPECT_EQ(last_frame_info().width, 640);
|
| - EXPECT_EQ(last_frame_info().height, 480);
|
| + EXPECT_EQ(last_format().frame_size.width(), 640);
|
| + EXPECT_EQ(last_format().frame_size.height(), 480);
|
| device->StopAndDeAllocate();
|
| }
|
|
|
| @@ -204,13 +199,12 @@ TEST_F(VideoCaptureDeviceTest, Capture720p) {
|
| EXPECT_CALL(*client_, OnErr())
|
| .Times(0);
|
|
|
| - VideoCaptureCapability capture_format(1280,
|
| - 720,
|
| - 30,
|
| - PIXEL_FORMAT_I420,
|
| - ConstantResolutionVideoCaptureDevice);
|
| - device->AllocateAndStart(capture_format,
|
| - client_.PassAs<Client>());
|
| + VideoCaptureParams capture_params;
|
| + capture_params.requested_format.frame_size.SetSize(1280, 720);
|
| + capture_params.requested_format.frame_rate = 30;
|
| + capture_params.requested_format.pixel_format = PIXEL_FORMAT_I420;
|
| + capture_params.allow_resolution_change = false;
|
| + device->AllocateAndStart(capture_params, client_.PassAs<Client>());
|
| // Get captured video frames.
|
| WaitForCapturedFrame();
|
| device->StopAndDeAllocate();
|
| @@ -229,17 +223,16 @@ TEST_F(VideoCaptureDeviceTest, MAYBE_AllocateBadSize) {
|
| EXPECT_CALL(*client_, OnErr())
|
| .Times(0);
|
|
|
| - VideoCaptureCapability capture_format(637,
|
| - 472,
|
| - 35,
|
| - PIXEL_FORMAT_I420,
|
| - ConstantResolutionVideoCaptureDevice);
|
| - device->AllocateAndStart(capture_format,
|
| - client_.PassAs<Client>());
|
| + VideoCaptureParams capture_params;
|
| + capture_params.requested_format.frame_size.SetSize(637, 472);
|
| + capture_params.requested_format.frame_rate = 35;
|
| + capture_params.requested_format.pixel_format = PIXEL_FORMAT_I420;
|
| + capture_params.allow_resolution_change = false;
|
| + device->AllocateAndStart(capture_params, client_.PassAs<Client>());
|
| WaitForCapturedFrame();
|
| device->StopAndDeAllocate();
|
| - EXPECT_EQ(last_frame_info().width, 640);
|
| - EXPECT_EQ(last_frame_info().height, 480);
|
| + EXPECT_EQ(last_format().frame_size.width(), 640);
|
| + EXPECT_EQ(last_format().frame_size.height(), 480);
|
| }
|
|
|
| TEST_F(VideoCaptureDeviceTest, ReAllocateCamera) {
|
| @@ -260,36 +253,32 @@ TEST_F(VideoCaptureDeviceTest, ReAllocateCamera) {
|
| } else {
|
| resolution = gfx::Size(1280, 1024);
|
| }
|
| - VideoCaptureCapability requested_format(
|
| - resolution.width(),
|
| - resolution.height(),
|
| - 30,
|
| - PIXEL_FORMAT_I420,
|
| - ConstantResolutionVideoCaptureDevice);
|
| -
|
| - device->AllocateAndStart(requested_format, client_.PassAs<Client>());
|
| + VideoCaptureParams capture_params;
|
| + capture_params.requested_format.frame_size = resolution;
|
| + capture_params.requested_format.frame_rate = 30;
|
| + capture_params.requested_format.pixel_format = PIXEL_FORMAT_I420;
|
| + capture_params.allow_resolution_change = false;
|
| + device->AllocateAndStart(capture_params, client_.PassAs<Client>());
|
| device->StopAndDeAllocate();
|
| }
|
|
|
| // Finally, do a device start and wait for it to finish.
|
| - gfx::Size resolution;
|
| - VideoCaptureCapability requested_format(
|
| - 320,
|
| - 240,
|
| - 30,
|
| - PIXEL_FORMAT_I420,
|
| - ConstantResolutionVideoCaptureDevice);
|
| + VideoCaptureParams capture_params;
|
| + capture_params.requested_format.frame_size.SetSize(320, 240);
|
| + capture_params.requested_format.frame_rate = 30;
|
| + capture_params.requested_format.pixel_format = PIXEL_FORMAT_I420;
|
| + capture_params.allow_resolution_change = false;
|
|
|
| ResetWithNewClient();
|
| scoped_ptr<VideoCaptureDevice> device(
|
| VideoCaptureDevice::Create(names_.front()));
|
|
|
| - device->AllocateAndStart(requested_format, client_.PassAs<Client>());
|
| + device->AllocateAndStart(capture_params, client_.PassAs<Client>());
|
| WaitForCapturedFrame();
|
| device->StopAndDeAllocate();
|
| device.reset();
|
| - EXPECT_EQ(last_frame_info().width, 320);
|
| - EXPECT_EQ(last_frame_info().height, 240);
|
| + EXPECT_EQ(last_format().frame_size.width(), 320);
|
| + EXPECT_EQ(last_format().frame_size.height(), 240);
|
| }
|
|
|
| TEST_F(VideoCaptureDeviceTest, DeAllocateCameraWhileRunning) {
|
| @@ -305,17 +294,17 @@ TEST_F(VideoCaptureDeviceTest, DeAllocateCameraWhileRunning) {
|
| EXPECT_CALL(*client_, OnErr())
|
| .Times(0);
|
|
|
| - VideoCaptureCapability capture_format(640,
|
| - 480,
|
| - 30,
|
| - PIXEL_FORMAT_I420,
|
| - ConstantResolutionVideoCaptureDevice);
|
| - device->AllocateAndStart(capture_format, client_.PassAs<Client>());
|
| + VideoCaptureParams capture_params;
|
| + capture_params.requested_format.frame_size.SetSize(640, 480);
|
| + capture_params.requested_format.frame_rate = 30;
|
| + capture_params.requested_format.pixel_format = PIXEL_FORMAT_I420;
|
| + capture_params.allow_resolution_change = false;
|
| + device->AllocateAndStart(capture_params, client_.PassAs<Client>());
|
| // Get captured video frames.
|
| WaitForCapturedFrame();
|
| - EXPECT_EQ(last_frame_info().width, 640);
|
| - EXPECT_EQ(last_frame_info().height, 480);
|
| - EXPECT_EQ(last_frame_info().frame_rate, 30);
|
| + EXPECT_EQ(last_format().frame_size.width(), 640);
|
| + EXPECT_EQ(last_format().frame_size.height(), 480);
|
| + EXPECT_EQ(last_format().frame_rate, 30);
|
| device->StopAndDeAllocate();
|
| }
|
|
|
| @@ -333,17 +322,16 @@ TEST_F(VideoCaptureDeviceTest, FakeCapture) {
|
| EXPECT_CALL(*client_, OnErr())
|
| .Times(0);
|
|
|
| - VideoCaptureCapability capture_format(640,
|
| - 480,
|
| - 30,
|
| - PIXEL_FORMAT_I420,
|
| - ConstantResolutionVideoCaptureDevice);
|
| - device->AllocateAndStart(capture_format,
|
| - client_.PassAs<Client>());
|
| + VideoCaptureParams capture_params;
|
| + capture_params.requested_format.frame_size.SetSize(640, 480);
|
| + capture_params.requested_format.frame_rate = 30;
|
| + capture_params.requested_format.pixel_format = PIXEL_FORMAT_I420;
|
| + capture_params.allow_resolution_change = false;
|
| + device->AllocateAndStart(capture_params, client_.PassAs<Client>());
|
| WaitForCapturedFrame();
|
| - EXPECT_EQ(last_frame_info().width, 640);
|
| - EXPECT_EQ(last_frame_info().height, 480);
|
| - EXPECT_EQ(last_frame_info().frame_rate, 30);
|
| + EXPECT_EQ(last_format().frame_size.width(), 640);
|
| + EXPECT_EQ(last_format().frame_size.height(), 480);
|
| + EXPECT_EQ(last_format().frame_rate, 30);
|
| device->StopAndDeAllocate();
|
| }
|
|
|
| @@ -361,17 +349,17 @@ TEST_F(VideoCaptureDeviceTest, MAYBE_CaptureMjpeg) {
|
| EXPECT_CALL(*client_, OnErr())
|
| .Times(0);
|
|
|
| - VideoCaptureCapability capture_format(1280,
|
| - 720,
|
| - 30,
|
| - PIXEL_FORMAT_MJPEG,
|
| - ConstantResolutionVideoCaptureDevice);
|
| - device->AllocateAndStart(capture_format, client_.PassAs<Client>());
|
| + VideoCaptureParams capture_params;
|
| + capture_params.requested_format.frame_size.SetSize(1280, 720);
|
| + capture_params.requested_format.frame_rate = 30;
|
| + capture_params.requested_format.pixel_format = PIXEL_FORMAT_MJPEG;
|
| + capture_params.allow_resolution_change = false;
|
| + device->AllocateAndStart(capture_params, client_.PassAs<Client>());
|
| // Get captured video frames.
|
| WaitForCapturedFrame();
|
| // Verify we get MJPEG from the device. Not all devices can capture 1280x720
|
| // @ 30 fps, so we don't care about the exact resolution we get.
|
| - EXPECT_EQ(last_frame_info().color, PIXEL_FORMAT_MJPEG);
|
| + EXPECT_EQ(last_format().pixel_format, PIXEL_FORMAT_MJPEG);
|
| device->StopAndDeAllocate();
|
| }
|
|
|
| @@ -381,12 +369,12 @@ TEST_F(VideoCaptureDeviceTest, GetDeviceSupportedFormats) {
|
| DVLOG(1) << "No camera available. Exiting test.";
|
| return;
|
| }
|
| - VideoCaptureCapabilities capture_formats;
|
| + VideoCaptureCapabilities capture_capabilities;
|
| VideoCaptureDevice::Names::iterator names_iterator;
|
| for (names_iterator = names_.begin(); names_iterator != names_.end();
|
| ++names_iterator) {
|
| VideoCaptureDevice::GetDeviceSupportedFormats(*names_iterator,
|
| - &capture_formats);
|
| + &capture_capabilities);
|
| // Nothing to test here since we cannot forecast the hardware capabilities.
|
| }
|
| }
|
| @@ -395,11 +383,11 @@ TEST_F(VideoCaptureDeviceTest, FakeCaptureVariableResolution) {
|
| VideoCaptureDevice::Names names;
|
|
|
| FakeVideoCaptureDevice::GetDeviceNames(&names);
|
| - media::VideoCaptureCapability capture_format;
|
| - capture_format.width = 640;
|
| - capture_format.height = 480;
|
| - capture_format.frame_rate = 30;
|
| - capture_format.frame_size_type = media::VariableResolutionVideoCaptureDevice;
|
| + VideoCaptureParams capture_params;
|
| + capture_params.requested_format.frame_size.SetSize(640, 480);
|
| + capture_params.requested_format.frame_rate = 30;
|
| + capture_params.requested_format.pixel_format = PIXEL_FORMAT_I420;
|
| + capture_params.allow_resolution_change = true;
|
|
|
| ASSERT_GT(static_cast<int>(names.size()), 0);
|
|
|
| @@ -411,7 +399,7 @@ TEST_F(VideoCaptureDeviceTest, FakeCaptureVariableResolution) {
|
| .Times(0);
|
| int action_count = 200;
|
|
|
| - device->AllocateAndStart(capture_format, client_.PassAs<Client>());
|
| + device->AllocateAndStart(capture_params, client_.PassAs<Client>());
|
|
|
| // We set TimeWait to 200 action timeouts and this should be enough for at
|
| // least action_count/kFakeCaptureCapabilityChangePeriod calls.
|
| @@ -425,18 +413,20 @@ TEST_F(VideoCaptureDeviceTest, FakeGetDeviceSupportedFormats) {
|
| VideoCaptureDevice::Names names;
|
| FakeVideoCaptureDevice::GetDeviceNames(&names);
|
|
|
| - VideoCaptureCapabilities capture_formats;
|
| + VideoCaptureCapabilities capture_capabilities;
|
| VideoCaptureDevice::Names::iterator names_iterator;
|
|
|
| for (names_iterator = names.begin(); names_iterator != names.end();
|
| ++names_iterator) {
|
| FakeVideoCaptureDevice::GetDeviceSupportedFormats(*names_iterator,
|
| - &capture_formats);
|
| - EXPECT_GE(capture_formats.size(), 1u);
|
| - EXPECT_EQ(capture_formats[0].width, 640);
|
| - EXPECT_EQ(capture_formats[0].height, 480);
|
| - EXPECT_EQ(capture_formats[0].color, media::PIXEL_FORMAT_I420);
|
| - EXPECT_GE(capture_formats[0].frame_rate, 20);
|
| + &capture_capabilities);
|
| + EXPECT_GE(capture_capabilities.size(), 1u);
|
| + EXPECT_EQ(capture_capabilities[0].supported_format.frame_size.width(), 640);
|
| + EXPECT_EQ(capture_capabilities[0].supported_format.frame_size.height(),
|
| + 480);
|
| + EXPECT_EQ(capture_capabilities[0].supported_format.pixel_format,
|
| + media::PIXEL_FORMAT_I420);
|
| + EXPECT_GE(capture_capabilities[0].supported_format.frame_rate, 20);
|
| }
|
| }
|
|
|
|
|