diff --git a/av/pubsub/queue.go b/av/pubsub/queue.go index 81bfd60..6cb02de 100644 --- a/av/pubsub/queue.go +++ b/av/pubsub/queue.go @@ -106,6 +106,20 @@ func (self *Queue) WritePacket(pkt av.Packet) (err error) { return } +func (self *Queue) Clean() { + self.lock.Lock() + for self.buf.Count > 1 { + pkt := self.buf.Pop() + if pkt.Idx == int8(self.videoidx) && pkt.IsKeyFrame { + self.curgopcount-- + } + if self.curgopcount < self.maxgopcount { + break + } + } + self.lock.Unlock() +} + type QueueCursor struct { que *Queue pos pktque.BufPos