add walltime demuxer
This commit is contained in:
parent
8b5871123f
commit
eaa160539d
33
av/pktque/walltime.go
Normal file
33
av/pktque/walltime.go
Normal 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}
|
||||||
|
}
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user