Implement RemoveTrack

RemoveTrack properly removes the Sender, and culls
the RtpReceiver on the remote

Relates to #207
This commit is contained in:
Sean DuBois
2020-02-08 01:52:30 -08:00
committed by Sean DuBois
parent 6847421118
commit 512a7d3330
5 changed files with 139 additions and 50 deletions

View File

@@ -19,17 +19,17 @@ type RTPTransceiver struct {
}
func (t *RTPTransceiver) setSendingTrack(track *Track) error {
if track == nil {
return fmt.Errorf("track must not be nil")
}
t.Sender.track = track
switch t.Direction {
case RTPTransceiverDirectionRecvonly:
switch {
case track != nil && t.Direction == RTPTransceiverDirectionRecvonly:
t.Direction = RTPTransceiverDirectionSendrecv
case RTPTransceiverDirectionInactive:
case track != nil && t.Direction == RTPTransceiverDirectionInactive:
t.Direction = RTPTransceiverDirectionSendonly
case track == nil && t.Direction == RTPTransceiverDirectionSendrecv:
t.Direction = RTPTransceiverDirectionRecvonly
case track == nil && t.Direction == RTPTransceiverDirectionSendonly:
t.Direction = RTPTransceiverDirectionInactive
default:
return fmt.Errorf("invalid state change in RTPTransceiver.setSending")
}