123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- /*
- * 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.
- */
- // Implementation of the w3c constraints spec is the responsibility of the
- // browser. Chrome no longer uses the constraints api declared here, and it will
- // be removed from WebRTC.
- // https://bugs.chromium.org/p/webrtc/issues/detail?id=9239
- #ifndef SDK_MEDIA_CONSTRAINTS_H_
- #define SDK_MEDIA_CONSTRAINTS_H_
- #include <stddef.h>
- #include <string>
- #include <utility>
- #include <vector>
- #include "api/audio_options.h"
- #include "api/peer_connection_interface.h"
- namespace webrtc {
- // Class representing constraints, as used by the android and objc apis.
- //
- // Constraints may be either "mandatory", which means that unless satisfied,
- // the method taking the constraints should fail, or "optional", which means
- // they may not be satisfied..
- class MediaConstraints {
- 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:
- Constraints() = default;
- Constraints(std::initializer_list<Constraint> l)
- : std::vector<Constraint>(l) {}
- bool FindFirst(const std::string& key, std::string* value) const;
- };
- MediaConstraints() = default;
- MediaConstraints(Constraints mandatory, Constraints optional)
- : mandatory_(std::move(mandatory)), optional_(std::move(optional)) {}
- // Constraint keys used by a local audio source.
- // These keys are google specific.
- static const char kGoogEchoCancellation[]; // googEchoCancellation
- static const char kAutoGainControl[]; // googAutoGainControl
- static const char kExperimentalAutoGainControl[]; // googAutoGainControl2
- static const char kNoiseSuppression[]; // googNoiseSuppression
- static const char kExperimentalNoiseSuppression[]; // googNoiseSuppression2
- static const char kHighpassFilter[]; // googHighpassFilter
- static const char kTypingNoiseDetection[]; // googTypingNoiseDetection
- static const char kAudioMirroring[]; // googAudioMirroring
- static const char
- kAudioNetworkAdaptorConfig[]; // goodAudioNetworkAdaptorConfig
- // 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
- // Constraint to enable negotiating raw RTP packetization using attribute
- // "a=packetization:<payload_type> raw" in the SDP for all video payload.
- static const char kRawPacketizationForVideoEnabled[];
- // Specifies number of simulcast layers for all video tracks
- // with a Plan B offer/answer
- // (see RTCOfferAnswerOptions::num_simulcast_layers).
- static const char kNumSimulcastLayers[];
- ~MediaConstraints() = default;
- const Constraints& GetMandatory() const { return mandatory_; }
- const Constraints& GetOptional() const { return optional_; }
- private:
- const Constraints mandatory_ = {};
- const Constraints optional_ = {};
- };
- // Copy all relevant constraints into an RTCConfiguration object.
- void CopyConstraintsIntoRtcConfiguration(
- const MediaConstraints* constraints,
- PeerConnectionInterface::RTCConfiguration* configuration);
- // Copy all relevant constraints into an AudioOptions object.
- void CopyConstraintsIntoAudioOptions(const MediaConstraints* constraints,
- cricket::AudioOptions* options);
- bool CopyConstraintsIntoOfferAnswerOptions(
- const MediaConstraints* constraints,
- PeerConnectionInterface::RTCOfferAnswerOptions* offer_answer_options);
- } // namespace webrtc
- #endif // SDK_MEDIA_CONSTRAINTS_H_
|