Пример #1
0
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;
}
Пример #2
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;

}