( trackLocal webrtc.TrackLocal, params types.AddTrackParams, enabledCodecs []*livekit.Codec, rtcpFeedbackConfig RTCPFeedbackConfig, )
| 1055 | } |
| 1056 | |
| 1057 | func (t *PCTransport) AddTrack( |
| 1058 | trackLocal webrtc.TrackLocal, |
| 1059 | params types.AddTrackParams, |
| 1060 | enabledCodecs []*livekit.Codec, |
| 1061 | rtcpFeedbackConfig RTCPFeedbackConfig, |
| 1062 | ) (sender *webrtc.RTPSender, transceiver *webrtc.RTPTransceiver, err error) { |
| 1063 | t.lock.Lock() |
| 1064 | canReuse := t.canReuseTransceiver |
| 1065 | td, ok := t.previousTrackDescription[trackLocal.ID()] |
| 1066 | if ok { |
| 1067 | delete(t.previousTrackDescription, trackLocal.ID()) |
| 1068 | } |
| 1069 | t.lock.Unlock() |
| 1070 | |
| 1071 | // keep track use same mid after migration if possible |
| 1072 | if td != nil && td.sender != nil { |
| 1073 | for _, tr := range t.pc.GetTransceivers() { |
| 1074 | if tr.Mid() == td.mid { |
| 1075 | return td.sender, tr, tr.SetSender(td.sender, trackLocal) |
| 1076 | } |
| 1077 | } |
| 1078 | } |
| 1079 | |
| 1080 | // if never negotiated with client, can't reuse transceiver for track not subscribed before migration |
| 1081 | if !canReuse { |
| 1082 | return t.AddTransceiverFromTrack(trackLocal, params, enabledCodecs, rtcpFeedbackConfig) |
| 1083 | } |
| 1084 | |
| 1085 | sender, err = t.pc.AddTrack(trackLocal) |
| 1086 | if err != nil { |
| 1087 | return |
| 1088 | } |
| 1089 | |
| 1090 | for _, tr := range t.pc.GetTransceivers() { |
| 1091 | if tr.Sender() == sender { |
| 1092 | transceiver = tr |
| 1093 | break |
| 1094 | } |
| 1095 | } |
| 1096 | |
| 1097 | if transceiver == nil { |
| 1098 | err = ErrNoTransceiver |
| 1099 | return |
| 1100 | } |
| 1101 | |
| 1102 | t.queueOrConfigureSender( |
| 1103 | transceiver, |
| 1104 | enabledCodecs, |
| 1105 | rtcpFeedbackConfig, |
| 1106 | params.Stereo, |
| 1107 | !params.Red || !t.params.ClientInfo.SupportsAudioRED(), |
| 1108 | ) |
| 1109 | |
| 1110 | t.adjustNumOutstandingMedia(transceiver) |
| 1111 | return |
| 1112 | } |
| 1113 | |
| 1114 | func (t *PCTransport) AddTransceiverFromTrack( |
nothing calls this directly
no test coverage detected