Ability to change blocksize on realtime filter, changed samplerate converter
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
DataHoarder 2022-02-25 23:30:57 +01:00
parent 8b450fee0b
commit b3f6b509f4

View file

@ -49,16 +49,22 @@ func (f BufferFilter) Process(source Source) Source {
}
type RealTimeFilter struct {
blocksPerSecond int
}
func NewRealTimeFilter(blocksPerSecond int) RealTimeFilter {
return RealTimeFilter{
blocksPerSecond: blocksPerSecond,
}
}
func (f RealTimeFilter) Process(source Source) Source {
outBlocks := make(chan []float32)
const blocksPerSecond = 10
if source.SampleRate%blocksPerSecond != 0 {
log.Panicf("%d %% %d != 0", source.SampleRate, blocksPerSecond)
if source.SampleRate%f.blocksPerSecond != 0 {
log.Panicf("%d %% %d != 0", source.SampleRate, f.blocksPerSecond)
}
blockSize := (source.SampleRate / blocksPerSecond) * source.Channels
throttler := time.Tick(time.Second / blocksPerSecond)
blockSize := (source.SampleRate / f.blocksPerSecond) * source.Channels
throttler := time.Tick(time.Second / time.Duration(f.blocksPerSecond))
go func() {
defer close(outBlocks)
@ -191,12 +197,14 @@ func (f ResampleFilter) Process(source Source) Source {
}
block = block[blockSize:]
}
b, err := samplerateConverter.Process(block, ratio, false)
if err != nil {
log.Panic(err)
}
if len(b) > 0 {
outBlocks <- b
if len(block) > 0 {
b, err := samplerateConverter.Process(block, ratio, false)
if err != nil {
log.Panic(err)
}
if len(b) > 0 {
outBlocks <- b
}
}
}
b, err := samplerateConverter.Process([]float32{}, ratio, true)