2022-01-23 20:04:09 +00:00
|
|
|
package goborator
|
|
|
|
|
|
|
|
import (
|
2022-01-25 12:59:35 +00:00
|
|
|
"fmt"
|
2022-01-23 20:04:09 +00:00
|
|
|
"os"
|
2023-10-15 14:24:06 +00:00
|
|
|
"slices"
|
2022-01-23 20:04:09 +00:00
|
|
|
"testing"
|
2022-01-29 04:59:21 +00:00
|
|
|
"time"
|
2022-07-13 18:28:00 +00:00
|
|
|
"unsafe"
|
2022-01-23 20:04:09 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestGoborator(t *testing.T) {
|
2022-07-13 18:28:00 +00:00
|
|
|
ob := NewGaborator(1<<17, 16000, 85, 110, 7040, 440, 128)
|
2022-01-25 12:59:35 +00:00
|
|
|
defer ob.ProcessingFinished()
|
2022-01-23 20:04:09 +00:00
|
|
|
|
|
|
|
file, err := os.Open("sample/test.raw")
|
|
|
|
if err != nil {
|
|
|
|
t.Error(err)
|
|
|
|
return
|
|
|
|
}
|
2022-01-27 18:04:22 +00:00
|
|
|
|
2022-07-13 18:28:00 +00:00
|
|
|
channel := make(chan []float32)
|
2022-01-27 18:04:22 +00:00
|
|
|
|
|
|
|
go func() {
|
|
|
|
defer close(channel)
|
|
|
|
defer file.Close()
|
|
|
|
|
2022-07-13 18:28:00 +00:00
|
|
|
buf := make([]byte, ob.GetBlockSize()*4)
|
2022-01-27 18:04:22 +00:00
|
|
|
for {
|
2022-07-13 18:28:00 +00:00
|
|
|
n, err := file.Read(buf)
|
|
|
|
|
|
|
|
if n > 4 {
|
2022-12-12 17:36:59 +00:00
|
|
|
channel <- slices.Clone(unsafe.Slice((*float32)(unsafe.Pointer(&buf[0])), n/4))
|
2022-07-13 18:28:00 +00:00
|
|
|
}
|
2022-01-27 18:04:22 +00:00
|
|
|
if err != nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}()
|
|
|
|
|
2022-01-29 04:59:21 +00:00
|
|
|
start := time.Now()
|
2022-07-13 18:28:00 +00:00
|
|
|
var data [][]float32
|
2023-10-15 14:24:06 +00:00
|
|
|
err = ob.GaborBlockTransform(channel, func(output []float32) {
|
|
|
|
data = append(data, output)
|
|
|
|
})
|
|
|
|
if err != nil {
|
|
|
|
t.Fatal(err)
|
2022-01-25 12:59:35 +00:00
|
|
|
}
|
2022-01-27 18:04:22 +00:00
|
|
|
|
2022-07-13 18:28:00 +00:00
|
|
|
end := time.Now().Sub(start).Milliseconds()
|
|
|
|
|
|
|
|
/*for i, c := range data {
|
|
|
|
fmt.Printf("%d: %+F\n", i, c)
|
|
|
|
}*/
|
|
|
|
fmt.Printf("total: %d, %dms\n", len(data), end)
|
2022-01-29 04:59:21 +00:00
|
|
|
|
2022-01-23 20:04:09 +00:00
|
|
|
}
|