From 0fad07620d798d790a196993742b29cf669d303e Mon Sep 17 00:00:00 2001 From: Travis Ralston <travpc@gmail.com> Date: Sat, 15 Aug 2020 23:15:38 -0600 Subject: [PATCH] Move audio decoders for easier copy/paste --- thumbnailing/i/flac.go | 17 +++++++++++++---- thumbnailing/i/mp3.go | 16 ++++++++++++---- thumbnailing/i/ogg.go | 17 +++++++++++++---- thumbnailing/i/wav.go | 17 +++++++++++++---- 4 files changed, 51 insertions(+), 16 deletions(-) diff --git a/thumbnailing/i/flac.go b/thumbnailing/i/flac.go index c7f73995..213511cd 100644 --- a/thumbnailing/i/flac.go +++ b/thumbnailing/i/flac.go @@ -3,6 +3,7 @@ package i import ( "errors" + "github.com/faiface/beep" "github.com/faiface/beep/flac" "github.com/turt2live/matrix-media-repo/common/rcontext" "github.com/turt2live/matrix-media-repo/thumbnailing/m" @@ -24,10 +25,18 @@ func (d flacGenerator) matches(img []byte, contentType string) bool { return contentType == "audio/flac" } -func (d flacGenerator) GenerateThumbnail(b []byte, contentType string, width int, height int, method string, animated bool, ctx rcontext.RequestContext) (*m.Thumbnail, error) { +func (d flacGenerator) decode(b []byte) (beep.StreamSeekCloser, beep.Format, error) { audio, format, err := flac.Decode(util.ByteCloser(b)) if err != nil { - return nil, errors.New("flac: error decoding audio: " + err.Error()) + return audio, format, errors.New("flac: error decoding audio: " + err.Error()) + } + return audio, format, nil +} + +func (d flacGenerator) GenerateThumbnail(b []byte, contentType string, width int, height int, method string, animated bool, ctx rcontext.RequestContext) (*m.Thumbnail, error) { + audio, format, err := d.decode(b) + if err != nil { + return nil, err } defer audio.Close() @@ -35,9 +44,9 @@ func (d flacGenerator) GenerateThumbnail(b []byte, contentType string, width int } func (d flacGenerator) GetAudioData(b []byte, nKeys int, ctx rcontext.RequestContext) (*m.AudioInfo, error) { - audio, format, err := flac.Decode(util.ByteCloser(b)) + audio, format, err := d.decode(b) if err != nil { - return nil, errors.New("flac: error decoding audio: " + err.Error()) + return nil, err } defer audio.Close() diff --git a/thumbnailing/i/mp3.go b/thumbnailing/i/mp3.go index c25c3d77..2a9c8eb9 100644 --- a/thumbnailing/i/mp3.go +++ b/thumbnailing/i/mp3.go @@ -32,10 +32,18 @@ func (d mp3Generator) matches(img []byte, contentType string) bool { return contentType == "audio/mpeg" } -func (d mp3Generator) GenerateThumbnail(b []byte, contentType string, width int, height int, method string, animated bool, ctx rcontext.RequestContext) (*m.Thumbnail, error) { +func (d mp3Generator) decode(b []byte) (beep.StreamSeekCloser, beep.Format, error) { audio, format, err := mp3.Decode(util.ByteCloser(b)) if err != nil { - return nil, errors.New("mp3: error decoding audio: " + err.Error()) + return audio, format, errors.New("mp3: error decoding audio: " + err.Error()) + } + return audio, format, nil +} + +func (d mp3Generator) GenerateThumbnail(b []byte, contentType string, width int, height int, method string, animated bool, ctx rcontext.RequestContext) (*m.Thumbnail, error) { + audio, format, err := d.decode(b) + if err != nil { + return nil, err } defer audio.Close() @@ -43,9 +51,9 @@ func (d mp3Generator) GenerateThumbnail(b []byte, contentType string, width int, } func (d mp3Generator) GetAudioData(b []byte, nKeys int, ctx rcontext.RequestContext) (*m.AudioInfo, error) { - audio, format, err := mp3.Decode(util.ByteCloser(b)) + audio, format, err := d.decode(b) if err != nil { - return nil, errors.New("mp3: error decoding audio: " + err.Error()) + return nil, err } defer audio.Close() diff --git a/thumbnailing/i/ogg.go b/thumbnailing/i/ogg.go index dec2d969..18c29d0f 100644 --- a/thumbnailing/i/ogg.go +++ b/thumbnailing/i/ogg.go @@ -3,6 +3,7 @@ package i import ( "errors" + "github.com/faiface/beep" "github.com/faiface/beep/vorbis" "github.com/turt2live/matrix-media-repo/common/rcontext" "github.com/turt2live/matrix-media-repo/thumbnailing/m" @@ -24,10 +25,18 @@ func (d oggGenerator) matches(img []byte, contentType string) bool { return contentType == "audio/ogg" } -func (d oggGenerator) GenerateThumbnail(b []byte, contentType string, width int, height int, method string, animated bool, ctx rcontext.RequestContext) (*m.Thumbnail, error) { +func (d oggGenerator) decode(b []byte) (beep.StreamSeekCloser, beep.Format, error) { audio, format, err := vorbis.Decode(util.ByteCloser(b)) if err != nil { - return nil, errors.New("ogg: error decoding audio: " + err.Error()) + return audio, format, errors.New("ogg: error decoding audio: " + err.Error()) + } + return audio, format, nil +} + +func (d oggGenerator) GenerateThumbnail(b []byte, contentType string, width int, height int, method string, animated bool, ctx rcontext.RequestContext) (*m.Thumbnail, error) { + audio, format, err := d.decode(b) + if err != nil { + return nil, err } defer audio.Close() @@ -35,9 +44,9 @@ func (d oggGenerator) GenerateThumbnail(b []byte, contentType string, width int, } func (d oggGenerator) GetAudioData(b []byte, nKeys int, ctx rcontext.RequestContext) (*m.AudioInfo, error) { - audio, format, err := vorbis.Decode(util.ByteCloser(b)) + audio, format, err := d.decode(b) if err != nil { - return nil, errors.New("ogg: error decoding audio: " + err.Error()) + return nil, err } defer audio.Close() diff --git a/thumbnailing/i/wav.go b/thumbnailing/i/wav.go index ac34f214..677375fb 100644 --- a/thumbnailing/i/wav.go +++ b/thumbnailing/i/wav.go @@ -3,6 +3,7 @@ package i import ( "errors" + "github.com/faiface/beep" "github.com/faiface/beep/wav" "github.com/turt2live/matrix-media-repo/common/rcontext" "github.com/turt2live/matrix-media-repo/thumbnailing/m" @@ -24,10 +25,18 @@ func (d wavGenerator) matches(img []byte, contentType string) bool { return contentType == "audio/wav" } -func (d wavGenerator) GenerateThumbnail(b []byte, contentType string, width int, height int, method string, animated bool, ctx rcontext.RequestContext) (*m.Thumbnail, error) { +func (d wavGenerator) decode(b []byte) (beep.StreamSeekCloser, beep.Format, error) { audio, format, err := wav.Decode(util.ByteCloser(b)) if err != nil { - return nil, errors.New("wav: error decoding audio: " + err.Error()) + return audio, format, errors.New("wav: error decoding audio: " + err.Error()) + } + return audio, format, nil +} + +func (d wavGenerator) GenerateThumbnail(b []byte, contentType string, width int, height int, method string, animated bool, ctx rcontext.RequestContext) (*m.Thumbnail, error) { + audio, format, err := d.decode(b) + if err != nil { + return nil, err } defer audio.Close() @@ -35,9 +44,9 @@ func (d wavGenerator) GenerateThumbnail(b []byte, contentType string, width int, } func (d wavGenerator) GetAudioData(b []byte, nKeys int, ctx rcontext.RequestContext) (*m.AudioInfo, error) { - audio, format, err := wav.Decode(util.ByteCloser(b)) + audio, format, err := d.decode(b) if err != nil { - return nil, errors.New("wav: error decoding audio: " + err.Error()) + return nil, err } defer audio.Close() -- GitLab