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

Side by Side Diff: content/renderer/media/media_stream_video_source_unittest.cc

Issue 155853002: Chrome MediaStream VideoTrack implementation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed whitespaces... Created 6 years, 9 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 <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/strings/string_number_conversions.h" 8 #include "base/strings/string_number_conversions.h"
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "content/renderer/media/media_stream_video_source.h" 10 #include "content/renderer/media/media_stream_video_source.h"
11 #include "content/renderer/media/media_stream_video_track.h"
11 #include "content/renderer/media/mock_media_stream_dependency_factory.h" 12 #include "content/renderer/media/mock_media_stream_dependency_factory.h"
12 #include "content/renderer/media/mock_media_stream_video_source.h" 13 #include "content/renderer/media/mock_media_stream_video_source.h"
13 #include "media/base/video_frame.h" 14 #include "media/base/video_frame.h"
14 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
15 16
16 namespace content { 17 namespace content {
17 18
18 class ConstraintsFactory { 19 class ConstraintsFactory {
19 public: 20 public:
20 void AddMandatory(const std::string& key, int value) { 21 void AddMandatory(const std::string& key, int value) {
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 blink::WebMediaStreamSource::TypeVideo, 73 blink::WebMediaStreamSource::TypeVideo,
73 base::UTF8ToUTF16("dummy_source_name")); 74 base::UTF8ToUTF16("dummy_source_name"));
74 webkit_source_.setExtraData(mock_source_); 75 webkit_source_.setExtraData(mock_source_);
75 } 76 }
76 77
77 protected: 78 protected:
78 // Create a track that's associated with |webkit_source_|. 79 // Create a track that's associated with |webkit_source_|.
79 blink::WebMediaStreamTrack CreateTrack( 80 blink::WebMediaStreamTrack CreateTrack(
80 const std::string& id, 81 const std::string& id,
81 const blink::WebMediaConstraints& constraints) { 82 const blink::WebMediaConstraints& constraints) {
82 blink::WebMediaStreamTrack track; 83 bool enabled = true;
83 track.initialize(base::UTF8ToUTF16(id), webkit_source_); 84 MediaStreamDependencyFactory* factory = NULL;
84 85 return MediaStreamVideoTrack::CreateVideoTrack(
85 MediaStreamVideoSource* source = 86 mock_source_, constraints,
86 static_cast<MediaStreamVideoSource*>(track.source().extraData()); 87 base::Bind(
87 88 &MediaStreamVideoSourceTest::OnConstraintsApplied,
88 source->AddTrack(track, 89 base::Unretained(this)),
89 constraints, 90 enabled, factory);
90 base::Bind(
91 &MediaStreamVideoSourceTest::OnConstraintsApplied,
92 base::Unretained(this)));
93 return track;
94 } 91 }
95 92
96 blink::WebMediaStreamTrack CreateTrackAndStartSource( 93 blink::WebMediaStreamTrack CreateTrackAndStartSource(
97 const blink::WebMediaConstraints& constraints, 94 const blink::WebMediaConstraints& constraints,
98 int expected_width, 95 int expected_width,
99 int expected_height, 96 int expected_height,
100 int expected_frame_rate) { 97 int expected_frame_rate) {
101 blink::WebMediaStreamTrack track = CreateTrack("123", constraints); 98 blink::WebMediaStreamTrack track = CreateTrack("123", constraints);
102 99
103 mock_source_->CompleteGetSupportedFormats(); 100 mock_source_->CompleteGetSupportedFormats();
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
170 int number_of_failed_constraints_applied_; 167 int number_of_failed_constraints_applied_;
171 MockMediaStreamDependencyFactory factory_; 168 MockMediaStreamDependencyFactory factory_;
172 blink::WebMediaStreamSource webkit_source_; 169 blink::WebMediaStreamSource webkit_source_;
173 // |mock_source_| is owned by |webkit_source_|. 170 // |mock_source_| is owned by |webkit_source_|.
174 MockMediaStreamVideoSource* mock_source_; 171 MockMediaStreamVideoSource* mock_source_;
175 }; 172 };
176 173
177 TEST_F(MediaStreamVideoSourceTest, AddTrackAndStartSource) { 174 TEST_F(MediaStreamVideoSourceTest, AddTrackAndStartSource) {
178 blink::WebMediaConstraints constraints; 175 blink::WebMediaConstraints constraints;
179 constraints.initialize(); 176 constraints.initialize();
180 blink::WebMediaStreamTrack track = CreateTrack("123", constraints); 177 CreateTrack("123", constraints);
181 mock_source()->CompleteGetSupportedFormats(); 178 mock_source()->CompleteGetSupportedFormats();
182 mock_source()->StartMockedSource(); 179 mock_source()->StartMockedSource();
183 EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks()); 180 EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks());
184 } 181 }
185 182
186 TEST_F(MediaStreamVideoSourceTest, AddTwoTracksBeforeSourceStarts) { 183 TEST_F(MediaStreamVideoSourceTest, AddTwoTracksBeforeSourceStarts) {
187 blink::WebMediaConstraints constraints; 184 blink::WebMediaConstraints constraints;
188 constraints.initialize(); 185 constraints.initialize();
189 blink::WebMediaStreamTrack track1 = CreateTrack("123", constraints); 186 blink::WebMediaStreamTrack track1 = CreateTrack("123", constraints);
190 mock_source()->CompleteGetSupportedFormats(); 187 mock_source()->CompleteGetSupportedFormats();
191 blink::WebMediaStreamTrack track2 = CreateTrack("123", constraints); 188 blink::WebMediaStreamTrack track2 = CreateTrack("123", constraints);
192 EXPECT_EQ(0, NumberOfSuccessConstraintsCallbacks()); 189 EXPECT_EQ(0, NumberOfSuccessConstraintsCallbacks());
193 mock_source()->StartMockedSource(); 190 mock_source()->StartMockedSource();
194 EXPECT_EQ(2, NumberOfSuccessConstraintsCallbacks()); 191 EXPECT_EQ(2, NumberOfSuccessConstraintsCallbacks());
195 } 192 }
196 193
197 TEST_F(MediaStreamVideoSourceTest, AddTrackAfterSourceStarts) { 194 TEST_F(MediaStreamVideoSourceTest, AddTrackAfterSourceStarts) {
198 blink::WebMediaConstraints constraints; 195 blink::WebMediaConstraints constraints;
199 constraints.initialize(); 196 constraints.initialize();
200 blink::WebMediaStreamTrack track1 = CreateTrack("123", constraints); 197 CreateTrack("123", constraints);
201 mock_source()->CompleteGetSupportedFormats(); 198 mock_source()->CompleteGetSupportedFormats();
202 mock_source()->StartMockedSource(); 199 mock_source()->StartMockedSource();
203 EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks()); 200 EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks());
204 blink::WebMediaStreamTrack track2 = CreateTrack("123", constraints); 201 CreateTrack("123", constraints);
205 EXPECT_EQ(2, NumberOfSuccessConstraintsCallbacks()); 202 EXPECT_EQ(2, NumberOfSuccessConstraintsCallbacks());
206 } 203 }
207 204
208 TEST_F(MediaStreamVideoSourceTest, AddTrackAndFailToStartSource) { 205 TEST_F(MediaStreamVideoSourceTest, AddTrackAndFailToStartSource) {
209 blink::WebMediaConstraints constraints; 206 blink::WebMediaConstraints constraints;
210 constraints.initialize(); 207 constraints.initialize();
211 blink::WebMediaStreamTrack track = CreateTrack("123", constraints); 208 CreateTrack("123", constraints);
212 mock_source()->CompleteGetSupportedFormats(); 209 mock_source()->CompleteGetSupportedFormats();
213 mock_source()->FailToStartMockedSource(); 210 mock_source()->FailToStartMockedSource();
214 EXPECT_EQ(1, NumberOfFailedConstraintsCallbacks()); 211 EXPECT_EQ(1, NumberOfFailedConstraintsCallbacks());
215 } 212 }
216 213
217 TEST_F(MediaStreamVideoSourceTest, AddTwoTracksBeforeGetSupportedFormats) { 214 TEST_F(MediaStreamVideoSourceTest, AddTwoTracksBeforeGetSupportedFormats) {
218 blink::WebMediaConstraints constraints; 215 blink::WebMediaConstraints constraints;
219 constraints.initialize(); 216 constraints.initialize();
220 blink::WebMediaStreamTrack track1 = CreateTrack("123", constraints); 217 CreateTrack("123", constraints);
221 blink::WebMediaStreamTrack track2 = CreateTrack("123", constraints); 218 CreateTrack("123", constraints);
222 mock_source()->CompleteGetSupportedFormats(); 219 mock_source()->CompleteGetSupportedFormats();
223 mock_source()->StartMockedSource(); 220 mock_source()->StartMockedSource();
224 EXPECT_EQ(2, NumberOfSuccessConstraintsCallbacks()); 221 EXPECT_EQ(2, NumberOfSuccessConstraintsCallbacks());
225 } 222 }
226 223
227 // Test that the capture output is CIF if we set max constraints to CIF. 224 // Test that the capture output is CIF if we set max constraints to CIF.
228 // and the capture device support CIF. 225 // and the capture device support CIF.
229 TEST_F(MediaStreamVideoSourceTest, MandatoryConstraintCif5Fps) { 226 TEST_F(MediaStreamVideoSourceTest, MandatoryConstraintCif5Fps) {
230 ConstraintsFactory factory; 227 ConstraintsFactory factory;
231 factory.AddMandatory(MediaStreamVideoSource::kMaxWidth, 352); 228 factory.AddMandatory(MediaStreamVideoSource::kMaxWidth, 352);
(...skipping 23 matching lines...) Expand all
255 ConstraintsFactory factory; 252 ConstraintsFactory factory;
256 factory.AddMandatory(MediaStreamVideoSource::kMinWidth, 640); 253 factory.AddMandatory(MediaStreamVideoSource::kMinWidth, 640);
257 factory.AddMandatory(MediaStreamVideoSource::kMinHeight, 480); 254 factory.AddMandatory(MediaStreamVideoSource::kMinHeight, 480);
258 factory.AddMandatory(MediaStreamVideoSource::kMaxAspectRatio, 255 factory.AddMandatory(MediaStreamVideoSource::kMaxAspectRatio,
259 640.0 / 480); 256 640.0 / 480);
260 factory.AddOptional(MediaStreamVideoSource::kMinWidth, 1280); 257 factory.AddOptional(MediaStreamVideoSource::kMinWidth, 1280);
261 258
262 CreateTrackAndStartSource(factory.CreateConstraints(), 640, 480, 30); 259 CreateTrackAndStartSource(factory.CreateConstraints(), 640, 480, 30);
263 } 260 }
264 261
265 // Test that ApplyConstraints fail if the mandatory aspect ratio 262 // Test that AddTrack fail if the mandatory aspect ratio
266 // is set higher than supported. 263 // is set higher than supported.
267 TEST_F(MediaStreamVideoSourceTest, MandatoryAspectRatioTooHigh) { 264 TEST_F(MediaStreamVideoSourceTest, MandatoryAspectRatioTooHigh) {
268 ConstraintsFactory factory; 265 ConstraintsFactory factory;
269 factory.AddMandatory(MediaStreamVideoSource::kMinAspectRatio, 2); 266 factory.AddMandatory(MediaStreamVideoSource::kMinAspectRatio, 2);
270 CreateTrack("123", factory.CreateConstraints()); 267 CreateTrack("123", factory.CreateConstraints());
271 mock_source()->CompleteGetSupportedFormats(); 268 mock_source()->CompleteGetSupportedFormats();
272 EXPECT_EQ(1, NumberOfFailedConstraintsCallbacks()); 269 EXPECT_EQ(1, NumberOfFailedConstraintsCallbacks());
273 } 270 }
274 271
275 // Test that the source ignores an optional aspect ratio that is higher than 272 // Test that the source ignores an optional aspect ratio that is higher than
(...skipping 26 matching lines...) Expand all
302 constraints.initialize(); 299 constraints.initialize();
303 CreateTrackAndStartSource(constraints, 300 CreateTrackAndStartSource(constraints,
304 MediaStreamVideoSource::kDefaultWidth, 301 MediaStreamVideoSource::kDefaultWidth,
305 MediaStreamVideoSource::kDefaultHeight, 302 MediaStreamVideoSource::kDefaultHeight,
306 30); 303 30);
307 } 304 }
308 305
309 TEST_F(MediaStreamVideoSourceTest, InvalidMandatoryConstraint) { 306 TEST_F(MediaStreamVideoSourceTest, InvalidMandatoryConstraint) {
310 ConstraintsFactory factory; 307 ConstraintsFactory factory;
311 factory.AddMandatory("weird key", 640); 308 factory.AddMandatory("weird key", 640);
312
313 CreateTrack("123", factory.CreateConstraints()); 309 CreateTrack("123", factory.CreateConstraints());
314 mock_source()->CompleteGetSupportedFormats(); 310 mock_source()->CompleteGetSupportedFormats();
315 EXPECT_EQ(1, NumberOfFailedConstraintsCallbacks()); 311 EXPECT_EQ(1, NumberOfFailedConstraintsCallbacks());
316 } 312 }
317 313
318 // Test that the source ignores an unknown optional constraint. 314 // Test that the source ignores an unknown optional constraint.
319 TEST_F(MediaStreamVideoSourceTest, InvalidOptionalConstraint) { 315 TEST_F(MediaStreamVideoSourceTest, InvalidOptionalConstraint) {
320 ConstraintsFactory factory; 316 ConstraintsFactory factory;
321 factory.AddOptional("weird key", 640); 317 factory.AddOptional("weird key", 640);
322 318
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
415 TEST_F(MediaStreamVideoSourceTest, DeliverSmallerSizeWhenTooLargeMax) { 411 TEST_F(MediaStreamVideoSourceTest, DeliverSmallerSizeWhenTooLargeMax) {
416 ConstraintsFactory factory; 412 ConstraintsFactory factory;
417 factory.AddOptional(MediaStreamVideoSource::kMaxWidth, 1920); 413 factory.AddOptional(MediaStreamVideoSource::kMaxWidth, 1920);
418 factory.AddOptional(MediaStreamVideoSource::kMaxHeight, 1080); 414 factory.AddOptional(MediaStreamVideoSource::kMaxHeight, 1080);
419 factory.AddOptional(MediaStreamVideoSource::kMinWidth, 1280); 415 factory.AddOptional(MediaStreamVideoSource::kMinWidth, 1280);
420 factory.AddOptional(MediaStreamVideoSource::kMinHeight, 720); 416 factory.AddOptional(MediaStreamVideoSource::kMinHeight, 720);
421 TestSourceCropFrame(1280, 720, factory.CreateConstraints(), 1280, 720); 417 TestSourceCropFrame(1280, 720, factory.CreateConstraints(), 1280, 720);
422 } 418 }
423 419
424 } // namespace content 420 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/media_stream_video_source.cc ('k') | content/renderer/media/media_stream_video_track.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698