MP4v2
Tags.h
1
2//
3// The contents of this file are subject to the Mozilla Public License
4// Version 1.1 (the "License"); you may not use this file except in
5// compliance with the License. You may obtain a copy of the License at
6// http://www.mozilla.org/MPL/
7//
8// Software distributed under the License is distributed on an "AS IS"
9// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
10// License for the specific language governing rights and limitations
11// under the License.
12//
13// The Original Code is MP4v2.
14//
15// The Initial Developer of the Original Code is Kona Blend.
16// Portions created by Kona Blend are Copyright (C) 2008.
17// Portions created by David Byron are Copyright (C) 2011.
18// All Rights Reserved.
19//
20// Contributors:
21// Kona Blend, kona8lend@gmail.com
22// Rouven Wessling, mp4v2@rouvenwessling.de
23// David Byron, dbyron@dbyron.com
24//
26
27#ifndef MP4V2_IMPL_ITMF_TAGS_H
28#define MP4V2_IMPL_ITMF_TAGS_H
29
30namespace mp4v2 { namespace impl { namespace itmf {
31
33
34class Tags
35{
36public:
37 static const string CODE_NAME;
38 static const string CODE_ARTIST;
39 static const string CODE_ALBUMARTIST;
40 static const string CODE_ALBUM;
41 static const string CODE_GROUPING;
42 static const string CODE_COMPOSER;
43 static const string CODE_COMMENTS;
44 static const string CODE_GENRE;
45 static const string CODE_GENRETYPE;
46 static const string CODE_RELEASEDATE;
47 static const string CODE_TRACK;
48 static const string CODE_DISK;
49 static const string CODE_TEMPO;
50 static const string CODE_COMPILATION;
51
52 static const string CODE_TVSHOW;
53 static const string CODE_TVNETWORK;
54 static const string CODE_TVEPISODEID;
55 static const string CODE_TVSEASON;
56 static const string CODE_TVEPISODE;
57
58 static const string CODE_DESCRIPTION;
59 static const string CODE_LONGDESCRIPTION;
60 static const string CODE_LYRICS;
61
62 static const string CODE_SORTNAME;
63 static const string CODE_SORTARTIST;
64 static const string CODE_SORTALBUMARTIST;
65 static const string CODE_SORTALBUM;
66 static const string CODE_SORTCOMPOSER;
67 static const string CODE_SORTTVSHOW;
68
69 static const string CODE_COPYRIGHT;
70 static const string CODE_ENCODINGTOOL;
71 static const string CODE_ENCODEDBY;
72 static const string CODE_PURCHASEDATE;
73
74 static const string CODE_PODCAST;
75 static const string CODE_KEYWORDS;
76 static const string CODE_CATEGORY;
77
78 static const string CODE_HDVIDEO;
79 static const string CODE_MEDIATYPE;
80 static const string CODE_CONTENTRATING;
81 static const string CODE_GAPLESS;
82
83 static const string CODE_ITUNESACCOUNT;
84 static const string CODE_ITUNESACCOUNTTYPE;
85 static const string CODE_ITUNESCOUNTRY;
86 static const string CODE_CONTENTID;
87 static const string CODE_ARTISTID;
88 static const string CODE_PLAYLISTID;
89 static const string CODE_GENREID;
90 static const string CODE_COMPOSERID;
91 static const string CODE_XID;
92
93public:
94 string name;
95 string artist;
96 string albumArtist;
97 string album;
98 string grouping;
99 string composer;
100 string comments;
101 string genre;
102 uint16_t genreType;
103 string releaseDate;
104 MP4TagTrack track;
105 MP4TagDisk disk;
106 uint16_t tempo;
107 uint8_t compilation;
108
109 string tvShow;
110 string tvEpisodeID;
111 uint32_t tvSeason;
112 uint32_t tvEpisode;
113 string tvNetwork;
114
115 string description;
116 string longDescription;
117 string lyrics;
118
119 string sortName;
120 string sortArtist;
121 string sortAlbumArtist;
122 string sortAlbum;
123 string sortComposer;
124 string sortTVShow;
125
126 CoverArtBox::ItemList artwork;
127
128 string copyright;
129 string encodingTool;
130 string encodedBy;
131 string purchaseDate;
132
133 uint8_t podcast;
134 string keywords;
135 string category;
136
137 uint8_t hdVideo;
138 uint8_t mediaType;
139 uint8_t contentRating;
140 uint8_t gapless;
141
142 string iTunesAccount;
143 uint8_t iTunesAccountType;
144 uint32_t iTunesCountry;
145 uint32_t contentID;
146 uint32_t artistID;
147 uint64_t playlistID;
148 uint32_t genreID;
149 uint32_t composerID;
150 string xid;
151
152 bool hasMetadata;
153
154public:
155 Tags();
156 ~Tags();
157
158 void c_alloc ( MP4Tags*& );
159 void c_fetch ( MP4Tags*&, MP4FileHandle );
160 void c_store ( MP4Tags*&, MP4FileHandle );
161 void c_free ( MP4Tags*& );
162
163 void c_addArtwork ( MP4Tags*&, MP4TagArtwork& );
164 void c_setArtwork ( MP4Tags*&, uint32_t, MP4TagArtwork& );
165 void c_removeArtwork ( MP4Tags*&, uint32_t );
166
167 void c_setString ( const char*, string&, const char*& );
168 void c_setInteger ( const uint8_t*, uint8_t&, const uint8_t*& );
169 void c_setInteger ( const uint16_t*, uint16_t&, const uint16_t*& );
170 void c_setInteger ( const uint32_t*, uint32_t&, const uint32_t*& );
171 void c_setInteger ( const uint64_t*, uint64_t&, const uint64_t*& );
172
173 void c_setTrack ( const MP4TagTrack*, MP4TagTrack&, const MP4TagTrack*& );
174 void c_setDisk ( const MP4TagDisk*, MP4TagDisk&, const MP4TagDisk*& );
175
176private:
177 typedef map<string,MP4ItmfItem*> CodeItemMap;
178
179private:
180 void fetchString ( const CodeItemMap&, const string&, string&, const char*& );
181 void fetchInteger ( const CodeItemMap&, const string&, uint8_t&, const uint8_t*& );
182 void fetchInteger ( const CodeItemMap&, const string&, uint16_t&, const uint16_t*& );
183 void fetchInteger ( const CodeItemMap&, const string&, uint32_t&, const uint32_t*& );
184 void fetchInteger ( const CodeItemMap&, const string&, uint64_t&, const uint64_t*& );
185
186 void fetchGenre ( const CodeItemMap&, uint16_t&, const uint16_t*& );
187 void fetchTrack ( const CodeItemMap&, MP4TagTrack&, const MP4TagTrack*& );
188 void fetchDisk ( const CodeItemMap&, MP4TagDisk&, const MP4TagDisk*& );
189
190 void storeString ( MP4File&, const string&, const string&, const char* );
191 void storeInteger ( MP4File&, const string&, uint8_t, const uint8_t* );
192 void storeInteger ( MP4File&, const string&, uint16_t, const uint16_t* );
193 void storeInteger ( MP4File&, const string&, uint32_t, const uint32_t* );
194 void storeInteger ( MP4File&, const string&, uint64_t, const uint64_t* );
195
196 void storeGenre ( MP4File&, uint16_t, const uint16_t* );
197 void storeTrack ( MP4File&, const MP4TagTrack&, const MP4TagTrack* );
198 void storeDisk ( MP4File&, const MP4TagDisk&, const MP4TagDisk* );
199
200 void remove ( MP4File&, const string& );
201 void store ( MP4File&, const string&, MP4ItmfBasicType, const void*, uint32_t );
202
203 void updateArtworkShadow( MP4Tags*& );
204};
205
207
208}}} // namespace mp4v2::impl::itmf
209
210#endif // MP4V2_IMPL_ITMF_TAGS_H
vector< Item > ItemList
Object representing a list of covr-box items.
Definition: CoverArtBox.h:61
Definition: Tags.h:35
enum MP4ItmfBasicType_e MP4ItmfBasicType
Basic types of value data as enumerated in spec.
Data object representing a single piece of artwork.
Definition: itmf_tags.h:68
Definition: itmf_tags.h:81
Definition: itmf_tags.h:75
Tags convenience structure.
Definition: itmf_tags.h:99