func (m mp3Parser) DiscNumber() int {
	disc, err := strconv.Atoi(m.tags[tagDiscNumber])
	if err != nil {
		return 0
	}
	return disc
}
DiscNumber returns the DiscNumber tag for this stream
package taggolib
import (
	"bytes"
	"encoding/binary"
	"fmt"
	"io"
	"strconv"
	"strings"
	"time"
	"github.com/eaburns/bit"
)
const (
	mp3TagEncoder = "ENCODER"
	mp3TagLength  = "LENGTH"
	mp3SamplesPerFrame = 1152
)
var (
	mp3MagicNumber = []byte("ID3")
	mp3APICFrame = []byte("APIC")
	mp3XingMarker = []byte("Xing")
	mp3InfoMarker = []byte("Info")
)
type mp3Parser struct {
	id3Header  *mp3ID3v2Header
	mp3Header  *mp3Header
	reader     io.ReadSeeker
	tags       map[string]string
	xingHeader *mp3XingHeader
}
func unSynch(data [4]byte) int32 {
	size := int32(0)
	for i, b := range data {
		shift := uint32(len(data)-i-1) * 7
		size |= int32(b&0x7f) << shift
	}
	return size
}
func (m mp3Parser) Album() string {
	return m.tags[tagAlbum]
}
func (m mp3Parser) AlbumArtist() string {
	return m.tags[tagAlbumArtist]
}
func (m mp3Parser) Artist() string {
	return m.tags[tagArtist]
}
func (m mp3Parser) BitDepth() int {
	return 16
}
func (m mp3Parser) Bitrate() int {
	if m.xingHeader != nil && m.xingHeader.Bitrate > 0 {
		return m.xingHeader.Bitrate
	}
	return mp3BitrateMap[m.mp3Header.Bitrate]
}
func (m mp3Parser) Channels() int {
	return mp3ChannelModeMap[m.mp3Header.ChannelMode]
}
func (m mp3Parser) Comment() string {
	return m.tags[tagComment]
}
func (m mp3Parser) Date() string {
	return m.tags[tagDate]
}