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

Unified Diff: third_party/WebKit/Source/platform/exported/WebMediaConstraints.cpp

Issue 1617243005: Apply new-style constraints to video_source. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add <vector> include Created 4 years, 11 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: third_party/WebKit/Source/platform/exported/WebMediaConstraints.cpp
diff --git a/third_party/WebKit/Source/platform/exported/WebMediaConstraints.cpp b/third_party/WebKit/Source/platform/exported/WebMediaConstraints.cpp
index 313aeba6c35b01103a0feb636aec8d27de48dd9a..b9826cdc068959ee0fa3c9817e4d16b2740f89c0 100644
--- a/third_party/WebKit/Source/platform/exported/WebMediaConstraints.cpp
+++ b/third_party/WebKit/Source/platform/exported/WebMediaConstraints.cpp
@@ -186,6 +186,11 @@ bool LongConstraint::isEmpty() const
return !m_hasMin && !m_hasMax && !m_hasExact && !m_hasIdeal;
}
+bool LongConstraint::hasMandatory() const
+{
+ return m_hasMin || m_hasMax || m_hasExact;
+}
+
double DoubleConstraint::kConstraintEpsilon = 0.00001;
DoubleConstraint::DoubleConstraint(const char* name)
@@ -220,6 +225,11 @@ bool DoubleConstraint::isEmpty() const
return !m_hasMin && !m_hasMax && !m_hasExact && !m_hasIdeal;
}
+bool DoubleConstraint::hasMandatory() const
+{
+ return m_hasMin || m_hasMax || m_hasExact;
+}
+
StringConstraint::StringConstraint(const char* name)
: BaseConstraint(name)
, m_exact()
@@ -245,6 +255,11 @@ bool StringConstraint::isEmpty() const
return m_exact.isEmpty() && m_ideal.isEmpty();
}
+bool StringConstraint::hasMandatory() const
+{
+ return !m_exact.isEmpty();
+}
+
const WebVector<WebString>& StringConstraint::exact() const
{
return m_exact;
@@ -277,6 +292,11 @@ bool BooleanConstraint::isEmpty() const
return !m_hasIdeal && !m_hasExact;
}
+bool BooleanConstraint::hasMandatory() const
+{
+ return m_hasExact;
+}
+
WebMediaTrackConstraintSet::WebMediaTrackConstraintSet()
: width("width")
, height("height")
@@ -332,24 +352,59 @@ WebMediaTrackConstraintSet::WebMediaTrackConstraintSet()
{
}
+std::vector<const BaseConstraint*> WebMediaTrackConstraintSet::allConstraints() const
+{
+ const BaseConstraint* temp[] = {
+ &width, &height, &aspectRatio, &frameRate, &facingMode, &volume,
+ &sampleRate, &sampleSize, &echoCancellation, &latency, &channelCount,
+ &deviceId, &groupId, &mediaStreamSource, &renderToAssociatedSink,
+ &hotwordEnabled, &googEchoCancellation,
+ &googExperimentalEchoCancellation, &googAutoGainControl,
+ &googExperimentalAutoGainControl, &googNoiseSuppression,
+ &googHighpassFilter, &googTypingNoiseDetection,
+ &googExperimentalNoiseSuppression, &googBeamforming,
+ &googArrayGeometry, &googAudioMirroring, &googDAEchoCancellation,
+ &googAecDump, &googNoiseReduction, &offerToReceiveAudio,
+ &offerToReceiveVideo, &voiceActivityDetection, &iceRestart,
+ &googUseRtpMux, &enableDtlsSrtp, &enableRtpDataChannels,
+ &enableDscp, &enableIPv6, &googEnableVideoSuspendBelowMinBitrate,
+ &googNumUnsignalledRecvStreams, &googCombinedAudioVideoBwe,
+ &googScreencastMinBitrate, &googCpuOveruseDetection,
+ &googCpuUnderuseThreshold, &googCpuOveruseThreshold,
+ &googCpuUnderuseEncodeRsdThreshold, &googCpuOveruseEncodeRsdThreshold,
+ &googCpuOveruseEncodeUsage, &googHighStartBitrate, &googPayloadPadding
+ };
+ const int elementCount = sizeof(temp) / sizeof(temp[0]);
+ return std::vector<const BaseConstraint*>(&temp[0], &temp[elementCount]);
+}
+
bool WebMediaTrackConstraintSet::isEmpty() const
{
- return width.isEmpty() && height.isEmpty() && aspectRatio.isEmpty()
- && frameRate.isEmpty() && facingMode.isEmpty() && volume.isEmpty()
- && sampleRate.isEmpty() && sampleSize.isEmpty()
- && echoCancellation.isEmpty() && latency.isEmpty()
- && channelCount.isEmpty() && deviceId.isEmpty() && groupId.isEmpty()
- && mediaStreamSource.isEmpty() && renderToAssociatedSink.isEmpty()
- && hotwordEnabled.isEmpty() && googEchoCancellation.isEmpty()
- && googExperimentalEchoCancellation.isEmpty()
- && googAutoGainControl.isEmpty()
- && googExperimentalAutoGainControl.isEmpty()
- && googNoiseSuppression.isEmpty()
- && googHighpassFilter.isEmpty()
- && googTypingNoiseDetection.isEmpty()
- && googExperimentalNoiseSuppression.isEmpty()
- && googBeamforming.isEmpty() && googArrayGeometry.isEmpty()
- && googAudioMirroring.isEmpty();
+ for (const auto& constraint : allConstraints()) {
+ if (!constraint->isEmpty())
+ return false;
+ }
+ return true;
+}
+
+bool WebMediaTrackConstraintSet::hasMandatoryOutsideSet(const std::vector<std::string>& goodNames, std::string& foundName) const
+{
+ for (const auto& constraint : allConstraints()) {
+ if (constraint->hasMandatory()) {
+ const auto& result = std::find(goodNames.begin(), goodNames.end(), constraint->name());
+ if (result == goodNames.end()) {
mcasas 2016/01/26 16:08:02 No need for |result|?
hta - Chromium 2016/01/26 19:35:25 I thought so, but it turned out not to be the case
+ foundName = constraint->name();
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+bool WebMediaTrackConstraintSet::hasMandatory() const
+{
+ std::string dummyString;
+ return hasMandatoryOutsideSet(std::vector<std::string>(), dummyString);
}
// WebMediaConstraints

Powered by Google App Engine
This is Rietveld 408576698