OLD | NEW |
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 "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/bind_helpers.h" | 6 #include "base/bind_helpers.h" |
7 #include "base/memory/ref_counted.h" | 7 #include "base/memory/ref_counted.h" |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/message_loop/message_loop_proxy.h" | 9 #include "base/message_loop/message_loop_proxy.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 | 60 |
61 namespace media { | 61 namespace media { |
62 | 62 |
63 namespace { | 63 namespace { |
64 | 64 |
65 class MockClient : public VideoCaptureDevice::Client { | 65 class MockClient : public VideoCaptureDevice::Client { |
66 public: | 66 public: |
67 MOCK_METHOD2(ReserveOutputBuffer, | 67 MOCK_METHOD2(ReserveOutputBuffer, |
68 scoped_refptr<Buffer>(VideoFrame::Format format, | 68 scoped_refptr<Buffer>(VideoFrame::Format format, |
69 const gfx::Size& dimensions)); | 69 const gfx::Size& dimensions)); |
| 70 MOCK_METHOD9(OnIncomingCapturedYuvData, |
| 71 void (const uint8* y_data, |
| 72 const uint8* u_data, |
| 73 const uint8* v_data, |
| 74 size_t y_stride, |
| 75 size_t u_stride, |
| 76 size_t v_stride, |
| 77 const VideoCaptureFormat& frame_format, |
| 78 int clockwise_rotation, |
| 79 const base::TimeTicks& timestamp)); |
70 MOCK_METHOD3(OnIncomingCapturedVideoFrame, | 80 MOCK_METHOD3(OnIncomingCapturedVideoFrame, |
71 void(const scoped_refptr<Buffer>& buffer, | 81 void(const scoped_refptr<Buffer>& buffer, |
72 const scoped_refptr<VideoFrame>& frame, | 82 const scoped_refptr<VideoFrame>& frame, |
73 const base::TimeTicks& timestamp)); | 83 const base::TimeTicks& timestamp)); |
74 MOCK_METHOD1(OnError, void(const std::string& reason)); | 84 MOCK_METHOD1(OnError, void(const std::string& reason)); |
75 | 85 |
76 explicit MockClient(base::Callback<void(const VideoCaptureFormat&)> frame_cb) | 86 explicit MockClient(base::Callback<void(const VideoCaptureFormat&)> frame_cb) |
77 : main_thread_(base::MessageLoopProxy::current()), frame_cb_(frame_cb) {} | 87 : main_thread_(base::MessageLoopProxy::current()), frame_cb_(frame_cb) {} |
78 | 88 |
79 void OnIncomingCapturedData(const uint8* data, | 89 void OnIncomingCapturedData(const uint8* data, |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 video_capture_device_factory_(VideoCaptureDeviceFactory::CreateFactory( | 130 video_capture_device_factory_(VideoCaptureDeviceFactory::CreateFactory( |
121 base::MessageLoopProxy::current())) { | 131 base::MessageLoopProxy::current())) { |
122 device_enumeration_listener_ = new DeviceEnumerationListener(); | 132 device_enumeration_listener_ = new DeviceEnumerationListener(); |
123 } | 133 } |
124 | 134 |
125 void SetUp() override { | 135 void SetUp() override { |
126 #if defined(OS_ANDROID) | 136 #if defined(OS_ANDROID) |
127 VideoCaptureDeviceAndroid::RegisterVideoCaptureDevice( | 137 VideoCaptureDeviceAndroid::RegisterVideoCaptureDevice( |
128 base::android::AttachCurrentThread()); | 138 base::android::AttachCurrentThread()); |
129 #endif | 139 #endif |
| 140 EXPECT_CALL(*client_, OnIncomingCapturedYuvData(_,_,_,_,_,_,_,_,_)) |
| 141 .Times(0); |
130 EXPECT_CALL(*client_, ReserveOutputBuffer(_,_)).Times(0); | 142 EXPECT_CALL(*client_, ReserveOutputBuffer(_,_)).Times(0); |
131 EXPECT_CALL(*client_, OnIncomingCapturedVideoFrame(_,_,_)).Times(0); | 143 EXPECT_CALL(*client_, OnIncomingCapturedVideoFrame(_,_,_)).Times(0); |
132 } | 144 } |
133 | 145 |
134 void ResetWithNewClient() { | 146 void ResetWithNewClient() { |
135 client_.reset(new MockClient(base::Bind( | 147 client_.reset(new MockClient(base::Bind( |
136 &VideoCaptureDeviceTest::OnFrameCaptured, base::Unretained(this)))); | 148 &VideoCaptureDeviceTest::OnFrameCaptured, base::Unretained(this)))); |
137 } | 149 } |
138 | 150 |
139 void OnFrameCaptured(const VideoCaptureFormat& format) { | 151 void OnFrameCaptured(const VideoCaptureFormat& format) { |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 video_capture_device_factory_->GetDeviceSupportedFormats( | 184 video_capture_device_factory_->GetDeviceSupportedFormats( |
173 names_iterator, | 185 names_iterator, |
174 &supported_formats); | 186 &supported_formats); |
175 for (const auto& formats_iterator : supported_formats) { | 187 for (const auto& formats_iterator : supported_formats) { |
176 if (formats_iterator.pixel_format == pixel_format) { | 188 if (formats_iterator.pixel_format == pixel_format) { |
177 return scoped_ptr<VideoCaptureDevice::Name>( | 189 return scoped_ptr<VideoCaptureDevice::Name>( |
178 new VideoCaptureDevice::Name(names_iterator)); | 190 new VideoCaptureDevice::Name(names_iterator)); |
179 } | 191 } |
180 } | 192 } |
181 } | 193 } |
182 DVLOG(1) << "No camera can capture the format: " << pixel_format; | 194 DVLOG_IF(1, pixel_format != PIXEL_FORMAT_MAX) << "No camera can capture the" |
| 195 << " format: " << VideoCaptureFormat::PixelFormatToString(pixel_format); |
183 return scoped_ptr<VideoCaptureDevice::Name>(); | 196 return scoped_ptr<VideoCaptureDevice::Name>(); |
184 } | 197 } |
185 | 198 |
186 #if defined(OS_WIN) | 199 #if defined(OS_WIN) |
187 base::win::ScopedCOMInitializer initialize_com_; | 200 base::win::ScopedCOMInitializer initialize_com_; |
188 #endif | 201 #endif |
189 scoped_ptr<VideoCaptureDevice::Names> names_; | 202 scoped_ptr<VideoCaptureDevice::Names> names_; |
190 scoped_ptr<base::MessageLoop> loop_; | 203 scoped_ptr<base::MessageLoop> loop_; |
191 scoped_ptr<base::RunLoop> run_loop_; | 204 scoped_ptr<base::RunLoop> run_loop_; |
192 scoped_ptr<MockClient> client_; | 205 scoped_ptr<MockClient> client_; |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
428 // Use PIXEL_FORMAT_MAX to iterate all device names for testing | 441 // Use PIXEL_FORMAT_MAX to iterate all device names for testing |
429 // GetDeviceSupportedFormats(). | 442 // GetDeviceSupportedFormats(). |
430 scoped_ptr<VideoCaptureDevice::Name> name = | 443 scoped_ptr<VideoCaptureDevice::Name> name = |
431 GetFirstDeviceNameSupportingPixelFormat(PIXEL_FORMAT_MAX); | 444 GetFirstDeviceNameSupportingPixelFormat(PIXEL_FORMAT_MAX); |
432 // Verify no camera returned for PIXEL_FORMAT_MAX. Nothing else to test here | 445 // Verify no camera returned for PIXEL_FORMAT_MAX. Nothing else to test here |
433 // since we cannot forecast the hardware capabilities. | 446 // since we cannot forecast the hardware capabilities. |
434 ASSERT_FALSE(name); | 447 ASSERT_FALSE(name); |
435 } | 448 } |
436 | 449 |
437 }; // namespace media | 450 }; // namespace media |
OLD | NEW |