mirror of
https://github.com/pion/mediadevices.git
synced 2025-09-26 20:41:46 +08:00

Add WithTrackGenerator option to specify TrackGenerator. This allows user to replace Track by user defined one that has WriteSample() and Codec() interface.
32 lines
620 B
Go
32 lines
620 B
Go
package mediadevices
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/pion/webrtc/v2/pkg/media"
|
|
)
|
|
|
|
type sampler struct {
|
|
track LocalTrack
|
|
clockRate float64
|
|
lastTimestamp time.Time
|
|
}
|
|
|
|
func newSampler(track LocalTrack) *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)
|
|
}
|