Ogg 2 DTSC working lib

This commit is contained in:
Oswald Auguste de Bruin 2013-07-18 15:58:35 +02:00 committed by Thulinma
parent 5d85548360
commit 0bf50edaea
2 changed files with 23 additions and 10 deletions

View file

@ -198,6 +198,11 @@ namespace OGG{
} }
bool Page::setSegmentTable(std::vector<unsigned int> layout){ bool Page::setSegmentTable(std::vector<unsigned int> layout){
dataSum=0;
for (unsigned int i = 0; i < layout.size(); i++){
dataSum += layout[i];
}
std::cerr << "dataSum size: " << dataSum << std::endl;
unsigned int place = 0; unsigned int place = 0;
char table[255]; char table[255];
for (unsigned int i = 0; i < layout.size(); i++){ for (unsigned int i = 0; i < layout.size(); i++){
@ -217,11 +222,8 @@ namespace OGG{
table[place] = layout[i]; table[place] = layout[i];
place++; place++;
} }
setPageSegments(place);
setSegmentTable(table,place); setSegmentTable(table,place);
dataSum=0;
for (unsigned int i = 0; i < layout.size(); i++){
dataSum += layout[i];
}
return true; return true;
} }
@ -235,6 +237,10 @@ namespace OGG{
return 27 + getPageSegments()+dataSum; return 27 + getPageSegments()+dataSum;
} }
char* Page::getPage(){
return data;
}
char* Page::getFullPayload(){ char* Page::getFullPayload(){
return data + 27 + getPageSegments(); return data + 27 + getPageSegments();
} }
@ -433,18 +439,24 @@ namespace OGG{
return dataSum; return dataSum;
} }
void Page::clear(){ bool Page::clear(){
if(!checkDataSize(27)){//check if size available in memory
return false;
}
memset(data,0,27); memset(data,0,27);
datasize = 0; datasize = 0;
dataSum = 0; dataSum = 0;
codec = ""; codec = "";
setMagicNumber();
segmentTableDeque.clear(); segmentTableDeque.clear();
return true;
} }
bool Page::setPayload(char* newData, unsigned int length){ bool Page::setPayload(char* newData, unsigned int length){
if(!checkDataSize(27 + getPageSegments() + length)){//check if size available in memory if(!checkDataSize(27 + getPageSegments() + length)){//check if size available in memory
return false; return false;
} }
std::cerr << "Payload length: " << length << std::endl;
memcpy(data + 27 + getPageSegments(), newData, length); memcpy(data + 27 + getPageSegments(), newData, length);
return true; return true;
} }

View file

@ -31,8 +31,10 @@ namespace OGG{
std::deque<unsigned int> & getSegmentTableDeque(); std::deque<unsigned int> & getSegmentTableDeque();
bool setSegmentTable(std::vector<unsigned int> layout); bool setSegmentTable(std::vector<unsigned int> layout);
void setSegmentTable(char* newVal, unsigned int length); void setSegmentTable(char* newVal, unsigned int length);
char* getPage();//returns complete page with header
unsigned long int getPageSize(); unsigned long int getPageSize();
char* getFullPayload(); char* getFullPayload();//returns all segments in the page
int getPayloadSize(); int getPayloadSize();
bool typeBOS(); bool typeBOS();
bool typeEOS(); bool typeEOS();
@ -41,8 +43,7 @@ namespace OGG{
std::string toPrettyString(size_t indent = 0); std::string toPrettyString(size_t indent = 0);
void setInternalCodec(std::string myCodec); void setInternalCodec(std::string myCodec);
long unsigned int calcChecksum(); long unsigned int calcChecksum();
void clear(); bool clear();
bool setPayload(char* newData, unsigned int length); bool setPayload(char* newData, unsigned int length);
private: private:
std::deque<unsigned int> segmentTableDeque; std::deque<unsigned int> segmentTableDeque;