Do finish pass according to blocksize

This commit is contained in:
DataHoarder 2022-01-30 02:42:20 +01:00
parent 082175c4fe
commit 837c1db011

View file

@ -69,6 +69,12 @@ func (g *Gaborator) GaborBlockTransform(source chan []float32) (channel chan []f
log.Panic(err)
}
}
//finish
err := g.Process(nil)
if err != nil {
log.Panic(err)
}
}()
return channel
@ -93,6 +99,11 @@ func (g *Gaborator) GaborTransform(source chan float32) (channel chan []float32)
audioData = audioData[:0]
}
}
//finish
err := g.Process(nil)
if err != nil {
log.Panic(err)
}
}()
return channel
@ -131,7 +142,12 @@ func (g *Gaborator) GetBandwidth() float64 {
func (g *Gaborator) analyze(block []float32) {
handle := cgo.NewHandle(g.coefficientOutputChannel)
defer handle.Delete()
C.gaborator_transform(g.pointer, (*C.float)(&block[0]), C.int(len(block)), C.gaborator_transform_callback(C.cgoCallback), C.uintptr_t(handle))
if len(block) == 0 {
C.gaborator_transform(g.pointer, (*C.float)(nil), C.int(0), C.gaborator_transform_callback(C.cgoCallback), C.uintptr_t(handle))
} else {
C.gaborator_transform(g.pointer, (*C.float)(&block[0]), C.int(len(block)), C.gaborator_transform_callback(C.cgoCallback), C.uintptr_t(handle))
}
}
//export cgoCallback