queue: remove defer
This commit is contained in:
parent
96979889d0
commit
1832092ce2
@ -49,41 +49,43 @@ func NewQueue(streams []av.CodecData) *Queue {
|
|||||||
// Set max buffered total packets duration.
|
// Set max buffered total packets duration.
|
||||||
func (self *Queue) SetMaxDuration(dur time.Duration) {
|
func (self *Queue) SetMaxDuration(dur time.Duration) {
|
||||||
self.lock.Lock()
|
self.lock.Lock()
|
||||||
defer self.lock.Unlock()
|
|
||||||
|
|
||||||
self.maxdur = dur
|
self.maxdur = dur
|
||||||
for self.maxdur > 0 && len(self.pkts) >= 2 && self.pkts[len(self.pkts)-1].Time - self.pkts[0].Time > self.maxdur {
|
for self.maxdur > 0 && len(self.pkts) >= 2 && self.pkts[len(self.pkts)-1].Time - self.pkts[0].Time > self.maxdur {
|
||||||
self.pkts = self.pkts[1:]
|
self.pkts = self.pkts[1:]
|
||||||
self.head++
|
self.head++
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.lock.Unlock()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Currently buffered packets total duration.
|
// Currently buffered packets total duration.
|
||||||
func (self *Queue) Duration() (dur time.Duration) {
|
func (self *Queue) Duration() (dur time.Duration) {
|
||||||
self.lock.RLock()
|
self.lock.RLock()
|
||||||
defer self.lock.RUnlock()
|
|
||||||
|
|
||||||
if len(self.pkts) >= 2 {
|
if len(self.pkts) >= 2 {
|
||||||
dur = self.pkts[len(self.pkts)-1].Time - self.pkts[0].Time
|
dur = self.pkts[len(self.pkts)-1].Time - self.pkts[0].Time
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.lock.RUnlock()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// After Close() called, all QueueCursor's ReadPacket will return io.EOF.
|
// After Close() called, all QueueCursor's ReadPacket will return io.EOF.
|
||||||
func (self *Queue) Close() (err error) {
|
func (self *Queue) Close() (err error) {
|
||||||
self.lock.Lock()
|
self.lock.Lock()
|
||||||
defer self.lock.Unlock()
|
|
||||||
|
|
||||||
self.closed = true
|
self.closed = true
|
||||||
self.cond.Broadcast()
|
self.cond.Broadcast()
|
||||||
|
|
||||||
|
self.lock.Unlock()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// Put packet into buffer, old packets will be discared.
|
// Put packet into buffer, old packets will be discared.
|
||||||
func (self *Queue) WritePacket(pkt av.Packet) (err error) {
|
func (self *Queue) WritePacket(pkt av.Packet) (err error) {
|
||||||
self.lock.Lock()
|
self.lock.Lock()
|
||||||
defer self.lock.Unlock()
|
|
||||||
|
|
||||||
if self.maxdur > 0 && len(self.pkts) >= 2 && self.pkts[len(self.pkts)-1].Time - self.pkts[0].Time > self.maxdur {
|
if self.maxdur > 0 && len(self.pkts) >= 2 && self.pkts[len(self.pkts)-1].Time - self.pkts[0].Time > self.maxdur {
|
||||||
self.pkts = self.pkts[1:]
|
self.pkts = self.pkts[1:]
|
||||||
@ -92,6 +94,8 @@ func (self *Queue) WritePacket(pkt av.Packet) (err error) {
|
|||||||
self.pkts = append(self.pkts, pkt)
|
self.pkts = append(self.pkts, pkt)
|
||||||
self.tail++
|
self.tail++
|
||||||
self.cond.Broadcast()
|
self.cond.Broadcast()
|
||||||
|
|
||||||
|
self.lock.Unlock()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -164,9 +168,8 @@ func (self *Queue) DelayedGopCount(n int) *QueueCursor {
|
|||||||
|
|
||||||
func (self *QueueCursor) Streams() (streams []av.CodecData, err error) {
|
func (self *QueueCursor) Streams() (streams []av.CodecData, err error) {
|
||||||
self.que.lock.RLock()
|
self.que.lock.RLock()
|
||||||
defer self.que.lock.RUnlock()
|
|
||||||
|
|
||||||
streams = self.que.streams
|
streams = self.que.streams
|
||||||
|
self.que.lock.RUnlock()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user