示例#1
0
MediaDecoderStateMachine*
MediaOmxCommonDecoder::CreateStateMachine()
{
  mReader = CreateReader();
  if (mReader != nullptr) {
    mReader->SetAudioChannel(GetAudioChannel());
  }
  return CreateStateMachineFromReader(mReader);
}
int g7712aac::init()
{
    nRet = 0;
    nTmp = 0;
    nCount = 0;
    nStatus = 0;
    nPCMRead = 0;
    PCMSize = /*320*/CON_PCM_SIZE;
    nPCMBufferSize = 0;

    unsigned int objectType = LOW;
    unsigned int mpegVersion = MPEG2;
    static unsigned int useTns = 0; //#define DEFAULT_TNS     0

    //TODO: config this
    unsigned int nChannels = 1;
	nChannels = GetAudioChannel();
    nPCMBitSize = 16;
    nInputSamples = 0;
    unsigned long nSampleRate = 8000;
	nSampleRate = GetAudioSamplerate();
    nMaxOutputBytes = 0;

    /*open FAAC engine*/
    hEncoder = faacEncOpen(nSampleRate, nChannels, &nInputSamples, &nMaxOutputBytes);
    if (hEncoder == NULL)
    {
        if(AAC_DEBUG) printf("%s:[%d] failed to call faacEncOpen !\n", __FUNCTION__, __LINE__);
        return -1;
    }

    nPCMBufferSize = (nInputSamples * (nPCMBitSize / 8));
    pbPCMBuffer = (unsigned char*) malloc(nPCMBufferSize * sizeof (unsigned char));
    memset(pbPCMBuffer, 0, nPCMBufferSize);

    pbAACBuffer = (unsigned char*) malloc(nMaxOutputBytes * sizeof (unsigned char));
    memset(pbAACBuffer, 0, nMaxOutputBytes);

    pbG711ABuffer = (unsigned char *) malloc(/*164*/G711_ONE_LEN * sizeof (unsigned char));
    memset(pbG711ABuffer, 0, /*164*/G711_ONE_LEN);

    audio_buffer_ = new audio_buffer();

    pbPCMTmpBuffer = (unsigned char *) malloc(PCMSize * sizeof (unsigned char));
    memset(pbPCMTmpBuffer, 0, PCMSize);

    /*get current encoding configuration*/
    pConfiguration = faacEncGetCurrentConfiguration(hEncoder);
    pConfiguration->inputFormat = FAAC_INPUT_16BIT;

    /*0 - raw; 1 - ADTS*/
    pConfiguration->outputFormat = 1;
    pConfiguration->useTns = useTns;
    pConfiguration->aacObjectType = objectType;
    pConfiguration->mpegVersion = mpegVersion;

    /*set encoding configuretion*/
    faacEncSetConfiguration(hEncoder, pConfiguration);

    // bStart = true;
    //thread.reset(new boost::thread(boost::bind(encode_routine, this)));

	return 0;
}
MediaDecoderStateMachine* MediaOmxDecoder::CreateStateMachine()
{
  mReader = new MediaOmxReader(this);
  mReader->SetAudioChannel(GetAudioChannel());
  return new MediaDecoderStateMachine(this, mReader);
}