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

Side by Side Diff: media/video/capture/fake_video_capture_device_unittest.cc

Issue 541163002: Clarify resolution change behaviors of video capture devices (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed build Created 6 years, 3 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/memory/scoped_ptr.h" 6 #include "base/memory/scoped_ptr.h"
7 #include "base/run_loop.h" 7 #include "base/run_loop.h"
8 #include "base/test/test_timeouts.h" 8 #include "base/test/test_timeouts.h"
9 #include "base/threading/thread.h" 9 #include "base/threading/thread.h"
10 #include "media/video/capture/fake_video_capture_device.h" 10 #include "media/video/capture/fake_video_capture_device.h"
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 scoped_ptr<VideoCaptureDevice> device( 127 scoped_ptr<VideoCaptureDevice> device(
128 video_capture_device_factory_->Create(names->front())); 128 video_capture_device_factory_->Create(names->front()));
129 ASSERT_TRUE(device); 129 ASSERT_TRUE(device);
130 130
131 EXPECT_CALL(*client_, OnErr()).Times(0); 131 EXPECT_CALL(*client_, OnErr()).Times(0);
132 132
133 VideoCaptureParams capture_params; 133 VideoCaptureParams capture_params;
134 capture_params.requested_format.frame_size.SetSize(640, 480); 134 capture_params.requested_format.frame_size.SetSize(640, 480);
135 capture_params.requested_format.frame_rate = 30; 135 capture_params.requested_format.frame_rate = 30;
136 capture_params.requested_format.pixel_format = PIXEL_FORMAT_I420; 136 capture_params.requested_format.pixel_format = PIXEL_FORMAT_I420;
137 capture_params.allow_resolution_change = false;
138 device->AllocateAndStart(capture_params, client_.PassAs<Client>()); 137 device->AllocateAndStart(capture_params, client_.PassAs<Client>());
139 WaitForCapturedFrame(); 138 WaitForCapturedFrame();
140 EXPECT_EQ(last_format().frame_size.width(), 640); 139 EXPECT_EQ(last_format().frame_size.width(), 640);
141 EXPECT_EQ(last_format().frame_size.height(), 480); 140 EXPECT_EQ(last_format().frame_size.height(), 480);
142 EXPECT_EQ(last_format().frame_rate, 30); 141 EXPECT_EQ(last_format().frame_rate, 30);
143 device->StopAndDeAllocate(); 142 device->StopAndDeAllocate();
144 } 143 }
145 144
146 TEST_F(FakeVideoCaptureDeviceTest, GetDeviceSupportedFormats) { 145 TEST_F(FakeVideoCaptureDeviceTest, GetDeviceSupportedFormats) {
147 scoped_ptr<VideoCaptureDevice::Names> names(EnumerateDevices()); 146 scoped_ptr<VideoCaptureDevice::Names> names(EnumerateDevices());
(...skipping 21 matching lines...) Expand all
169 } 168 }
170 } 169 }
171 170
172 TEST_F(FakeVideoCaptureDeviceTest, CaptureVariableResolution) { 171 TEST_F(FakeVideoCaptureDeviceTest, CaptureVariableResolution) {
173 scoped_ptr<VideoCaptureDevice::Names> names(EnumerateDevices()); 172 scoped_ptr<VideoCaptureDevice::Names> names(EnumerateDevices());
174 173
175 VideoCaptureParams capture_params; 174 VideoCaptureParams capture_params;
176 capture_params.requested_format.frame_size.SetSize(640, 480); 175 capture_params.requested_format.frame_size.SetSize(640, 480);
177 capture_params.requested_format.frame_rate = 30; 176 capture_params.requested_format.frame_rate = 30;
178 capture_params.requested_format.pixel_format = PIXEL_FORMAT_I420; 177 capture_params.requested_format.pixel_format = PIXEL_FORMAT_I420;
179 capture_params.allow_resolution_change = true; 178 capture_params.resolution_change_policy =
179 RESOLUTION_POLICY_DYNAMIC_WITHIN_LIMIT;
180 180
181 ASSERT_GT(static_cast<int>(names->size()), 0); 181 ASSERT_GT(static_cast<int>(names->size()), 0);
182 182
183 scoped_ptr<VideoCaptureDevice> device( 183 scoped_ptr<VideoCaptureDevice> device(
184 video_capture_device_factory_->Create(names->front())); 184 video_capture_device_factory_->Create(names->front()));
185 ASSERT_TRUE(device); 185 ASSERT_TRUE(device);
186 186
187 // Configure the FakeVideoCaptureDevice to use all its formats as roster. 187 // Configure the FakeVideoCaptureDevice to use all its formats as roster.
188 VideoCaptureFormats formats; 188 VideoCaptureFormats formats;
189 video_capture_device_factory_->GetDeviceSupportedFormats(names->front(), 189 video_capture_device_factory_->GetDeviceSupportedFormats(names->front(),
190 &formats); 190 &formats);
191 static_cast<FakeVideoCaptureDevice*>(device.get())-> 191 static_cast<FakeVideoCaptureDevice*>(device.get())->
192 PopulateVariableFormatsRoster(formats); 192 PopulateVariableFormatsRoster(formats);
193 193
194 EXPECT_CALL(*client_, OnErr()) 194 EXPECT_CALL(*client_, OnErr())
195 .Times(0); 195 .Times(0);
196 int action_count = 200; 196 int action_count = 200;
197 197
198 device->AllocateAndStart(capture_params, client_.PassAs<Client>()); 198 device->AllocateAndStart(capture_params, client_.PassAs<Client>());
199 199
200 // We set TimeWait to 200 action timeouts and this should be enough for at 200 // We set TimeWait to 200 action timeouts and this should be enough for at
201 // least action_count/kFakeCaptureCapabilityChangePeriod calls. 201 // least action_count/kFakeCaptureCapabilityChangePeriod calls.
202 for (int i = 0; i < action_count; ++i) { 202 for (int i = 0; i < action_count; ++i) {
203 WaitForCapturedFrame(); 203 WaitForCapturedFrame();
204 } 204 }
205 device->StopAndDeAllocate(); 205 device->StopAndDeAllocate();
206 } 206 }
207 207
208 }; // namespace media 208 }; // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698