Ogg fixed
This commit is contained in:
parent
31bfc8223e
commit
632b3ff594
2 changed files with 30 additions and 12 deletions
14
lib/ogg.cpp
14
lib/ogg.cpp
|
@ -188,6 +188,9 @@ namespace OGG{
|
||||||
temp = 0;
|
temp = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (temp!=0){
|
||||||
|
segmentTableDeque.push_back(temp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return segmentTableDeque;
|
return segmentTableDeque;
|
||||||
}
|
}
|
||||||
|
@ -196,6 +199,7 @@ namespace OGG{
|
||||||
std::cerr << "Segments too big, create a continue page" << std::endl;
|
std::cerr << "Segments too big, create a continue page" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///\TODO MAKE FIX HERE
|
||||||
bool Page::setSegmentTable(std::vector<unsigned int> layout){
|
bool Page::setSegmentTable(std::vector<unsigned int> layout){
|
||||||
dataSum=0;
|
dataSum=0;
|
||||||
for (unsigned int i = 0; i < layout.size(); i++){
|
for (unsigned int i = 0; i < layout.size(); i++){
|
||||||
|
@ -205,7 +209,7 @@ namespace OGG{
|
||||||
char table[255];
|
char table[255];
|
||||||
for (unsigned int i = 0; i < layout.size(); i++){
|
for (unsigned int i = 0; i < layout.size(); i++){
|
||||||
while (layout[i]>=255){
|
while (layout[i]>=255){
|
||||||
if (place >= 255){
|
if (place > 255){
|
||||||
STerrMSG();
|
STerrMSG();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -213,12 +217,14 @@ namespace OGG{
|
||||||
layout[i] -= 255;
|
layout[i] -= 255;
|
||||||
place++;
|
place++;
|
||||||
}
|
}
|
||||||
if (place >= 255){
|
if (place > 255){
|
||||||
STerrMSG();
|
STerrMSG();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
table[place] = layout[i];
|
if (layout[i] != 0){
|
||||||
place++;
|
table[place] = layout[i];
|
||||||
|
place++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
setPageSegments(place);
|
setPageSegments(place);
|
||||||
setSegmentTable(table,place);
|
setSegmentTable(table,place);
|
||||||
|
|
|
@ -66,7 +66,7 @@ namespace vorbis{
|
||||||
|
|
||||||
char header::getBlockSize0(){
|
char header::getBlockSize0(){
|
||||||
if (getHeaderType() == 1){
|
if (getHeaderType() == 1){
|
||||||
return data[28]>>4;
|
return (data[28]>>4) & 0x0F;
|
||||||
}else{
|
}else{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -106,12 +106,24 @@ namespace vorbis{
|
||||||
bool header::validate(){
|
bool header::validate(){
|
||||||
switch(getHeaderType()){
|
switch(getHeaderType()){
|
||||||
case 1://ID header
|
case 1://ID header
|
||||||
if (datasize!=30) return false;
|
if (datasize!=30){
|
||||||
if (getVorbisVersion()!=0) return false;
|
return false;
|
||||||
if (getAudioChannels()<=0) return false;
|
}
|
||||||
if (getAudioSampleRate()<=0) return false;
|
if (getVorbisVersion()!=0){
|
||||||
if (getBlockSize0()>getBlockSize1()) return false;
|
return false;
|
||||||
if (getFramingFlag()!=1) return false;
|
}
|
||||||
|
if (getAudioChannels()<=0){
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
if (getAudioSampleRate()<=0) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (getBlockSize0()>getBlockSize1()){
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
if (getFramingFlag()!=1){
|
||||||
|
return false;
|
||||||
|
};
|
||||||
break;
|
break;
|
||||||
case 3://comment header
|
case 3://comment header
|
||||||
break;
|
break;
|
||||||
|
@ -140,7 +152,7 @@ namespace vorbis{
|
||||||
}else{
|
}else{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return validate();
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue