Files
mediadevices/sampler.go
Lukas Herman 2465f227d7 Refractor track.go
* sampler now also sends the data to track
* Add a base track to reduce redundancy
2020-02-06 22:44:29 -08:00

33 lines
655 B
Go

package mediadevices
import (
"time"
"github.com/pion/webrtc/v2"
"github.com/pion/webrtc/v2/pkg/media"
)
type sampler struct {
track *webrtc.Track
clockRate float64
lastTimestamp time.Time
}
func newSampler(track *webrtc.Track) *sampler {
return &sampler{
track: track,
clockRate: float64(track.Codec().ClockRate),
lastTimestamp: time.Now(),
}
}
func (s *sampler) sample(b []byte) error {
now := time.Now()
duration := now.Sub(s.lastTimestamp).Seconds()
samples := uint32(s.clockRate * duration)
s.lastTimestamp = now
sample := media.Sample{Data: b, Samples: samples}
return s.track.WriteSample(sample)
}