00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef TAGLIB_FLACFILE_H
00023 #define TAGLIB_FLACFILE_H
00024
00025 #include <tfile.h>
00026
00027 #include "flacproperties.h"
00028
00029 namespace TagLib {
00030
00031 class Tag;
00032 namespace ID3v2 { class FrameFactory; }
00033
00035
00045 namespace FLAC {
00046
00048
00056 class File : public TagLib::File
00057 {
00058 public:
00064 File(const char *file, bool readProperties = true,
00065 Properties::ReadStyle propertiesStyle = Properties::Average);
00066
00070 virtual ~File();
00071
00076 virtual TagLib::Tag *tag() const;
00077
00082 virtual Properties *audioProperties() const;
00083
00089 virtual void save();
00090
00098 void setID3v2FrameFactory(const ID3v2::FrameFactory *factory);
00099
00104 ByteVector streamInfoData();
00105
00110 long streamLength();
00111
00112 private:
00113 File(const File &);
00114 File &operator=(const File &);
00115
00116 void read(bool readProperties, Properties::ReadStyle propertiesStyle);
00117 void scan();
00118 long findID3v2();
00119 long findID3v1();
00120 ByteVector xiphCommentData();
00121
00122 class FilePrivate;
00123 FilePrivate *d;
00124 };
00125 }
00126 }
00127
00128 #endif