@@ -12,10 +12,6 @@ import (
1212 "github.com/pion/webrtc/v3"
1313)
1414
15- const (
16- maxSize = 1024
17- )
18-
1915// Receiver defines a interface for a track receivers
2016type Receiver interface {
2117 TrackID () string
@@ -34,7 +30,7 @@ type Receiver interface {
3430
3531// WebRTCReceiver receives a video track
3632type WebRTCReceiver struct {
37- sync.RWMutex
33+ sync.Mutex
3834 rtcpMu sync.RWMutex
3935
4036 peerID string
@@ -55,7 +51,7 @@ type WebRTCReceiver struct {
5551
5652// NewWebRTCReceiver creates a new webrtc track receivers
5753func NewWebRTCReceiver (receiver * webrtc.RTPReceiver , track * webrtc.TrackRemote , pid string ) Receiver {
58- w := & WebRTCReceiver {
54+ return & WebRTCReceiver {
5955 peerID : pid ,
6056 receiver : receiver ,
6157 trackID : track .ID (),
@@ -64,8 +60,6 @@ func NewWebRTCReceiver(receiver *webrtc.RTPReceiver, track *webrtc.TrackRemote,
6460 kind : track .Kind (),
6561 isSimulcast : len (track .RID ()) > 0 ,
6662 }
67-
68- return w
6963}
7064
7165func (w * WebRTCReceiver ) StreamID () string {
@@ -128,6 +122,7 @@ func (w *WebRTCReceiver) AddDownTrack(track *DownTrack, bestQualityFirst bool) {
128122 }
129123 }
130124 track .currentSpatialLayer = layer
125+ track .simulcast .targetSpatialLayer = layer
131126 track .trackType = SimulcastDownTrack
132127 } else {
133128 track .trackType = SimpleDownTrack
@@ -141,7 +136,7 @@ func (w *WebRTCReceiver) AddDownTrack(track *DownTrack, bestQualityFirst bool) {
141136func (w * WebRTCReceiver ) SubDownTrack (track * DownTrack , layer int ) error {
142137 w .Lock ()
143138 if dts := w .downTracks [layer ]; dts != nil {
144- dts = append (dts , track )
139+ w . downTracks [ layer ] = append (dts , track )
145140 } else {
146141 w .Unlock ()
147142 return errNoReceiverFound
@@ -215,13 +210,13 @@ func (w *WebRTCReceiver) readRTP(track *webrtc.TrackRemote, layer int) {
215210 continue
216211 }
217212
218- w .RLock ()
213+ w .Lock ()
219214 for _ , dt := range w .downTracks [layer ] {
220215 if err := dt .WriteRTP (pkt ); err == io .EOF {
221216 go w .DeleteDownTrack (layer , dt .id )
222217 }
223218 }
224- w .RUnlock ()
219+ w .Unlock ()
225220 }
226221}
227222
0 commit comments