-
Notifications
You must be signed in to change notification settings - Fork 97
/
beep_decoder.go
39 lines (35 loc) · 983 Bytes
/
beep_decoder.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package player
import (
"io"
"github.com/gopxl/beep"
"github.com/gopxl/beep/flac"
"github.com/gopxl/beep/minimp3"
"github.com/gopxl/beep/mp3"
"github.com/gopxl/beep/vorbis"
"github.com/gopxl/beep/wav"
"github.com/pkg/errors"
minimp3pkg "github.com/tosone/minimp3"
"github.com/go-musicfox/go-musicfox/internal/configs"
"github.com/go-musicfox/go-musicfox/internal/types"
)
func DecodeSong(t SongType, r io.ReadSeekCloser) (streamer beep.StreamSeekCloser, format beep.Format, err error) {
switch t {
case Mp3:
switch configs.ConfigRegistry.Player.BeepMp3Decoder {
case types.BeepMiniMp3Decoder:
minimp3pkg.BufferSize = 1024 * 50
streamer, format, err = minimp3.Decode(r)
default:
streamer, format, err = mp3.Decode(r)
}
case Wav:
streamer, format, err = wav.Decode(r)
case Ogg:
streamer, format, err = vorbis.Decode(r)
case Flac:
streamer, format, err = flac.Decode(r)
default:
err = errors.Errorf("Unknown song type(%d)", t)
}
return
}