int main() { bitVector myBits(8); int i; //counters for (i = 0; i <= 13; i++) { if ((i % 2) == 0) { myBits.pushTrue(); } else { myBits.pushFalse(); } } cout << "Bit 0 1 2 3 4 5 6 7 8 9 A B C D\n "; for (i = 0; i <= 13; i++) { cout << myBits[i] << " "; } cout << endl << endl; for (i = 0; i <= 13; i++) { myBits.flip(i); } cout << "Bit 0 1 2 3 4 5 6 7 8 9 A B C D\n "; for (i = 0; i <= 13; i++) { cout << myBits[i] << " "; } cout << endl << endl; for (i = 0; i <= 13; i++) { if (myBits[i] == 1) { myBits.flip(i); } } cout << "Bit 0 1 2 3 4 5 6 7 8 9 A B C D\n "; for (i = 0; i <= 13; i++) { cout << myBits[i] << " "; } cout << endl << endl; return 0; }
/** \fn AudioSpecificConfig */ bool ADM_latm2aac::AudioSpecificConfig(getBits &bits,int &bitsConsumed) { int consumed=bits.getConsumedBits(); getBits myBits(bits); // get a copy, needed to extract extra data int audioObjectType=read31plus(bits); int samplingFrequencyIndex=bits.get(4); if(samplingFrequencyIndex==0xf) { fq=(bits.get(8)<<16)+bits.get(16); }else { fq=aacSampleRate[samplingFrequencyIndex]; } int channelConfiguration=bits.get(4); channels=aacChannels[channelConfiguration]; xdebug("ObjectType=%d\n",audioObjectType); switch(audioObjectType) { case 2: // GASpecificConfig { bits.get(1); // frameLength bool dependsOnCoreCoder=bits.get(1); if(dependsOnCoreCoder) bits.skip(14); bool extensionFlag=bits.get(1); if(!channelConfiguration) { ADM_error("No channel configuraiton\n"); return false; } if(extensionFlag) { ADM_error("Extension flag\n"); return false; } } break; default: ADM_error("AudoObjecttype =%d not handled\n",audioObjectType); return false; } consumed=bits.getConsumedBits()-consumed; bitsConsumed=consumed; xdebug("%d bits consumed\n",consumed); extraLen=(consumed+7)/8; #if 0 // pad left // fill to get 8 bits.. int top=consumed&7; if(!top) top=8; extraData[0]=myBits.get(top); for(int i=1;i<extraLen;i++) { extraData[i]=myBits.get(8); } #else // pad right for(int i=0;i<extraLen;i++) { int rd=consumed; if(rd>8) rd=8; extraData[i]=(myBits.get(rd))<<(8-rd); consumed-=rd; } #endif xdebug("Got %d extraData %x %x\n",extraLen,extraData[0],extraData[1]); xdebug("Frequency %d, channels %d\n",fq,channels); conf.gotConfig=true; return true; }