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

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

Issue 2941553003: Reland "SelectSettings algorithm for audio constraints." (Closed)
Patch Set: fix test Created 3 years, 6 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.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

Powered by Google App Engine
This is Rietveld 408576698