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

Unified Diff: content/renderer/media/media_stream_constraints_util_video_content.cc

Issue 2806703002: Update constraints algorithm for video content capture. (Closed)
Patch Set: re-add tests 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 side-by-side diff with in-line comments
Download patch
Index: content/renderer/media/media_stream_constraints_util_video_content.cc
diff --git a/content/renderer/media/media_stream_constraints_util_video_content.cc b/content/renderer/media/media_stream_constraints_util_video_content.cc
index 7e879e0e4f764dc6af4f3c1cb4dc2d7fbe6d340a..9f21ec556e1a72ca4fd6f6f67022643e6863fc6a 100644
--- a/content/renderer/media/media_stream_constraints_util_video_content.cc
+++ b/content/renderer/media/media_stream_constraints_util_video_content.cc
@@ -16,10 +16,10 @@
namespace content {
-// TODO(guidou): Change default width and height to larger values. See
-// http://crbug.com/257097.
-const int kDefaultScreenCastWidth = MediaStreamVideoSource::kDefaultWidth;
-const int kDefaultScreenCastHeight = MediaStreamVideoSource::kDefaultHeight;
+const int kDefaultScreenCastWidth = 2880;
+const int kDefaultScreenCastHeight = 1800;
+const double kDefaultScreenCastAspectRatio =
+ static_cast<double>(kDefaultScreenCastWidth) / kDefaultScreenCastHeight;
const double kDefaultScreenCastFrameRate =
MediaStreamVideoSource::kDefaultFrameRate;
const int kMinScreenCastDimension = 1;
@@ -224,12 +224,33 @@ VideoCaptureSettings SelectResultFromCandidates(
const blink::WebMediaTrackConstraintSet& basic_constraint_set) {
std::string device_id = SelectDeviceIDFromCandidates(candidates.device_id_set,
basic_constraint_set);
+ // If a maximum width or height is explicitly given, use them as default.
+ // If only one of them is given, use the default aspect ratio to determine the
+ // other default value.
// TODO(guidou): Use native screen-capture resolution as default.
// http://crbug.com/257097
+ int default_height = kDefaultScreenCastHeight;
+ int default_width = kDefaultScreenCastWidth;
+ bool has_explicit_max_height =
+ candidates.resolution_set.max_height() < kMaxScreenCastDimension;
+ bool has_explicit_max_width =
+ candidates.resolution_set.max_width() < kMaxScreenCastDimension;
+ if (has_explicit_max_height && has_explicit_max_width) {
+ default_height = candidates.resolution_set.max_height();
+ default_width = candidates.resolution_set.max_width();
+ } else if (has_explicit_max_height) {
+ default_height = candidates.resolution_set.max_height();
+ default_width = static_cast<int>(
+ std::round(default_height * kDefaultScreenCastAspectRatio));
+ } else if (has_explicit_max_width) {
+ default_width = candidates.resolution_set.max_width();
+ default_height = static_cast<int>(
+ std::round(default_width / kDefaultScreenCastAspectRatio));
+ }
media::VideoCaptureParams capture_params =
- SelectVideoCaptureParamsFromCandidates(
- candidates, basic_constraint_set, kDefaultScreenCastHeight,
- kDefaultScreenCastWidth, kDefaultScreenCastFrameRate);
+ SelectVideoCaptureParamsFromCandidates(candidates, basic_constraint_set,
+ default_height, default_width,
+ kDefaultScreenCastFrameRate);
base::Optional<bool> noise_reduction = SelectNoiseReductionFromCandidates(
candidates.noise_reduction_set, basic_constraint_set);

Powered by Google App Engine
This is Rietveld 408576698