OGG full readout possible

This commit is contained in:
Oswald de Bruin 2013-06-06 14:52:52 +02:00 committed by Erik Zandvliet
parent e3861f9fc6
commit b600d6b603
2 changed files with 11 additions and 4 deletions

View file

@ -15,7 +15,7 @@ namespace OGG{
bool Page::read(std::string & newData){
dataSum = 0;
datasize = 0;
//datasize = 0;
if (newData.size()<27){
return false;
}
@ -36,7 +36,7 @@ namespace OGG{
return false;
}
memcpy(data + 27 + getPageSegments(), newData.c_str() + 27 + getPageSegments(), dataSum);
newData.erase(0, datasize);
newData.erase(0, getPageSize());
return true;
}
@ -167,13 +167,17 @@ namespace OGG{
}
}
unsigned long int Page::getPageSize(){
return 27 + getPageSegments()+dataSum;
}
char* Page::getFullPayload(){
return data + 27 + getPageSegments();
}
std::string Page::toPrettyString(){
std::stringstream r;
r << "Size(" << datasize << ")(" << dataSum << ")" << std::endl;
r << "Size(" << getPageSize() << ")(" << dataSum << ")" << std::endl;
r << "Magic_Number: " << std::string(data, 4) << std::endl;
r << "Version: " << (int)getVersion() << std::endl;
r << "Header_type: " << std::hex << (int)getHeaderType() << std::dec;
@ -224,7 +228,7 @@ namespace OGG{
long unsigned int retVal = 0;
long unsigned int oldChecksum = getCRCChecksum();
setCRCChecksum (0);
retVal = Compute(data, datasize);
retVal = Compute(data, getPageSize());
setCRCChecksum (oldChecksum);
return retVal;
}

View file

@ -28,7 +28,10 @@ namespace OGG{
std::deque<unsigned int> getSegmentTableDeque();
bool setSegmentTable(std::vector<unsigned int> layout);
void setSegmentTable(char* newVal, unsigned int length);
unsigned long int getPageSize();
char* getFullPayload();
char* getSegment(long unsigned int);
std::string toPrettyString();
private:
long unsigned int calcChecksum();