From 2614fc9e9a298b35dcdeab7c703a3250f0ec15b5 Mon Sep 17 00:00:00 2001 From: nareix Date: Mon, 18 Jul 2016 08:15:17 +0800 Subject: [PATCH] pktque: AVSync bugfix --- av/pktque/filters.go | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/av/pktque/filters.go b/av/pktque/filters.go index 0e105ea..8e1d271 100644 --- a/av/pktque/filters.go +++ b/av/pktque/filters.go @@ -108,7 +108,6 @@ func (self *FixTime) ModifyPacket(pkt *av.Packet, streams []av.CodecData, videoi type AVSync struct { MaxTimeDiff time.Duration time []time.Duration - timebase time.Duration } func (self *AVSync) ModifyPacket(pkt *av.Packet, streams []av.CodecData, videoidx int, audioidx int) (drop bool, err error) { @@ -120,20 +119,18 @@ func (self *AVSync) ModifyPacket(pkt *av.Packet, streams []av.CodecData, videoid } start, end, correctable, correcttime := self.check(int(pkt.Idx)) - time := pkt.Time - self.timebase - if time >= start && time < end { - pkt.Time = time - self.time[pkt.Idx] = time + if pkt.Time >= start && pkt.Time < end { + self.time[pkt.Idx] = pkt.Time } else { if correctable { - self.timebase = pkt.Time - correcttime pkt.Time = correcttime - self.time[pkt.Idx] = correcttime + for i := range self.time { + self.time[i] = correcttime + } } else { drop = true } } - return } @@ -150,7 +147,7 @@ func (self *AVSync) check(i int) (start time.Duration, end time.Duration, correc } allthesame := self.time[minidx] == self.time[maxidx] - if i == minidx { + if i == maxidx { if allthesame { correctable = true } else {