Implement PeerConnection::AddTrack/RemoveTrack for Unified Plan

Bug: webrtc:7600
Change-Id: I2a48426a29ac67b6bdbd7817fe07273cdd5fd980
Reviewed-on: https://webrtc-review.googlesource.com/31647
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21305}
This commit is contained in:
Steve Anton
2017-12-14 10:23:57 -08:00
committed by Commit Bot
parent f1a7a8c602
commit f9381f0e73
11 changed files with 541 additions and 66 deletions

View File

@ -109,6 +109,25 @@ class RtpTransceiver final
return receivers_;
}
// Returns the backing object for the transceiver's Unified Plan sender.
rtc::scoped_refptr<RtpSenderInternal> sender_internal() const;
// Returns the backing object for the transceiver's Unified Plan receiver.
rtc::scoped_refptr<RtpReceiverInternal> receiver_internal() const;
// According to JSEP rules for SetRemoteDescription, RtpTransceivers can be
// reused only if they were added by AddTrack.
void set_created_by_addtrack(bool created_by_addtrack) {
created_by_addtrack_ = created_by_addtrack;
}
bool created_by_addtrack() const { return created_by_addtrack_; }
// Returns true if this transceiver has ever had the current direction set to
// sendonly or sendrecv.
bool has_ever_been_used_to_send() const {
return has_ever_been_used_to_send_;
}
// RtpTransceiverInterface implementation.
rtc::Optional<std::string> mid() const override;
rtc::scoped_refptr<RtpSenderInterface> sender() const override;
@ -133,6 +152,10 @@ class RtpTransceiver final
RtpTransceiverDirection direction_ = RtpTransceiverDirection::kInactive;
rtc::Optional<RtpTransceiverDirection> current_direction_;
rtc::Optional<std::string> mid_;
bool created_by_addtrack_ = false;
// TODO(steveanton): Implement this once there is a mechanism to set the
// current direction.
bool has_ever_been_used_to_send_ = false;
cricket::BaseChannel* channel_ = nullptr;
};