| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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.h" | 5 #include "content/renderer/media/media_stream_constraints_util.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
| 11 #include "base/strings/utf_string_conversions.h" | 11 #include "base/strings/utf_string_conversions.h" |
| 12 #include "content/renderer/media/media_stream_constraints_util_sets.h" | 12 #include "content/renderer/media/media_stream_constraints_util_sets.h" |
| 13 #include "third_party/WebKit/public/platform/WebMediaConstraints.h" | 13 #include "third_party/WebKit/public/platform/WebMediaConstraints.h" |
| 14 #include "third_party/WebKit/public/platform/WebString.h" | 14 #include "third_party/WebKit/public/platform/WebString.h" |
| 15 | 15 |
| 16 namespace content { | 16 namespace content { |
| 17 | 17 |
| 18 namespace { | 18 namespace { |
| 19 | 19 |
| 20 template <typename P, typename T> | 20 template <typename P, typename T> |
| 21 bool ScanConstraintsForExactValue(const blink::WebMediaConstraints& constraints, | 21 bool ScanConstraintsForExactValue(const blink::WebMediaConstraints& constraints, |
| 22 P picker, | 22 P picker, |
| 23 T* value) { | 23 T* value) { |
| 24 DCHECK(!constraints.isNull()); | 24 if (constraints.isNull()) |
| 25 return false; |
| 26 |
| 25 const auto& the_field = constraints.basic().*picker; | 27 const auto& the_field = constraints.basic().*picker; |
| 26 if (the_field.hasExact()) { | 28 if (the_field.hasExact()) { |
| 27 *value = the_field.exact(); | 29 *value = the_field.exact(); |
| 28 return true; | 30 return true; |
| 29 } | 31 } |
| 30 for (const auto& advanced_constraint : constraints.advanced()) { | 32 for (const auto& advanced_constraint : constraints.advanced()) { |
| 31 const auto& the_field = advanced_constraint.*picker; | 33 const auto& the_field = advanced_constraint.*picker; |
| 32 if (the_field.hasExact()) { | 34 if (the_field.hasExact()) { |
| 33 *value = the_field.exact(); | 35 *value = the_field.exact(); |
| 34 return true; | 36 return true; |
| 35 } | 37 } |
| 36 } | 38 } |
| 37 return false; | 39 return false; |
| 38 } | 40 } |
| 39 | 41 |
| 40 template <typename P, typename T> | 42 template <typename P, typename T> |
| 41 bool ScanConstraintsForMaxValue(const blink::WebMediaConstraints& constraints, | 43 bool ScanConstraintsForMaxValue(const blink::WebMediaConstraints& constraints, |
| 42 P picker, | 44 P picker, |
| 43 T* value) { | 45 T* value) { |
| 44 DCHECK(!constraints.isNull()); | 46 if (constraints.isNull()) |
| 47 return false; |
| 48 |
| 45 const auto& the_field = constraints.basic().*picker; | 49 const auto& the_field = constraints.basic().*picker; |
| 46 if (the_field.hasMax()) { | 50 if (the_field.hasMax()) { |
| 47 *value = the_field.max(); | 51 *value = the_field.max(); |
| 48 return true; | 52 return true; |
| 49 } | 53 } |
| 50 if (the_field.hasExact()) { | 54 if (the_field.hasExact()) { |
| 51 *value = the_field.exact(); | 55 *value = the_field.exact(); |
| 52 return true; | 56 return true; |
| 53 } | 57 } |
| 54 for (const auto& advanced_constraint : constraints.advanced()) { | 58 for (const auto& advanced_constraint : constraints.advanced()) { |
| 55 const auto& the_field = advanced_constraint.*picker; | 59 const auto& the_field = advanced_constraint.*picker; |
| 56 if (the_field.hasMax()) { | 60 if (the_field.hasMax()) { |
| 57 *value = the_field.max(); | 61 *value = the_field.max(); |
| 58 return true; | 62 return true; |
| 59 } | 63 } |
| 60 if (the_field.hasExact()) { | 64 if (the_field.hasExact()) { |
| 61 *value = the_field.exact(); | 65 *value = the_field.exact(); |
| 62 return true; | 66 return true; |
| 63 } | 67 } |
| 64 } | 68 } |
| 65 return false; | 69 return false; |
| 66 } | 70 } |
| 67 | 71 |
| 68 template <typename P, typename T> | 72 template <typename P, typename T> |
| 69 bool ScanConstraintsForMinValue(const blink::WebMediaConstraints& constraints, | 73 bool ScanConstraintsForMinValue(const blink::WebMediaConstraints& constraints, |
| 70 P picker, | 74 P picker, |
| 71 T* value) { | 75 T* value) { |
| 72 DCHECK(!constraints.isNull()); | 76 if (constraints.isNull()) |
| 77 return false; |
| 78 |
| 73 const auto& the_field = constraints.basic().*picker; | 79 const auto& the_field = constraints.basic().*picker; |
| 74 if (the_field.hasMin()) { | 80 if (the_field.hasMin()) { |
| 75 *value = the_field.min(); | 81 *value = the_field.min(); |
| 76 return true; | 82 return true; |
| 77 } | 83 } |
| 78 if (the_field.hasExact()) { | 84 if (the_field.hasExact()) { |
| 79 *value = the_field.exact(); | 85 *value = the_field.exact(); |
| 80 return true; | 86 return true; |
| 81 } | 87 } |
| 82 for (const auto& advanced_constraint : constraints.advanced()) { | 88 for (const auto& advanced_constraint : constraints.advanced()) { |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 // adjustment. | 236 // adjustment. |
| 231 if (track_max_frame_rate >= source_format.frame_rate) | 237 if (track_max_frame_rate >= source_format.frame_rate) |
| 232 track_max_frame_rate = 0.0; | 238 track_max_frame_rate = 0.0; |
| 233 | 239 |
| 234 return VideoTrackAdapterSettings( | 240 return VideoTrackAdapterSettings( |
| 235 track_max_width, track_max_height, track_min_aspect_ratio, | 241 track_max_width, track_max_height, track_min_aspect_ratio, |
| 236 track_max_aspect_ratio, track_max_frame_rate); | 242 track_max_aspect_ratio, track_max_frame_rate); |
| 237 } | 243 } |
| 238 | 244 |
| 239 } // namespace content | 245 } // namespace content |
| OLD | NEW |