rtaglib 0.2.3 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +4 -0
- data/Manifest.txt +84 -9
- data/README.txt +0 -0
- data/Rakefile +30 -27
- data/{test/data → data}/440Hz-5sec.flac +0 -0
- data/{test/data → data}/440Hz-5sec.mp3 +0 -0
- data/{test/data → data}/440Hz-5sec.mpc +0 -0
- data/{test/data → data}/440Hz-5sec.ogg +0 -0
- data/{test/data → data}/440Hz-5sec.wv +0 -0
- data/data/test_jason.mp3 +0 -0
- data/data/test_jason.ogg +0 -0
- data/ext/Rakefile +10 -0
- data/ext/tagfile/Rakefile.rb +42 -0
- data/ext/tagfile/rake_ext_conf.rb +29 -0
- data/ext/tagfile/tagfile.c +11 -7
- data/ext/taglib/Rakefile.rb +48 -0
- data/ext/taglib/rake_ext_conf.rb +33 -0
- data/ext/taglib/taglib-mswin32/bin/tag.dll +0 -0
- data/ext/taglib/taglib-mswin32/bin/tag_c.dll +0 -0
- data/ext/taglib/taglib-mswin32/bin/tag_cd.dll +0 -0
- data/ext/taglib/taglib-mswin32/bin/tagd.dll +0 -0
- data/ext/taglib/taglib-mswin32/bin/taglib-config +55 -0
- data/ext/taglib/taglib-mswin32/include/taglib/apefooter.h +173 -0
- data/ext/taglib/taglib-mswin32/include/taglib/apeitem.h +204 -0
- data/ext/taglib/taglib-mswin32/include/taglib/apetag.h +162 -0
- data/ext/taglib/taglib-mswin32/include/taglib/attachedpictureframe.h +220 -0
- data/ext/taglib/taglib-mswin32/include/taglib/audioproperties.h +110 -0
- data/ext/taglib/taglib-mswin32/include/taglib/commentsframe.h +168 -0
- data/ext/taglib/taglib-mswin32/include/taglib/fileref.h +262 -0
- data/ext/taglib/taglib-mswin32/include/taglib/flacfile.h +201 -0
- data/ext/taglib/taglib-mswin32/include/taglib/flacproperties.h +92 -0
- data/ext/taglib/taglib-mswin32/include/taglib/generalencapsulatedobjectframe.h +174 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v1genres.h +66 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v1tag.h +180 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2extendedheader.h +93 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2footer.h +82 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2frame.h +414 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2framefactory.h +167 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2header.h +175 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2synchdata.h +70 -0
- data/ext/taglib/taglib-mswin32/include/taglib/id3v2tag.h +300 -0
- data/ext/taglib/taglib-mswin32/include/taglib/mpcfile.h +175 -0
- data/ext/taglib/taglib-mswin32/include/taglib/mpcproperties.h +85 -0
- data/ext/taglib/taglib-mswin32/include/taglib/mpegfile.h +277 -0
- data/ext/taglib/taglib-mswin32/include/taglib/mpegheader.h +166 -0
- data/ext/taglib/taglib-mswin32/include/taglib/mpegproperties.h +118 -0
- data/ext/taglib/taglib-mswin32/include/taglib/oggfile.h +112 -0
- data/ext/taglib/taglib-mswin32/include/taglib/oggflacfile.h +118 -0
- data/ext/taglib/taglib-mswin32/include/taglib/oggpage.h +203 -0
- data/ext/taglib/taglib-mswin32/include/taglib/oggpageheader.h +232 -0
- data/ext/taglib/taglib-mswin32/include/taglib/relativevolumeframe.h +274 -0
- data/ext/taglib/taglib-mswin32/include/taglib/speexfile.h +99 -0
- data/ext/taglib/taglib-mswin32/include/taglib/speexproperties.h +89 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tag.h +173 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tag_c.h +288 -0
- data/ext/taglib/taglib-mswin32/include/taglib/taglib.h +177 -0
- data/ext/taglib/taglib-mswin32/include/taglib/taglib_export.h +39 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tbytevector.h +409 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tbytevectorlist.h +91 -0
- data/ext/taglib/taglib-mswin32/include/taglib/textidentificationframe.h +258 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tfile.h +271 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tlist.h +252 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tlist.tcc +316 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tmap.h +200 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tmap.tcc +196 -0
- data/ext/taglib/taglib-mswin32/include/taglib/trueaudiofile.h +180 -0
- data/ext/taglib/taglib-mswin32/include/taglib/trueaudioproperties.h +93 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tstring.h +456 -0
- data/ext/taglib/taglib-mswin32/include/taglib/tstringlist.h +115 -0
- data/ext/taglib/taglib-mswin32/include/taglib/uniquefileidentifierframe.h +113 -0
- data/ext/taglib/taglib-mswin32/include/taglib/unknownframe.h +79 -0
- data/ext/taglib/taglib-mswin32/include/taglib/unsynchronizedlyricsframe.h +157 -0
- data/ext/taglib/taglib-mswin32/include/taglib/urllinkframe.h +172 -0
- data/ext/taglib/taglib-mswin32/include/taglib/vorbisfile.h +118 -0
- data/ext/taglib/taglib-mswin32/include/taglib/vorbisproperties.h +125 -0
- data/ext/taglib/taglib-mswin32/include/taglib/wavpackfile.h +164 -0
- data/ext/taglib/taglib-mswin32/include/taglib/wavpackproperties.h +94 -0
- data/ext/taglib/taglib-mswin32/include/taglib/xingheader.h +100 -0
- data/ext/taglib/taglib-mswin32/include/taglib/xiphcomment.h +202 -0
- data/ext/taglib/taglib-mswin32/lib/pkgconfig/taglib_c.pc +12 -0
- data/ext/taglib/taglib-mswin32/lib/tag.lib +0 -0
- data/ext/taglib/taglib-mswin32/lib/tag_c.lib +0 -0
- data/ext/taglib/taglib_i386-mingw32.source +22645 -0
- data/ext/taglib/taglib_i386-mswin32.source +22645 -0
- data/ext/taglib/{taglib.cxx → taglib_x86_64-linux.source} +508 -75
- data/lib/TagLib.rb +3 -2
- data/lib/TagLib_doc.rb +1532 -1526
- data/lib/rtaglib_mswin32.rb +4 -0
- data/lib/tagfile.rb +6 -0
- data/swig/Doxyfile +0 -0
- data/swig/Rakefile +44 -19
- data/swig/TagLib_doc.rb +2755 -0
- data/swig/make_doc.rb +5 -4
- data/swig/process_cxx.rb +2 -2
- data/swig/rake_ext_conf.rb +33 -0
- data/swig/taglib.i +8 -5
- data/swig/test.rb +47 -39
- data/test/test_read.rb +4 -3
- data/test/test_taglib.rb +47 -39
- data/test/test_write.rb +4 -3
- metadata +96 -20
- data/ext/tagfile/extconf.rb +0 -14
- data/ext/taglib/extconf.rb +0 -22
- data/swig/extconf.rb +0 -22
@@ -0,0 +1,166 @@
|
|
1
|
+
/***************************************************************************
|
2
|
+
copyright : (C) 2002 - 2008 by Scott Wheeler
|
3
|
+
email : wheeler@kde.org
|
4
|
+
***************************************************************************/
|
5
|
+
|
6
|
+
/***************************************************************************
|
7
|
+
* This library is free software; you can redistribute it and/or modify *
|
8
|
+
* it under the terms of the GNU Lesser General Public License version *
|
9
|
+
* 2.1 as published by the Free Software Foundation. *
|
10
|
+
* *
|
11
|
+
* This library is distributed in the hope that it will be useful, but *
|
12
|
+
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
13
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
14
|
+
* Lesser General Public License for more details. *
|
15
|
+
* *
|
16
|
+
* You should have received a copy of the GNU Lesser General Public *
|
17
|
+
* License along with this library; if not, write to the Free Software *
|
18
|
+
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
19
|
+
* USA *
|
20
|
+
* *
|
21
|
+
* Alternatively, this file is available under the Mozilla Public *
|
22
|
+
* License Version 1.1. You may obtain a copy of the License at *
|
23
|
+
* http://www.mozilla.org/MPL/ *
|
24
|
+
***************************************************************************/
|
25
|
+
|
26
|
+
#ifndef TAGLIB_MPEGHEADER_H
|
27
|
+
#define TAGLIB_MPEGHEADER_H
|
28
|
+
|
29
|
+
#include "taglib_export.h"
|
30
|
+
|
31
|
+
namespace TagLib {
|
32
|
+
|
33
|
+
class ByteVector;
|
34
|
+
|
35
|
+
namespace MPEG {
|
36
|
+
|
37
|
+
//! An implementation of MP3 frame headers
|
38
|
+
|
39
|
+
/*!
|
40
|
+
* This is an implementation of MPEG Layer III headers. The API follows more
|
41
|
+
* or less the binary format of these headers. I've used
|
42
|
+
* <a href="http://www.mp3-tech.org/programmer/frame_header.html">this</a>
|
43
|
+
* document as a reference.
|
44
|
+
*/
|
45
|
+
|
46
|
+
class TAGLIB_EXPORT Header
|
47
|
+
{
|
48
|
+
public:
|
49
|
+
/*!
|
50
|
+
* Parses an MPEG header based on \a data.
|
51
|
+
*/
|
52
|
+
Header(const ByteVector &data);
|
53
|
+
|
54
|
+
/*!
|
55
|
+
* Does a shallow copy of \a h.
|
56
|
+
*/
|
57
|
+
Header(const Header &h);
|
58
|
+
|
59
|
+
/*!
|
60
|
+
* Destroys this Header instance.
|
61
|
+
*/
|
62
|
+
virtual ~Header();
|
63
|
+
|
64
|
+
/*!
|
65
|
+
* Returns true if the frame is at least an appropriate size and has
|
66
|
+
* legal values.
|
67
|
+
*/
|
68
|
+
bool isValid() const;
|
69
|
+
|
70
|
+
/*!
|
71
|
+
* The MPEG Version.
|
72
|
+
*/
|
73
|
+
enum Version {
|
74
|
+
//! MPEG Version 1
|
75
|
+
Version1 = 0,
|
76
|
+
//! MPEG Version 2
|
77
|
+
Version2 = 1,
|
78
|
+
//! MPEG Version 2.5
|
79
|
+
Version2_5 = 2
|
80
|
+
};
|
81
|
+
|
82
|
+
/*!
|
83
|
+
* Returns the MPEG Version of the header.
|
84
|
+
*/
|
85
|
+
Version version() const;
|
86
|
+
|
87
|
+
/*!
|
88
|
+
* Returns the layer version. This will be between the values 1-3.
|
89
|
+
*/
|
90
|
+
int layer() const;
|
91
|
+
|
92
|
+
/*!
|
93
|
+
* Returns true if the MPEG protection bit is enabled.
|
94
|
+
*/
|
95
|
+
bool protectionEnabled() const;
|
96
|
+
|
97
|
+
/*!
|
98
|
+
* Returns the bitrate encoded in the header.
|
99
|
+
*/
|
100
|
+
int bitrate() const;
|
101
|
+
|
102
|
+
/*!
|
103
|
+
* Returns the sample rate in Hz.
|
104
|
+
*/
|
105
|
+
int sampleRate() const;
|
106
|
+
|
107
|
+
/*!
|
108
|
+
* Returns true if the frame is padded.
|
109
|
+
*/
|
110
|
+
bool isPadded() const;
|
111
|
+
|
112
|
+
/*!
|
113
|
+
* There are a few combinations or one or two channel audio that are
|
114
|
+
* possible:
|
115
|
+
*/
|
116
|
+
enum ChannelMode {
|
117
|
+
//! Stereo
|
118
|
+
Stereo = 0,
|
119
|
+
//! Stereo
|
120
|
+
JointStereo = 1,
|
121
|
+
//! Dual Mono
|
122
|
+
DualChannel = 2,
|
123
|
+
//! Mono
|
124
|
+
SingleChannel = 3
|
125
|
+
};
|
126
|
+
|
127
|
+
/*!
|
128
|
+
* Returns the channel mode for this frame.
|
129
|
+
*/
|
130
|
+
ChannelMode channelMode() const;
|
131
|
+
|
132
|
+
/*!
|
133
|
+
* Returns true if the copyrighted bit is set.
|
134
|
+
*/
|
135
|
+
bool isCopyrighted() const;
|
136
|
+
|
137
|
+
/*!
|
138
|
+
* Returns true if the "original" bit is set.
|
139
|
+
*/
|
140
|
+
bool isOriginal() const;
|
141
|
+
|
142
|
+
/*!
|
143
|
+
* Returns the frame length.
|
144
|
+
*/
|
145
|
+
int frameLength() const;
|
146
|
+
|
147
|
+
/*!
|
148
|
+
* Returns the number of frames per sample.
|
149
|
+
*/
|
150
|
+
int samplesPerFrame() const;
|
151
|
+
|
152
|
+
/*!
|
153
|
+
* Makes a shallow copy of the header.
|
154
|
+
*/
|
155
|
+
Header &operator=(const Header &h);
|
156
|
+
|
157
|
+
private:
|
158
|
+
void parse(const ByteVector &data);
|
159
|
+
|
160
|
+
class HeaderPrivate;
|
161
|
+
HeaderPrivate *d;
|
162
|
+
};
|
163
|
+
}
|
164
|
+
}
|
165
|
+
|
166
|
+
#endif
|
@@ -0,0 +1,118 @@
|
|
1
|
+
/***************************************************************************
|
2
|
+
copyright : (C) 2002 - 2008 by Scott Wheeler
|
3
|
+
email : wheeler@kde.org
|
4
|
+
***************************************************************************/
|
5
|
+
|
6
|
+
/***************************************************************************
|
7
|
+
* This library is free software; you can redistribute it and/or modify *
|
8
|
+
* it under the terms of the GNU Lesser General Public License version *
|
9
|
+
* 2.1 as published by the Free Software Foundation. *
|
10
|
+
* *
|
11
|
+
* This library is distributed in the hope that it will be useful, but *
|
12
|
+
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
13
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
14
|
+
* Lesser General Public License for more details. *
|
15
|
+
* *
|
16
|
+
* You should have received a copy of the GNU Lesser General Public *
|
17
|
+
* License along with this library; if not, write to the Free Software *
|
18
|
+
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
19
|
+
* USA *
|
20
|
+
* *
|
21
|
+
* Alternatively, this file is available under the Mozilla Public *
|
22
|
+
* License Version 1.1. You may obtain a copy of the License at *
|
23
|
+
* http://www.mozilla.org/MPL/ *
|
24
|
+
***************************************************************************/
|
25
|
+
|
26
|
+
#ifndef TAGLIB_MPEGPROPERTIES_H
|
27
|
+
#define TAGLIB_MPEGPROPERTIES_H
|
28
|
+
|
29
|
+
#include "taglib_export.h"
|
30
|
+
#include "audioproperties.h"
|
31
|
+
|
32
|
+
#include "mpegheader.h"
|
33
|
+
|
34
|
+
namespace TagLib {
|
35
|
+
|
36
|
+
namespace MPEG {
|
37
|
+
|
38
|
+
class File;
|
39
|
+
class XingHeader;
|
40
|
+
|
41
|
+
//! An implementation of audio property reading for MP3
|
42
|
+
|
43
|
+
/*!
|
44
|
+
* This reads the data from an MPEG Layer III stream found in the
|
45
|
+
* AudioProperties API.
|
46
|
+
*/
|
47
|
+
|
48
|
+
class TAGLIB_EXPORT Properties : public AudioProperties
|
49
|
+
{
|
50
|
+
public:
|
51
|
+
/*!
|
52
|
+
* Create an instance of MPEG::Properties with the data read from the
|
53
|
+
* MPEG::File \a file.
|
54
|
+
*/
|
55
|
+
Properties(File *file, ReadStyle style = Average);
|
56
|
+
|
57
|
+
/*!
|
58
|
+
* Destroys this MPEG Properties instance.
|
59
|
+
*/
|
60
|
+
virtual ~Properties();
|
61
|
+
|
62
|
+
// Reimplementations.
|
63
|
+
|
64
|
+
virtual int length() const;
|
65
|
+
virtual int bitrate() const;
|
66
|
+
virtual int sampleRate() const;
|
67
|
+
virtual int channels() const;
|
68
|
+
|
69
|
+
/*!
|
70
|
+
* Returns a pointer to the XingHeader if one exists or null if no
|
71
|
+
* XingHeader was found.
|
72
|
+
*/
|
73
|
+
|
74
|
+
const XingHeader *xingHeader() const;
|
75
|
+
|
76
|
+
/*!
|
77
|
+
* Returns the MPEG Version of the file.
|
78
|
+
*/
|
79
|
+
Header::Version version() const;
|
80
|
+
|
81
|
+
/*!
|
82
|
+
* Returns the layer version. This will be between the values 1-3.
|
83
|
+
*/
|
84
|
+
int layer() const;
|
85
|
+
|
86
|
+
/*!
|
87
|
+
* Returns true if the MPEG protection bit is enabled.
|
88
|
+
*/
|
89
|
+
bool protectionEnabled() const;
|
90
|
+
|
91
|
+
/*!
|
92
|
+
* Returns the channel mode for this frame.
|
93
|
+
*/
|
94
|
+
Header::ChannelMode channelMode() const;
|
95
|
+
|
96
|
+
/*!
|
97
|
+
* Returns true if the copyrighted bit is set.
|
98
|
+
*/
|
99
|
+
bool isCopyrighted() const;
|
100
|
+
|
101
|
+
/*!
|
102
|
+
* Returns true if the "original" bit is set.
|
103
|
+
*/
|
104
|
+
bool isOriginal() const;
|
105
|
+
|
106
|
+
private:
|
107
|
+
Properties(const Properties &);
|
108
|
+
Properties &operator=(const Properties &);
|
109
|
+
|
110
|
+
void read();
|
111
|
+
|
112
|
+
class PropertiesPrivate;
|
113
|
+
PropertiesPrivate *d;
|
114
|
+
};
|
115
|
+
}
|
116
|
+
}
|
117
|
+
|
118
|
+
#endif
|
@@ -0,0 +1,112 @@
|
|
1
|
+
/***************************************************************************
|
2
|
+
copyright : (C) 2002 - 2008 by Scott Wheeler
|
3
|
+
email : wheeler@kde.org
|
4
|
+
***************************************************************************/
|
5
|
+
|
6
|
+
/***************************************************************************
|
7
|
+
* This library is free software; you can redistribute it and/or modify *
|
8
|
+
* it under the terms of the GNU Lesser General Public License version *
|
9
|
+
* 2.1 as published by the Free Software Foundation. *
|
10
|
+
* *
|
11
|
+
* This library is distributed in the hope that it will be useful, but *
|
12
|
+
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
13
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
14
|
+
* Lesser General Public License for more details. *
|
15
|
+
* *
|
16
|
+
* You should have received a copy of the GNU Lesser General Public *
|
17
|
+
* License along with this library; if not, write to the Free Software *
|
18
|
+
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
19
|
+
* USA *
|
20
|
+
* *
|
21
|
+
* Alternatively, this file is available under the Mozilla Public *
|
22
|
+
* License Version 1.1. You may obtain a copy of the License at *
|
23
|
+
* http://www.mozilla.org/MPL/ *
|
24
|
+
***************************************************************************/
|
25
|
+
|
26
|
+
#include "taglib_export.h"
|
27
|
+
#include "tfile.h"
|
28
|
+
#include "tbytevectorlist.h"
|
29
|
+
|
30
|
+
#ifndef TAGLIB_OGGFILE_H
|
31
|
+
#define TAGLIB_OGGFILE_H
|
32
|
+
|
33
|
+
namespace TagLib {
|
34
|
+
|
35
|
+
//! A namespace for the classes used by Ogg-based metadata files
|
36
|
+
|
37
|
+
namespace Ogg {
|
38
|
+
|
39
|
+
class PageHeader;
|
40
|
+
|
41
|
+
//! An implementation of TagLib::File with some helpers for Ogg based formats
|
42
|
+
|
43
|
+
/*!
|
44
|
+
* This is an implementation of Ogg file page and packet rendering and is of
|
45
|
+
* use to Ogg based formats. While the API is small this handles the
|
46
|
+
* non-trivial details of breaking up an Ogg stream into packets and makes
|
47
|
+
* these available (via subclassing) to the codec meta data implementations.
|
48
|
+
*/
|
49
|
+
|
50
|
+
class TAGLIB_EXPORT File : public TagLib::File
|
51
|
+
{
|
52
|
+
public:
|
53
|
+
virtual ~File();
|
54
|
+
|
55
|
+
/*!
|
56
|
+
* Returns the packet contents for the i-th packet (starting from zero)
|
57
|
+
* in the Ogg bitstream.
|
58
|
+
*
|
59
|
+
* \warning The requires reading at least the packet header for every page
|
60
|
+
* up to the requested page.
|
61
|
+
*/
|
62
|
+
ByteVector packet(uint i);
|
63
|
+
|
64
|
+
/*!
|
65
|
+
* Sets the packet with index \a i to the value \a p.
|
66
|
+
*/
|
67
|
+
void setPacket(uint i, const ByteVector &p);
|
68
|
+
|
69
|
+
/*!
|
70
|
+
* Returns a pointer to the PageHeader for the first page in the stream or
|
71
|
+
* null if the page could not be found.
|
72
|
+
*/
|
73
|
+
const PageHeader *firstPageHeader();
|
74
|
+
|
75
|
+
/*!
|
76
|
+
* Returns a pointer to the PageHeader for the last page in the stream or
|
77
|
+
* null if the page could not be found.
|
78
|
+
*/
|
79
|
+
const PageHeader *lastPageHeader();
|
80
|
+
|
81
|
+
virtual bool save();
|
82
|
+
|
83
|
+
protected:
|
84
|
+
/*!
|
85
|
+
* Contructs an Ogg file from \a file. If \a readProperties is true the
|
86
|
+
* file's audio properties will also be read using \a propertiesStyle. If
|
87
|
+
* false, \a propertiesStyle is ignored.
|
88
|
+
*
|
89
|
+
* \note This constructor is protected since Ogg::File shouldn't be
|
90
|
+
* instantiated directly but rather should be used through the codec
|
91
|
+
* specific subclasses.
|
92
|
+
*/
|
93
|
+
File(FileName file);
|
94
|
+
|
95
|
+
private:
|
96
|
+
File(const File &);
|
97
|
+
File &operator=(const File &);
|
98
|
+
|
99
|
+
/*!
|
100
|
+
* Reads the next page and updates the internal "current page" pointer.
|
101
|
+
*/
|
102
|
+
bool nextPage();
|
103
|
+
void writePageGroup(const List<int> &group);
|
104
|
+
|
105
|
+
class FilePrivate;
|
106
|
+
FilePrivate *d;
|
107
|
+
};
|
108
|
+
|
109
|
+
}
|
110
|
+
}
|
111
|
+
|
112
|
+
#endif
|
@@ -0,0 +1,118 @@
|
|
1
|
+
/***************************************************************************
|
2
|
+
copyright : (C) 2004 by Allan Sandfeld Jensen
|
3
|
+
email : kde@carewolf.org
|
4
|
+
***************************************************************************/
|
5
|
+
|
6
|
+
/***************************************************************************
|
7
|
+
* This library is free software; you can redistribute it and/or modify *
|
8
|
+
* it under the terms of the GNU Lesser General Public License version *
|
9
|
+
* 2.1 as published by the Free Software Foundation. *
|
10
|
+
* *
|
11
|
+
* This library is distributed in the hope that it will be useful, but *
|
12
|
+
* WITHOUT ANY WARRANTY; without even the implied warranty of *
|
13
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
|
14
|
+
* Lesser General Public License for more details. *
|
15
|
+
* *
|
16
|
+
* You should have received a copy of the GNU Lesser General Public *
|
17
|
+
* License along with this library; if not, write to the Free Software *
|
18
|
+
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
|
19
|
+
* USA *
|
20
|
+
* *
|
21
|
+
* Alternatively, this file is available under the Mozilla Public *
|
22
|
+
* License Version 1.1. You may obtain a copy of the License at *
|
23
|
+
* http://www.mozilla.org/MPL/ *
|
24
|
+
***************************************************************************/
|
25
|
+
|
26
|
+
#ifndef TAGLIB_OGGFLACFILE_H
|
27
|
+
#define TAGLIB_OGGFLACFILE_H
|
28
|
+
|
29
|
+
#include "taglib_export.h"
|
30
|
+
#include "oggfile.h"
|
31
|
+
#include "xiphcomment.h"
|
32
|
+
|
33
|
+
#include "flacproperties.h"
|
34
|
+
|
35
|
+
namespace TagLib {
|
36
|
+
|
37
|
+
class Tag;
|
38
|
+
|
39
|
+
namespace Ogg {
|
40
|
+
|
41
|
+
//! An implementation of Ogg FLAC metadata
|
42
|
+
|
43
|
+
/*!
|
44
|
+
* This is implementation of FLAC metadata for Ogg FLAC files. For "pure"
|
45
|
+
* FLAC files look under the FLAC hiearchy.
|
46
|
+
*
|
47
|
+
* Unlike "pure" FLAC-files, Ogg FLAC only supports Xiph-comments,
|
48
|
+
* while the audio-properties are the same.
|
49
|
+
*/
|
50
|
+
namespace FLAC {
|
51
|
+
|
52
|
+
using TagLib::FLAC::Properties;
|
53
|
+
|
54
|
+
//! An implementation of TagLib::File with Ogg/FLAC specific methods
|
55
|
+
|
56
|
+
/*!
|
57
|
+
* This implements and provides an interface for Ogg/FLAC files to the
|
58
|
+
* TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing
|
59
|
+
* the abstract TagLib::File API as well as providing some additional
|
60
|
+
* information specific to Ogg FLAC files.
|
61
|
+
*/
|
62
|
+
|
63
|
+
class TAGLIB_EXPORT File : public Ogg::File
|
64
|
+
{
|
65
|
+
public:
|
66
|
+
/*!
|
67
|
+
* Contructs an Ogg/FLAC file from \a file. If \a readProperties is true
|
68
|
+
* the file's audio properties will also be read using \a propertiesStyle.
|
69
|
+
* If false, \a propertiesStyle is ignored.
|
70
|
+
*/
|
71
|
+
File(FileName file, bool readProperties = true,
|
72
|
+
Properties::ReadStyle propertiesStyle = Properties::Average);
|
73
|
+
|
74
|
+
/*!
|
75
|
+
* Destroys this instance of the File.
|
76
|
+
*/
|
77
|
+
virtual ~File();
|
78
|
+
|
79
|
+
/*!
|
80
|
+
* Returns the Tag for this file. This will always be a XiphComment.
|
81
|
+
*/
|
82
|
+
virtual XiphComment *tag() const;
|
83
|
+
|
84
|
+
/*!
|
85
|
+
* Returns the FLAC::Properties for this file. If no audio properties
|
86
|
+
* were read then this will return a null pointer.
|
87
|
+
*/
|
88
|
+
virtual Properties *audioProperties() const;
|
89
|
+
|
90
|
+
/*!
|
91
|
+
* Save the file. This will primarily save and update the XiphComment.
|
92
|
+
* Returns true if the save is successful.
|
93
|
+
*/
|
94
|
+
virtual bool save();
|
95
|
+
|
96
|
+
/*!
|
97
|
+
* Returns the length of the audio-stream, used by FLAC::Properties for
|
98
|
+
* calculating the bitrate.
|
99
|
+
*/
|
100
|
+
long streamLength();
|
101
|
+
|
102
|
+
private:
|
103
|
+
File(const File &);
|
104
|
+
File &operator=(const File &);
|
105
|
+
|
106
|
+
void read(bool readProperties, Properties::ReadStyle propertiesStyle);
|
107
|
+
void scan();
|
108
|
+
ByteVector streamInfoData();
|
109
|
+
ByteVector xiphCommentData();
|
110
|
+
|
111
|
+
class FilePrivate;
|
112
|
+
FilePrivate *d;
|
113
|
+
};
|
114
|
+
} // namespace FLAC
|
115
|
+
} // namespace Ogg
|
116
|
+
} // namespace TagLib
|
117
|
+
|
118
|
+
#endif
|