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