From 439ad19af8a1272af7e135b3f5fb200a0d537aca Mon Sep 17 00:00:00 2001 From: WeebDataHoarder <57538841+WeebDataHoarder@users.noreply.github.com> Date: Sun, 29 Jan 2023 14:21:11 +0100 Subject: [PATCH] Fix libopus decoding, optimize vorbis nocgo decoding allocations --- audio/format/opus/opus.go | 3 ++- audio/format/vorbis/vorbis_nocgo.go | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/audio/format/opus/opus.go b/audio/format/opus/opus.go index 6c78b04..dbb0276 100644 --- a/audio/format/opus/opus.go +++ b/audio/format/opus/opus.go @@ -10,6 +10,7 @@ import ( "git.gammaspectra.live/S.O.N.G/Kirika/audio/filter" "git.gammaspectra.live/S.O.N.G/Kirika/audio/format" libopus "git.gammaspectra.live/S.O.N.G/go-pus" + "golang.org/x/exp/slices" "io" "time" ) @@ -68,7 +69,7 @@ func (f Format) Open(r io.ReadSeekCloser) (audio.Source, error) { } if n > 0 { - source.IngestFloat32(buf[:n*channelCount]) + source.IngestFloat32(slices.Clone(buf[:n*channelCount])) } } }() diff --git a/audio/format/vorbis/vorbis_nocgo.go b/audio/format/vorbis/vorbis_nocgo.go index df66943..588784d 100644 --- a/audio/format/vorbis/vorbis_nocgo.go +++ b/audio/format/vorbis/vorbis_nocgo.go @@ -7,6 +7,7 @@ import ( "git.gammaspectra.live/S.O.N.G/Kirika/audio" "git.gammaspectra.live/S.O.N.G/Kirika/audio/format" libvorbis "github.com/jfreymuth/oggvorbis" + "golang.org/x/exp/slices" "io" ) @@ -36,9 +37,9 @@ func (f Format) Open(r io.ReadSeekCloser) (audio.Source, error) { go func() { defer source.Close() - for { + buffer := make([]float32, 8192) - buffer := make([]float32, 8192) + for { n, err := reader.Read(buffer) if err != nil { @@ -46,7 +47,7 @@ func (f Format) Open(r io.ReadSeekCloser) (audio.Source, error) { } if n > 0 { - source.IngestFloat32(buffer[:n]) + source.IngestFloat32(slices.Clone(buffer[:n])) } } }()