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

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: More cleanup. 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 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 blink::WebMediaStreamSource::TypeVideo, 75 blink::WebMediaStreamSource::TypeVideo,
75 base::UTF8ToUTF16("dummy_source_name")); 76 base::UTF8ToUTF16("dummy_source_name"));
76 webkit_source_.setExtraData(mock_source_); 77 webkit_source_.setExtraData(mock_source_);
77 } 78 }
78 79
79 protected: 80 protected:
80 // Create a track that's associated with |webkit_source_|. 81 // Create a track that's associated with |webkit_source_|.
81 blink::WebMediaStreamTrack CreateTrack( 82 blink::WebMediaStreamTrack CreateTrack(
82 const std::string& id, 83 const std::string& id,
83 const blink::WebMediaConstraints& constraints) { 84 const blink::WebMediaConstraints& constraints) {
85
84 blink::WebMediaStreamTrack track; 86 blink::WebMediaStreamTrack track;
85 track.initialize(base::UTF8ToUTF16(id), webkit_source_); 87 track.initialize(base::UTF8ToUTF16(id), webkit_source_);
88 track.setExtraData(new MediaStreamVideoTrack(mock_source_, NULL));
86 89
87 MediaStreamVideoSource* source = 90 mock_source_->AddTrack(
88 static_cast<MediaStreamVideoSource*>(track.source().extraData()); 91 track,
89 92 constraints,
90 source->AddTrack(track, 93 base::Bind(
91 constraints, 94 &MediaStreamVideoSourceTest::OnConstraintsApplied,
92 base::Bind( 95 base::Unretained(this)));
93 &MediaStreamVideoSourceTest::OnConstraintsApplied,
94 base::Unretained(this)));
95 return track; 96 return track;
96 } 97 }
97 98
98 blink::WebMediaStreamTrack CreateTrackAndStartSource( 99 blink::WebMediaStreamTrack CreateTrackAndStartSource(
99 const blink::WebMediaConstraints& constraints, 100 const blink::WebMediaConstraints& constraints,
100 int expected_width, 101 int expected_width,
101 int expected_height, 102 int expected_height,
102 int expected_frame_rate) { 103 int expected_frame_rate) {
103 blink::WebMediaStreamTrack track = CreateTrack("123", constraints); 104 blink::WebMediaStreamTrack track = CreateTrack("123", constraints);
104 105
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 int number_of_failed_constraints_applied_; 145 int number_of_failed_constraints_applied_;
145 MockMediaStreamDependencyFactory factory_; 146 MockMediaStreamDependencyFactory factory_;
146 blink::WebMediaStreamSource webkit_source_; 147 blink::WebMediaStreamSource webkit_source_;
147 // |mock_source_| is owned by |webkit_source_|. 148 // |mock_source_| is owned by |webkit_source_|.
148 MockMediaStreamVideoSource* mock_source_; 149 MockMediaStreamVideoSource* mock_source_;
149 }; 150 };
150 151
151 TEST_F(MediaStreamVideoSourceTest, AddTrackAndStartSource) { 152 TEST_F(MediaStreamVideoSourceTest, AddTrackAndStartSource) {
152 blink::WebMediaConstraints constraints; 153 blink::WebMediaConstraints constraints;
153 constraints.initialize(); 154 constraints.initialize();
154 blink::WebMediaStreamTrack track = CreateTrack("123", constraints); 155 CreateTrack("123", constraints);
155 mock_source()->CompleteGetSupportedFormats(); 156 mock_source()->CompleteGetSupportedFormats();
156 mock_source()->StartMockedSource(); 157 mock_source()->StartMockedSource();
157 EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks()); 158 EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks());
158 } 159 }
159 160
160 TEST_F(MediaStreamVideoSourceTest, AddTwoTracksBeforeSourceStarts) { 161 TEST_F(MediaStreamVideoSourceTest, AddTwoTracksBeforeSourceStarts) {
161 blink::WebMediaConstraints constraints; 162 blink::WebMediaConstraints constraints;
162 constraints.initialize(); 163 constraints.initialize();
163 blink::WebMediaStreamTrack track1 = CreateTrack("123", constraints); 164 blink::WebMediaStreamTrack track1 = CreateTrack("123", constraints);
164 mock_source()->CompleteGetSupportedFormats(); 165 mock_source()->CompleteGetSupportedFormats();
165 blink::WebMediaStreamTrack track2 = CreateTrack("123", constraints); 166 blink::WebMediaStreamTrack track2 = CreateTrack("123", constraints);
166 EXPECT_EQ(0, NumberOfSuccessConstraintsCallbacks()); 167 EXPECT_EQ(0, NumberOfSuccessConstraintsCallbacks());
167 mock_source()->StartMockedSource(); 168 mock_source()->StartMockedSource();
168 EXPECT_EQ(2, NumberOfSuccessConstraintsCallbacks()); 169 EXPECT_EQ(2, NumberOfSuccessConstraintsCallbacks());
169 } 170 }
170 171
171 TEST_F(MediaStreamVideoSourceTest, AddTrackAfterSourceStarts) { 172 TEST_F(MediaStreamVideoSourceTest, AddTrackAfterSourceStarts) {
172 blink::WebMediaConstraints constraints; 173 blink::WebMediaConstraints constraints;
173 constraints.initialize(); 174 constraints.initialize();
174 blink::WebMediaStreamTrack track1 = CreateTrack("123", constraints); 175 CreateTrack("123", constraints);
175 mock_source()->CompleteGetSupportedFormats(); 176 mock_source()->CompleteGetSupportedFormats();
176 mock_source()->StartMockedSource(); 177 mock_source()->StartMockedSource();
177 EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks()); 178 EXPECT_EQ(1, NumberOfSuccessConstraintsCallbacks());
178 blink::WebMediaStreamTrack track2 = CreateTrack("123", constraints); 179 CreateTrack("123", constraints);
179 EXPECT_EQ(2, NumberOfSuccessConstraintsCallbacks()); 180 EXPECT_EQ(2, NumberOfSuccessConstraintsCallbacks());
180 } 181 }
181 182
182 TEST_F(MediaStreamVideoSourceTest, AddTrackAndFailToStartSource) { 183 TEST_F(MediaStreamVideoSourceTest, AddTrackAndFailToStartSource) {
183 blink::WebMediaConstraints constraints; 184 blink::WebMediaConstraints constraints;
184 constraints.initialize(); 185 constraints.initialize();
185 blink::WebMediaStreamTrack track = CreateTrack("123", constraints); 186 CreateTrack("123", constraints);
186 mock_source()->CompleteGetSupportedFormats(); 187 mock_source()->CompleteGetSupportedFormats();
187 mock_source()->FailToStartMockedSource(); 188 mock_source()->FailToStartMockedSource();
188 EXPECT_EQ(1, NumberOfFailedConstraintsCallbacks()); 189 EXPECT_EQ(1, NumberOfFailedConstraintsCallbacks());
189 } 190 }
190 191
191 TEST_F(MediaStreamVideoSourceTest, AddTwoTracksBeforeGetSupportedFormats) { 192 TEST_F(MediaStreamVideoSourceTest, AddTwoTracksBeforeGetSupportedFormats) {
192 blink::WebMediaConstraints constraints; 193 blink::WebMediaConstraints constraints;
193 constraints.initialize(); 194 constraints.initialize();
194 blink::WebMediaStreamTrack track1 = CreateTrack("123", constraints); 195 CreateTrack("123", constraints);
195 blink::WebMediaStreamTrack track2 = CreateTrack("123", constraints); 196 CreateTrack("123", constraints);
196 mock_source()->CompleteGetSupportedFormats(); 197 mock_source()->CompleteGetSupportedFormats();
197 mock_source()->StartMockedSource(); 198 mock_source()->StartMockedSource();
198 EXPECT_EQ(2, NumberOfSuccessConstraintsCallbacks()); 199 EXPECT_EQ(2, NumberOfSuccessConstraintsCallbacks());
199 } 200 }
200 201
201 // Test that the capture output is CIF if we set max constraints to CIF. 202 // Test that the capture output is CIF if we set max constraints to CIF.
202 // and the capture device support CIF. 203 // and the capture device support CIF.
203 TEST_F(MediaStreamVideoSourceTest, MandatoryConstraintCif5Fps) { 204 TEST_F(MediaStreamVideoSourceTest, MandatoryConstraintCif5Fps) {
204 ConstraintsFactory factory; 205 ConstraintsFactory factory;
205 factory.AddMandatory(MediaStreamVideoSource::kMaxWidth, 352); 206 factory.AddMandatory(MediaStreamVideoSource::kMaxWidth, 352);
(...skipping 23 matching lines...) Expand all
229 ConstraintsFactory factory; 230 ConstraintsFactory factory;
230 factory.AddMandatory(MediaStreamVideoSource::kMinWidth, 640); 231 factory.AddMandatory(MediaStreamVideoSource::kMinWidth, 640);
231 factory.AddMandatory(MediaStreamVideoSource::kMinHeight, 480); 232 factory.AddMandatory(MediaStreamVideoSource::kMinHeight, 480);
232 factory.AddMandatory(MediaStreamVideoSource::kMaxAspectRatio, 233 factory.AddMandatory(MediaStreamVideoSource::kMaxAspectRatio,
233 640.0 / 480); 234 640.0 / 480);
234 factory.AddOptional(MediaStreamVideoSource::kMinWidth, 1280); 235 factory.AddOptional(MediaStreamVideoSource::kMinWidth, 1280);
235 236
236 CreateTrackAndStartSource(factory.CreateConstraints(), 640, 480, 30); 237 CreateTrackAndStartSource(factory.CreateConstraints(), 640, 480, 30);
237 } 238 }
238 239
239 // Test that ApplyConstraints fail if the mandatory aspect ratio 240 // Test that AddTrack fail if the mandatory aspect ratio
240 // is set higher than supported. 241 // is set higher than supported.
241 TEST_F(MediaStreamVideoSourceTest, MandatoryAspectRatioTooHigh) { 242 TEST_F(MediaStreamVideoSourceTest, MandatoryAspectRatioTooHigh) {
242 ConstraintsFactory factory; 243 ConstraintsFactory factory;
243 factory.AddMandatory(MediaStreamVideoSource::kMinAspectRatio, 2); 244 factory.AddMandatory(MediaStreamVideoSource::kMinAspectRatio, 2);
244 CreateTrack("123", factory.CreateConstraints()); 245 CreateTrack("123", factory.CreateConstraints());
245 mock_source()->CompleteGetSupportedFormats(); 246 mock_source()->CompleteGetSupportedFormats();
246 EXPECT_EQ(1, NumberOfFailedConstraintsCallbacks()); 247 EXPECT_EQ(1, NumberOfFailedConstraintsCallbacks());
247 } 248 }
248 249
249 // Test that the source ignores an optional aspect ratio that is higher than 250 // Test that the source ignores an optional aspect ratio that is higher than
(...skipping 26 matching lines...) Expand all
276 constraints.initialize(); 277 constraints.initialize();
277 CreateTrackAndStartSource(constraints, 278 CreateTrackAndStartSource(constraints,
278 MediaStreamVideoSource::kDefaultWidth, 279 MediaStreamVideoSource::kDefaultWidth,
279 MediaStreamVideoSource::kDefaultHeight, 280 MediaStreamVideoSource::kDefaultHeight,
280 30); 281 30);
281 } 282 }
282 283
283 TEST_F(MediaStreamVideoSourceTest, InvalidMandatoryConstraint) { 284 TEST_F(MediaStreamVideoSourceTest, InvalidMandatoryConstraint) {
284 ConstraintsFactory factory; 285 ConstraintsFactory factory;
285 factory.AddMandatory("weird key", 640); 286 factory.AddMandatory("weird key", 640);
286
287 CreateTrack("123", factory.CreateConstraints()); 287 CreateTrack("123", factory.CreateConstraints());
288 mock_source()->CompleteGetSupportedFormats(); 288 mock_source()->CompleteGetSupportedFormats();
289 EXPECT_EQ(1, NumberOfFailedConstraintsCallbacks()); 289 EXPECT_EQ(1, NumberOfFailedConstraintsCallbacks());
290 } 290 }
291 291
292 // Test that the source ignores an unknown optional constraint. 292 // Test that the source ignores an unknown optional constraint.
293 TEST_F(MediaStreamVideoSourceTest, InvalidOptionalConstraint) { 293 TEST_F(MediaStreamVideoSourceTest, InvalidOptionalConstraint) {
294 ConstraintsFactory factory; 294 ConstraintsFactory factory;
295 factory.AddOptional("weird key", 640); 295 factory.AddOptional("weird key", 640);
296 296
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 mock_source()->DeliverVideoFrame(frame); 347 mock_source()->DeliverVideoFrame(frame);
348 EXPECT_EQ(1, adapter->GetFrameNum()); 348 EXPECT_EQ(1, adapter->GetFrameNum());
349 EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth, 349 EXPECT_EQ(MediaStreamVideoSource::kDefaultWidth,
350 adapter->GetLastFrameWidth()); 350 adapter->GetLastFrameWidth());
351 EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight, 351 EXPECT_EQ(MediaStreamVideoSource::kDefaultHeight,
352 adapter->GetLastFrameHeight()); 352 adapter->GetLastFrameHeight());
353 } 353 }
354 354
355 355
356 } // namespace content 356 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698