1package id3
2
3import (
4	"github.com/wader/fq/format"
5	"github.com/wader/fq/format/registry"
6	"github.com/wader/fq/pkg/decode"
7	"github.com/wader/fq/pkg/scalar"
8)
9
10func init() {
11	registry.MustRegister(decode.Format{
12		Name:        format.ID3V11,
13		Description: "ID3v1.1 metadata",
14		DecodeFn:    id3v11Decode,
15	})
16}
17
18func id3v11Decode(d *decode.D, in interface{}) interface{} {
19	d.AssertAtLeastBitsLeft(128 * 8)
20	d.FieldUTF8("magic", 4, d.AssertStr("TAG+"))
21	d.FieldUTF8("title", 60)
22	d.FieldUTF8("artist", 60)
23	d.FieldUTF8("album", 60)
24	d.FieldU8("speed", scalar.UToSymStr{
25		0: "unset",
26		1: "slow",
27		2: "medium",
28		3: "fast",
29		4: "hardcore",
30	})
31	d.FieldUTF8("genre", 30)
32	d.FieldUTF8("start", 6)
33	d.FieldUTF8("stop", 6)
34
35	return nil
36}
37