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

Side by Side Diff: third_party/WebKit/Source/platform/exported/WebMediaConstraints.cpp

Issue 1617243005: Apply new-style constraints to video_source. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add <vector> include Created 4 years, 10 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
179 return false; 179 return false;
180 } 180 }
181 return true; 181 return true;
182 } 182 }
183 183
184 bool LongConstraint::isEmpty() const 184 bool LongConstraint::isEmpty() const
185 { 185 {
186 return !m_hasMin && !m_hasMax && !m_hasExact && !m_hasIdeal; 186 return !m_hasMin && !m_hasMax && !m_hasExact && !m_hasIdeal;
187 } 187 }
188 188
189 bool LongConstraint::hasMandatory() const
190 {
191 return m_hasMin || m_hasMax || m_hasExact;
192 }
193
189 double DoubleConstraint::kConstraintEpsilon = 0.00001; 194 double DoubleConstraint::kConstraintEpsilon = 0.00001;
190 195
191 DoubleConstraint::DoubleConstraint(const char* name) 196 DoubleConstraint::DoubleConstraint(const char* name)
192 : BaseConstraint(name) 197 : BaseConstraint(name)
193 , m_min() 198 , m_min()
194 , m_max() 199 , m_max()
195 , m_exact() 200 , m_exact()
196 , m_ideal() 201 , m_ideal()
197 , m_hasMin(false) 202 , m_hasMin(false)
198 , m_hasMax(false) 203 , m_hasMax(false)
(...skipping 14 matching lines...) Expand all
213 return false; 218 return false;
214 } 219 }
215 return true; 220 return true;
216 } 221 }
217 222
218 bool DoubleConstraint::isEmpty() const 223 bool DoubleConstraint::isEmpty() const
219 { 224 {
220 return !m_hasMin && !m_hasMax && !m_hasExact && !m_hasIdeal; 225 return !m_hasMin && !m_hasMax && !m_hasExact && !m_hasIdeal;
221 } 226 }
222 227
228 bool DoubleConstraint::hasMandatory() const
229 {
230 return m_hasMin || m_hasMax || m_hasExact;
231 }
232
223 StringConstraint::StringConstraint(const char* name) 233 StringConstraint::StringConstraint(const char* name)
224 : BaseConstraint(name) 234 : BaseConstraint(name)
225 , m_exact() 235 , m_exact()
226 , m_ideal() 236 , m_ideal()
227 { 237 {
228 } 238 }
229 239
230 bool StringConstraint::matches(WebString value) const 240 bool StringConstraint::matches(WebString value) const
231 { 241 {
232 if (m_exact.isEmpty()) { 242 if (m_exact.isEmpty()) {
233 return true; 243 return true;
234 } 244 }
235 for (const auto& choice : m_exact) { 245 for (const auto& choice : m_exact) {
236 if (value == choice) { 246 if (value == choice) {
237 return true; 247 return true;
238 } 248 }
239 } 249 }
240 return false; 250 return false;
241 } 251 }
242 252
243 bool StringConstraint::isEmpty() const 253 bool StringConstraint::isEmpty() const
244 { 254 {
245 return m_exact.isEmpty() && m_ideal.isEmpty(); 255 return m_exact.isEmpty() && m_ideal.isEmpty();
246 } 256 }
247 257
258 bool StringConstraint::hasMandatory() const
259 {
260 return !m_exact.isEmpty();
261 }
262
248 const WebVector<WebString>& StringConstraint::exact() const 263 const WebVector<WebString>& StringConstraint::exact() const
249 { 264 {
250 return m_exact; 265 return m_exact;
251 } 266 }
252 267
253 const WebVector<WebString>& StringConstraint::ideal() const 268 const WebVector<WebString>& StringConstraint::ideal() const
254 { 269 {
255 return m_ideal; 270 return m_ideal;
256 } 271 }
257 272
(...skipping 12 matching lines...) Expand all
270 return false; 285 return false;
271 } 286 }
272 return true; 287 return true;
273 } 288 }
274 289
275 bool BooleanConstraint::isEmpty() const 290 bool BooleanConstraint::isEmpty() const
276 { 291 {
277 return !m_hasIdeal && !m_hasExact; 292 return !m_hasIdeal && !m_hasExact;
278 } 293 }
279 294
295 bool BooleanConstraint::hasMandatory() const
296 {
297 return m_hasExact;
298 }
299
280 WebMediaTrackConstraintSet::WebMediaTrackConstraintSet() 300 WebMediaTrackConstraintSet::WebMediaTrackConstraintSet()
281 : width("width") 301 : width("width")
282 , height("height") 302 , height("height")
283 , aspectRatio("aspectRatio") 303 , aspectRatio("aspectRatio")
284 , frameRate("frameRate") 304 , frameRate("frameRate")
285 , facingMode("facingMode") 305 , facingMode("facingMode")
286 , volume("volume") 306 , volume("volume")
287 , sampleRate("sampleRate") 307 , sampleRate("sampleRate")
288 , sampleSize("sampleSize") 308 , sampleSize("sampleSize")
289 , echoCancellation("echoCancellation") 309 , echoCancellation("echoCancellation")
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 , googCpuUnderuseThreshold("googCpuUnderuseThreshold") 345 , googCpuUnderuseThreshold("googCpuUnderuseThreshold")
326 , googCpuOveruseThreshold("googCpuOveruseThreshold") 346 , googCpuOveruseThreshold("googCpuOveruseThreshold")
327 , googCpuUnderuseEncodeRsdThreshold("googCpuUnderuseEncodeRsdThreshold") 347 , googCpuUnderuseEncodeRsdThreshold("googCpuUnderuseEncodeRsdThreshold")
328 , googCpuOveruseEncodeRsdThreshold("googCpuOveruseEncodeRsdThreshold") 348 , googCpuOveruseEncodeRsdThreshold("googCpuOveruseEncodeRsdThreshold")
329 , googCpuOveruseEncodeUsage("googCpuOveruseEncodeUsage") 349 , googCpuOveruseEncodeUsage("googCpuOveruseEncodeUsage")
330 , googHighStartBitrate("googHighStartBitrate") 350 , googHighStartBitrate("googHighStartBitrate")
331 , googPayloadPadding("googPayloadPadding") 351 , googPayloadPadding("googPayloadPadding")
332 { 352 {
333 } 353 }
334 354
355 std::vector<const BaseConstraint*> WebMediaTrackConstraintSet::allConstraints() const
356 {
357 const BaseConstraint* temp[] = {
358 &width, &height, &aspectRatio, &frameRate, &facingMode, &volume,
359 &sampleRate, &sampleSize, &echoCancellation, &latency, &channelCount,
360 &deviceId, &groupId, &mediaStreamSource, &renderToAssociatedSink,
361 &hotwordEnabled, &googEchoCancellation,
362 &googExperimentalEchoCancellation, &googAutoGainControl,
363 &googExperimentalAutoGainControl, &googNoiseSuppression,
364 &googHighpassFilter, &googTypingNoiseDetection,
365 &googExperimentalNoiseSuppression, &googBeamforming,
366 &googArrayGeometry, &googAudioMirroring, &googDAEchoCancellation,
367 &googAecDump, &googNoiseReduction, &offerToReceiveAudio,
368 &offerToReceiveVideo, &voiceActivityDetection, &iceRestart,
369 &googUseRtpMux, &enableDtlsSrtp, &enableRtpDataChannels,
370 &enableDscp, &enableIPv6, &googEnableVideoSuspendBelowMinBitrate,
371 &googNumUnsignalledRecvStreams, &googCombinedAudioVideoBwe,
372 &googScreencastMinBitrate, &googCpuOveruseDetection,
373 &googCpuUnderuseThreshold, &googCpuOveruseThreshold,
374 &googCpuUnderuseEncodeRsdThreshold, &googCpuOveruseEncodeRsdThreshold,
375 &googCpuOveruseEncodeUsage, &googHighStartBitrate, &googPayloadPadding
376 };
377 const int elementCount = sizeof(temp) / sizeof(temp[0]);
378 return std::vector<const BaseConstraint*>(&temp[0], &temp[elementCount]);
379 }
380
335 bool WebMediaTrackConstraintSet::isEmpty() const 381 bool WebMediaTrackConstraintSet::isEmpty() const
336 { 382 {
337 return width.isEmpty() && height.isEmpty() && aspectRatio.isEmpty() 383 for (const auto& constraint : allConstraints()) {
338 && frameRate.isEmpty() && facingMode.isEmpty() && volume.isEmpty() 384 if (!constraint->isEmpty())
339 && sampleRate.isEmpty() && sampleSize.isEmpty() 385 return false;
340 && echoCancellation.isEmpty() && latency.isEmpty() 386 }
341 && channelCount.isEmpty() && deviceId.isEmpty() && groupId.isEmpty() 387 return true;
342 && mediaStreamSource.isEmpty() && renderToAssociatedSink.isEmpty() 388 }
343 && hotwordEnabled.isEmpty() && googEchoCancellation.isEmpty() 389
344 && googExperimentalEchoCancellation.isEmpty() 390 bool WebMediaTrackConstraintSet::hasMandatoryOutsideSet(const std::vector<std::s tring>& goodNames, std::string& foundName) const
345 && googAutoGainControl.isEmpty() 391 {
346 && googExperimentalAutoGainControl.isEmpty() 392 for (const auto& constraint : allConstraints()) {
347 && googNoiseSuppression.isEmpty() 393 if (constraint->hasMandatory()) {
348 && googHighpassFilter.isEmpty() 394 const auto& result = std::find(goodNames.begin(), goodNames.end(), c onstraint->name());
349 && googTypingNoiseDetection.isEmpty() 395 if (result == goodNames.end()) {
mcasas 2016/01/26 16:08:02 No need for |result|?
hta - Chromium 2016/01/26 19:35:25 I thought so, but it turned out not to be the case
350 && googExperimentalNoiseSuppression.isEmpty() 396 foundName = constraint->name();
351 && googBeamforming.isEmpty() && googArrayGeometry.isEmpty() 397 return true;
352 && googAudioMirroring.isEmpty(); 398 }
399 }
400 }
401 return false;
402 }
403
404 bool WebMediaTrackConstraintSet::hasMandatory() const
405 {
406 std::string dummyString;
407 return hasMandatoryOutsideSet(std::vector<std::string>(), dummyString);
353 } 408 }
354 409
355 // WebMediaConstraints 410 // WebMediaConstraints
356 411
357 void WebMediaConstraints::assign(const WebMediaConstraints& other) 412 void WebMediaConstraints::assign(const WebMediaConstraints& other)
358 { 413 {
359 m_private = other.m_private; 414 m_private = other.m_private;
360 } 415 }
361 416
362 void WebMediaConstraints::reset() 417 void WebMediaConstraints::reset()
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 return m_private->basic(); 472 return m_private->basic();
418 } 473 }
419 474
420 const WebVector<WebMediaTrackConstraintSet>& WebMediaConstraints::advanced() con st 475 const WebVector<WebMediaTrackConstraintSet>& WebMediaConstraints::advanced() con st
421 { 476 {
422 ASSERT(!isNull()); 477 ASSERT(!isNull());
423 return m_private->advanced(); 478 return m_private->advanced();
424 } 479 }
425 480
426 } // namespace blink 481 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698