mpegfile.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef TAGLIB_MPEGFILE_H
00023 #define TAGLIB_MPEGFILE_H
00024
00025 #include <tfile.h>
00026
00027 #include "mpegproperties.h"
00028
00029 namespace TagLib {
00030
00031 namespace ID3v2 { class Tag; class FrameFactory; }
00032 namespace ID3v1 { class Tag; }
00033 namespace APE { class Tag; }
00034
00036
00037 namespace MPEG {
00038
00040
00047 class File : public TagLib::File
00048 {
00049 public:
00054 enum TagTypes {
00056 NoTags = 0x0000,
00058 ID3v1 = 0x0001,
00060 ID3v2 = 0x0002,
00062 APE = 0x0004,
00064 AllTags = 0xffff
00065 };
00066
00075 File(const char *file, bool readProperties = true,
00076 Properties::ReadStyle propertiesStyle = Properties::Average);
00077
00084
00085 File(const char *file, ID3v2::FrameFactory *frameFactory,
00086 bool readProperties = true,
00087 Properties::ReadStyle propertiesStyle = Properties::Average);
00088
00092 virtual ~File();
00093
00111 virtual Tag *tag() const;
00112
00117 virtual Properties *audioProperties() const;
00118
00134 virtual bool save();
00135
00145 bool save(int tags);
00146
00156
00157 bool save(int tags, bool stripOthers);
00158
00170 ID3v2::Tag *ID3v2Tag(bool create = false);
00171
00183 ID3v1::Tag *ID3v1Tag(bool create = false);
00184
00196 APE::Tag *APETag(bool create = false);
00197
00208 bool strip(int tags = AllTags);
00209
00218
00219 bool strip(int tags, bool freeMemory);
00220
00226 void setID3v2FrameFactory(const ID3v2::FrameFactory *factory);
00227
00231 long firstFrameOffset();
00232
00237 long nextFrameOffset(long position);
00238
00243 long previousFrameOffset(long position);
00244
00248 long lastFrameOffset();
00249
00250 private:
00251 File(const File &);
00252 File &operator=(const File &);
00253
00254 void read(bool readProperties, Properties::ReadStyle propertiesStyle);
00255 long findID3v2();
00256 long findID3v1();
00257 long findAPE();
00258
00264 static bool secondSynchByte(char byte);
00265
00266 class FilePrivate;
00267 FilePrivate *d;
00268 };
00269 }
00270 }
00271
00272 #endif