Chromium Code Reviews| Index: content/renderer/media/media_stream_video_source.cc |
| diff --git a/content/renderer/media/media_stream_video_source.cc b/content/renderer/media/media_stream_video_source.cc |
| index 856781a8c6a2f541577cd247b25d3e116c37c217..9e253e193d18d0479a7d3de4d4fdf2e0773428bf 100644 |
| --- a/content/renderer/media/media_stream_video_source.cc |
| +++ b/content/renderer/media/media_stream_video_source.cc |
| @@ -33,14 +33,24 @@ bool HasMandatoryConstraints(const blink::WebMediaConstraints& constraints) { |
| // Retrieve the desired max width and height from |constraints|. If not set, |
| // the |desired_width| and |desired_height| are set to |
| // std::numeric_limits<int>::max(); |
| -// If either max width or height is set as a mandatory constraint, the optional |
| -// constraints are not checked. |
| +// If either max or exact width or height is set as a mandatory constraint, |
| +// the advanced constraints are not checked. |
| +// |
|
Guido Urdaneta
2016/08/11 09:25:01
nit: is this empty line with "//" intentional
hta - Chromium
2016/08/11 11:18:18
No. Removed.
|
| void GetDesiredMaxWidthAndHeight(const blink::WebMediaConstraints& constraints, |
| int* desired_width, int* desired_height) { |
| *desired_width = std::numeric_limits<int>::max(); |
| *desired_height = std::numeric_limits<int>::max(); |
| const auto& basic_constraints = constraints.basic(); |
| + if (basic_constraints.width.hasExact() || |
| + basic_constraints.height.hasExact()) { |
|
Guido Urdaneta
2016/08/11 09:25:01
what if it has exact width and max height, but no
hta - Chromium
2016/08/11 11:18:18
That is a correct question to ask. I merged the tw
|
| + if (basic_constraints.width.hasExact()) |
| + *desired_width = basic_constraints.width.exact(); |
| + if (basic_constraints.height.hasExact()) |
| + *desired_height = basic_constraints.height.exact(); |
| + return; |
| + } |
| + |
| if (basic_constraints.width.hasMax() || basic_constraints.height.hasMax()) { |
| if (basic_constraints.width.hasMax()) |
| *desired_width = basic_constraints.width.max(); |
| @@ -54,6 +64,10 @@ void GetDesiredMaxWidthAndHeight(const blink::WebMediaConstraints& constraints, |
| *desired_width = constraint_set.width.max(); |
| if (constraint_set.height.hasMax()) |
| *desired_height = constraint_set.height.max(); |
| + if (constraint_set.width.hasExact()) |
| + *desired_width = constraint_set.width.exact(); |
| + if (constraint_set.height.hasExact()) |
| + *desired_height = constraint_set.height.exact(); |
| } |
| } |
| @@ -111,11 +125,15 @@ bool UpdateFormatForConstraints( |
| // max width/height just has to be > 0 (we can crop anything too large). |
| if ((constraints.width.hasMin() && |
| constraints.width.min() > format->frame_size.width()) || |
| - (constraints.width.hasMax() && constraints.width.max() <= 0)) { |
| + (constraints.width.hasMax() && constraints.width.max() <= 0) || |
| + (constraints.width.hasExact() && |
| + constraints.width.exact() != format->frame_size.width())) { |
| *failing_constraint_name = constraints.width.name(); |
| } else if ((constraints.height.hasMin() && |
| constraints.height.min() > format->frame_size.height()) || |
| - (constraints.height.hasMax() && constraints.height.max() <= 0)) { |
| + (constraints.height.hasMax() && constraints.height.max() <= 0) || |
| + (constraints.height.hasExact() && |
| + constraints.height.exact() != format->frame_size.height())) { |
| *failing_constraint_name = constraints.height.name(); |
| } else if (!constraints.frameRate.matches(format->frame_rate)) { |
| if (constraints.frameRate.hasMax()) { |