From eaa160539dfe911582ea5b0b4a9e1459277ec711 Mon Sep 17 00:00:00 2001 From: nareix Date: Tue, 12 Jul 2016 14:36:48 +0800 Subject: [PATCH] add walltime demuxer --- av/pktque/walltime.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 av/pktque/walltime.go diff --git a/av/pktque/walltime.go b/av/pktque/walltime.go new file mode 100644 index 0000000..45d6535 --- /dev/null +++ b/av/pktque/walltime.go @@ -0,0 +1,33 @@ +package pktque + +import ( + "time" + "github.com/nareix/joy4/av" +) + +type WalltimeDemuxer struct { + av.Demuxer + firsttime time.Time +} + +func (self *WalltimeDemuxer) ReadPacket() (pkt av.Packet, err error) { + if pkt, err = self.Demuxer.ReadPacket(); err != nil { + return + } + if pkt.Idx == 0 { + if self.firsttime.IsZero() { + self.firsttime = time.Now() + } + pkttime := self.firsttime.Add(pkt.Time) + delta := pkttime.Sub(time.Now()) + if delta > 0 { + time.Sleep(delta) + } + } + return +} + +func NewWalltimeDemuxer(demuxer av.Demuxer) *WalltimeDemuxer { + return &WalltimeDemuxer{Demuxer: demuxer} +} +