
functionality and exposes the functionality using the MediaConstraints. The exposing of the feature through the MediaConstraints was done similarly to what was done for the intelligibility enhancer in the CL https://codereview.webrtc.org/1952123003 This CL is dependent on the CL https://codereview.webrtc.org/2090583002/ which contains the level control functionality. NOTRY=true BUG=webrtc:5920 Review-Url: https://codereview.webrtc.org/2095563002 Cr-Commit-Position: refs/heads/master@{#13336}
143 lines
5.8 KiB
C++
143 lines
5.8 KiB
C++
/*
|
|
* Copyright 2013 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
// This file contains the interface for MediaConstraints, corresponding to
|
|
// the definition at
|
|
// http://www.w3.org/TR/mediacapture-streams/#mediastreamconstraints and also
|
|
// used in WebRTC: http://dev.w3.org/2011/webrtc/editor/webrtc.html#constraints.
|
|
|
|
// This interface is being deprecated in Chrome, and may be removed
|
|
// from WebRTC too.
|
|
// https://bugs.chromium.org/p/webrtc/issues/detail?id=5617
|
|
|
|
#ifndef WEBRTC_API_MEDIACONSTRAINTSINTERFACE_H_
|
|
#define WEBRTC_API_MEDIACONSTRAINTSINTERFACE_H_
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include "webrtc/base/optional.h"
|
|
#include "webrtc/api/peerconnectioninterface.h"
|
|
|
|
namespace webrtc {
|
|
|
|
// MediaConstraintsInterface
|
|
// Interface used for passing arguments about media constraints
|
|
// to the MediaStream and PeerConnection implementation.
|
|
class MediaConstraintsInterface {
|
|
public:
|
|
struct Constraint {
|
|
Constraint() {}
|
|
Constraint(const std::string& key, const std::string value)
|
|
: key(key), value(value) {
|
|
}
|
|
std::string key;
|
|
std::string value;
|
|
};
|
|
|
|
class Constraints : public std::vector<Constraint> {
|
|
public:
|
|
bool FindFirst(const std::string& key, std::string* value) const;
|
|
};
|
|
|
|
virtual const Constraints& GetMandatory() const = 0;
|
|
virtual const Constraints& GetOptional() const = 0;
|
|
|
|
// Constraint keys used by a local video source.
|
|
// Specified by draft-alvestrand-constraints-resolution-00b
|
|
static const char kMinAspectRatio[]; // minAspectRatio
|
|
static const char kMaxAspectRatio[]; // maxAspectRatio
|
|
static const char kMaxWidth[]; // maxWidth
|
|
static const char kMinWidth[]; // minWidth
|
|
static const char kMaxHeight[]; // maxHeight
|
|
static const char kMinHeight[]; // minHeight
|
|
static const char kMaxFrameRate[]; // maxFrameRate
|
|
static const char kMinFrameRate[]; // minFrameRate
|
|
|
|
// Constraint keys used by a local audio source.
|
|
static const char kEchoCancellation[]; // echoCancellation
|
|
|
|
// These keys are google specific.
|
|
static const char kGoogEchoCancellation[]; // googEchoCancellation
|
|
|
|
static const char kExtendedFilterEchoCancellation[]; // googEchoCancellation2
|
|
static const char kDAEchoCancellation[]; // googDAEchoCancellation
|
|
static const char kAutoGainControl[]; // googAutoGainControl
|
|
static const char kExperimentalAutoGainControl[]; // googAutoGainControl2
|
|
static const char kNoiseSuppression[]; // googNoiseSuppression
|
|
static const char kExperimentalNoiseSuppression[]; // googNoiseSuppression2
|
|
static const char kIntelligibilityEnhancer[]; // intelligibilityEnhancer
|
|
static const char kLevelControl[]; // levelControl
|
|
static const char kHighpassFilter[]; // googHighpassFilter
|
|
static const char kTypingNoiseDetection[]; // googTypingNoiseDetection
|
|
static const char kAudioMirroring[]; // googAudioMirroring
|
|
|
|
// Google-specific constraint keys for a local video source
|
|
static const char kNoiseReduction[]; // googNoiseReduction
|
|
|
|
// Constraint keys for CreateOffer / CreateAnswer
|
|
// Specified by the W3C PeerConnection spec
|
|
static const char kOfferToReceiveVideo[]; // OfferToReceiveVideo
|
|
static const char kOfferToReceiveAudio[]; // OfferToReceiveAudio
|
|
static const char kVoiceActivityDetection[]; // VoiceActivityDetection
|
|
static const char kIceRestart[]; // IceRestart
|
|
// These keys are google specific.
|
|
static const char kUseRtpMux[]; // googUseRtpMUX
|
|
|
|
// Constraints values.
|
|
static const char kValueTrue[]; // true
|
|
static const char kValueFalse[]; // false
|
|
|
|
// PeerConnection constraint keys.
|
|
// Temporary pseudo-constraints used to enable DTLS-SRTP
|
|
static const char kEnableDtlsSrtp[]; // Enable DTLS-SRTP
|
|
// Temporary pseudo-constraints used to enable DataChannels
|
|
static const char kEnableRtpDataChannels[]; // Enable RTP DataChannels
|
|
// Google-specific constraint keys.
|
|
// Temporary pseudo-constraint for enabling DSCP through JS.
|
|
static const char kEnableDscp[]; // googDscp
|
|
// Constraint to enable IPv6 through JS.
|
|
static const char kEnableIPv6[]; // googIPv6
|
|
// Temporary constraint to enable suspend below min bitrate feature.
|
|
static const char kEnableVideoSuspendBelowMinBitrate[];
|
|
// googSuspendBelowMinBitrate
|
|
// Constraint to enable combined audio+video bandwidth estimation.
|
|
static const char kCombinedAudioVideoBwe[]; // googCombinedAudioVideoBwe
|
|
static const char kScreencastMinBitrate[]; // googScreencastMinBitrate
|
|
static const char kCpuOveruseDetection[]; // googCpuOveruseDetection
|
|
static const char kPayloadPadding[]; // googPayloadPadding
|
|
|
|
// The prefix of internal-only constraints whose JS set values should be
|
|
// stripped by Chrome before passed down to Libjingle.
|
|
static const char kInternalConstraintPrefix[];
|
|
|
|
protected:
|
|
// Dtor protected as objects shouldn't be deleted via this interface
|
|
virtual ~MediaConstraintsInterface() {}
|
|
};
|
|
|
|
bool FindConstraint(const MediaConstraintsInterface* constraints,
|
|
const std::string& key, bool* value,
|
|
size_t* mandatory_constraints);
|
|
|
|
bool FindConstraint(const MediaConstraintsInterface* constraints,
|
|
const std::string& key,
|
|
int* value,
|
|
size_t* mandatory_constraints);
|
|
|
|
// Copy all relevant constraints into an RTCConfiguration object.
|
|
void CopyConstraintsIntoRtcConfiguration(
|
|
const MediaConstraintsInterface* constraints,
|
|
PeerConnectionInterface::RTCConfiguration* configuration);
|
|
|
|
} // namespace webrtc
|
|
|
|
#endif // WEBRTC_API_MEDIACONSTRAINTSINTERFACE_H_
|