mistserver/lib/ogg.h
Oswald Auguste de Bruin 0bf50edaea Ogg 2 DTSC working lib
2013-08-13 16:30:23 +02:00

56 lines
1.9 KiB
C++

#pragma once
#include<string>
#include<vector>
#include<deque>
#include"dtsc.h"
#include "theora.h"
#include "vorbis.h"
namespace OGG{
class Page{
public:
Page();
bool read(std::string & newData);
long unsigned int getMagicNumber();
void setMagicNumber();
char getVersion();
void setVersion(char newVal = 0);
char getHeaderType();
void setHeaderType(char newVal);
long long unsigned int getGranulePosition();
void setGranulePosition(long long unsigned int newVal);
long unsigned int getBitstreamSerialNumber();
void setBitstreamSerialNumber(long unsigned int newVal);
long unsigned int getPageSequenceNumber();
void setPageSequenceNumber(long unsigned int newVal);
long unsigned int getCRCChecksum();
void setCRCChecksum(long unsigned int newVal);
char getPageSegments();
inline void setPageSegments(char newVal);
char* getSegmentTable();
std::deque<unsigned int> & getSegmentTableDeque();
bool setSegmentTable(std::vector<unsigned int> layout);
void setSegmentTable(char* newVal, unsigned int length);
char* getPage();//returns complete page with header
unsigned long int getPageSize();
char* getFullPayload();//returns all segments in the page
int getPayloadSize();
bool typeBOS();
bool typeEOS();
bool typeContinue();
bool typeNone();
std::string toPrettyString(size_t indent = 0);
void setInternalCodec(std::string myCodec);
long unsigned int calcChecksum();
bool clear();
bool setPayload(char* newData, unsigned int length);
private:
std::deque<unsigned int> segmentTableDeque;
char* data;//pointer to the beginning of the Page data
unsigned int datasize;//size of the complete page
unsigned int dataSum;//size of the total segments
bool checkDataSize(unsigned int size);
std::string codec;//codec in the page
};
}