diff --git a/lib/bitstream.h b/lib/bitstream.h index d06d9406..37abffdb 100644 --- a/lib/bitstream.h +++ b/lib/bitstream.h @@ -48,7 +48,7 @@ namespace Utils{ std::string data; private: long long unsigned int readBuffer; - int readBufferOffset; + unsigned int readBufferOffset; void fixData(); }; } diff --git a/lib/vorbis.cpp b/lib/vorbis.cpp index 52327563..ff312704 100644 --- a/lib/vorbis.cpp +++ b/lib/vorbis.cpp @@ -173,94 +173,67 @@ namespace vorbis{ std::deque<mode> header::readModeDeque(char audioChannels){ Utils::bitstreamLSBF stream; stream.append(data,datasize); - long long unsigned int beginsize = stream.size(); stream.skip(28); //skipping common header part stream.skip(28); //skipping common header part char codebook_count = stream.get(8) + 1; - //std::cerr << "Codebook Count: " << (int)codebook_count << std::endl; for (int i = 0; i < codebook_count; i++){ - //std::cerr << "codebook entry: " << i << std::endl; long long unsigned int CMN = stream.get(24); - //std::cerr << " Codebook magic number: " << std::hex << CMN << std::dec << std::endl; if (CMN != 0x564342){ exit(1); } unsigned short codebook_dimensions = stream.get(16); unsigned int codebook_entries = stream.get(24); - //std::cerr << " Codebook_dimensions, entries: "<< std::hex << codebook_dimensions << ", " <<codebook_entries << std::dec<< std::endl; bool orderedFlag = stream.get(1); - //std::cerr << " Ordered Flag: " << orderedFlag << std::endl; if (!orderedFlag){ bool sparseFlag = stream.get(1); - //std::cerr << " Sparse Flag: " << sparseFlag << std::endl; if (sparseFlag){//sparse flag //sparse handling - for (int o = 0; o < codebook_entries; o++){ + for (unsigned int o = 0; o < codebook_entries; o++){ if (stream.get(1)){ - //long long unsigned int length = stream.get(5)+1; - //std::cerr << " codeword length: "<< length <<std::endl; stream.skip(5); } } - //exit(1); }else{ - for (int o = 0; o < codebook_entries; o++){ - //long long unsigned int length = stream.get(5)+1; - //std::cerr << " codeword length: "<< length <<std::endl; + for (unsigned int o = 0; o < codebook_entries; o++){ stream.skip(5); } } }else{ //ordered handling - //std::cerr << "WARNING: Ordered codebook decoding in vorbis setup header NOT tested!" << std::endl; - long long unsigned int length = stream.get(5) + 1; - for (int o = 0; o < codebook_entries; o++){ + stream.skip(5); + for (unsigned int o = 0; o < codebook_entries; o++){ int readnow = (std::log(codebook_entries-o))/(std::log(2))+1; - //std::cerr << " Read amount of bits: " << readnow << ";" << codebook_entries-o << std::endl; o+=stream.get(readnow); } - //exit(2); } char codebook_lookup_type = stream.get(4); - //std::cerr << " codebook_lookup_type: " <<std::hex<< (int)codebook_lookup_type <<std::dec << std::endl; if (codebook_lookup_type != 0){ stream.skip(32); stream.skip(32); char codebook_value_bits = stream.get(4) + 1; - //std::cerr << " codebook_value_bits: " << (int)codebook_value_bits << std::endl; - bool codebook_sequence_flag = stream.get(1); + stream.skip(1); unsigned int codebook_lookup_value; if (codebook_lookup_type == 1){ codebook_lookup_value = std::pow(codebook_entries, (1.0/codebook_dimensions)); - //std::cerr << " std::pow(" << codebook_entries << ", (1/" << codebook_dimensions << ")) ="; }else{ codebook_lookup_value = codebook_entries * codebook_dimensions; - //std::cerr << " " << codebook_entries << " * " << codebook_dimensions << " = "; } - //std::cerr << " codebook_lookup_value: " << codebook_lookup_value << std::endl << " "; - for (int i = 0; i < codebook_lookup_value; i++){ - //(int)stream.get(codebook_value_bits) << " "; + for (unsigned int i = 0; i < codebook_lookup_value; i++){ stream.skip(codebook_value_bits); } - //std::cerr << std::endl; } } //end of codebooks - //std::cerr << "bits in to time domain transforms: " << (beginsize-stream.size()) << ", " << stream.size() << std::endl; //time domain transforms long long unsigned int TDT = stream.get(6) + 1; - //std::cerr << "Time domain Transforms: " << TDT << std::endl; - for (int i = 0; i < TDT; i++){ + for (unsigned int i = 0; i < TDT; i++){ stream.skip(16); } - //std::cerr << "bits in to floors: " << (beginsize-stream.size()) << ", " << stream.size() << std::endl; //Floors long long unsigned int floors = stream.get(6) + 1; - //std::cerr << "Floors: " << floors << std::endl; - for (int i = 0; i < floors; i++){ + for (unsigned int i = 0; i < floors; i++){ long long unsigned int floorType = stream.get(16); - //std::cerr << "FloorType: " << floorType << std::endl; switch(floorType){ case 0:{ std::cerr << "WARNING: FloorType 0 in vorbis setup header not tested!" << std::endl; @@ -270,7 +243,7 @@ namespace vorbis{ stream.skip(6);//amplitude bits stream.skip(8);//amplitude offset long long unsigned int numberOfBooks = stream.get(4)+1; - for (int o = 0; o < numberOfBooks; o++){ + for (unsigned int o = 0; o < numberOfBooks; o++){ stream.skip(8);//book list array } break; @@ -278,19 +251,15 @@ namespace vorbis{ case 1:{ long long unsigned int floorPartitions = stream.get(5); long long int max = -1; - //std::cerr << " floorPartitions: " << floorPartitions << std::endl; std::deque<int> partition_class; - for (int o = 0; o < floorPartitions; o++){ + for (unsigned int o = 0; o < floorPartitions; o++){ long long int temp = stream.get(4); partition_class.push_back(temp); - //std::cerr << " partition_class: " << temp << std::endl; if (temp>max) max = temp; } std::deque<int> class_dimensions; - //std::cerr << " Max: " << max << std::endl; for (int o = 0; o <= max; o++){ class_dimensions.push_back(stream.get(3)+1);//class dimensions PUT IN ARRAY! - //std::cerr << " class dimension: " << class_dimensions.back() << std::endl; int class_subclass = stream.get(2); if (class_subclass !=0){ stream.skip(8);//class_master_books @@ -301,17 +270,14 @@ namespace vorbis{ } stream.skip(2);//floor1_multiplier int rangebits = stream.get(4);//rangebits - //std::cerr << " rangebits: " << rangebits << std::endl; long long unsigned int count = 0; long long unsigned int skipper = 0; - for (int o = 0; o < floorPartitions; o++){ + for (unsigned int o = 0; o < floorPartitions; o++){ count += class_dimensions[(partition_class[o])]; - //std::cerr << " count: " << count << std::endl << " "; while (skipper < count){ stream.skip(rangebits); skipper ++; } - //std::cerr << std::endl; } break; } @@ -319,55 +285,42 @@ namespace vorbis{ exit(0); } } - //std::cerr << "bits in to Residues: " << (beginsize-stream.size()) << ", " << stream.size() << std::endl; //Residues long long unsigned int residues = stream.get(6) + 1; - //std::cerr << "Residue count: " << residues << std::endl; - for(int i = 0; i < residues; i++){ + for(unsigned int i = 0; i < residues; i++){ std::deque<char> residueCascade; long long unsigned int residueType = stream.get(16); - //std::cerr << "ResidueType: " << residueType << std::endl; if(residueType<=2){ stream.skip(24);//residue begin stream.skip(24);//residue end stream.skip(24);//residue partition size long long unsigned int residueClass = stream.get(6)+1;//residue classifications - //std::cerr<< " ResidueCLassification: " << residueClass << std::endl; stream.skip(8);//residue classbook - for (int o = 0; o < residueClass; o++){ + for (unsigned int o = 0; o < residueClass; o++){ char temp = stream.get(3);//low bits bool bitFlag = stream.get(1); - //std::cerr << " bitFlag: " << bitFlag << std::endl; if (bitFlag){ temp += stream.get(5) << 3; } - //std::cerr << " temp: " << (int)temp << std::endl; residueCascade.push_back(temp); } - for (int o = 0; o < residueClass; o++){ - //std::cerr << " "; - for (int p = 0; p < 7; p++){ + for (unsigned int o = 0; o < residueClass; o++){ + for (unsigned int p = 0; p < 7; p++){ if (((residueCascade[o] >> p) & 1) == 1){ - //std::cerr << "1"; stream.skip(8); }else{ - //std::cerr << "0"; } } - //std::cerr << std::endl; } }else{ exit(0); } } - //std::cerr << "bits in to Mappings: " << (beginsize-stream.size()) << ", " << stream.size() << std::endl; //Mappings long long unsigned int mappings = stream.get(6) + 1; - //std::cerr << "Mapping count: " << mappings << std::endl; - for(int i = 0; i < mappings; i++){ + for(unsigned int i = 0; i < mappings; i++){ long long unsigned int mapType = stream.get(16); - //std::cerr << "MapType: " << mapType << std::endl; if (mapType == 0){ char mappingSubmaps = 1; if (stream.get(1)==1){ @@ -376,11 +329,8 @@ namespace vorbis{ long long unsigned int coupling_steps = 0; if (stream.get(1)==1){ coupling_steps = stream.get(8)+1; - //std::cerr << " coupling steps: " << coupling_steps << std::endl; - //std::cerr << " AudioChannels: " << (int)audioChannels << std::endl; - for (int o = 0; o<coupling_steps; o++){ + for (unsigned int o = 0; o<coupling_steps; o++){ int temp = (std::log((audioChannels-o)-1))/(std::log(2)) + 1; - //std::cerr << " ilogAudioChannels: " << temp << std::endl; if (temp>0){ stream.skip(temp);//mapping magnitude stream.skip(temp);//mapping angle @@ -392,7 +342,6 @@ namespace vorbis{ std::cerr << " Sanity Check ==0 : " << (int)meh << std::endl; exit(0); } - //std::cerr << " Mapping Submaps: " << mappingSubmaps << std::endl; if (mappingSubmaps > 1){ for (int o = 0; o < audioChannels; o++){ stream.skip(4); @@ -409,25 +358,17 @@ namespace vorbis{ } } //Modes - //std::cerr << "bits in to Modes: " << (beginsize-stream.size()) << ", " << stream.size() << std::endl; long long unsigned int modes = stream.get(6) + 1; - //std::cerr << "Mode count: " << modes << std::endl; std::deque<mode> retVal; - for (int i = 0; i < modes; i++){ + for (unsigned int i = 0; i < modes; i++){ mode temp; temp.blockFlag = stream.get(1); - //std::cerr << " blockFlag: " << temp.blockFlag << std::endl; temp.windowType = stream.get(16); - //std::cerr << " windowType: " << temp.windowType << std::endl; temp.transformType = stream.get(16); - //std::cerr << " transformType: " << temp.transformType << std::endl; temp.mapping = stream.get(8); - //std::cerr << " mapping: " << (int)temp.mapping << std::endl; retVal.push_back(temp); } - //std::cerr << "Ending Bitflag (!=0): " << stream.get(1) << std::endl; stream.skip(1); - //std::cerr << "bits left: " << (beginsize-stream.size()) << ", " << stream.size() << std::endl; return retVal; }