44 lines
1,015 B
Go
44 lines
1,015 B
Go
//go:build cgo
|
|
|
|
package filter
|
|
|
|
import (
|
|
"git.gammaspectra.live/S.O.N.G/Kirika/audio"
|
|
"git.gammaspectra.live/S.O.N.G/Kirika/audio/format/flac"
|
|
"git.gammaspectra.live/S.O.N.G/Kirika/test"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func TestFilterChainResample(t *testing.T) {
|
|
t.Parallel()
|
|
fp, err := os.Open(test.SingleSample24)
|
|
if err != nil {
|
|
t.Error(err)
|
|
return
|
|
}
|
|
defer fp.Close()
|
|
source, err := flac.NewFormat().Open(fp)
|
|
if err != nil {
|
|
t.Error(err)
|
|
return
|
|
}
|
|
|
|
const sampleRate = 16000
|
|
|
|
result := NewFilterChain(source, MonoFilter{}, NewResampleFilter(sampleRate, QualityFast, 0), StereoFilter{})
|
|
|
|
sink := audio.NewForwardSink(audio.NewNullSink())
|
|
sink.Process(result)
|
|
|
|
if result.GetSampleRate() != sampleRate {
|
|
t.Errorf("Wrong SampleRate %d != %d", result.GetSampleRate(), sampleRate)
|
|
}
|
|
if result.GetChannels() != 2 {
|
|
t.Errorf("Wrong Channel Count %d != %d", result.GetChannels(), 2)
|
|
}
|
|
if sink.GetSamplesRead() != 6284999 {
|
|
t.Errorf("Wrong Sample Count %d != %d", sink.GetSamplesRead(), 6284999)
|
|
}
|
|
}
|