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 firstPacketIndex() const;
00080
00086 void setFirstPacketIndex(int index);
00087
00094 enum ContainsPacketFlags {
00096 DoesNotContainPacket = 0x0000,
00098 CompletePacket = 0x0001,
00100 BeginsWithPacket = 0x0002,
00102 EndsWithPacket = 0x0004
00103 };
00104
00111 ContainsPacketFlags containsPacket(int index) const;
00112
00116 uint packetCount() const;
00117
00124 ByteVectorList packets() const;
00125
00129 int size() const;
00130
00131 ByteVector render() const;
00132
00140 enum PaginationStrategy {
00147 SinglePagePerGroup,
00152 Repaginate
00153 };
00154
00174 static List<Page *> paginate(const ByteVectorList &packets,
00175 PaginationStrategy strategy,
00176 uint streamSerialNumber,
00177 int firstPage,
00178 bool firstPacketContinued = false,
00179 bool lastPacketCompleted = true,
00180 bool containsLastPacket = false);
00181
00182 protected:
00187 Page(const ByteVectorList &packets,
00188 uint streamSerialNumber,
00189 int pageNumber,
00190 bool firstPacketContinued = false,
00191 bool lastPacketCompleted = true,
00192 bool containsLastPacket = false);
00193
00194 private:
00195 Page(const Page &);
00196 Page &operator=(const Page &);
00197
00198 class PagePrivate;
00199 PagePrivate *d;
00200 };
00201 }
00202 }
00203 #endif