Switch to channels instead of io.Reader

This commit is contained in:
DataHoarder 2022-01-26 14:16:22 +01:00
parent 01e4b00ac7
commit 427588839f

View file

@ -4,9 +4,7 @@ package goborator
// #include <cgaborator.h>
import "C"
import (
"encoding/binary"
"fmt"
"io"
"unsafe"
)
@ -135,22 +133,20 @@ func (g *Gaborator) gaborTransform(audioData []float32) {
}
}
func (g *Gaborator) GaborTransform(reader io.Reader) [][]float32 {
var err error
var f float32
func (g *Gaborator) GaborTransform(source chan float32) [][]float32 {
var audioData []float32
audioData := make([]float32, g.audioBlockSize)
for {
err = binary.Read(reader, binary.LittleEndian, &f)
if err != nil {
f, more := <-source
if !more {
break
}
audioData = append(audioData, f)
for len(audioData) >= g.audioBlockSize {
g.gaborTransform(audioData[0:g.audioBlockSize])
audioData = audioData[g.audioBlockSize:]
audioData = audioData[:0]
}
}