Files
engine/data_track.go
2022-02-26 13:32:29 +08:00

58 lines
1.1 KiB
Go

package engine
// import (
// "sync"
// "time"
// "unsafe"
// "m7s.live/engine/v4/util"
// )
// type DataTrack struct {
// LockRing[any]
// BaseTrack
// *LockFrame[any]
// sync.Locker // 写入锁,可选,单一写入可以不加锁
// }
// func (s *Stream) NewDataTrack(l sync.Locker) (dt *DataTrack) {
// dt = &DataTrack{
// Locker: l,
// }
// dt.Stream = s
// dt.Init(s.Context, 256)
// dt.setCurrent()
// return
// }
// func (dt *DataTrack) Push(data any) {
// if dt.Locker != nil {
// dt.Lock()
// defer dt.Unlock()
// }
// dt.Timestamp = time.Now()
// dt.bytesIn = (int(unsafe.Sizeof(data)))
// dt.GetBPS()
// dt.Write(data)
// dt.setCurrent()
// }
// func (at *DataTrack) setCurrent() {
// at.LockFrame = at.Current()
// }
// func (dt *DataTrack) Play(onData func(DataFrame[any]), exit1, exit2 <-chan struct{}) {
// dr := util.Clone(dt.LockRing)
// for dp := dr.Read(); ; dp = dr.Read() {
// select {
// case <-exit1:
// return
// case <-exit2:
// return
// default:
// onData(dp)
// dr.MoveNext()
// }
// }
// }