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

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

Issue 2941553003: Reland "SelectSettings algorithm for audio constraints." (Closed)
Patch Set: fix test Created 3 years, 6 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 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 "content/renderer/media/media_stream_constraints_util_video_content.h" 5 #include "content/renderer/media/media_stream_constraints_util_video_content.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cmath> 8 #include <cmath>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 27 matching lines...) Expand all
38 const double kMaxScreenCastFrameRate = 120.0; 38 const double kMaxScreenCastFrameRate = 120.0;
39 const double kDefaultScreenCastFrameRate = 39 const double kDefaultScreenCastFrameRate =
40 MediaStreamVideoSource::kDefaultFrameRate; 40 MediaStreamVideoSource::kDefaultFrameRate;
41 41
42 namespace { 42 namespace {
43 43
44 using Point = ResolutionSet::Point; 44 using Point = ResolutionSet::Point;
45 using StringSet = DiscreteSet<std::string>; 45 using StringSet = DiscreteSet<std::string>;
46 using BoolSet = DiscreteSet<bool>; 46 using BoolSet = DiscreteSet<bool>;
47 47
48
49 constexpr double kMinScreenCastAspectRatio = 48 constexpr double kMinScreenCastAspectRatio =
50 static_cast<double>(kMinScreenCastDimension) / 49 static_cast<double>(kMinScreenCastDimension) /
51 static_cast<double>(kMaxScreenCastDimension); 50 static_cast<double>(kMaxScreenCastDimension);
52 constexpr double kMaxScreenCastAspectRatio = 51 constexpr double kMaxScreenCastAspectRatio =
53 static_cast<double>(kMaxScreenCastDimension) / 52 static_cast<double>(kMaxScreenCastDimension) /
54 static_cast<double>(kMinScreenCastDimension); 53 static_cast<double>(kMinScreenCastDimension);
55 54
56 StringSet StringSetFromConstraint(const blink::StringConstraint& constraint) {
57 if (!constraint.HasExact())
58 return StringSet::UniversalSet();
59
60 std::vector<std::string> elements;
61 for (const auto& entry : constraint.Exact())
62 elements.push_back(entry.Ascii());
63
64 return StringSet(std::move(elements));
65 }
66
67 BoolSet BoolSetFromConstraint(const blink::BooleanConstraint& constraint) {
68 if (!constraint.HasExact())
69 return BoolSet::UniversalSet();
70
71 return BoolSet({constraint.Exact()});
72 }
73
74 using DoubleRangeSet = NumericRangeSet<double>; 55 using DoubleRangeSet = NumericRangeSet<double>;
75 56
76 class VideoContentCaptureCandidates { 57 class VideoContentCaptureCandidates {
77 public: 58 public:
78 VideoContentCaptureCandidates() 59 VideoContentCaptureCandidates()
79 : has_explicit_max_height_(false), 60 : has_explicit_max_height_(false),
80 has_explicit_max_width_(false), 61 has_explicit_max_width_(false),
81 has_explicit_min_frame_rate_(false), 62 has_explicit_min_frame_rate_(false),
82 has_explicit_max_frame_rate_(false), 63 has_explicit_max_frame_rate_(false) {}
83 device_id_set_(StringSet::UniversalSet()),
84 noise_reduction_set_(BoolSet::UniversalSet()) {}
85 explicit VideoContentCaptureCandidates( 64 explicit VideoContentCaptureCandidates(
86 const blink::WebMediaTrackConstraintSet& constraint_set) 65 const blink::WebMediaTrackConstraintSet& constraint_set)
87 : resolution_set_(ResolutionSet::FromConstraintSet(constraint_set)), 66 : resolution_set_(ResolutionSet::FromConstraintSet(constraint_set)),
88 has_explicit_max_height_(ConstraintHasMax(constraint_set.height) && 67 has_explicit_max_height_(ConstraintHasMax(constraint_set.height) &&
89 ConstraintMax(constraint_set.height) <= 68 ConstraintMax(constraint_set.height) <=
90 kMaxScreenCastDimension), 69 kMaxScreenCastDimension),
91 has_explicit_max_width_(ConstraintHasMax(constraint_set.width) && 70 has_explicit_max_width_(ConstraintHasMax(constraint_set.width) &&
92 ConstraintMax(constraint_set.width) <= 71 ConstraintMax(constraint_set.width) <=
93 kMaxScreenCastDimension), 72 kMaxScreenCastDimension),
94 frame_rate_set_( 73 frame_rate_set_(
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 if (!intersection.IsEmpty()) 396 if (!intersection.IsEmpty())
418 candidates = std::move(intersection); 397 candidates = std::move(intersection);
419 } 398 }
420 399
421 DCHECK(!candidates.IsEmpty()); 400 DCHECK(!candidates.IsEmpty());
422 return SelectResultFromCandidates(candidates, constraints.Basic(), 401 return SelectResultFromCandidates(candidates, constraints.Basic(),
423 stream_source); 402 stream_source);
424 } 403 }
425 404
426 } // namespace content 405 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698