1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
/*
* 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 kNoiseSuppression[]; // googNoiseSuppression
static const char kHighpassFilter[]; // googHighpassFilter
static const char kAudioMirroring[]; // googAudioMirroring
static const char
kAudioNetworkAdaptorConfig[]; // googAudioNetworkAdaptorConfig
static const char kInitAudioRecordingOnSend[]; // InitAudioRecordingOnSend;
// 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.
// 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[];
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_
|