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 int pageSequenceNumber() const;
00080
00086 void setPageSequenceNumber(int sequenceNumber);
00087
00096 Page* getCopyWithNewPageSequenceNumber(int sequenceNumber);
00097
00104 int firstPacketIndex() const;
00105
00111 void setFirstPacketIndex(int index);
00112
00119 enum ContainsPacketFlags {
00121 DoesNotContainPacket = 0x0000,
00123 CompletePacket = 0x0001,
00125 BeginsWithPacket = 0x0002,
00127 EndsWithPacket = 0x0004
00128 };
00129
00136 ContainsPacketFlags containsPacket(int index) const;
00137
00141 unsigned int packetCount() const;
00142
00149 ByteVectorList packets() const;
00150
00154 int size() const;
00155
00156 ByteVector render() const;
00157
00165 enum PaginationStrategy {
00172 SinglePagePerGroup,
00177 Repaginate
00178 };
00179
00199 static List<Page *> paginate(const ByteVectorList &packets,
00200 PaginationStrategy strategy,
00201 unsigned int streamSerialNumber,
00202 int firstPage,
00203 bool firstPacketContinued = false,
00204 bool lastPacketCompleted = true,
00205 bool containsLastPacket = false);
00206
00207 protected:
00212 Page(const ByteVectorList &packets,
00213 unsigned int streamSerialNumber,
00214 int pageNumber,
00215 bool firstPacketContinued = false,
00216 bool lastPacketCompleted = true,
00217 bool containsLastPacket = false);
00218
00219 private:
00220 Page(const Page &);
00221 Page &operator=(const Page &);
00222
00223 class PagePrivate;
00224 PagePrivate *d;
00225 };
00226 }
00227 }
00228 #endif