]> git.vomp.tv Git - vompclient.git/blob - id3.h
Windows has no asprintf. Boohoo.
[vompclient.git] / id3.h
1 /*
2     Copyright 2006 Brian Walton , Andreas Vogel
3
4     This file is part of VOMP.
5
6     VOMP is free software; you can redistribute it and/or modify
7     it under the terms of the GNU General Public License as published by
8     the Free Software Foundation; either version 2 of the License, or
9     (at your option) any later version.
10
11     VOMP is distributed in the hope that it will be useful,
12     but WITHOUT ANY WARRANTY; without even the implied warranty of
13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14     GNU General Public License for more details.
15
16     You should have received a copy of the GNU General Public License
17     along with VOMP; if not, write to the Free Software
18     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
19 */
20
21 #ifndef ID3TAGS_H
22 #define ID3TAGS_H
23
24 typedef struct id3_flags_t
25 {
26   int unsynchronisation;
27   int extended_header;
28   int experimental;
29   int footer;
30 } id3_flags;
31
32 typedef struct extended_header_t
33 {
34   int size;
35   int flag_bytes;
36   int flags;
37 } extended_header;
38
39 typedef struct id3_header_t
40 {
41   int major;
42   int minor;
43   id3_flags flags;
44   int size;
45   struct extended_header_t extended_header;
46 } id3_header;
47
48 typedef struct id3_frame_flags_t
49 {
50   int tagAlterPreserv;
51   int filelterPreserv;
52   int readOnly;
53   int groupId;
54   int compression;
55   int encryption;
56   int unsync;
57   int dataLen;
58 } id3_frame_flags;
59
60 typedef struct id3_frame_t
61 {
62   int size;
63   id3_frame_flags flags;
64 } id3_frame;
65
66 typedef struct id3_tag_t
67 {
68         public:
69                 id3_tag_t() {
70                         title[0]=0;
71                         artist[0]=0;
72                         genre[0]=0;
73                         year[0]=0;
74                         album[0]=0;
75                         track[0]=0;
76                         composer[0]=0;
77                         comment[0]=0;
78                 };
79                 int stringlen(bool withTitle=false) const;
80                 //write to buffer, delete it afterwards (if you did not provide it)
81                 char *toString(char * buf=NULL, int len=0,bool withTitle=false) const;
82                 char title[50];
83                 char artist[50];
84                 char genre[50];
85                 char year[5];
86                 char album[50];
87                 char track[7];
88                 char composer[50];
89                 char comment[29];
90 } id3_tag;
91
92 #endif