Switch to channels instead of io.Reader
This commit is contained in:
parent
01e4b00ac7
commit
427588839f
14
goborator.go
14
goborator.go
|
@ -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]
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue