oggpage.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
00023
00024
00025
00026 #ifndef TAGLIB_OGGPAGE_H
00027 #define TAGLIB_OGGPAGE_H
00028
00029 #include "taglib_export.h"
00030 #include "tbytevectorlist.h"
00031
00032 namespace TagLib {
00033
00034 namespace Ogg {
00035
00036 class File;
00037 class PageHeader;
00038
00040
00052 class TAGLIB_EXPORT Page
00053 {
00054 public:
00058 Page(File *file, long pageOffset);
00059
00060 virtual ~Page();
00061
00065 long fileOffset() const;
00066
00071 const PageHeader *header() const;
00072
00079 Page* getCopyWithNewPageSequenceNumber(int sequenceNumber);
00080
00087 int firstPacketIndex() const;
00088
00094 void setFirstPacketIndex(int index);
00095
00102 enum ContainsPacketFlags {
00104 DoesNotContainPacket = 0x0000,
00106 CompletePacket = 0x0001,
00108 BeginsWithPacket = 0x0002,
00110 EndsWithPacket = 0x0004
00111 };
00112
00119 ContainsPacketFlags containsPacket(int index) const;
00120
00124 uint packetCount() const;
00125
00132 ByteVectorList packets() const;
00133
00137 int size() const;
00138
00139 ByteVector render() const;
00140
00148 enum PaginationStrategy {
00155 SinglePagePerGroup,
00160 Repaginate
00161 };
00162
00182 static List<Page *> paginate(const ByteVectorList &packets,
00183 PaginationStrategy strategy,
00184 uint streamSerialNumber,
00185 int firstPage,
00186 bool firstPacketContinued = false,
00187 bool lastPacketCompleted = true,
00188 bool containsLastPacket = false);
00189
00190 protected:
00195 Page(const ByteVectorList &packets,
00196 uint streamSerialNumber,
00197 int pageNumber,
00198 bool firstPacketContinued = false,
00199 bool lastPacketCompleted = true,
00200 bool containsLastPacket = false);
00201
00202 private:
00203 Page(const Page &);
00204 Page &operator=(const Page &);
00205
00206 class PagePrivate;
00207 PagePrivate *d;
00208 };
00209 }
00210 }
00211 #endif