4 changed files with 37 additions and 11 deletions
@ -0,0 +1,31 @@
|
||||
package main |
||||
|
||||
import ( |
||||
"time" |
||||
|
||||
"github.com/faiface/beep" |
||||
) |
||||
|
||||
type RateLimitedStreamer struct { |
||||
streamer beep.Streamer |
||||
rate time.Duration |
||||
last time.Time |
||||
} |
||||
|
||||
func NewRateLimitedStreamer(streamer beep.Streamer, rate time.Duration) *RateLimitedStreamer { |
||||
s := RateLimitedStreamer{streamer: streamer, rate: rate} |
||||
return &s |
||||
} |
||||
|
||||
func (s *RateLimitedStreamer) Stream(samples [][2]float64) (n int, ok bool) { |
||||
if time.Since(s.last) < s.rate { |
||||
time.Sleep(time.Until(s.last.Add(s.rate))) |
||||
} |
||||
s.last = time.Now() |
||||
|
||||
return s.streamer.Stream(samples) |
||||
} |
||||
|
||||
func (s *RateLimitedStreamer) Err() error { |
||||
return s.streamer.Err() |
||||
} |
Loading…
Reference in new issue