add walltime demuxer

This commit is contained in:
nareix 2016-07-12 14:36:48 +08:00
parent 8b5871123f
commit eaa160539d

33
av/pktque/walltime.go Normal file
View File

@ -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}
}