| 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 dbe59c2b297566ff799d057aa9a05e2af7c8d99c..6bd5248ec4259f7dda2f29436791f1e3fe3992b4 100644
|
| --- a/third_party/WebKit/Source/modules/mediastream/MediaConstraintsImpl.cpp
|
| +++ b/third_party/WebKit/Source/modules/mediastream/MediaConstraintsImpl.cpp
|
| @@ -63,6 +63,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";
|
| @@ -81,6 +82,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";
|
| @@ -230,7 +272,8 @@ 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)) {
|
| result.deviceId.setExact(constraint.m_value);
|
| } else if (constraint.m_name.equals(kMediaStreamRenderToAssociatedSink)) {
|
| // TODO(hta): This is a boolean represented as string.
|
| @@ -261,6 +304,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.
|
| @@ -278,14 +369,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);
|
|
|