diff --git a/Kirika_test.go b/Kirika_test.go index a248aa8..63595d8 100644 --- a/Kirika_test.go +++ b/Kirika_test.go @@ -6,6 +6,9 @@ import ( "git.gammaspectra.live/S.O.N.G/Kirika/audio" "git.gammaspectra.live/S.O.N.G/Kirika/audio/format" "git.gammaspectra.live/S.O.N.G/Kirika/audio/format/flac" + "git.gammaspectra.live/S.O.N.G/Kirika/audio/format/mp3" + "git.gammaspectra.live/S.O.N.G/Kirika/audio/format/opus" + "git.gammaspectra.live/S.O.N.G/Kirika/audio/format/tta" "git.gammaspectra.live/S.O.N.G/Kirika/hasher" "os" "path" @@ -55,7 +58,6 @@ func doTest(format format.Format, ext string, t *testing.T) { } } -/* func TestFLACDecode(t *testing.T) { doTest(flac.NewFormat(), ".flac", t) } @@ -68,7 +70,6 @@ func TestOpusDecode(t *testing.T) { func TestMP3Decode(t *testing.T) { doTest(mp3.NewFormat(), ".mp3", t) } -*/ func TestHasher24(t *testing.T) { diff --git a/audio/format/opus/opus.go b/audio/format/opus/opus.go index 7739db4..2b4bf1a 100644 --- a/audio/format/opus/opus.go +++ b/audio/format/opus/opus.go @@ -31,15 +31,22 @@ func (f Format) Open(r io.ReadSeekCloser) (audio.Source, error) { defer stream.Close() defer close(newChannel) + blockSize := BlockSize * 2 + for { - buf := make([]float32, BlockSize*2) + buf := make([]float32, blockSize) n, err := stream.ReadStereoFloat32(buf) if err != nil { return } + blockSize = n + if blockSize < 1024 { + blockSize = 1024 + } + if n > 0 { newChannel <- buf[:n*2] }