| Index: content/renderer/media/media_stream_constraints_util.cc
|
| diff --git a/content/renderer/media/media_stream_constraints_util.cc b/content/renderer/media/media_stream_constraints_util.cc
|
| index a5c3b0cb6441262e34677d40a5db15ea36a60044..4a22c9653eb4be1e59fcad7c3e87ccd437e3e9e7 100644
|
| --- a/content/renderer/media/media_stream_constraints_util.cc
|
| +++ b/content/renderer/media/media_stream_constraints_util.cc
|
| @@ -104,7 +104,9 @@ bool ScanConstraintsForMinValue(const blink::WebMediaConstraints& constraints,
|
| VideoCaptureSettings::VideoCaptureSettings() : VideoCaptureSettings("") {}
|
|
|
| VideoCaptureSettings::VideoCaptureSettings(const char* failed_constraint_name)
|
| - : failed_constraint_name_(failed_constraint_name) {}
|
| + : failed_constraint_name_(failed_constraint_name) {
|
| + DCHECK(failed_constraint_name_);
|
| +}
|
|
|
| VideoCaptureSettings::VideoCaptureSettings(
|
| std::string device_id,
|
| @@ -140,6 +142,37 @@ VideoCaptureSettings& VideoCaptureSettings::operator=(
|
| VideoCaptureSettings& VideoCaptureSettings::operator=(
|
| VideoCaptureSettings&& other) = default;
|
|
|
| +AudioCaptureSettings::AudioCaptureSettings() : AudioCaptureSettings("") {}
|
| +
|
| +AudioCaptureSettings::AudioCaptureSettings(const char* failed_constraint_name)
|
| + : failed_constraint_name_(failed_constraint_name) {
|
| + DCHECK(failed_constraint_name_);
|
| +}
|
| +
|
| +AudioCaptureSettings::AudioCaptureSettings(
|
| + std::string device_id,
|
| + const media::AudioParameters& audio_parameters,
|
| + bool enable_hotword,
|
| + bool disable_local_echo,
|
| + bool enable_automatic_output_device_selection,
|
| + const AudioProcessingProperties& audio_processing_properties)
|
| + : failed_constraint_name_(nullptr),
|
| + device_id_(std::move(device_id)),
|
| + audio_parameters_(audio_parameters),
|
| + hotword_enabled_(enable_hotword),
|
| + disable_local_echo_(disable_local_echo),
|
| + render_to_associated_sink_(enable_automatic_output_device_selection),
|
| + audio_processing_properties_(audio_processing_properties) {}
|
| +
|
| +AudioCaptureSettings::AudioCaptureSettings(const AudioCaptureSettings& other) =
|
| + default;
|
| +AudioCaptureSettings& AudioCaptureSettings::operator=(
|
| + const AudioCaptureSettings& other) = default;
|
| +AudioCaptureSettings::AudioCaptureSettings(AudioCaptureSettings&& other) =
|
| + default;
|
| +AudioCaptureSettings& AudioCaptureSettings::operator=(
|
| + AudioCaptureSettings&& other) = default;
|
| +
|
| bool GetConstraintValueAsBoolean(
|
| const blink::WebMediaConstraints& constraints,
|
| const blink::BooleanConstraint blink::WebMediaTrackConstraintSet::*picker,
|
| @@ -211,6 +244,25 @@ rtc::Optional<bool> ConstraintToOptional(
|
| return rtc::Optional<bool>();
|
| }
|
|
|
| +std::string GetMediaStreamSource(
|
| + const blink::WebMediaConstraints& constraints) {
|
| + std::string source;
|
| + if (constraints.Basic().media_stream_source.HasIdeal() &&
|
| + constraints.Basic().media_stream_source.Exact().size() > 0) {
|
| + source = constraints.Basic().media_stream_source.Ideal()[0].Utf8();
|
| + }
|
| + if (constraints.Basic().media_stream_source.HasExact() &&
|
| + constraints.Basic().media_stream_source.Exact().size() > 0) {
|
| + source = constraints.Basic().media_stream_source.Exact()[0].Utf8();
|
| + }
|
| +
|
| + return source;
|
| +}
|
| +
|
| +bool IsDeviceCapture(const blink::WebMediaConstraints& constraints) {
|
| + return GetMediaStreamSource(constraints).empty();
|
| +}
|
| +
|
| VideoTrackAdapterSettings SelectVideoTrackAdapterSettings(
|
| const blink::WebMediaTrackConstraintSet& basic_constraint_set,
|
| const ResolutionSet& resolution_set,
|
| @@ -250,4 +302,26 @@ VideoTrackAdapterSettings SelectVideoTrackAdapterSettings(
|
| track_max_aspect_ratio, track_max_frame_rate, expected_native_size);
|
| }
|
|
|
| +double NumericConstraintFitnessDistance(double value1, double value2) {
|
| + if (std::fabs(value1 - value2) <= blink::DoubleConstraint::kConstraintEpsilon)
|
| + return 0.0;
|
| +
|
| + return std::fabs(value1 - value2) /
|
| + std::max(std::fabs(value1), std::fabs(value2));
|
| +}
|
| +
|
| +double StringConstraintFitnessDistance(
|
| + const blink::WebString& value,
|
| + const blink::StringConstraint& constraint) {
|
| + if (!constraint.HasIdeal())
|
| + return 0.0;
|
| +
|
| + for (auto& ideal_value : constraint.Ideal()) {
|
| + if (value == ideal_value)
|
| + return 0.0;
|
| + }
|
| +
|
| + return 1.0;
|
| +}
|
| +
|
| } // namespace content
|
|
|