Miscellaneous updates to PeerConnectionInterface comments
NoTry: true
Bug: None
Change-Id: I9cf4f77e4775ff9b97c71f6a9bdb2d7f159e7048
Reviewed-on: https://webrtc-review.googlesource.com/57240
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Seth Hampson <shampson@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22192}
diff --git a/api/peerconnectioninterface.h b/api/peerconnectioninterface.h
index 9463c34..7f7b910 100644
--- a/api/peerconnectioninterface.h
+++ b/api/peerconnectioninterface.h
@@ -9,7 +9,7 @@
*/
// This file contains the PeerConnection interface as defined in
-// http://dev.w3.org/2011/webrtc/editor/webrtc.html#peer-to-peer-connections.
+// https://w3c.github.io/webrtc-pc/#peer-to-peer-connections
//
// The PeerConnectionFactory class provides factory methods to create
// PeerConnection, MediaStream and MediaStreamTrack objects.
@@ -164,7 +164,7 @@
class PeerConnectionInterface : public rtc::RefCountInterface {
public:
- // See http://dev.w3.org/2011/webrtc/editor/webrtc.html#state-definitions .
+ // See https://w3c.github.io/webrtc-pc/#state-definitions
enum SignalingState {
kStable,
kHaveLocalOffer,
@@ -242,14 +242,14 @@
kAll
};
- // https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-08#section-4.1.1
+ // https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-24#section-4.1.1
enum BundlePolicy {
kBundlePolicyBalanced,
kBundlePolicyMaxBundle,
kBundlePolicyMaxCompat
};
- // https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-09#section-4.1.1
+ // https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-24#section-4.1.1
enum RtcpMuxPolicy {
kRtcpMuxPolicyNegotiate,
kRtcpMuxPolicyRequire,
@@ -350,7 +350,7 @@
////////////////////////////////////////////////////////////////////////
// The below few fields mirror the standard RTCConfiguration dictionary:
- // https://www.w3.org/TR/webrtc/#rtcconfiguration-dictionary
+ // https://w3c.github.io/webrtc-pc/#rtcconfiguration-dictionary
////////////////////////////////////////////////////////////////////////
// TODO(pthatcher): Rename this ice_servers, but update Chromium
@@ -522,14 +522,14 @@
// kPlanB will cause PeerConnection to create offers and answers with at
// most one audio and one video m= section with multiple RtpSenders and
// RtpReceivers specified as multiple a=ssrc lines within the section. This
- // will also cause PeerConnection to reject offers/answers with multiple m=
- // sections of the same media type.
+ // will also cause PeerConnection to ignore all but the first m= section of
+ // the same media type.
//
// kUnifiedPlan will cause PeerConnection to create offers and answers with
// multiple m= sections where each m= section maps to one RtpSender and one
- // RtpReceiver (an RtpTransceiver), either both audio or both video. Plan B
- // style offers or answers will be rejected in calls to SetLocalDescription
- // or SetRemoteDescription.
+ // RtpReceiver (an RtpTransceiver), either both audio or both video. This
+ // will also cause PeerConnection to ignore all but the first a=ssrc lines
+ // that form a Plan B stream.
//
// For users who only send at most one audio and one video track, this
// choice does not matter and should be left as kDefault.
@@ -539,8 +539,6 @@
//
// For users who wish to send multiple audio/video streams and/or wish to
// use the new RtpTransceiver API, specify kUnifiedPlan.
- //
- // TODO(steveanton): Implement support for kUnifiedPlan.
SdpSemantics sdp_semantics = SdpSemantics::kDefault;
//
@@ -556,8 +554,9 @@
// The default value for constraint offerToReceiveX:true.
static const int kOfferToReceiveMediaTrue = 1;
- // These have been removed from the standard in favor of the "transceiver"
- // API, but given that we don't support that API, we still have them here.
+ // These options are left as backwards compatibility for clients who need
+ // "Plan B" semantics. Clients who have switched to "Unified Plan" semantics
+ // should use the RtpTransceiver API (AddTransceiver) instead.
//
// offer_to_receive_X set to 1 will cause a media description to be
// generated in the offer, even if no tracks of that type have been added.
@@ -599,10 +598,14 @@
};
// Accessor methods to active local streams.
+ // This method is not supported with kUnifiedPlan semantics. Please use
+ // GetSenders() instead.
virtual rtc::scoped_refptr<StreamCollectionInterface>
local_streams() = 0;
// Accessor methods to remote streams.
+ // This method is not supported with kUnifiedPlan semantics. Please use
+ // GetReceivers() instead.
virtual rtc::scoped_refptr<StreamCollectionInterface>
remote_streams() = 0;
@@ -615,11 +618,17 @@
// stream, with the one difference that if "stream->AddTrack(...)" is called
// later, the PeerConnection will automatically pick up the new track. Though
// this functionality will be deprecated in the future.
+ //
+ // This method is not supported with kUnifiedPlan semantics. Please use
+ // AddTrack instead.
virtual bool AddStream(MediaStreamInterface* stream) = 0;
// Remove a MediaStream from this PeerConnection.
// Note that a SessionDescription negotiation is needed before the
// remote peer is notified.
+ //
+ // This method is not supported with kUnifiedPlan semantics. Please use
+ // RemoveTrack instead.
virtual void RemoveStream(MediaStreamInterface* stream) = 0;
// Add a new MediaStreamTrack to be sent on this PeerConnection, and return
@@ -643,7 +652,11 @@
// signature with stream labels.
virtual rtc::scoped_refptr<RtpSenderInterface> AddTrack(
MediaStreamTrackInterface* track,
- std::vector<MediaStreamInterface*> streams) = 0;
+ std::vector<MediaStreamInterface*> streams) {
+ // Default implementation provided so downstream implementations can remove
+ // this.
+ return nullptr;
+ }
// Remove an RtpSender from this PeerConnection.
// Returns true on success.
@@ -721,29 +734,34 @@
//
// |stream_id| is used to populate the msid attribute; if empty, one will
// be generated automatically.
+ //
+ // This method is not supported with kUnifiedPlan semantics. Please use
+ // AddTransceiver instead.
virtual rtc::scoped_refptr<RtpSenderInterface> CreateSender(
const std::string& kind,
const std::string& stream_id) {
return rtc::scoped_refptr<RtpSenderInterface>();
}
- // Get all RtpSenders, created either through AddStream, AddTrack, or
- // CreateSender. Note that these are "Plan B SDP" RtpSenders, not "Unified
- // Plan SDP" RtpSenders, which means that all senders of a specific media
- // type share the same media description.
+ // If Plan B semantics are specified, gets all RtpSenders, created either
+ // through AddStream, AddTrack, or CreateSender. All senders of a specific
+ // media type share the same media description.
+ //
+ // If Unified Plan semantics are specified, gets the RtpSender for each
+ // RtpTransceiver.
virtual std::vector<rtc::scoped_refptr<RtpSenderInterface>> GetSenders()
const {
return std::vector<rtc::scoped_refptr<RtpSenderInterface>>();
}
- // Get all RtpReceivers, created when a remote description is applied.
- // Note that these are "Plan B SDP" RtpReceivers, not "Unified Plan SDP"
- // RtpReceivers, which means that all receivers of a specific media type
- // share the same media description.
+ // If Plan B semantics are specified, gets all RtpReceivers created when a
+ // remote description is applied. All receivers of a specific media type share
+ // the same media description. It is also possible to have a media description
+ // with no associated RtpReceivers, if the directional attribute does not
+ // indicate that the remote peer is sending any media.
//
- // It is also possible to have a media description with no associated
- // RtpReceivers, if the directional attribute does not indicate that the
- // remote peer is sending any media.
+ // If Unified Plan semantics are specified, gets the RtpReceiver for each
+ // RtpTransceiver.
virtual std::vector<rtc::scoped_refptr<RtpReceiverInterface>> GetReceivers()
const {
return std::vector<rtc::scoped_refptr<RtpReceiverInterface>>();
@@ -751,6 +769,7 @@
// Get all RtpTransceivers, created either through AddTransceiver, AddTrack or
// by a remote description applied with SetRemoteDescription.
+ //
// Note: This method is only available when Unified Plan is enabled (see
// RTCConfiguration).
virtual std::vector<rtc::scoped_refptr<RtpTransceiverInterface>>
@@ -767,7 +786,7 @@
// break third party projects. As soon as they have been updated this should
// be changed to "= 0;".
virtual void GetStats(RTCStatsCollectorCallback* callback) {}
- // Clear cached stats in the rtcstatscollector.
+ // Clear cached stats in the RTCStatsCollector.
// Exposed for testing while waiting for automatic cache clear to work.
// https://bugs.webrtc.org/8693
virtual void ClearStatsCache() {}
@@ -1053,7 +1072,7 @@
// Called when the ICE connection receiving status changes.
virtual void OnIceConnectionReceivingChange(bool receiving) {}
- // This is called when a receiver and its track is created.
+ // This is called when a receiver and its track are created.
// TODO(zhihuang): Make this pure virtual when all subclasses implement it.
// Note: This is called with both Plan B and Unified Plan semantics. Unified
// Plan users should prefer OnTrack, OnAddTrack is only called as backwards