pktque: add FixTime
This commit is contained in:
parent
040331c059
commit
589edba35a
@ -74,15 +74,34 @@ func (self *WaitKeyFrame) ModifyPacket(pkt *av.Packet, streams []av.CodecData, v
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
type TimeStartFromZero struct {
|
type FixTime struct {
|
||||||
timebase time.Duration
|
zerobase time.Duration
|
||||||
|
incrbase time.Duration
|
||||||
|
lasttime time.Duration
|
||||||
|
StartFromZero bool
|
||||||
|
MakeIncrement bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *TimeStartFromZero) ModifyPacket(pkt *av.Packet, streams []av.CodecData, videoidx int, audioidx int) (drop bool, err error) {
|
func (self *FixTime) ModifyPacket(pkt *av.Packet, streams []av.CodecData, videoidx int, audioidx int) (drop bool, err error) {
|
||||||
if self.timebase == 0 {
|
if self.StartFromZero {
|
||||||
self.timebase = pkt.Time
|
if self.zerobase == 0 {
|
||||||
|
self.zerobase = pkt.Time
|
||||||
|
}
|
||||||
|
pkt.Time -= self.zerobase
|
||||||
}
|
}
|
||||||
pkt.Time -= self.timebase
|
|
||||||
|
if self.MakeIncrement {
|
||||||
|
pkt.Time -= self.incrbase
|
||||||
|
if self.lasttime == 0 {
|
||||||
|
self.lasttime = pkt.Time
|
||||||
|
}
|
||||||
|
if pkt.Time < self.lasttime || pkt.Time > self.lasttime+time.Millisecond*500 {
|
||||||
|
self.incrbase += pkt.Time - self.lasttime
|
||||||
|
pkt.Time = self.lasttime
|
||||||
|
}
|
||||||
|
self.lasttime = pkt.Time
|
||||||
|
}
|
||||||
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user