Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2538)

Unified Diff: webrtc/api/peerconnection.cc

Issue 1717583002: Non-constraint interfaces for all constrainable interfaces (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebase result (no intentional change) Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/api/peerconnection.cc
diff --git a/webrtc/api/peerconnection.cc b/webrtc/api/peerconnection.cc
index ee359271c2fc2573b2f209d9af2c365ed6a5970c..f9aad3d7662c9c2b5b95a311ba66ef32aed4a09b 100644
--- a/webrtc/api/peerconnection.cc
+++ b/webrtc/api/peerconnection.cc
@@ -452,6 +452,13 @@ bool ConvertRtcOptionsForOffer(
return true;
}
+bool ConvertRtcOptionsForAnswer(
+ const PeerConnectionInterface::RTCOfferAnswerOptions& rtc_options,
+ cricket::MediaSessionOptions* session_options) {
+ // TODO(hta): Figure out if there's a difference
+ return ConvertRtcOptionsForOffer(rtc_options, session_options);
+}
+
bool ParseConstraintsForAnswer(const MediaConstraintsInterface* constraints,
cricket::MediaSessionOptions* session_options) {
bool value = false;
@@ -566,7 +573,6 @@ PeerConnection::~PeerConnection() {
bool PeerConnection::Initialize(
const PeerConnectionInterface::RTCConfiguration& configuration,
- const MediaConstraintsInterface* constraints,
rtc::scoped_ptr<cricket::PortAllocator> allocator,
rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store,
PeerConnectionObserver* observer) {
@@ -591,13 +597,9 @@ bool PeerConnection::Initialize(
int portallocator_flags = port_allocator_->flags();
portallocator_flags |= cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET |
cricket::PORTALLOCATOR_ENABLE_IPV6;
- bool value;
// If IPv6 flag was specified, we'll not override it by experiment.
- if (FindConstraint(constraints, MediaConstraintsInterface::kEnableIPv6,
- &value, nullptr)) {
- if (!value) {
- portallocator_flags &= ~(cricket::PORTALLOCATOR_ENABLE_IPV6);
- }
+ if (configuration.disable_ipv6) {
+ portallocator_flags &= ~(cricket::PORTALLOCATOR_ENABLE_IPV6);
} else if (webrtc::field_trial::FindFullName("WebRTC-IPv6Default") ==
"Disabled") {
portallocator_flags &= ~(cricket::PORTALLOCATOR_ENABLE_IPV6);
@@ -619,11 +621,14 @@ bool PeerConnection::Initialize(
configuration.disable_prerenderer_smoothing;
// Find DSCP constraint.
- FindConstraint(constraints, MediaConstraintsInterface::kEnableDscp,
- &media_config.enable_dscp, NULL);
+ if (configuration.enable_dscp) {
+ media_config.enable_dscp = *(configuration.enable_dscp);
nisse-webrtc 2016/02/25 08:26:51 I agree this use of rtc::Optional makes some sense
hta-webrtc 2016/02/25 14:32:42 I was misremembering (it is the IPv6 that is contr
+ }
// Find constraints for cpu overuse detection.
- FindConstraint(constraints, MediaConstraintsInterface::kCpuOveruseDetection,
- &media_config.enable_cpu_overuse_detection, NULL);
+ if (configuration.cpu_overuse_detection) {
+ media_config.enable_cpu_overuse_detection =
+ *(configuration.cpu_overuse_detection);
+ }
media_controller_.reset(factory_->CreateMediaController(media_config));
@@ -636,8 +641,8 @@ bool PeerConnection::Initialize(
stats_.reset(new StatsCollector(this));
// Initialize the WebRtcSession. It creates transport channels etc.
- if (!session_->Initialize(factory_->options(), constraints,
- std::move(dtls_identity_store), configuration)) {
+ if (!session_->Initialize(factory_->options(), std::move(dtls_identity_store),
+ configuration)) {
return false;
}
@@ -1001,7 +1006,26 @@ void PeerConnection::CreateAnswer(
return;
}
- session_->CreateAnswer(observer, constraints, session_options);
+ session_->CreateAnswer(observer, session_options);
+}
+
+void PeerConnection::CreateAnswer(CreateSessionDescriptionObserver* observer,
+ const RTCOfferAnswerOptions& options) {
+ TRACE_EVENT0("webrtc", "PeerConnection::CreateAnswer");
+ if (!VERIFY(observer != nullptr)) {
+ LOG(LS_ERROR) << "CreateAnswer - observer is NULL.";
+ return;
+ }
+
+ cricket::MediaSessionOptions session_options;
+ if (!GetOptionsForAnswer(options, &session_options)) {
+ std::string error = "CreateAnswer called with invalid options.";
+ LOG(LS_ERROR) << error;
+ PostCreateSessionDescriptionFailure(observer, error);
+ return;
+ }
+
+ session_->CreateAnswer(observer, session_options);
}
void PeerConnection::SetLocalDescription(
@@ -1533,11 +1557,8 @@ bool PeerConnection::GetOptionsForOffer(
return true;
}
-bool PeerConnection::GetOptionsForAnswer(
- const MediaConstraintsInterface* constraints,
+void PeerConnection::FinishOptionsForAnswer(
cricket::MediaSessionOptions* session_options) {
- session_options->recv_audio = false;
- session_options->recv_video = false;
// TODO(deadbeef): Once we have transceivers, enumerate them here instead of
// ContentInfos.
if (session_->remote_description()) {
@@ -1548,10 +1569,6 @@ bool PeerConnection::GetOptionsForAnswer(
cricket::TransportOptions();
}
}
- if (!ParseConstraintsForAnswer(constraints, session_options)) {
- return false;
- }
-
AddSendStreams(session_options, senders_, rtp_data_channels_);
session_options->bundle_enabled =
session_options->bundle_enabled &&
@@ -1564,6 +1581,29 @@ bool PeerConnection::GetOptionsForAnswer(
if (session_->data_channel_type() == cricket::DCT_SCTP) {
session_options->data_channel_type = cricket::DCT_SCTP;
}
+}
+
+bool PeerConnection::GetOptionsForAnswer(
+ const MediaConstraintsInterface* constraints,
+ cricket::MediaSessionOptions* session_options) {
+ session_options->recv_audio = false;
+ session_options->recv_video = false;
+ if (!ParseConstraintsForAnswer(constraints, session_options)) {
+ return false;
+ }
+ FinishOptionsForAnswer(session_options);
+ return true;
+}
+
+bool PeerConnection::GetOptionsForAnswer(
+ const RTCOfferAnswerOptions& options,
+ cricket::MediaSessionOptions* session_options) {
+ session_options->recv_audio = false;
+ session_options->recv_video = false;
+ if (!ConvertRtcOptionsForAnswer(options, session_options)) {
+ return false;
+ }
+ FinishOptionsForAnswer(session_options);
return true;
}
@@ -2099,4 +2139,41 @@ DataChannel* PeerConnection::FindDataChannelBySid(int sid) const {
return nullptr;
}
+void CopyConstraintsIntoRtcConfiguration(
+ const MediaConstraintsInterface* constraints,
+ PeerConnectionInterface::RTCConfiguration* configuration) {
+ // Copy info from constraints into configuration, if present.
+ if (!constraints) {
+ return;
+ }
+
+ bool value;
+ if (FindConstraint(constraints, MediaConstraintsInterface::kEnableIPv6,
+ &value, nullptr)) {
+ if (!value) {
+ configuration->disable_ipv6 = true;
+ }
+ }
+ configuration->enable_dscp = ConstraintToOptionalBool(
+ constraints, MediaConstraintsInterface::kEnableDscp);
+ configuration->cpu_overuse_detection = ConstraintToOptionalBool(
+ constraints, MediaConstraintsInterface::kCpuOveruseDetection);
+ if (FindConstraint(constraints,
+ MediaConstraintsInterface::kEnableRtpDataChannels, &value,
+ NULL) &&
+ value) {
+ configuration->enable_rtp_data_channel = true;
+ }
+ // Find Suspend Below Min Bitrate constraint.
+ configuration->suspend_below_min_bitrate = ConstraintToOptionalBool(
+ constraints,
+ MediaConstraintsInterface::kEnableVideoSuspendBelowMinBitrate);
+ configuration->screencast_min_bitrate = ConstraintToOptionalInt(
+ constraints, MediaConstraintsInterface::kScreencastMinBitrate);
+ configuration->combined_audio_video_bwe = ConstraintToOptionalBool(
+ constraints, MediaConstraintsInterface::kCombinedAudioVideoBwe);
+ configuration->enable_dtls_srtp = ConstraintToOptionalBool(
+ constraints, MediaConstraintsInterface::kEnableDtlsSrtp);
+}
+
} // namespace webrtc

Powered by Google App Engine
This is Rietveld 408576698