13 changed files with 8 additions and 160 deletions
@ -1,58 +0,0 @@
@@ -1,58 +0,0 @@
|
||||
package rtcpsenderset |
||||
|
||||
import ( |
||||
"time" |
||||
|
||||
"github.com/aler9/gortsplib" |
||||
"github.com/aler9/gortsplib/pkg/rtcpsender" |
||||
"github.com/pion/rtcp" |
||||
"github.com/pion/rtp/v2" |
||||
) |
||||
|
||||
// RTCPSenderSet is a set of RTCP senders.
|
||||
type RTCPSenderSet struct { |
||||
writePacketRTCP func(int, rtcp.Packet) |
||||
senders []*rtcpsender.RTCPSender |
||||
|
||||
// in
|
||||
terminate chan struct{} |
||||
|
||||
// out
|
||||
done chan struct{} |
||||
} |
||||
|
||||
// New allocates a RTCPSenderSet.
|
||||
func New( |
||||
tracks gortsplib.Tracks, |
||||
writePacketRTCP func(int, rtcp.Packet), |
||||
) *RTCPSenderSet { |
||||
s := &RTCPSenderSet{ |
||||
writePacketRTCP: writePacketRTCP, |
||||
terminate: make(chan struct{}), |
||||
done: make(chan struct{}), |
||||
} |
||||
|
||||
s.senders = make([]*rtcpsender.RTCPSender, len(tracks)) |
||||
for i, track := range tracks { |
||||
ci := i |
||||
|
||||
s.senders[i] = rtcpsender.New(10*time.Second, |
||||
track.ClockRate(), func(pkt rtcp.Packet) { |
||||
writePacketRTCP(ci, pkt) |
||||
}) |
||||
} |
||||
|
||||
return s |
||||
} |
||||
|
||||
// Close closes a RTCPSenderSet.
|
||||
func (s *RTCPSenderSet) Close() { |
||||
for _, sender := range s.senders { |
||||
sender.Close() |
||||
} |
||||
} |
||||
|
||||
// OnPacketRTP sends a RTP packet to the senders.
|
||||
func (s *RTCPSenderSet) OnPacketRTP(trackID int, pkt *rtp.Packet) { |
||||
s.senders[trackID].ProcessPacketRTP(time.Now(), pkt) |
||||
} |
Loading…
Reference in new issue