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

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

Issue 2800343005: Update selection of resolution policy for screen capture with getUserMedia. (Closed)
Patch Set: Created 3 years, 8 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
« no previous file with comments | « no previous file | content/renderer/media/media_stream_constraints_util_video_content_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <cmath> 7 #include <cmath>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 kMinScreenCastDimension, kMaxScreenCastDimension, 111 kMinScreenCastDimension, kMaxScreenCastDimension,
112 kMinScreenCastAspectRatio, kMaxScreenCastAspectRatio); 112 kMinScreenCastAspectRatio, kMaxScreenCastAspectRatio);
113 } 113 }
114 114
115 // TODO(guidou): Update this policy to better match the way 115 // TODO(guidou): Update this policy to better match the way
116 // WebContentsCaptureMachine::ComputeOptimalViewSize() interprets 116 // WebContentsCaptureMachine::ComputeOptimalViewSize() interprets
117 // resolution-change policies. See http://crbug.com/701302. 117 // resolution-change policies. See http://crbug.com/701302.
118 media::ResolutionChangePolicy SelectResolutionPolicyFromCandidates( 118 media::ResolutionChangePolicy SelectResolutionPolicyFromCandidates(
119 const ResolutionSet& resolution_set) { 119 const ResolutionSet& resolution_set) {
120 ResolutionSet capabilities = ScreenCastResolutionCapabilities(); 120 ResolutionSet capabilities = ScreenCastResolutionCapabilities();
121 // TODO(guidou): Since the real maximum screen resolution is not known, use
122 // max_width and max_height from |resolution_set| as the actual capability,
123 // if necessary, to decide the resolution policy. Update this to use the
124 // actual capability once the actual screen resolution is used as default.
125 // http://crbug.com/257097
126 int capabilities_max_height =
127 std::min(resolution_set.max_height(), capabilities.max_height());
128 int capabilities_max_width =
129 std::min(resolution_set.max_width(), capabilities.max_width());
130 double capabilities_min_aspect_ratio =
131 static_cast<double>(capabilities.min_width()) / capabilities_max_height;
132 double capabilities_max_aspect_ratio =
133 static_cast<double>(capabilities_max_width) / capabilities.min_height();
121 bool can_adjust_resolution = 134 bool can_adjust_resolution =
122 resolution_set.min_height() <= capabilities.min_height() && 135 resolution_set.min_height() <= capabilities.min_height() &&
123 resolution_set.max_height() >= capabilities.max_height() && 136 resolution_set.max_height() >= capabilities_max_height &&
124 resolution_set.min_width() <= capabilities.min_width() && 137 resolution_set.min_width() <= capabilities.min_width() &&
125 resolution_set.max_width() >= capabilities.max_width() && 138 resolution_set.max_width() >= capabilities_max_width &&
126 resolution_set.min_aspect_ratio() <= capabilities.min_aspect_ratio() && 139 resolution_set.min_aspect_ratio() <= capabilities_min_aspect_ratio &&
127 resolution_set.max_aspect_ratio() >= capabilities.max_aspect_ratio(); 140 resolution_set.max_aspect_ratio() >= capabilities_max_aspect_ratio;
128 141
129 return can_adjust_resolution ? media::RESOLUTION_POLICY_ANY_WITHIN_LIMIT 142 return can_adjust_resolution ? media::RESOLUTION_POLICY_ANY_WITHIN_LIMIT
130 : media::RESOLUTION_POLICY_FIXED_RESOLUTION; 143 : media::RESOLUTION_POLICY_FIXED_RESOLUTION;
131 } 144 }
132 145
133 int RoundToInt(double d) { 146 int RoundToInt(double d) {
134 return static_cast<int>(std::round(d)); 147 return static_cast<int>(std::round(d));
135 } 148 }
136 149
137 gfx::Size ToGfxSize(const Point& point) { 150 gfx::Size ToGfxSize(const Point& point) {
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 candidates.Intersection(advanced_candidates); 319 candidates.Intersection(advanced_candidates);
307 if (!intersection.IsEmpty()) 320 if (!intersection.IsEmpty())
308 candidates = std::move(intersection); 321 candidates = std::move(intersection);
309 } 322 }
310 323
311 DCHECK(!candidates.IsEmpty()); 324 DCHECK(!candidates.IsEmpty());
312 return SelectResultFromCandidates(candidates, constraints.Basic()); 325 return SelectResultFromCandidates(candidates, constraints.Basic());
313 } 326 }
314 327
315 } // namespace content 328 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | content/renderer/media/media_stream_constraints_util_video_content_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698