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); |
} |
} |