id3

package
v0.0.0-...-3cbae95 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 3, 2024 License: BSD-3-Clause, Apache-2.0 Imports: 10 Imported by: 0

Documentation

Overview

Package id3 implements the ID3v2.4 metadata standard for audio files.

Index

Constants

View Source
const (
	GenreBlues                 = 0
	GenreClassicRock           = 1
	GenreCountry               = 2
	GenreDance                 = 3
	GenreDisco                 = 4
	GenreFunk                  = 5
	GenreGrunge                = 6
	GenreHipHop                = 7
	GenreJazz                  = 8
	GenreMetal                 = 9
	GenreNewAge                = 10
	GenreOldies                = 11
	GenreOther                 = 12
	GenrePop                   = 13
	GenreRaB                   = 14
	GenreRap                   = 15
	GenreReggae                = 16
	GenreRock                  = 17
	GenreTechno                = 18
	GenreIndustrial            = 19
	GenreAlternative           = 20
	GenreSka                   = 21
	GenreDeathMetal            = 22
	GenrePranks                = 23
	GenreSoundtrack            = 24
	GenreEuroTechno            = 25
	GenreAmbient               = 26
	GenreTripHop               = 27
	GenreVocal                 = 28
	GenreJazzFunk              = 29
	GenreFusion                = 30
	GenreTrance                = 31
	GenreClassical             = 32
	GenreInstrumental          = 33
	GenreAcid                  = 34
	GenreHouse                 = 35
	GenreGame                  = 36
	GenreSoundClip             = 37
	GenreGospel                = 38
	GenreNoise                 = 39
	GenreAltRock               = 40
	GenreBass                  = 41
	GenreSoul                  = 42
	GenrePunk                  = 43
	GenreSpace                 = 44
	GenreMeditative            = 45
	GenreInstrumentalPop       = 46
	GenreInstrumentalRock      = 47
	GenreEthnic                = 48
	GenreGothic                = 49
	GenreDarkwave              = 50
	GenreTechnoIndustrial      = 51
	GenreElectronic            = 52
	GenrePopFolk               = 53
	GenreEurodance             = 54
	GenreDream                 = 55
	GenreSouthernRock          = 56
	GenreComedy                = 57
	GenreCult                  = 58
	GenreGangstaRap            = 59
	GenreTop40                 = 60
	GenreChristianRap          = 61
	GenrePopFunk               = 62
	GenreJungle                = 63
	GenreNativeAmerican        = 64
	GenreCabaret               = 65
	GenreNewWave               = 66
	GenrePsychedelic           = 67 /* sic, the misspelling is used in the specification */
	GenreRave                  = 68
	GenreShowtunes             = 69
	GenreTrailer               = 70
	GenreLoFi                  = 71
	GenreTribal                = 72
	GenreAcidPunk              = 73
	GenreAcidJazz              = 74
	GenrePolka                 = 75
	GenreRetro                 = 76
	GenreMusical               = 77
	GenreRockNRoll             = 78
	GenreHardRock              = 79
	GenreFolk                  = 80
	GenreFolkRock              = 81
	GenreNationalFolk          = 82
	GenreSwing                 = 83
	GenreFastFusion            = 84
	GenreBebob                 = 85
	GenreLatin                 = 86
	GenreRevival               = 87
	GenreCeltic                = 88
	GenreBluegrass             = 89
	GenreAvantgarde            = 90
	GenreGothicRock            = 91
	GenreProgressiveRock       = 92
	GenrePsychedelicRock       = 93
	GenreSymphonicRock         = 94
	GenreSlowRock              = 95
	GenreBigBand               = 96
	GenreChorus                = 97
	GenreEasyListening         = 98
	GenreAcoustic              = 99
	GenreHumour                = 100
	GenreSpeech                = 101
	GenreChanson               = 102
	GenreOpera                 = 103
	GenreChamberMusic          = 104
	GenreSonata                = 105
	GenreSymphony              = 106
	GenreBootyBass             = 107
	GenrePrimus                = 108
	GenrePornGroove            = 109
	GenreSatire                = 110
	GenreSlowJam               = 111
	GenreClub                  = 112
	GenreTango                 = 113
	GenreSamba                 = 114
	GenreFolklore              = 115
	GenreBallad                = 116
	GenrePowerBallad           = 117
	GenreRhythmicSoul          = 118
	GenreFreestyle             = 119
	GenreDuet                  = 120
	GenrePunkRock              = 121
	GenreDrumSolo              = 122
	GenreAcapella              = 123
	GenreEuroHouse             = 124
	GenreDanceHall             = 125
	GenreGoa                   = 126
	GenreDrumNBass             = 127
	GenreClubHouse             = 128
	GenreHardcore              = 129
	GenreTerror                = 130
	GenreIndie                 = 131
	GenreBritPop               = 132
	GenreAfroPunk              = 133
	GenrePolskPunk             = 134
	GenreBeat                  = 135
	GenreChristianGangsta      = 136
	GenreHeavyMetal            = 137
	GenreBlackMetal            = 138
	GenreCrossover             = 139
	GenreContemporaryChristian = 140
	GenreChristianRock         = 141
	GenreMerengue              = 142
	GenreSalsa                 = 143
	GenreThrashMetal           = 144
	GenreAnime                 = 145
	GenreJPop                  = 146
	GenreSynthPop              = 147
	// ref http://alicja.homelinux.com/~mats/text/Music/MP3/ID3/Genres.txt
	GenreAbstract          = 148
	GenreArtRock           = 149
	GenreBaroque           = 150
	GenreBhangra           = 151
	GenreBigBeat           = 152
	GenreBreakbeat         = 153
	GenreChillout          = 154
	GenreDowntempo         = 155
	GenreDub               = 156
	GenreEBM               = 157
	GenreEclectic          = 158
	GenreElectro           = 159
	GenreElectroclash      = 160
	GenreEmo               = 161
	GenreExperimental      = 162
	GenreGarage            = 163
	GenreGlobal            = 164
	GenreIDM               = 165
	GenreIllbient          = 166
	GenreIndustroGoth      = 167
	GenreJamBand           = 168
	GenreKrautrock         = 169
	GenreLeftfield         = 170
	GenreLounge            = 171
	GenreMathRock          = 172
	GenreNewRomantic       = 173
	GenreNuBreakz          = 174
	GenrePostPunk          = 175
	GenrePostRock          = 176
	GenrePsytrance         = 177
	GenreShoegaze          = 178
	GenreSpaceRock         = 179
	GenreTropRock          = 180
	GenreWorldMusic        = 181
	GenreNeoclassical      = 182
	GenreAudiobook         = 183
	GenreAudioTheatre      = 184
	GenreNeueDeutscheWelle = 185
	GenrePodcast           = 186
	GenreIndieRock         = 187
	GenreGFunk             = 188
	GenreDubstep           = 189
	GenreGarageRock        = 190
	GenrePsybient          = 191
	GenreNone              = 255
)
View Source
const (
	TIME_FORMAT_23 = "1504" // HHMM
	DATE_FORMAT_23 = "0102" // DDMM
)

Variables

View Source
var GenreMap map[GenreV1]string = map[GenreV1]string{}/* 193 elements not displayed */
View Source
var (
	NsID3 = xmp.NewNamespace("id3", "http://id3.org/ns/2.4/", NewModel)
)
View Source
var V11_TO_V24_TAGS map[string]string = map[string]string{
	"0x0003": "TIT2",
	"0x0021": "TPE1",
	"0x003f": "TALB",
	"0x005d": "TYER",
	"0x0061": "COMM",
	"0x007d": "TRCK",
	"0x007f": "TCON",
}
View Source
var V22_TO_V24_TAGS map[string]string = map[string]string{
	"BUF": "RBUF",
	"CNT": "PCNT",
	"COM": "COMM",
	"CRA": "AENC",
	"CRM": "ENCR",
	"ETC": "ETCO",
	"EQU": "EQU2",
	"GEO": "GEOB",
	"IPL": "TIPL",
	"LNK": "LINK",
	"MCI": "MCDI",
	"MLL": "MLLT",
	"PIC": "APIC",
	"POP": "POPM",
	"REV": "RVRB",
	"RVA": "RVA2",
	"SLT": "SYLT",
	"STC": "SYTC",
	"TAL": "TALB",
	"TBP": "TBPM",
	"TCM": "TCOM",
	"TCO": "TMED",
	"TCR": "TCOP",
	"TDA": "TDRC",
	"TDY": "TDLY",
	"TEN": "TENC",
	"TFT": "TFLT",
	"TIM": "TDRC",
	"TKE": "TKEY",
	"TLA": "TLAN",
	"TLE": "TLEN",
	"TMT": "TMED",
	"TOA": "TOPE",
	"TOF": "TOFN",
	"TOL": "TOLY",
	"TOR": "TORY",
	"TOT": "TOAL",
	"TP1": "TPE1",
	"TP2": "TPE2",
	"TP3": "TPE3",
	"TP4": "TPE4",
	"TPA": "TPOS",
	"TPB": "TPUB",
	"TRC": "TSRC",
	"TRD": "TDRC",
	"TRK": "TRCK",
	"TSI": "TSIZ",
	"TSS": "TSSE",
	"TT1": "TIT1",
	"TT2": "TIT2",
	"TT3": "TIT3",
	"TXT": "TEXT",
	"TXX": "TXXX",
	"TYE": "TYER",
	"UFI": "UFID",
	"ULT": "USLT",
	"WAF": "WOAF",
	"WAR": "WOAR",
	"WAS": "WOAS",
	"WCM": "WCOM",
	"WCP": "WCOP",
	"WPB": "WPUB",
	"WXX": "WXXX",
	"TCP": "TCMP",
	"TST": "TSOT",
	"TS2": "TSO2",
	"TSA": "TSOA",
	"TSP": "TSOP",
	"TSC": "TSOC",
}

Functions

func NewModel

func NewModel(name string) xmp.Model

Types

type AdjustmentPoint

type AdjustmentPoint struct {
	Frequency  int     `xmp:"id3:frequency,attr"`
	Adjustment float32 `xmp:"id3:adjust,attr"`
}

type AdjustmentPointList

type AdjustmentPointList []AdjustmentPoint

func (AdjustmentPointList) MarshalXMP

func (x AdjustmentPointList) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error

func (AdjustmentPointList) Typ

func (*AdjustmentPointList) UnmarshalXMP

func (x *AdjustmentPointList) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error

type AttachedPicture

type AttachedPicture struct {
	Mimetype    string      `xmp:"id3:mimetype,attr"`
	Type        PictureType `xmp:"id3:pictureType,attr"`
	Description string      `xmp:"id3:description,attr"`
	Data        []byte      `xmp:"id3:image"`
}

APIC

type AttachedPictureArray

type AttachedPictureArray []AttachedPicture

func (AttachedPictureArray) MarshalXMP

func (x AttachedPictureArray) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error

func (AttachedPictureArray) Typ

func (*AttachedPictureArray) UnmarshalText

func (x *AttachedPictureArray) UnmarshalText(data []byte) error

func (*AttachedPictureArray) UnmarshalXMP

func (x *AttachedPictureArray) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error

type AudioEncryption

type AudioEncryption struct {
	Owner          string `xmp:"id3:owner,attr"`
	PreviewStart   int    `xmp:"id3:previewStart,attr"`
	PreviewLength  int    `xmp:"id3:previewLength,attr"`
	EncryptionInfo []byte `xmp:"id3:encryptionInfo"`
}

AENC

func (*AudioEncryption) UnmarshalText

func (x *AudioEncryption) UnmarshalText(data []byte) error

type AudioSeekIndex

type AudioSeekIndex struct {
	Start          int64       `xmp:"id3:start,attr"`
	Length         int64       `xmp:"id3:length,attr"`
	NumberOfPoints int         `xmp:"id3:numberOfPoints,attr"`
	BitsPerPoint   byte        `xmp:"id3:bitsPerPoint,attr"`
	Points         xmp.IntList `xmp:"id3:points"`
}

ASPI

func (*AudioSeekIndex) UnmarshalText

func (x *AudioSeekIndex) UnmarshalText(data []byte) error

type Bool

type Bool int // 0 no, 1 yes
const (
	False Bool = 0
	True  Bool = 1
)

func (Bool) Value

func (b Bool) Value() bool

type BufferSize

type BufferSize struct {
	BufferSize int64 `xmp:"id3:bufferSize,attr"`
	Flag       byte  `xmp:"id3:flag,attr"`
	NextOffset int64 `xmp:"id3:next,attr"`
}

RBUF

func (*BufferSize) UnmarshalText

func (x *BufferSize) UnmarshalText(data []byte) error

type ChannelType

type ChannelType byte
const (
	ChannelTypeOther       ChannelType = 0x00 // Other
	ChannelTypeMaster      ChannelType = 0x01 // Master volume
	ChannelTypeFrontRight  ChannelType = 0x02 // Front right
	ChannelTypeFrontLeft   ChannelType = 0x03 // Front left
	ChannelTypeBackRight   ChannelType = 0x04 // Back right
	ChannelTypeBackLeft    ChannelType = 0x05 // Back left
	ChannelTypeFrontCentre ChannelType = 0x06 // Front centre
	ChannelTypeBackCentre  ChannelType = 0x07 // Back centre
	ChannelTypeSubwoofer   ChannelType = 0x08 // Subwoofer
)

type Chapter

type Chapter xmpdm.Marker

CHAP

type ChapterList

type ChapterList []Chapter

func (ChapterList) MarshalXMP

func (x ChapterList) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error

func (ChapterList) Typ

func (x ChapterList) Typ() xmp.ArrayType

func (*ChapterList) UnmarshalText

func (x *ChapterList) UnmarshalText(data []byte) error

func (*ChapterList) UnmarshalXMP

func (x *ChapterList) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error

type Comment

type Comment struct {
	Lang string `xmp:"id3:lang,attr"`
	Type string `xmp:"id3:type,attr"`
	Text string `xmp:"id3:text,attr"`
}

COMM

type CommentArray

type CommentArray []Comment

func (CommentArray) MarshalXMP

func (x CommentArray) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error

func (CommentArray) Typ

func (x CommentArray) Typ() xmp.ArrayType

func (*CommentArray) UnmarshalText

func (x *CommentArray) UnmarshalText(data []byte) error

TODO: need samples

func (*CommentArray) UnmarshalXMP

func (x *CommentArray) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error

type Commercial

type Commercial struct {
	Prices       PriceList      `xmp:"id3:prices"`
	ValidUntil   Date23         `xmp:"id3:validUntil,attr"`
	ContactUrl   xmp.Url        `xmp:"id3:contactUrl"`
	ReceivedAs   DeliveryMethod `xmp:"id3:receivedAs,attr"`
	SellerName   string         `xmp:"id3:sellerName,attr"`
	Description  string         `xmp:"id3:description,attr"`
	LogoMimetype string         `xmp:"id3:logoMimetype,attr"`
	LogoImage    []byte         `xmp:"id3:logoImage"`
}

COMR

func (*Commercial) UnmarshalText

func (x *Commercial) UnmarshalText(data []byte) error

type Date23

type Date23 time.Time

func (Date23) IsZero

func (x Date23) IsZero() bool

func (Date23) MarshalText

func (x Date23) MarshalText() ([]byte, error)

func (*Date23) UnmarshalText

func (x *Date23) UnmarshalText(data []byte) error

func (Date23) Value

func (x Date23) Value() time.Time

type DeliveryMethod

type DeliveryMethod byte
const (
	DeliveryMethodOther        DeliveryMethod = 0x00 // Other
	DeliveryMethodStdCD        DeliveryMethod = 0x01 // Standard CD album with other songs
	DeliveryMethodCompressedCD DeliveryMethod = 0x02 // Compressed audio on CD
	DeliveryMethodDownload     DeliveryMethod = 0x03 // File over the Internet
	DeliveryMethodStream       DeliveryMethod = 0x04 // Stream over the Internet
	DeliveryMethodNoteSheets   DeliveryMethod = 0x05 // As note sheets
	DeliveryMethodBook         DeliveryMethod = 0x06 // As note sheets in a book with other sheets
	DeliveryMethodOtherMedia   DeliveryMethod = 0x07 // Music on other media
	DeliveryMethodMerchandise  DeliveryMethod = 0x08 // Non-musical merchandise
)

type EncapsulatedObject

type EncapsulatedObject struct {
	Mimetype    string `xmp:"id3:mimetype,attr"`
	Filename    string `xmp:"id3:filename,attr"`
	Description string `xmp:"id3:description,attr"`
	Data        []byte `xmp:"id3:data"`
}

GEOB

type EncapsulatedObjectArray

type EncapsulatedObjectArray []EncapsulatedObject

func (EncapsulatedObjectArray) MarshalXMP

func (x EncapsulatedObjectArray) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error

func (EncapsulatedObjectArray) Typ

func (*EncapsulatedObjectArray) UnmarshalText

func (x *EncapsulatedObjectArray) UnmarshalText(data []byte) error

func (*EncapsulatedObjectArray) UnmarshalXMP

func (x *EncapsulatedObjectArray) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error

type EncryptionMethod

type EncryptionMethod struct {
	OwnerUrl xmp.Url `xmp:"id3:ownerUrl,attr"`
	Method   byte    `xmp:"id3:method,attr"`
	Data     []byte  `xmp:"id3:data"`
}

ENCR

type EncryptionMethodArray

type EncryptionMethodArray []EncryptionMethod

func (EncryptionMethodArray) MarshalXMP

func (x EncryptionMethodArray) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error

func (EncryptionMethodArray) Typ

func (*EncryptionMethodArray) UnmarshalText

func (x *EncryptionMethodArray) UnmarshalText(data []byte) error

func (*EncryptionMethodArray) UnmarshalXMP

func (x *EncryptionMethodArray) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error

type Equalization

type Equalization struct {
	Method         EqualizationMethod  `xmp:"id3:method,attr"`
	Identification string              `xmp:"id3:id,attr"`
	Adjustments    AdjustmentPointList `xmp:"id3:points"`
}

EQU2

type EqualizationList

type EqualizationList []Equalization

func (EqualizationList) MarshalXMP

func (x EqualizationList) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error

func (EqualizationList) Typ

func (x EqualizationList) Typ() xmp.ArrayType

func (*EqualizationList) UnmarshalText

func (x *EqualizationList) UnmarshalText(data []byte) error

func (*EqualizationList) UnmarshalXMP

func (x *EqualizationList) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error

type EqualizationMethod

type EqualizationMethod byte
const (
	// No interpolation is made. A jump from one adjustment level to
	// another occurs in the middle between two adjustment points.
	EqualizationMethodBand EqualizationMethod = 0x00
	// Interpolation between adjustment points is linear.
	EqualizationMethodLinear EqualizationMethod = 0x01
)

type Genre

type Genre []string

func (Genre) MarshalText

func (x Genre) MarshalText() ([]byte, error)

func (Genre) String

func (x Genre) String() string

func (*Genre) UnmarshalText

func (x *Genre) UnmarshalText(data []byte) error

type GenreV1

type GenreV1 byte

TCON

func ParseGenreV1

func ParseGenreV1(s string) (GenreV1, error)

func (GenreV1) MarshalText

func (x GenreV1) MarshalText() ([]byte, error)

func (GenreV1) String

func (x GenreV1) String() string

See Genre List at http://id3.org/id3v2.3.0

func (*GenreV1) UnmarshalText

func (x *GenreV1) UnmarshalText(data []byte) error

type Group

type Group struct {
	OwnerUrl xmp.Url `xmp:"id3:ownerUrl,attr"`
	Symbol   byte    `xmp:"id3:symbol,attr"` // 0x80-0xF0
	Data     []byte  `xmp:"id3:data"`
}

GRID

type GroupArray

type GroupArray []Group

func (GroupArray) MarshalXMP

func (x GroupArray) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error

func (GroupArray) Typ

func (x GroupArray) Typ() xmp.ArrayType

func (*GroupArray) UnmarshalText

func (x *GroupArray) UnmarshalText(data []byte) error

func (*GroupArray) UnmarshalXMP

func (x *GroupArray) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error

type ID3

type ID3 struct {
	AudioEncryption                      *AudioEncryption        `id3:"AENC"        xmp:"id3:audioEncryption"`                      // AENC Audio encryption
	AttachedPicture                      AttachedPictureArray    `id3:"APIC"        xmp:"id3:attachedPicture"`                      // APIC Attached picture
	AudioSeekPointIndex                  *AudioSeekIndex         `id3:"ASPI,v2.4+"  xmp:"id3:audioSeekPointIndex,v2.4+"`            // ASPI Audio seek point index
	Comments                             string                  `id3:"COMM"        xmp:"id3:comments"`                             // COMM Comments
	Commercial                           *Commercial             `id3:"COMR"        xmp:"id3:commercial"`                           // COMR Commercial frame
	Encryption                           EncryptionMethodArray   `id3:"ENCR"        xmp:"id3:encryption"`                           // ENCR Encryption method registration
	Equalization_v23                     string                  `id3:"EQUA,v2.3-"  xmp:"id3:equalization_v23,v2.3-"`               // EQUA Equalization
	Equalization                         EqualizationList        `id3:"EQU2,v2.4+"  xmp:"id3:equalization,v2.4+"`                   // EQU2 Equalisation (2)
	EventTimingCodes                     MarkerList              `id3:"ETCO"        xmp:"id3:eventTimingCodes"`                     // ETCO Event timing codes
	GeneralEncapsulatedObject            EncapsulatedObjectArray `id3:"GEOB"        xmp:"id3:generalEncapsulatedObject"`            // GEOB General encapsulated object
	GroupIdentifier                      GroupArray              `id3:"GRID"        xmp:"id3:groupIdentifier"`                      // GRID Group identification registration
	InvolvedPeopleList_v23               string                  `id3:"IPLS,v2.3-"  xmp:"id3:involvedPeopleList_v23,v2.3-"`         // IPLS Involved people list
	Link                                 LinkArray               `id3:"LINK"        xmp:"id3:link"`                                 // LINK Linked information
	MusicCDIdentifier                    []byte                  `id3:"MCDI"        xmp:"id3:musicCDIdentifier"`                    // MCDI Music CD identifier
	MPEGLocationLookupTable              []byte                  `id3:"MLLT"        xmp:"id3:mpegLocationLookupTable"`              // MLLT MPEG location lookup table
	Ownership                            *Owner                  `id3:"OWNE"        xmp:"id3:ownership"`                            // OWNE Ownership frame
	Private                              PrivateDataArray        `id3:"PRIV"        xmp:"id3:private"`                              // PRIV Private frame
	PlayCounter                          int64                   `id3:"PCNT"        xmp:"id3:playCounter"`                          // PCNT Play counter
	Popularimeter                        PopularimeterArray      `id3:"POPM"        xmp:"id3:popularimeter"`                        // POPM Popularimeter
	PositionSynchronization              *PositionSync           `id3:"POSS"        xmp:"id3:positionSynchronization"`              // POSS Position synchronisation frame
	RecommendedBufferSize                *BufferSize             `id3:"RBUF"        xmp:"id3:recommendedBufferSize"`                // RBUF Recommended buffer size
	RelativeVolumeAdjustment_v23         string                  `id3:"RVAD,v2.3-"  xmp:"id3:relativeVolumeAdjustment_v23,v2.3-"`   // RVAD Relative volume adjustment
	RelativeVolumeAdjustment             VolumeAdjustArray       `id3:"RVA2,v2.4+"  xmp:"id3:relativeVolumeAdjustment,v2.4+"`       // RVA2 Relative volume adjustment (2)
	Reverb                               *Reverb                 `id3:"RVRB"        xmp:"id3:reverb"`                               // RVRB Reverb
	Seek                                 int64                   `id3:"SEEK,v2.4+"  xmp:"id3:seek,v2.4+"`                           // SEEK Seek frame
	Signature                            SignatureArray          `id3:"SIGN,v2.4+"  xmp:"id3:signature,v2.4+"`                      // SIGN Signature frame
	SynchronizedLyrics                   TimedLyricsArray        `id3:"SYLT"        xmp:"id3:synchronizedLyrics"`                   // SYLT Synchronized lyric/text
	SynchronizedTempoCodes               []byte                  `id3:"SYTC"        xmp:"id3:synchronizedTempoCodes"`               // SYTC Synchronized tempo codes
	AlbumTitle                           string                  `id3:"TALB"        xmp:"id3:albumTitle"`                           // TALB Album/Movie/Show title
	BeatsPerMinute                       int                     `id3:"TBPM"        xmp:"id3:beatsPerMinute"`                       // TBPM BPM (beats per minute)
	Composer                             string                  `id3:"TCOM"        xmp:"id3:composer"`                             // TCOM Composer
	ContentType                          Genre                   `id3:"TCON"        xmp:"id3:contentType"`                          // TCON Content type
	Copyright                            string                  `id3:"TCOP"        xmp:"id3:copyright"`                            // TCOP Copyright message
	Date_v23                             Date23                  `id3:"TDAT,v2.3-"  xmp:"id3:date_v23,v2.3-"`                       // TDAT Date
	EncodingTime                         xmp.Date                `id3:"TDEN,v2.4+"  xmp:"id3:encodingTime,v2.4+"`                   // TDEN Encoding time
	PlaylistDelay                        int64                   `id3:"TDLY"        xmp:"id3:playlistDelay"`                        // TDLY Playlist delay
	OriginalReleaseTime                  xmp.Date                `id3:"TDOR,v2.4+"  xmp:"id3:originalReleaseTime,v2.4+"`            // TDOR Original release time
	RecordingTime                        xmp.Date                `id3:"TDRC,v2.4+"  xmp:"id3:recordingTime,v2.4+"`                  // TDRC Recording time
	ReleaseTime                          xmp.Date                `id3:"TDRL,v2.4+"  xmp:"id3:releaseTime,v2.4+"`                    // TDRL Release time
	TaggingTime                          xmp.Date                `id3:"TDTG,v2.4+"  xmp:"id3:taggingTime,v2.4+"`                    // TDTG Tagging time
	EncodedBy                            string                  `id3:"TENC"        xmp:"id3:encodedBy"`                            // TENC Encoded by
	Lyricist                             string                  `id3:"TEXT"        xmp:"id3:lyricist"`                             // TEXT Lyricist/Text writer
	FileType                             string                  `id3:"TFLT"        xmp:"id3:fileType"`                             // TFLT File type
	Time_v23                             Time23                  `id3:"TIME,v2.3-"  xmp:"id3:time_v23,v2.3-"`                       // TIME Time
	InvolvedPeopleList                   string                  `id3:"TIPL,v2.4+"  xmp:"id3:involvedPeopleList,v2.4+"`             // TIPL Involved people list
	ContentGroupDescription              string                  `id3:"TIT1"        xmp:"id3:contentGroupDescription"`              // TIT1 Content group description
	TitleDescription                     string                  `id3:"TIT2"        xmp:"id3:titleDescription"`                     // TIT2 Title/songname/content description
	SubTitle                             string                  `id3:"TIT3"        xmp:"id3:subTitle"`                             // TIT3 Subtitle/Description refinement
	InitialKey                           string                  `id3:"TKEY"        xmp:"id3:initialKey"`                           // TKEY Initial key
	Language                             string                  `id3:"TLAN"        xmp:"id3:language"`                             // TLAN Language(s)
	Length                               string                  `id3:"TLEN"        xmp:"id3:length"`                               // TLEN Length
	MusicianCreditsList                  string                  `id3:"TMCL,v2.4+"  xmp:"id3:musicianCreditsList,v2.4+"`            // TMCL Musician credits list
	MediaType                            string                  `id3:"TMED"        xmp:"id3:mediaType"`                            // TMED Media type
	Mood                                 string                  `id3:"TMOO,v2.4+"  xmp:"id3:mood,v2.4+"`                           // TMOO Mood
	OriginalAlbumTitle                   string                  `id3:"TOAL"        xmp:"id3:originalAlbumTitle"`                   // TOAL Original album/movie/show title
	OriginalFilename                     string                  `id3:"TOFN"        xmp:"id3:originalFilename"`                     // TOFN Original filename
	OriginalLyricist                     string                  `id3:"TOLY"        xmp:"id3:originalLyricist"`                     // TOLY Original lyricist(s)/text writer(s)
	OriginalArtist                       string                  `id3:"TOPE"        xmp:"id3:originalArtist"`                       // TOPE Original artist(s)/performer(s)
	OriginalReleaseYear_v23              int                     `id3:"TORY,v2.3-"  xmp:"id3:originalReleaseYear_v23,v2.3-"`        // TORY Original release year
	FileOwner                            string                  `id3:"TOWN"        xmp:"id3:fileOwner"`                            // TOWN File owner/licensee
	LeadPerformer                        string                  `id3:"TPE1"        xmp:"id3:leadPerformer"`                        // TPE1 Lead performer(s)/Soloist(s)
	Band                                 string                  `id3:"TPE2"        xmp:"id3:band"`                                 // TPE2 Band/orchestra/accompaniment
	Conductor                            string                  `id3:"TPE3"        xmp:"id3:conductor"`                            // TPE3 Conductor/performer refinement
	ModifiedBy                           string                  `id3:"TPE4"        xmp:"id3:modifiedBy"`                           // TPE4 Interpreted, remixed, or otherwise modified by
	PartOfASet                           TrackNum                `id3:"TPOS"        xmp:"id3:partOfASet"`                           // TPOS Part of a set
	ProducedNotice                       string                  `id3:"TPRO,v2.4+"  xmp:"id3:producedNotice,v2.4+"`                 // TPRO Produced notice
	Publisher                            string                  `id3:"TPUB"        xmp:"id3:publisher"`                            // TPUB Publisher
	TrackNumber                          TrackNum                `id3:"TRCK"        xmp:"id3:trackNumber"`                          // TRCK Track number/Position in set
	RecordingDates                       string                  `id3:"TRDA"        xmp:"id3:recordingDates"`                       // TRDA Recording dates
	InternetRadioStationName             string                  `id3:"TRSN"        xmp:"id3:internetRadioStationName"`             // TRSN Internet radio station name
	InternetRadioStationOwner            string                  `id3:"TRSO"        xmp:"id3:internetRadioStationOwner"`            // TRSO Internet radio station owner
	Size_v23                             string                  `id3:"TSIZ,v2.3-"  xmp:"id3:size_v23,v2.3-"`                       // TSIZ Size
	AlbumSortOrder                       string                  `id3:"TSOA,v2.4+"  xmp:"id3:albumSortOrder,v2.4+"`                 // TSOA Album sort order
	PerformerSortOrder                   string                  `id3:"TSOP,v2.4+"  xmp:"id3:performerSortOrder,v2.4+"`             // TSOP Performer sort order
	TitleSortOrder                       string                  `id3:"TSOT,v2.4+"  xmp:"id3:titleSortOrder,v2.4+"`                 // TSOT Title sort order
	InternationalStandardRecordingCode   string                  `id3:"TSRC"        xmp:"id3:internationalStandardRecordingCode"`   // TSRC ISRC (international standard recording code)
	EncodedWith                          string                  `id3:"TSSE"        xmp:"id3:encodedWith"`                          // TSSE Software/Hardware and settings used for encoding
	SetSubtitle                          string                  `id3:"TSST,v2.4+"  xmp:"id3:setSubtitle,v2.4+"`                    // TSST Set subtitle
	Year_v23                             int                     `id3:"TYER,v2.3-"  xmp:"id3:year_v23,v2.3-"`                       // TYER Year
	UserText                             string                  `id3:"TXXX"        xmp:"id3:userText"`                             // TXXX User defined text information frame
	UniqueFileIdentifier                 xmp.Uri                 `id3:"UFID"        xmp:"id3:uniqueFileIdentifier"`                 // UFID Unique file identifier
	TermsOfUse                           xmp.StringList          `id3:"USER"        xmp:"id3:termsOfUse"`                           // USER Terms of use
	UnsynchronizedLyrics                 xmp.StringList          `id3:"USLT"        xmp:"id3:unsynchronizedLyrics"`                 // USLT Unsynchronized lyric/text transcription
	CommercialInformation                xmp.Url                 `id3:"WCOM"        xmp:"id3:commercialInformation"`                // WCOM Commercial information
	CopyrightInformation                 xmp.Url                 `id3:"WCOP"        xmp:"id3:copyrightInformation"`                 // WCOP Copyright/Legal information
	OfficialAudioFileWebpage             xmp.Url                 `id3:"WOAF"        xmp:"id3:officialAudioFileWebpage"`             // WOAF Official audio file webpage
	OfficialArtistWebpage                xmp.Url                 `id3:"WOAR"        xmp:"id3:officialArtistWebpage"`                // WOAR Official artist/performer webpage
	OfficialAudioSourceWebpage           xmp.Url                 `id3:"WOAS"        xmp:"id3:officialAudioSourceWebpage"`           // WOAS Official audio source webpage
	OfficialInternetRadioStationHomepage xmp.Url                 `id3:"WORS"        xmp:"id3:officialInternetRadioStationHomepage"` // WORS Official Internet radio station homepage
	Payment                              xmp.Url                 `id3:"WPAY"        xmp:"id3:payment"`                              // WPAY Payment
	OfficialPublisherWebpage             xmp.Url                 `id3:"WPUB"        xmp:"id3:officialPublisherWebpage"`             // WPUB Publishers official webpage
	UserURL                              xmp.Url                 `id3:"WXXX"        xmp:"id3:userURL"`                              // WXXX User defined URL link frame
	AccessibilityText                    string                  `id3:"ATXT"        xmp:"id3:accessibilityText"`                    // accessibility addendum http://id3.org/id3v2-accessibility-1.0
	Chapters                             ChapterList             `id3:"CHAP"        xmp:"id3:chapters"`                             // chapters addedum http://id3.org/id3v2-chapters-1.0
	TableOfContents                      TocEntryList            `id3:"CTOC"        xmp:"id3:tableOfContents"`                      // chapters addedum http://id3.org/id3v2-chapters-1.0
	AlbumArtistSortOrder                 string                  `id3:"TSO2"        xmp:"id3:albumArtistSortOrder"`                 // special iTunes tags
	ComposerSortOrder                    string                  `id3:"TSOC"        xmp:"id3:composerSortOrder"`
	IsCompilation                        Bool                    `id3:"TCMP"        xmp:"id3:isCompilation"`
	ITunesU                              Bool                    `id3:"ITNU"        xmp:"id3:iTunesU"`
	IsPodcast                            Bool                    `id3:"PCST"        xmp:"id3:isPodcast"`
	PodcastDescription                   string                  `id3:"TDES"        xmp:"id3:podcastDescription"`
	PodcastID                            string                  `id3:"TGID"        xmp:"id3:podcastID"`
	PodcastURL                           string                  `id3:"WFED"        xmp:"id3:podcastURL"`
	PodcastKeywords                      string                  `id3:"TKWD"        xmp:"id3:podcastKeywords"`
	PodcastCategory                      string                  `id3:"TCAT"        xmp:"id3:podcastCategory"`
	Extension                            xmp.TagList             `id3:",any"        xmp:"id3:extension"`
}

func FindModel

func FindModel(d *xmp.Document) *ID3

func MakeModel

func MakeModel(d *xmp.Document) (*ID3, error)

func (*ID3) Can

func (m *ID3) Can(nsName string) bool

func (*ID3) CanTag

func (x *ID3) CanTag(tag string) bool

func (*ID3) GetLocaleTag

func (x *ID3) GetLocaleTag(lang string, tag string) (string, error)

Returns tag value as string for the selected language. Falls back to default language when lang is empty.

func (*ID3) GetTag

func (x *ID3) GetTag(tag string) (string, error)

func (*ID3) ListTags

func (x *ID3) ListTags() (xmp.TagList, error)

Lists all non-empty tags.

func (*ID3) Namespaces

func (m *ID3) Namespaces() xmp.NamespaceList

func (*ID3) SetLocaleTag

func (x *ID3) SetLocaleTag(lang string, tag, value string) error

func (*ID3) SetTag

func (x *ID3) SetTag(tag, value string) error

func (*ID3) SyncFromXMP

func (x *ID3) SyncFromXMP(d *xmp.Document) error

func (*ID3) SyncModel

func (x *ID3) SyncModel(d *xmp.Document) error

func (ID3) SyncToXMP

func (x ID3) SyncToXMP(d *xmp.Document) error
type Link struct {
	LinkedID string         `xmp:"id3:linkedId,attr"`
	Url      string         `xmp:"id3:url,attr"`
	Extra    xmp.StringList `xmp:"id3:extra"`
}

LINK

type LinkArray

type LinkArray []Link

func (LinkArray) MarshalXMP

func (x LinkArray) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error

func (LinkArray) Typ

func (x LinkArray) Typ() xmp.ArrayType

func (*LinkArray) UnmarshalText

func (x *LinkArray) UnmarshalText(data []byte) error

func (*LinkArray) UnmarshalXMP

func (x *LinkArray) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error

type LyricsType

type LyricsType byte
const (
	LyricsTypeOther      LyricsType = 0x00 // other
	LyricsTypeLyrics     LyricsType = 0x01 // lyrics
	LyricsTypeTranscript LyricsType = 0x02 // text transcription
	LyricsTypePart       LyricsType = 0x03 // movement/part name (e.g. "Adagio")
	LyricsTypeEvent      LyricsType = 0x04 // events (e.g. "Don Quijote enters the stage")
	LyricsTypeChord      LyricsType = 0x05 // chord (e.g. "Bb F Fsus")
	LyricsTypeTrivia     LyricsType = 0x06 // trivia/'pop up' information
	LyricsTypeWebUrl     LyricsType = 0x07 // URLs to webpages
	LyricsTypeImageUrl   LyricsType = 0x08 // URLs to images
)

type Marker

type Marker struct {
	MarkerType MarkerType `xmp:"id3:type,attr"`
	Timestamp  int64      `xmp:"id3:timestamp,attr"`
	Unit       UnitType   `xmp:"id3:unit,attr"`
}

ETCO

type MarkerList

type MarkerList []Marker

func (MarkerList) MarshalXMP

func (x MarkerList) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error

func (MarkerList) Typ

func (x MarkerList) Typ() xmp.ArrayType

func (*MarkerList) UnmarshalText

func (x *MarkerList) UnmarshalText(data []byte) error

func (*MarkerList) UnmarshalXMP

func (x *MarkerList) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error

type MarkerType

type MarkerType byte
const (
	MarkerTypePadding        MarkerType = 0x00 // padding (has no meaning)
	MarkerTypeEOS            MarkerType = 0x01 // end of initial silence
	MarkerTypeIntroStart     MarkerType = 0x02 // intro start
	MarkerTypeMainStart      MarkerType = 0x03 // main part start
	MarkerTypeOutroStart     MarkerType = 0x04 // outro start
	MarkerTypeOutroEnd       MarkerType = 0x05 // outro end
	MarkerTypeVerseStart     MarkerType = 0x06 // verse start
	MarkerTypeRefrainStart   MarkerType = 0x07 // refrain start
	MarkerTypeInterludeStart MarkerType = 0x08 // interlude start
	MarkerTypeThemeStart     MarkerType = 0x09 // theme start
	MarkerTypeVariationStart MarkerType = 0x0A // variation start
	MarkerTypeKeyChange      MarkerType = 0x0B // key change
	MarkerTypeTimeChange     MarkerType = 0x0C // time change
	MarkerTypeTemporaryNoise MarkerType = 0x0D // momentary unwanted noise (Snap, Crackle & Pop)
	MarkerTypeNoiseStart     MarkerType = 0x0E // sustained noise
	MarkerTypeNoiseEnd       MarkerType = 0x0F // sustained noise end
	MarkerTypeIntroEnd       MarkerType = 0x10 // intro end
	MarkerTypeMainEnd        MarkerType = 0x11 // main part end
	MarkerTypeVerseEnd       MarkerType = 0x12 // verse end
	MarkerTypeRefrainEnd     MarkerType = 0x13 // refrain end
	MarkerTypeThemeEnde      MarkerType = 0x14 // theme end
	MarkerTypeProfanityStart MarkerType = 0x15 // profanity
	MarkerTypeProfanityEnd   MarkerType = 0x16 // profanity end
	MarkerTypeAudioEnd       MarkerType = 0xFD // audio end (start of silence)
	MarkerTypeFileEnd        MarkerType = 0xFE // audio file ends
)

type Owner

type Owner struct {
	Currency     string   `xmp:"id3:currency"`
	Price        float32  `xmp:"id3:price"`
	PurchaseDate xmp.Date `xmp:"id3:purchaseDate"`
	Seller       string   `xmp:"id3:seller"`
}

OWNE

func (*Owner) UnmarshalText

func (x *Owner) UnmarshalText(data []byte) error

type PictureType

type PictureType byte
const (
	PictureTypeOther         PictureType = 0x00 // Other
	PictureTypeFileIcon32    PictureType = 0x01 // 32x32 pixels 'file icon' (PNG only)
	PictureTypeFileIcon      PictureType = 0x02 // Other file icon
	PictureTypeFrontCover    PictureType = 0x03 // Cover (front)
	PictureTypeBackCover     PictureType = 0x04 // Cover (back)
	PictureTypeLeaflet       PictureType = 0x05 // Leaflet page
	PictureTypeMedia         PictureType = 0x06 // Media (e.g. label side of CD)
	PictureTypePerformer     PictureType = 0x07 // Lead artist/lead performer/soloist
	PictureTypeArtist        PictureType = 0x08 // Artist/performer
	PictureTypeConductor     PictureType = 0x09 // Conductor
	PictureTypeBand          PictureType = 0x0A // Band/Orchestra
	PictureTypeComposer      PictureType = 0x0B // Composer
	PictureTypeWriter        PictureType = 0x0C // Lyricist/text writer
	PictureTypeLocation      PictureType = 0x0D // Recording Location
	PictureTypeRecording     PictureType = 0x0E // During recording
	PictureTypePerformance   PictureType = 0x0F // During performance
	PictureTypeSnapshot      PictureType = 0x10 // Movie/video screen capture
	PictureTypeFinish        PictureType = 0x11 // A bright coloured fish
	PictureTypeIllustration  PictureType = 0x12 // Illustration
)

type Popularimeter

type Popularimeter struct {
	Email   string `xmp:"id3:email,attr"`
	Rating  byte   `xmp:"id3:rating,attr"`
	Counter int64  `xmp:"id3:counter,attr"`
}

POPM

type PopularimeterArray

type PopularimeterArray []Popularimeter

func (PopularimeterArray) MarshalXMP

func (x PopularimeterArray) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error

func (PopularimeterArray) Typ

func (*PopularimeterArray) UnmarshalText

func (x *PopularimeterArray) UnmarshalText(data []byte) error

func (*PopularimeterArray) UnmarshalXMP

func (x *PopularimeterArray) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error

type PositionSync

type PositionSync struct {
	Unit     PositionType `xmp:"id3:unit,attr"`
	Position int64        `xmp:"id3:position,attr"`
}

POSS

type PositionType

type PositionType byte
const (
	PositionTypeFrame PositionType = 0x1 // MPEG frames
	PositionTypeMs    PositionType = 0x2 // millisec
)

type Price

type Price struct {
	Currency string
	Amount   float32
}

type PriceList

type PriceList []Price

func (PriceList) MarshalXMP

func (x PriceList) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error

func (PriceList) Typ

func (x PriceList) Typ() xmp.ArrayType

func (*PriceList) UnmarshalXMP

func (x *PriceList) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error

type PrivateData

type PrivateData struct {
	Owner string `xmp:"id3:owner,attr"`
	Data  []byte `xmp:"id3:data"`
}

PRIV

type PrivateDataArray

type PrivateDataArray []PrivateData

func (PrivateDataArray) MarshalXMP

func (x PrivateDataArray) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error

func (PrivateDataArray) Typ

func (x PrivateDataArray) Typ() xmp.ArrayType

func (*PrivateDataArray) UnmarshalText

func (x *PrivateDataArray) UnmarshalText(data []byte) error

func (*PrivateDataArray) UnmarshalXMP

func (x *PrivateDataArray) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error

type Reverb

type Reverb struct {
	ReverbLeftMs       int  `xmp:"id3:reverbLeftMs"`
	ReverbRightMs      int  `xmp:"id3:reverbRightMs"`
	ReverbBouncesLeft  byte `xmp:"id3:reverbBouncesLeft"`
	ReverbBouncesRight byte `xmp:"id3:reverbBouncesRight"`
	ReverbFeedbackLtoL byte `xmp:"id3:reverbFeedbackLtoL"`
	ReverbFeedbackLToR byte `xmp:"id3:reverbFeedbackLToR"`
	ReverbFeedbackRtoR byte `xmp:"id3:reverbFeedbackRtoR"`
	ReverbFeedbackRtoL byte `xmp:"id3:reverbFeedbackRtoL"`
	PremixLtoR         byte `xmp:"id3:premixLtoR"`
	PremixRtoL         byte `xmp:"id3:premixRtoL"`
}

RVRB

func (*Reverb) UnmarshalText

func (x *Reverb) UnmarshalText(data []byte) error

type Signature

type Signature struct {
	GroupSymbol byte   `xmp:"id3:groupSymbol,attr"` // 0x80-0xF0
	Signature   []byte `xmp:"id3:signature"`
}

SIGN

type SignatureArray

type SignatureArray []Signature

func (SignatureArray) MarshalXMP

func (x SignatureArray) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error

func (SignatureArray) Typ

func (x SignatureArray) Typ() xmp.ArrayType

func (*SignatureArray) UnmarshalText

func (x *SignatureArray) UnmarshalText(data []byte) error

func (*SignatureArray) UnmarshalXMP

func (x *SignatureArray) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error

type Time23

type Time23 time.Time

func (Time23) IsZero

func (x Time23) IsZero() bool

func (Time23) MarshalText

func (x Time23) MarshalText() ([]byte, error)

func (*Time23) UnmarshalText

func (x *Time23) UnmarshalText(data []byte) error

func (Time23) Value

func (x Time23) Value() time.Time

type TimedLyrics

type TimedLyrics struct {
	Lang   string        `xmp:"id3:lang,attr"`
	Type   LyricsType    `xmp:"id3:type,attr"`
	Unit   PositionType  `xmp:"id3:unit,attr"`
	Lyrics TimedTextList `xmp:"id3:lyrics,attr"`
}

SYLT

type TimedLyricsArray

type TimedLyricsArray []TimedLyrics

func (TimedLyricsArray) MarshalXMP

func (x TimedLyricsArray) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error

func (TimedLyricsArray) Typ

func (x TimedLyricsArray) Typ() xmp.ArrayType

func (*TimedLyricsArray) UnmarshalText

func (x *TimedLyricsArray) UnmarshalText(data []byte) error

see id3 v.24 spec 4.9 - one id3 frame per language and content type - null-terminated text followed by a timestamp and optionally newline

"Strang" $00 xx xx "ers" $00 xx xx " in" $00 xx xx " the" $00 xx xx
" night" $00 xx xx 0A "Ex" $00 xx xx "chang" $00 xx xx "ing" $00 xx
xx "glan" $00 xx xx "ces" $00 xx xx

func (*TimedLyricsArray) UnmarshalXMP

func (x *TimedLyricsArray) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error

type TimedText

type TimedText struct {
	Text      string `xmp:"id3:text,attr"`
	Timestamp int64  `xmp:"id3:timestamp,attr"`
}

type TimedTextList

type TimedTextList []TimedText

func (TimedTextList) MarshalXMP

func (x TimedTextList) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error

func (TimedTextList) Typ

func (x TimedTextList) Typ() xmp.ArrayType

func (*TimedTextList) UnmarshalXMP

func (x *TimedTextList) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error

type TocEntry

type TocEntry struct {
	Flags  int            `xmp:"id3:flags"`
	IDList xmp.StringList `xmp:"id3:idlist"`
	Info   string         `xmp:"id3:info"`
}

CTOC

type TocEntryList

type TocEntryList []TocEntry

func (TocEntryList) MarshalXMP

func (x TocEntryList) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error

func (TocEntryList) Typ

func (x TocEntryList) Typ() xmp.ArrayType

func (*TocEntryList) UnmarshalText

func (x *TocEntryList) UnmarshalText(data []byte) error

func (*TocEntryList) UnmarshalXMP

func (x *TocEntryList) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error

type TrackNum

type TrackNum struct {
	Track int
	Total int
}

TRCK 10 10/12

func (TrackNum) IsZero

func (x TrackNum) IsZero() bool

func (TrackNum) MarshalText

func (x TrackNum) MarshalText() ([]byte, error)

func (*TrackNum) UnmarshalText

func (x *TrackNum) UnmarshalText(data []byte) error

func (TrackNum) Value

func (x TrackNum) Value() int

type UnitType

type UnitType byte
const (
	UnitTypeMs    UnitType = 0x1 // millisec
	UnitTypeFrame UnitType = 0x2 // MPEG frames
)

type VolumeAdjust

type VolumeAdjust struct {
	Channel    ChannelType `xmp:"id3:channel,attr"`
	Adjustment float32     `xmp:"id3:adjust,attr"`
	Bits       byte        `xmp:"id3:bits,attr"`
	PeakVolume float32     `xmp:"id3:peak,attr"`
}

RVA2

type VolumeAdjustArray

type VolumeAdjustArray []VolumeAdjust

func (VolumeAdjustArray) MarshalXMP

func (x VolumeAdjustArray) MarshalXMP(e *xmp.Encoder, node *xmp.Node, m xmp.Model) error

func (VolumeAdjustArray) Typ

func (*VolumeAdjustArray) UnmarshalText

func (x *VolumeAdjustArray) UnmarshalText(data []byte) error

func (*VolumeAdjustArray) UnmarshalXMP

func (x *VolumeAdjustArray) UnmarshalXMP(d *xmp.Decoder, node *xmp.Node, m xmp.Model) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL