rtaglib 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. data/History.txt +4 -0
  2. data/Manifest.txt +84 -9
  3. data/README.txt +0 -0
  4. data/Rakefile +30 -27
  5. data/{test/data → data}/440Hz-5sec.flac +0 -0
  6. data/{test/data → data}/440Hz-5sec.mp3 +0 -0
  7. data/{test/data → data}/440Hz-5sec.mpc +0 -0
  8. data/{test/data → data}/440Hz-5sec.ogg +0 -0
  9. data/{test/data → data}/440Hz-5sec.wv +0 -0
  10. data/data/test_jason.mp3 +0 -0
  11. data/data/test_jason.ogg +0 -0
  12. data/ext/Rakefile +10 -0
  13. data/ext/tagfile/Rakefile.rb +42 -0
  14. data/ext/tagfile/rake_ext_conf.rb +29 -0
  15. data/ext/tagfile/tagfile.c +11 -7
  16. data/ext/taglib/Rakefile.rb +48 -0
  17. data/ext/taglib/rake_ext_conf.rb +33 -0
  18. data/ext/taglib/taglib-mswin32/bin/tag.dll +0 -0
  19. data/ext/taglib/taglib-mswin32/bin/tag_c.dll +0 -0
  20. data/ext/taglib/taglib-mswin32/bin/tag_cd.dll +0 -0
  21. data/ext/taglib/taglib-mswin32/bin/tagd.dll +0 -0
  22. data/ext/taglib/taglib-mswin32/bin/taglib-config +55 -0
  23. data/ext/taglib/taglib-mswin32/include/taglib/apefooter.h +173 -0
  24. data/ext/taglib/taglib-mswin32/include/taglib/apeitem.h +204 -0
  25. data/ext/taglib/taglib-mswin32/include/taglib/apetag.h +162 -0
  26. data/ext/taglib/taglib-mswin32/include/taglib/attachedpictureframe.h +220 -0
  27. data/ext/taglib/taglib-mswin32/include/taglib/audioproperties.h +110 -0
  28. data/ext/taglib/taglib-mswin32/include/taglib/commentsframe.h +168 -0
  29. data/ext/taglib/taglib-mswin32/include/taglib/fileref.h +262 -0
  30. data/ext/taglib/taglib-mswin32/include/taglib/flacfile.h +201 -0
  31. data/ext/taglib/taglib-mswin32/include/taglib/flacproperties.h +92 -0
  32. data/ext/taglib/taglib-mswin32/include/taglib/generalencapsulatedobjectframe.h +174 -0
  33. data/ext/taglib/taglib-mswin32/include/taglib/id3v1genres.h +66 -0
  34. data/ext/taglib/taglib-mswin32/include/taglib/id3v1tag.h +180 -0
  35. data/ext/taglib/taglib-mswin32/include/taglib/id3v2extendedheader.h +93 -0
  36. data/ext/taglib/taglib-mswin32/include/taglib/id3v2footer.h +82 -0
  37. data/ext/taglib/taglib-mswin32/include/taglib/id3v2frame.h +414 -0
  38. data/ext/taglib/taglib-mswin32/include/taglib/id3v2framefactory.h +167 -0
  39. data/ext/taglib/taglib-mswin32/include/taglib/id3v2header.h +175 -0
  40. data/ext/taglib/taglib-mswin32/include/taglib/id3v2synchdata.h +70 -0
  41. data/ext/taglib/taglib-mswin32/include/taglib/id3v2tag.h +300 -0
  42. data/ext/taglib/taglib-mswin32/include/taglib/mpcfile.h +175 -0
  43. data/ext/taglib/taglib-mswin32/include/taglib/mpcproperties.h +85 -0
  44. data/ext/taglib/taglib-mswin32/include/taglib/mpegfile.h +277 -0
  45. data/ext/taglib/taglib-mswin32/include/taglib/mpegheader.h +166 -0
  46. data/ext/taglib/taglib-mswin32/include/taglib/mpegproperties.h +118 -0
  47. data/ext/taglib/taglib-mswin32/include/taglib/oggfile.h +112 -0
  48. data/ext/taglib/taglib-mswin32/include/taglib/oggflacfile.h +118 -0
  49. data/ext/taglib/taglib-mswin32/include/taglib/oggpage.h +203 -0
  50. data/ext/taglib/taglib-mswin32/include/taglib/oggpageheader.h +232 -0
  51. data/ext/taglib/taglib-mswin32/include/taglib/relativevolumeframe.h +274 -0
  52. data/ext/taglib/taglib-mswin32/include/taglib/speexfile.h +99 -0
  53. data/ext/taglib/taglib-mswin32/include/taglib/speexproperties.h +89 -0
  54. data/ext/taglib/taglib-mswin32/include/taglib/tag.h +173 -0
  55. data/ext/taglib/taglib-mswin32/include/taglib/tag_c.h +288 -0
  56. data/ext/taglib/taglib-mswin32/include/taglib/taglib.h +177 -0
  57. data/ext/taglib/taglib-mswin32/include/taglib/taglib_export.h +39 -0
  58. data/ext/taglib/taglib-mswin32/include/taglib/tbytevector.h +409 -0
  59. data/ext/taglib/taglib-mswin32/include/taglib/tbytevectorlist.h +91 -0
  60. data/ext/taglib/taglib-mswin32/include/taglib/textidentificationframe.h +258 -0
  61. data/ext/taglib/taglib-mswin32/include/taglib/tfile.h +271 -0
  62. data/ext/taglib/taglib-mswin32/include/taglib/tlist.h +252 -0
  63. data/ext/taglib/taglib-mswin32/include/taglib/tlist.tcc +316 -0
  64. data/ext/taglib/taglib-mswin32/include/taglib/tmap.h +200 -0
  65. data/ext/taglib/taglib-mswin32/include/taglib/tmap.tcc +196 -0
  66. data/ext/taglib/taglib-mswin32/include/taglib/trueaudiofile.h +180 -0
  67. data/ext/taglib/taglib-mswin32/include/taglib/trueaudioproperties.h +93 -0
  68. data/ext/taglib/taglib-mswin32/include/taglib/tstring.h +456 -0
  69. data/ext/taglib/taglib-mswin32/include/taglib/tstringlist.h +115 -0
  70. data/ext/taglib/taglib-mswin32/include/taglib/uniquefileidentifierframe.h +113 -0
  71. data/ext/taglib/taglib-mswin32/include/taglib/unknownframe.h +79 -0
  72. data/ext/taglib/taglib-mswin32/include/taglib/unsynchronizedlyricsframe.h +157 -0
  73. data/ext/taglib/taglib-mswin32/include/taglib/urllinkframe.h +172 -0
  74. data/ext/taglib/taglib-mswin32/include/taglib/vorbisfile.h +118 -0
  75. data/ext/taglib/taglib-mswin32/include/taglib/vorbisproperties.h +125 -0
  76. data/ext/taglib/taglib-mswin32/include/taglib/wavpackfile.h +164 -0
  77. data/ext/taglib/taglib-mswin32/include/taglib/wavpackproperties.h +94 -0
  78. data/ext/taglib/taglib-mswin32/include/taglib/xingheader.h +100 -0
  79. data/ext/taglib/taglib-mswin32/include/taglib/xiphcomment.h +202 -0
  80. data/ext/taglib/taglib-mswin32/lib/pkgconfig/taglib_c.pc +12 -0
  81. data/ext/taglib/taglib-mswin32/lib/tag.lib +0 -0
  82. data/ext/taglib/taglib-mswin32/lib/tag_c.lib +0 -0
  83. data/ext/taglib/taglib_i386-mingw32.source +22645 -0
  84. data/ext/taglib/taglib_i386-mswin32.source +22645 -0
  85. data/ext/taglib/{taglib.cxx → taglib_x86_64-linux.source} +508 -75
  86. data/lib/TagLib.rb +3 -2
  87. data/lib/TagLib_doc.rb +1532 -1526
  88. data/lib/rtaglib_mswin32.rb +4 -0
  89. data/lib/tagfile.rb +6 -0
  90. data/swig/Doxyfile +0 -0
  91. data/swig/Rakefile +44 -19
  92. data/swig/TagLib_doc.rb +2755 -0
  93. data/swig/make_doc.rb +5 -4
  94. data/swig/process_cxx.rb +2 -2
  95. data/swig/rake_ext_conf.rb +33 -0
  96. data/swig/taglib.i +8 -5
  97. data/swig/test.rb +47 -39
  98. data/test/test_read.rb +4 -3
  99. data/test/test_taglib.rb +47 -39
  100. data/test/test_write.rb +4 -3
  101. metadata +96 -20
  102. data/ext/tagfile/extconf.rb +0 -14
  103. data/ext/taglib/extconf.rb +0 -22
  104. data/swig/extconf.rb +0 -22
@@ -0,0 +1,99 @@
1
+ /***************************************************************************
2
+ copyright : (C) 2006 by Lukáš Lalinský
3
+ email : lalinsky@gmail.com
4
+
5
+ copyright : (C) 2002 - 2008 by Scott Wheeler
6
+ email : wheeler@kde.org
7
+ (original Vorbis implementation)
8
+ ***************************************************************************/
9
+
10
+ /***************************************************************************
11
+ * This library is free software; you can redistribute it and/or modify *
12
+ * it under the terms of the GNU Lesser General Public License version *
13
+ * 2.1 as published by the Free Software Foundation. *
14
+ * *
15
+ * This library is distributed in the hope that it will be useful, but *
16
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
17
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
18
+ * Lesser General Public License for more details. *
19
+ * *
20
+ * You should have received a copy of the GNU Lesser General Public *
21
+ * License along with this library; if not, write to the Free Software *
22
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
23
+ * USA *
24
+ * *
25
+ * Alternatively, this file is available under the Mozilla Public *
26
+ * License Version 1.1. You may obtain a copy of the License at *
27
+ * http://www.mozilla.org/MPL/ *
28
+ ***************************************************************************/
29
+
30
+ #ifndef TAGLIB_SPEEXFILE_H
31
+ #define TAGLIB_SPEEXFILE_H
32
+
33
+ #include <oggfile.h>
34
+ #include <xiphcomment.h>
35
+
36
+ #include "speexproperties.h"
37
+
38
+ namespace TagLib {
39
+
40
+ namespace Ogg {
41
+
42
+ //! A namespace containing classes for Speex metadata
43
+
44
+ namespace Speex {
45
+
46
+ //! An implementation of Ogg::File with Speex specific methods
47
+
48
+ /*!
49
+ * This is the central class in the Ogg Speex metadata processing collection
50
+ * of classes. It's built upon Ogg::File which handles processing of the Ogg
51
+ * logical bitstream and breaking it down into pages which are handled by
52
+ * the codec implementations, in this case Speex specifically.
53
+ */
54
+
55
+ class TAGLIB_EXPORT File : public Ogg::File
56
+ {
57
+ public:
58
+ /*!
59
+ * Contructs a Speex file from \a file. If \a readProperties is true the
60
+ * file's audio properties will also be read using \a propertiesStyle. If
61
+ * false, \a propertiesStyle is ignored.
62
+ */
63
+ File(FileName file, bool readProperties = true,
64
+ Properties::ReadStyle propertiesStyle = Properties::Average);
65
+
66
+ /*!
67
+ * Destroys this instance of the File.
68
+ */
69
+ virtual ~File();
70
+
71
+ /*!
72
+ * Returns the XiphComment for this file. XiphComment implements the tag
73
+ * interface, so this serves as the reimplementation of
74
+ * TagLib::File::tag().
75
+ */
76
+ virtual Ogg::XiphComment *tag() const;
77
+
78
+ /*!
79
+ * Returns the Speex::Properties for this file. If no audio properties
80
+ * were read then this will return a null pointer.
81
+ */
82
+ virtual Properties *audioProperties() const;
83
+
84
+ virtual bool save();
85
+
86
+ private:
87
+ File(const File &);
88
+ File &operator=(const File &);
89
+
90
+ void read(bool readProperties, Properties::ReadStyle propertiesStyle);
91
+
92
+ class FilePrivate;
93
+ FilePrivate *d;
94
+ };
95
+ }
96
+ }
97
+ }
98
+
99
+ #endif
@@ -0,0 +1,89 @@
1
+ /***************************************************************************
2
+ copyright : (C) 2006 by Lukáš Lalinský
3
+ email : lalinsky@gmail.com
4
+
5
+ copyright : (C) 2002 - 2008 by Scott Wheeler
6
+ email : wheeler@kde.org
7
+ (original Vorbis implementation)
8
+ ***************************************************************************/
9
+
10
+ /***************************************************************************
11
+ * This library is free software; you can redistribute it and/or modify *
12
+ * it under the terms of the GNU Lesser General Public License version *
13
+ * 2.1 as published by the Free Software Foundation. *
14
+ * *
15
+ * This library is distributed in the hope that it will be useful, but *
16
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
17
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
18
+ * Lesser General Public License for more details. *
19
+ * *
20
+ * You should have received a copy of the GNU Lesser General Public *
21
+ * License along with this library; if not, write to the Free Software *
22
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
23
+ * USA *
24
+ * *
25
+ * Alternatively, this file is available under the Mozilla Public *
26
+ * License Version 1.1. You may obtain a copy of the License at *
27
+ * http://www.mozilla.org/MPL/ *
28
+ ***************************************************************************/
29
+
30
+ #ifndef TAGLIB_SPEEXPROPERTIES_H
31
+ #define TAGLIB_SPEEXPROPERTIES_H
32
+
33
+ #include <audioproperties.h>
34
+
35
+ namespace TagLib {
36
+
37
+ namespace Ogg {
38
+
39
+ namespace Speex {
40
+
41
+ class File;
42
+
43
+ //! An implementation of audio property reading for Ogg Speex
44
+
45
+ /*!
46
+ * This reads the data from an Ogg Speex stream found in the AudioProperties
47
+ * API.
48
+ */
49
+
50
+ class TAGLIB_EXPORT Properties : public AudioProperties
51
+ {
52
+ public:
53
+ /*!
54
+ * Create an instance of Speex::Properties with the data read from the
55
+ * Speex::File \a file.
56
+ */
57
+ Properties(File *file, ReadStyle style = Average);
58
+
59
+ /*!
60
+ * Destroys this Speex::Properties instance.
61
+ */
62
+ virtual ~Properties();
63
+
64
+ // Reimplementations.
65
+
66
+ virtual int length() const;
67
+ virtual int bitrate() const;
68
+ virtual int sampleRate() const;
69
+ virtual int channels() const;
70
+
71
+ /*!
72
+ * Returns the Speex version, currently "0" (as specified by the spec).
73
+ */
74
+ int speexVersion() const;
75
+
76
+ private:
77
+ Properties(const Properties &);
78
+ Properties &operator=(const Properties &);
79
+
80
+ void read();
81
+
82
+ class PropertiesPrivate;
83
+ PropertiesPrivate *d;
84
+ };
85
+ }
86
+ }
87
+ }
88
+
89
+ #endif
@@ -0,0 +1,173 @@
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_TAG_H
27
+ #define TAGLIB_TAG_H
28
+
29
+ #include "taglib_export.h"
30
+ #include "tstring.h"
31
+
32
+ namespace TagLib {
33
+
34
+ //! A simple, generic interface to common audio meta data fields
35
+
36
+ /*!
37
+ * This is an attempt to abstract away the difference in the meta data formats
38
+ * of various audio codecs and tagging schemes. As such it is generally a
39
+ * subset of what is available in the specific formats but should be suitable
40
+ * for most applications. This is meant to compliment the generic APIs found
41
+ * in TagLib::AudioProperties, TagLib::File and TagLib::FileRef.
42
+ */
43
+
44
+ class TAGLIB_EXPORT Tag
45
+ {
46
+ public:
47
+
48
+ /*!
49
+ * Detroys this Tag instance.
50
+ */
51
+ virtual ~Tag();
52
+
53
+ /*!
54
+ * Returns the track name; if no track name is present in the tag
55
+ * String::null will be returned.
56
+ */
57
+ virtual String title() const = 0;
58
+
59
+ /*!
60
+ * Returns the artist name; if no artist name is present in the tag
61
+ * String::null will be returned.
62
+ */
63
+ virtual String artist() const = 0;
64
+
65
+ /*!
66
+ * Returns the album name; if no album name is present in the tag
67
+ * String::null will be returned.
68
+ */
69
+ virtual String album() const = 0;
70
+
71
+ /*!
72
+ * Returns the track comment; if no comment is present in the tag
73
+ * String::null will be returned.
74
+ */
75
+ virtual String comment() const = 0;
76
+
77
+ /*!
78
+ * Returns the genre name; if no genre is present in the tag String::null
79
+ * will be returned.
80
+ */
81
+ virtual String genre() const = 0;
82
+
83
+ /*!
84
+ * Returns the year; if there is no year set, this will return 0.
85
+ */
86
+ virtual uint year() const = 0;
87
+
88
+ /*!
89
+ * Returns the track number; if there is no track number set, this will
90
+ * return 0.
91
+ */
92
+ virtual uint track() const = 0;
93
+
94
+ /*!
95
+ * Sets the title to \a s. If \a s is String::null then this value will be
96
+ * cleared.
97
+ */
98
+ virtual void setTitle(const String &s) = 0;
99
+
100
+ /*!
101
+ * Sets the artist to \a s. If \a s is String::null then this value will be
102
+ * cleared.
103
+ */
104
+ virtual void setArtist(const String &s) = 0;
105
+
106
+ /*!
107
+ * Sets the album to \a s. If \a s is String::null then this value will be
108
+ * cleared.
109
+ */
110
+ virtual void setAlbum(const String &s) = 0;
111
+
112
+ /*!
113
+ * Sets the comment to \a s. If \a s is String::null then this value will be
114
+ * cleared.
115
+ */
116
+ virtual void setComment(const String &s) = 0;
117
+
118
+ /*!
119
+ * Sets the genre to \a s. If \a s is String::null then this value will be
120
+ * cleared. For tag formats that use a fixed set of genres, the appropriate
121
+ * value will be selected based on a string comparison. A list of available
122
+ * genres for those formats should be available in that type's
123
+ * implementation.
124
+ */
125
+ virtual void setGenre(const String &s) = 0;
126
+
127
+ /*!
128
+ * Sets the year to \a i. If \a s is 0 then this value will be cleared.
129
+ */
130
+ virtual void setYear(uint i) = 0;
131
+
132
+ /*!
133
+ * Sets the track to \a i. If \a s is 0 then this value will be cleared.
134
+ */
135
+ virtual void setTrack(uint i) = 0;
136
+
137
+ /*!
138
+ * Returns true if the tag does not contain any data. This should be
139
+ * reimplemented in subclasses that provide more than the basic tagging
140
+ * abilities in this class.
141
+ */
142
+ virtual bool isEmpty() const;
143
+
144
+ /*!
145
+ * Copies the generic data from one tag to another.
146
+ *
147
+ * \note This will no affect any of the lower level details of the tag. For
148
+ * instance if any of the tag type specific data (maybe a URL for a band) is
149
+ * set, this will not modify or copy that. This just copies using the API
150
+ * in this class.
151
+ *
152
+ * If \a overwrite is true then the values will be unconditionally copied.
153
+ * If false only empty values will be overwritten.
154
+ */
155
+ static void duplicate(const Tag *source, Tag *target, bool overwrite = true);
156
+
157
+ protected:
158
+ /*!
159
+ * Construct a Tag. This is protected since tags should only be instantiated
160
+ * through subclasses.
161
+ */
162
+ Tag();
163
+
164
+ private:
165
+ Tag(const Tag &);
166
+ Tag &operator=(const Tag &);
167
+
168
+ class TagPrivate;
169
+ TagPrivate *d;
170
+ };
171
+ }
172
+
173
+ #endif
@@ -0,0 +1,288 @@
1
+ /***************************************************************************
2
+ copyright : (C) 2003 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
+
22
+ #ifndef TAGLIB_TAG_C
23
+ #define TAGLIB_TAG_C
24
+
25
+ /* Do not include this in the main TagLib documentation. */
26
+ #ifndef DO_NOT_DOCUMENT
27
+
28
+ #ifdef __cplusplus
29
+ extern "C" {
30
+ #endif
31
+
32
+ #if defined(_WIN32) || defined(_WIN64)
33
+ #ifdef MAKE_TAGLIB_C_LIB
34
+ #define TAGLIB_C_EXPORT __declspec(dllexport)
35
+ #else
36
+ #define TAGLIB_C_EXPORT __declspec(dllimport)
37
+ #endif
38
+ #else
39
+ #define TAGLIB_C_EXPORT
40
+ #endif
41
+
42
+ #ifndef BOOL
43
+ #define BOOL int
44
+ #endif
45
+
46
+ /*******************************************************************************
47
+ * [ TagLib C Binding ]
48
+ *
49
+ * This is an interface to TagLib's "simple" API, meaning that you can read and
50
+ * modify media files in a generic, but not specialized way. This is a rough
51
+ * representation of TagLib::File and TagLib::Tag, for which the documentation
52
+ * is somewhat more complete and worth consulting.
53
+ *******************************************************************************/
54
+
55
+ /*
56
+ * These are used for type provide some type safety to the C API (as opposed to
57
+ * using void *, but pointers to them are simply cast to the corresponding C++
58
+ * types in the implementation.
59
+ */
60
+
61
+ typedef struct { int dummy; } TagLib_File;
62
+ typedef struct { int dummy; } TagLib_Tag;
63
+ typedef struct { int dummy; } TagLib_AudioProperties;
64
+
65
+ /*!
66
+ * By default all strings coming into or out of TagLib's C API are in UTF8.
67
+ * However, it may be desirable for TagLib to operate on Latin1 (ISO-8859-1)
68
+ * strings in which case this should be set to FALSE.
69
+ */
70
+ TAGLIB_C_EXPORT void taglib_set_strings_unicode(BOOL unicode);
71
+
72
+ /*!
73
+ * TagLib can keep track of strings that are created when outputting tag values
74
+ * and clear them using taglib_tag_clear_strings(). This is enabled by default.
75
+ * However if you wish to do more fine grained management of strings, you can do
76
+ * so by setting \a management to FALSE.
77
+ */
78
+ TAGLIB_C_EXPORT void taglib_set_string_management_enabled(BOOL management);
79
+
80
+ /*******************************************************************************
81
+ * File API
82
+ ******************************************************************************/
83
+
84
+ typedef enum {
85
+ TagLib_File_MPEG,
86
+ TagLib_File_OggVorbis,
87
+ TagLib_File_FLAC,
88
+ TagLib_File_MPC,
89
+ TagLib_File_OggFlac,
90
+ TagLib_File_WavPack,
91
+ TagLib_File_Speex,
92
+ TagLib_File_TrueAudio
93
+ } TagLib_File_Type;
94
+
95
+ /*!
96
+ * Creates a TagLib file based on \a filename. TagLib will try to guess the file
97
+ * type.
98
+ *
99
+ * \returns NULL if the file type cannot be determined or the file cannot
100
+ * be opened.
101
+ */
102
+ TAGLIB_C_EXPORT TagLib_File *taglib_file_new(const char *filename);
103
+
104
+ /*!
105
+ * Creates a TagLib file based on \a filename. Rather than attempting to guess
106
+ * the type, it will use the one specified by \a type.
107
+ */
108
+ TAGLIB_C_EXPORT TagLib_File *taglib_file_new_type(const char *filename, TagLib_File_Type type);
109
+
110
+ /*!
111
+ * Frees and closes the file.
112
+ */
113
+ TAGLIB_C_EXPORT void taglib_file_free(TagLib_File *file);
114
+
115
+ /*!
116
+ * Returns true if the file is open and readble and valid information for
117
+ * the Tag and / or AudioProperties was found.
118
+ */
119
+
120
+ TAGLIB_C_EXPORT BOOL taglib_file_is_valid(const TagLib_File *file);
121
+
122
+ /*!
123
+ * Returns a pointer to the tag associated with this file. This will be freed
124
+ * automatically when the file is freed.
125
+ */
126
+ TAGLIB_C_EXPORT TagLib_Tag *taglib_file_tag(const TagLib_File *file);
127
+
128
+ /*!
129
+ * Returns a pointer to the the audio properties associated with this file. This
130
+ * will be freed automatically when the file is freed.
131
+ */
132
+ TAGLIB_C_EXPORT const TagLib_AudioProperties *taglib_file_audioproperties(const TagLib_File *file);
133
+
134
+ /*!
135
+ * Saves the \a file to disk.
136
+ */
137
+ TAGLIB_C_EXPORT BOOL taglib_file_save(TagLib_File *file);
138
+
139
+ /******************************************************************************
140
+ * Tag API
141
+ ******************************************************************************/
142
+
143
+ /*!
144
+ * Returns a string with this tag's title.
145
+ *
146
+ * \note By default this string should be UTF8 encoded and its memory should be
147
+ * freed using taglib_tag_free_strings().
148
+ */
149
+ TAGLIB_C_EXPORT char *taglib_tag_title(const TagLib_Tag *tag);
150
+
151
+ /*!
152
+ * Returns a string with this tag's artist.
153
+ *
154
+ * \note By default this string should be UTF8 encoded and its memory should be
155
+ * freed using taglib_tag_free_strings().
156
+ */
157
+ TAGLIB_C_EXPORT char *taglib_tag_artist(const TagLib_Tag *tag);
158
+
159
+ /*!
160
+ * Returns a string with this tag's album name.
161
+ *
162
+ * \note By default this string should be UTF8 encoded and its memory should be
163
+ * freed using taglib_tag_free_strings().
164
+ */
165
+ TAGLIB_C_EXPORT char *taglib_tag_album(const TagLib_Tag *tag);
166
+
167
+ /*!
168
+ * Returns a string with this tag's comment.
169
+ *
170
+ * \note By default this string should be UTF8 encoded and its memory should be
171
+ * freed using taglib_tag_free_strings().
172
+ */
173
+ TAGLIB_C_EXPORT char *taglib_tag_comment(const TagLib_Tag *tag);
174
+
175
+ /*!
176
+ * Returns a string with this tag's genre.
177
+ *
178
+ * \note By default this string should be UTF8 encoded and its memory should be
179
+ * freed using taglib_tag_free_strings().
180
+ */
181
+ TAGLIB_C_EXPORT char *taglib_tag_genre(const TagLib_Tag *tag);
182
+
183
+ /*!
184
+ * Returns the tag's year or 0 if year is not set.
185
+ */
186
+ TAGLIB_C_EXPORT unsigned int taglib_tag_year(const TagLib_Tag *tag);
187
+
188
+ /*!
189
+ * Returns the tag's track number or 0 if track number is not set.
190
+ */
191
+ TAGLIB_C_EXPORT unsigned int taglib_tag_track(const TagLib_Tag *tag);
192
+
193
+ /*!
194
+ * Sets the tag's title.
195
+ *
196
+ * \note By default this string should be UTF8 encoded.
197
+ */
198
+ TAGLIB_C_EXPORT void taglib_tag_set_title(TagLib_Tag *tag, const char *title);
199
+
200
+ /*!
201
+ * Sets the tag's artist.
202
+ *
203
+ * \note By default this string should be UTF8 encoded.
204
+ */
205
+ TAGLIB_C_EXPORT void taglib_tag_set_artist(TagLib_Tag *tag, const char *artist);
206
+
207
+ /*!
208
+ * Sets the tag's album.
209
+ *
210
+ * \note By default this string should be UTF8 encoded.
211
+ */
212
+ TAGLIB_C_EXPORT void taglib_tag_set_album(TagLib_Tag *tag, const char *album);
213
+
214
+ /*!
215
+ * Sets the tag's comment.
216
+ *
217
+ * \note By default this string should be UTF8 encoded.
218
+ */
219
+ TAGLIB_C_EXPORT void taglib_tag_set_comment(TagLib_Tag *tag, const char *comment);
220
+
221
+ /*!
222
+ * Sets the tag's genre.
223
+ *
224
+ * \note By default this string should be UTF8 encoded.
225
+ */
226
+ TAGLIB_C_EXPORT void taglib_tag_set_genre(TagLib_Tag *tag, const char *genre);
227
+
228
+ /*!
229
+ * Sets the tag's year. 0 indicates that this field should be cleared.
230
+ */
231
+ TAGLIB_C_EXPORT void taglib_tag_set_year(TagLib_Tag *tag, unsigned int year);
232
+
233
+ /*!
234
+ * Sets the tag's track number. 0 indicates that this field should be cleared.
235
+ */
236
+ TAGLIB_C_EXPORT void taglib_tag_set_track(TagLib_Tag *tag, unsigned int track);
237
+
238
+ /*!
239
+ * Frees all of the strings that have been created by the tag.
240
+ */
241
+ TAGLIB_C_EXPORT void taglib_tag_free_strings(void);
242
+
243
+ /******************************************************************************
244
+ * Audio Properties API
245
+ ******************************************************************************/
246
+
247
+ /*!
248
+ * Returns the length of the file in seconds.
249
+ */
250
+ TAGLIB_C_EXPORT int taglib_audioproperties_length(const TagLib_AudioProperties *audioProperties);
251
+
252
+ /*!
253
+ * Returns the bitrate of the file in kb/s.
254
+ */
255
+ TAGLIB_C_EXPORT int taglib_audioproperties_bitrate(const TagLib_AudioProperties *audioProperties);
256
+
257
+ /*!
258
+ * Returns the sample rate of the file in Hz.
259
+ */
260
+ TAGLIB_C_EXPORT int taglib_audioproperties_samplerate(const TagLib_AudioProperties *audioProperties);
261
+
262
+ /*!
263
+ * Returns the number of channels in the audio stream.
264
+ */
265
+ TAGLIB_C_EXPORT int taglib_audioproperties_channels(const TagLib_AudioProperties *audioProperties);
266
+
267
+ /*******************************************************************************
268
+ * Special convenience ID3v2 functions
269
+ *******************************************************************************/
270
+
271
+ typedef enum {
272
+ TagLib_ID3v2_Latin1,
273
+ TagLib_ID3v2_UTF16,
274
+ TagLib_ID3v2_UTF16BE,
275
+ TagLib_ID3v2_UTF8
276
+ } TagLib_ID3v2_Encoding;
277
+
278
+ /*!
279
+ * This sets the default encoding for ID3v2 frames that are written to tags.
280
+ */
281
+
282
+ TAGLIB_C_EXPORT void taglib_id3v2_set_default_text_encoding(TagLib_ID3v2_Encoding encoding);
283
+
284
+ #ifdef __cplusplus
285
+ }
286
+ #endif
287
+ #endif /* DO_NOT_DOCUMENT */
288
+ #endif