Index: third_party/WebKit/Source/modules/mediastream/MediaConstraintsImpl.cpp |
diff --git a/third_party/WebKit/Source/modules/mediastream/MediaConstraintsImpl.cpp b/third_party/WebKit/Source/modules/mediastream/MediaConstraintsImpl.cpp |
index 46b378f25689545788f718d1defa7b359db97dbf..e41f8b7659bae582968288e441ea90a45d311ef8 100644 |
--- a/third_party/WebKit/Source/modules/mediastream/MediaConstraintsImpl.cpp |
+++ b/third_party/WebKit/Source/modules/mediastream/MediaConstraintsImpl.cpp |
@@ -62,6 +62,7 @@ const char kMinFrameRate[] = "minFrameRate"; |
// From content/common/media/media_stream_options.cc |
const char kMediaStreamSource[] = "chromeMediaSource"; |
const char kMediaStreamSourceId[] = "chromeMediaSourceId"; // mapped to deviceId |
+const char kMediaStreamSourceInfoId[] = "sourceId"; // mapped to deviceId |
const char kMediaStreamRenderToAssociatedSink[] = "chromeRenderToAssociatedSink"; |
// RenderToAssociatedSink will be going away in M50-M60 some time. |
const char kMediaStreamAudioHotword[] = "googHotword"; |
@@ -79,6 +80,47 @@ const char kGoogHighpassFilter[] = "googHighpassFilter"; |
const char kGoogTypingNoiseDetection[] = "googTypingNoiseDetection"; |
const char kGoogAudioMirroring[] = "googAudioMirroring"; |
+// From third_party/libjingle/source/talk/app/webrtc/mediaconstraintsinterface.cc |
+// Audio constraints. |
+// const char kExtendedFilterEchoCancellation[] = "googEchoCancellation2"; // duplicate k-name |
+const char kDAEchoCancellation[] = "googDAEchoCancellation"; |
+// const char kNoiseSuppression[] = "googNoiseSuppression"; // duplicate k-name |
+// const char kExperimentalNoiseSuppression[] = "googNoiseSuppression2"; // duplicate k-name |
+// const char kHighpassFilter[] = "googHighpassFilter"; // duplicate k-name |
+// const char kTypingNoiseDetection[] = "googTypingNoiseDetection"; // duplicate k-name |
+// const char kAudioMirroring[] = "googAudioMirroring"; // duplicate k-name |
+const char kAecDump[] = "audioDebugRecording"; |
+ |
+// Google-specific constraint keys for a local video source (getUserMedia). |
+const char kNoiseReduction[] = "googNoiseReduction"; |
+ |
+// Constraint keys for CreateOffer / CreateAnswer defined in W3C specification. |
+const char kOfferToReceiveAudio[] = "OfferToReceiveAudio"; |
+const char kOfferToReceiveVideo[] = "OfferToReceiveVideo"; |
+const char kVoiceActivityDetection[] = "VoiceActivityDetection"; |
+const char kIceRestart[] = "IceRestart"; |
+// Google specific constraint for BUNDLE enable/disable. |
+const char kUseRtpMux[] = "googUseRtpMUX"; |
+// Below constraints should be used during PeerConnection construction. |
+const char kEnableDtlsSrtp[] = "DtlsSrtpKeyAgreement"; |
+const char kEnableRtpDataChannels[] = "RtpDataChannels"; |
+// Google-specific constraint keys. |
+const char kEnableDscp[] = "googDscp"; |
+const char kEnableIPv6[] = "googIPv6"; |
+const char kEnableVideoSuspendBelowMinBitrate[] = "googSuspendBelowMinBitrate"; |
+const char kNumUnsignalledRecvStreams[] = "googNumUnsignalledRecvStreams"; |
+const char kCombinedAudioVideoBwe[] = "googCombinedAudioVideoBwe"; |
+const char kScreencastMinBitrate[] = "googScreencastMinBitrate"; |
+const char kCpuOveruseDetection[] = "googCpuOveruseDetection"; |
+const char kCpuUnderuseThreshold[] = "googCpuUnderuseThreshold"; |
+const char kCpuOveruseThreshold[] = "googCpuOveruseThreshold"; |
+const char kCpuUnderuseEncodeRsdThreshold[] = "googCpuUnderuseEncodeRsdThreshold"; |
+const char kCpuOveruseEncodeRsdThreshold[] = "googCpuOveruseEncodeRsdThreshold"; |
+const char kCpuOveruseEncodeUsage[] = "googCpuOveruseEncodeUsage"; |
+const char kHighStartBitrate[] = "googHighStartBitrate"; |
+const char kPayloadPadding[] = "googPayloadPadding"; |
+// End of names from libjingle |
+ |
// Names used for testing. |
const char kTestConstraint1[] = "valid_and_supported_1"; |
const char kTestConstraint2[] = "valid_and_supported_2"; |
@@ -201,7 +243,7 @@ static bool toBoolean(const WebString& asWebString) |
// TODO(hta): Verify this against code that currently parses bool constraints. |
} |
-static void parseOldStyleNames(const WebVector<WebMediaConstraint>& oldNames, WebMediaTrackConstraintSet result, MediaErrorState& errorState) |
+static void parseOldStyleNames(const WebVector<WebMediaConstraint>& oldNames, WebMediaTrackConstraintSet& result, MediaErrorState& errorState) |
{ |
for (const WebMediaConstraint& constraint : oldNames) { |
if (constraint.m_name.equals(kMinAspectRatio)) { |
@@ -227,7 +269,9 @@ static void parseOldStyleNames(const WebVector<WebMediaConstraint>& oldNames, We |
// represented as an enum, and cause type errors. |
// https://crbug.com/576582 |
result.mediaStreamSource.setExact(constraint.m_value); |
- } else if (constraint.m_name.equals(kMediaStreamSourceId)) { |
+ } else if (constraint.m_name.equals(kMediaStreamSourceId) |
+ || constraint.m_name.equals(kMediaStreamSourceInfoId)) { |
+ WTF_LOG(Media, "Copying a device ID"); |
tommi (sloooow) - chröme
2016/01/14 15:31:27
remove?
hta - Chromium
2016/01/17 12:41:41
Done.
|
result.deviceId.setExact(constraint.m_value); |
} else if (constraint.m_name.equals(kMediaStreamRenderToAssociatedSink)) { |
// TODO(hta): This is a boolean represented as string. |
@@ -258,6 +302,54 @@ static void parseOldStyleNames(const WebVector<WebMediaConstraint>& oldNames, We |
result.googTypingNoiseDetection.setExact(toBoolean(constraint.m_value)); |
} else if (constraint.m_name.equals(kGoogAudioMirroring)) { |
result.googAudioMirroring.setExact(toBoolean(constraint.m_value)); |
+ } else if (constraint.m_name.equals(kDAEchoCancellation)) { |
+ result.googDAEchoCancellation.setExact(toBoolean(constraint.m_value)); |
+ } else if (constraint.m_name.equals(kAecDump)) { |
+ result.googAecDump.setExact(toBoolean(constraint.m_value)); |
+ } else if (constraint.m_name.equals(kNoiseReduction)) { |
+ result.googNoiseReduction.setExact(toBoolean(constraint.m_value)); |
+ } else if (constraint.m_name.equals(kOfferToReceiveAudio)) { |
+ result.offerToReceiveAudio.setExact(constraint.m_value); |
+ } else if (constraint.m_name.equals(kOfferToReceiveVideo)) { |
+ result.offerToReceiveVideo.setExact(constraint.m_value); |
+ } else if (constraint.m_name.equals(kVoiceActivityDetection)) { |
+ result.voiceActivityDetection.setExact(toBoolean(constraint.m_value)); |
+ } else if (constraint.m_name.equals(kIceRestart)) { |
+ result.iceRestart.setExact(toBoolean(constraint.m_value)); |
+ } else if (constraint.m_name.equals(kUseRtpMux)) { |
+ result.googUseRtpMux.setExact(toBoolean(constraint.m_value)); |
+ } else if (constraint.m_name.equals(kEnableDtlsSrtp)) { |
+ result.enableDtlsSrtp.setExact(toBoolean(constraint.m_value)); |
+ } else if (constraint.m_name.equals(kEnableRtpDataChannels)) { |
+ result.enableRtpDataChannels.setExact(toBoolean(constraint.m_value)); |
+ } else if (constraint.m_name.equals(kEnableDscp)) { |
+ result.enableDscp.setExact(toBoolean(constraint.m_value)); |
+ } else if (constraint.m_name.equals(kEnableIPv6)) { |
+ result.enableIPv6.setExact(toBoolean(constraint.m_value)); |
+ } else if (constraint.m_name.equals(kEnableVideoSuspendBelowMinBitrate)) { |
+ result.googEnableVideoSuspendBelowMinBitrate.setExact(toBoolean(constraint.m_value)); |
+ } else if (constraint.m_name.equals(kNumUnsignalledRecvStreams)) { |
+ result.googNumUnsignalledRecvStreams.setExact(atoi(constraint.m_value.utf8().c_str())); |
+ } else if (constraint.m_name.equals(kCombinedAudioVideoBwe)) { |
+ result.googCombinedAudioVideoBwe.setExact(toBoolean(constraint.m_value)); |
+ } else if (constraint.m_name.equals(kScreencastMinBitrate)) { |
+ result.googScreencastMinBitrate.setExact(atoi(constraint.m_value.utf8().c_str())); |
+ } else if (constraint.m_name.equals(kCpuOveruseDetection)) { |
+ result.googCpuOveruseDetection.setExact(toBoolean(constraint.m_value)); |
+ } else if (constraint.m_name.equals(kCpuUnderuseThreshold)) { |
+ result.googCpuUnderuseThreshold.setExact(atoi(constraint.m_value.utf8().c_str())); |
+ } else if (constraint.m_name.equals(kCpuOveruseThreshold)) { |
+ result.googCpuOveruseThreshold.setExact(atoi(constraint.m_value.utf8().c_str())); |
+ } else if (constraint.m_name.equals(kCpuUnderuseEncodeRsdThreshold)) { |
+ result.googCpuUnderuseEncodeRsdThreshold.setExact(atoi(constraint.m_value.utf8().c_str())); |
+ } else if (constraint.m_name.equals(kCpuOveruseEncodeRsdThreshold)) { |
+ result.googCpuOveruseEncodeRsdThreshold.setExact(atoi(constraint.m_value.utf8().c_str())); |
+ } else if (constraint.m_name.equals(kCpuOveruseEncodeUsage)) { |
+ result.googCpuOveruseEncodeUsage.setExact(toBoolean(constraint.m_value)); |
+ } else if (constraint.m_name.equals(kHighStartBitrate)) { |
+ result.googHighStartBitrate.setExact(atoi(constraint.m_value.utf8().c_str())); |
+ } else if (constraint.m_name.equals(kPayloadPadding)) { |
+ result.googPayloadPadding.setExact(toBoolean(constraint.m_value)); |
} else if (constraint.m_name.equals(kTestConstraint1) |
|| constraint.m_name.equals(kTestConstraint2)) { |
// These constraints are only for testing parsing. Ignore them. |
@@ -275,14 +367,12 @@ static WebMediaConstraints createFromNamedConstraints(WebVector<WebMediaConstrai |
WebMediaTrackConstraintSet basic; |
WebMediaTrackConstraintSet advanced; |
WebMediaConstraints constraints; |
- if (RuntimeEnabledFeatures::mediaConstraintsEnabled()) { |
- parseOldStyleNames(mandatory, basic, errorState); |
- if (errorState.hadException()) |
- return constraints; |
- // We ignore errors in optional constraints. |
- MediaErrorState ignoredErrorState; |
- parseOldStyleNames(optional, advanced, ignoredErrorState); |
- } |
+ parseOldStyleNames(mandatory, basic, errorState); |
+ if (errorState.hadException()) |
+ return constraints; |
+ // We ignore errors in optional constraints. |
+ MediaErrorState ignoredErrorState; |
+ parseOldStyleNames(optional, advanced, ignoredErrorState); |
WebVector<WebMediaTrackConstraintSet> advancedVector(&advanced, 1); |
// Use the 4-argument initializer until Chrome has been converted. |
constraints.initialize(optional, mandatory, basic, advancedVector); |