Add Decoder Registry

Add Raw Decoder
This commit is contained in:
Emmm Monster
2020-12-26 15:47:10 +08:00
parent 1aa5731225
commit d5031e1935
8 changed files with 123 additions and 11 deletions

12
algo/common/dispatch.go Normal file
View File

@ -0,0 +1,12 @@
package common
type NewDecoderFunc func([]byte) Decoder
var decoderRegistry = make(map[string][]NewDecoderFunc)
func RegisterDecoder(ext string, dispatchFunc NewDecoderFunc) {
decoderRegistry[ext] = append(decoderRegistry[ext], dispatchFunc)
}
func GetDecoder(ext string) []NewDecoderFunc {
return decoderRegistry[ext]
}

41
algo/common/raw.go Normal file
View File

@ -0,0 +1,41 @@
package common
type RawDecoder struct {
file []byte
}
func NewRawDecoder(file []byte) Decoder {
return &RawDecoder{file: file}
}
func (d RawDecoder) Validate() error {
return nil
}
func (d RawDecoder) Decode() error {
return nil
}
func (d RawDecoder) GetCoverImage() []byte {
return nil
}
func (d RawDecoder) GetAudioData() []byte {
return d.file
}
func (d RawDecoder) GetAudioExt() string {
return ""
}
func (d RawDecoder) GetMeta() Meta {
return nil
}
func init() {
RegisterDecoder("mp3", NewRawDecoder)
RegisterDecoder("flac", NewRawDecoder)
RegisterDecoder("wav", NewRawDecoder)
RegisterDecoder("ogg", NewRawDecoder)
RegisterDecoder("m4a", NewRawDecoder)
}