mirror of
https://github.com/AlexxIT/go2rtc.git
synced 2025-09-26 20:31:11 +08:00
Compare commits
4 Commits
3e1b01073b
...
699a995e8c
Author | SHA1 | Date | |
---|---|---|---|
![]() |
699a995e8c | ||
![]() |
ce02b03a73 | ||
![]() |
487527f5a5 | ||
![]() |
0669cfbebf |
@@ -97,8 +97,9 @@ func NewSender(media *Media, codec *Codec) *Sender {
|
||||
buf: buf,
|
||||
}
|
||||
s.Input = func(packet *Packet) {
|
||||
// writing to nil chan - OK, writing to closed chan - panic
|
||||
s.mu.Lock()
|
||||
if s.buf != nil {
|
||||
// unblocked write to channel
|
||||
select {
|
||||
case s.buf <- packet:
|
||||
s.Bytes += len(packet.Payload)
|
||||
@@ -106,6 +107,9 @@ func NewSender(media *Media, codec *Codec) *Sender {
|
||||
default:
|
||||
s.Drops++
|
||||
}
|
||||
} else {
|
||||
s.Drops++
|
||||
}
|
||||
s.mu.Unlock()
|
||||
}
|
||||
s.Output = func(packet *Packet) {
|
||||
@@ -139,13 +143,13 @@ func (s *Sender) Start() {
|
||||
}
|
||||
s.done = make(chan struct{})
|
||||
|
||||
go func() {
|
||||
// for range on nil chan is OK
|
||||
for packet := range s.buf {
|
||||
// pass buf directly so that it's impossible for buf to be nil
|
||||
go func(buf chan *Packet) {
|
||||
for packet := range buf {
|
||||
s.Output(packet)
|
||||
}
|
||||
close(s.done)
|
||||
}()
|
||||
}(s.buf)
|
||||
}
|
||||
|
||||
func (s *Sender) Wait() {
|
||||
|
Reference in New Issue
Block a user