TagLib::Ogg::Page Class Reference
An implementation of
Ogg pages.
More...
#include <oggpage.h>
List of all members.
|
Public Types |
enum | ContainsPacketFlags { DoesNotContainPacket = 0x0000,
CompletePacket = 0x0001,
BeginsWithPacket = 0x0002,
EndsWithPacket = 0x0004
} |
enum | PaginationStrategy { SinglePagePerGroup,
Repaginate
} |
Public Member Functions |
| Page (File *file, long pageOffset) |
virtual | ~Page () |
long | fileOffset () const |
const PageHeader * | header () const |
int | firstPacketIndex () const |
void | setFirstPacketIndex (int index) |
ContainsPacketFlags | containsPacket (int index) const |
uint | packetCount () const |
ByteVectorList | packets () const |
int | size () const |
ByteVector | render () const |
Static Public Member Functions |
static List< Page * > | paginate (const ByteVectorList &packets, PaginationStrategy strategy, uint streamSerialNumber, int firstPage, bool firstPacketContinued=false, bool lastPacketCompleted=true, bool containsLastPacket=false) |
Protected Member Functions |
| Page (const ByteVectorList &packets, uint streamSerialNumber, int pageNumber, bool firstPacketContinued=false, bool lastPacketCompleted=true, bool containsLastPacket=false) |
Detailed Description
An implementation of
Ogg pages.
This is an implementation of the pages that make up an Ogg stream. This handles parsing pages and breaking them down into packets and handles the details of packets spanning multiple pages and pages that contiain multiple packets.
In most Xiph.org formats the comments are found in the first few packets, this however is a reasonably complete implementation of Ogg pages that could potentially be useful for non-meta data purposes.
Member Enumeration Documentation
|
When checking to see if a page contains a given packet this set of flags represents the possible values for that packets status in the page.
- See also:
- containsPacket()
- Enumeration values:
-
DoesNotContainPacket |
No part of the packet is contained in the page. |
CompletePacket |
The packet is wholly contained in the page. |
BeginsWithPacket |
The page starts with the given packet. |
EndsWithPacket |
The page ends with the given packet. |
|
|
Defines a strategy for pagination, or grouping pages into Ogg packets, for use with pagination methods.
- Note:
- Yes, I'm aware that this is not a canonical "Strategy Pattern", the term was simply convenient.
- Enumeration values:
-
SinglePagePerGroup |
Attempt to put the specified set of packets into a single Ogg packet. If the sum of the packet data is greater than will fit into a single Ogg page -- 65280 bytes -- this will fall back to repagination using the recommended page sizes. |
Repaginate |
Split the packet or group of packets into pages that conform to the sizes recommended in the Ogg standard. |
|
Constructor & Destructor Documentation
TagLib::Ogg::Page::Page |
( |
File * |
file, |
|
|
long |
pageOffset |
|
) |
|
|
|
Read an Ogg page from the file at the position pageOffset. |
virtual TagLib::Ogg::Page::~Page |
( |
|
) |
[virtual] |
|
TagLib::Ogg::Page::Page |
( |
const ByteVectorList & |
packets, |
|
|
uint |
streamSerialNumber, |
|
|
int |
pageNumber, |
|
|
bool |
firstPacketContinued = false , |
|
|
bool |
lastPacketCompleted = true , |
|
|
bool |
containsLastPacket = false |
|
) |
[protected] |
|
|
Creates an Ogg packet based on the data in packets. The page number for each page will be set to pageNumber. |
Member Function Documentation
|
Checks to see if the specified packet is contained in the current page.
- See also:
- ContainsPacketFlags
|
long TagLib::Ogg::Page::fileOffset |
( |
|
) |
const |
|
|
Returns the page's position within the file (in bytes). |
int TagLib::Ogg::Page::firstPacketIndex |
( |
|
) |
const |
|
|
Returns the index of the first packet wholly or partially contained in this page.
- See also:
- setFirstPacketIndex()
|
const PageHeader* TagLib::Ogg::Page::header |
( |
|
) |
const |
|
|
Returns a pointer to the header for this page. This pointer will become invalid when the page is deleted. |
uint TagLib::Ogg::Page::packetCount |
( |
|
) |
const |
|
|
Returns the number of packets (whole or partial) in this page. |
static List<Page *> TagLib::Ogg::Page::paginate |
( |
const ByteVectorList & |
packets, |
|
|
PaginationStrategy |
strategy, |
|
|
uint |
streamSerialNumber, |
|
|
int |
firstPage, |
|
|
bool |
firstPacketContinued = false , |
|
|
bool |
lastPacketCompleted = true , |
|
|
bool |
containsLastPacket = false |
|
) |
[static] |
|
|
Pack packets into Ogg pages using the strategy for pagination. The page number indicater inside of the rendered packets will start with firstPage and be incremented for each page rendered. containsLastPacket should be set to true if packets contains the last page in the stream and will set the appropriate flag in the last rendered Ogg page's header. streamSerialNumber should be set to the serial number for this stream.
- Note:
- The "absolute granule position" is currently always zeroed using this method as this suffices for the comment headers.
- Warning:
- The pages returned by this method must be deleted by the user. You can use List<T>::setAutoDelete(true) to set these pages to be automatically deleted when this list passes out of scope.
- See also:
- PaginationStrategy
List::setAutoDelete()
|
void TagLib::Ogg::Page::setFirstPacketIndex |
( |
int |
index |
) |
|
|
int TagLib::Ogg::Page::size |
( |
|
) |
const |
|
|
Returns the size of the page in bytes. |
The documentation for this class was generated from the following file: