Ability to change blocksize on realtime filter, changed samplerate converter
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
parent
8b450fee0b
commit
b3f6b509f4
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue