91 lines
6.2 KiB
Plaintext
91 lines
6.2 KiB
Plaintext
src/aacplusenc.c: AacInitDefaultConfig(&aacp->config);
|
|
src/aacplusenc.c: aacp->config.nChannelsIn = numChannels;
|
|
src/aacplusenc.c: aacp->config.sampleRate = sampleRate;
|
|
src/aacplusenc.c: aacp->writeOffset = INPUT_DELAY*MAX_CHANNELS;
|
|
src/aacplusenc.c: aacplusEncInitSBRAACRam(&aacp->aacEnc);
|
|
src/aacplusenc.c: init_plans(&aacp->fftctx);
|
|
src/aacplusenc.c: return &aacp->config;
|
|
src/aacplusenc.c: if(cfg != &aacp->config)
|
|
src/aacplusenc.c: memcpy(&aacp->config, cfg, sizeof(aacplusEncConfiguration));
|
|
src/aacplusenc.c: int sampleRateAAC = aacp->config.sampleRate;
|
|
src/aacplusenc.c: if(!aacp->config.nChannelsOut)
|
|
src/aacplusenc.c: aacp->config.nChannelsOut = aacp->config.nChannelsIn;
|
|
src/aacplusenc.c: if(!aacp->config.bitRate)
|
|
src/aacplusenc.c: if(aacp->config.bandWidth > aacp->config.sampleRate/2)
|
|
src/aacplusenc.c: aacp->config.inputSamples = aacp->config.nSamplesPerFrame * 2 * aacp->config.nChannelsIn;
|
|
src/aacplusenc.c: if ( (aacp->config.nChannelsOut == 2) && (aacp->config.bitRate >= 16000) && (aacp->config.bitRate < 44001) ) {
|
|
src/aacplusenc.c: aacp->config.nChannelsOut=1;
|
|
src/aacplusenc.c: aacp->useParametricStereo=1;
|
|
src/aacplusenc.c: aacp->envReadOffset = (MAX_DS_FILTER_DELAY + INPUT_DELAY)*MAX_CHANNELS;
|
|
src/aacplusenc.c: aacp->coreWriteOffset = CORE_INPUT_OFFSET_PS;
|
|
src/aacplusenc.c: aacp->writeOffset = aacp->envReadOffset;
|
|
src/aacplusenc.c: InitIIR21_Resampler(&aacp->IIR21_reSampler[0]);
|
|
src/aacplusenc.c: InitIIR21_Resampler(&aacp->IIR21_reSampler[1]);
|
|
src/aacplusenc.c: assert(aacp->IIR21_reSampler[0].delay <= MAX_DS_FILTER_DELAY);
|
|
src/aacplusenc.c: aacp->writeOffset += aacp->IIR21_reSampler[0].delay*MAX_CHANNELS;
|
|
src/aacplusenc.c: if(!IsSbrSettingAvail(aacp->config.bitRate, aacp->config.nChannelsOut, sampleRateAAC, &sampleRateAAC)) {
|
|
src/aacplusenc.c: aacp->config.bitRate, aacp->config.nChannelsOut, sampleRateAAC);
|
|
src/aacplusenc.c: InitializeSbrDefaults (&aacp->sbrConfig);
|
|
src/aacplusenc.c: aacp->sbrConfig.usePs = aacp->useParametricStereo;
|
|
src/aacplusenc.c: if(!AdjustSbrSettings( &aacp->sbrConfig, aacp->config.bitRate, aacp->config.nChannelsOut, sampleRateAAC, AACENC_TRANS_FAC, 24000)) {
|
|
src/aacplusenc.c: aacp->config.bitRate, aacp->config.nChannelsOut, sampleRateAAC, aacp->sbrConfig.usePs);
|
|
src/aacplusenc.c: if(EnvOpen(aacp->aacEnc.sbr_ram,
|
|
src/aacplusenc.c: &aacp->hEnvEnc,
|
|
src/aacplusenc.c: &aacp->inBuf[aacp->coreWriteOffset],
|
|
src/aacplusenc.c: &aacp->sbrConfig,
|
|
src/aacplusenc.c: &aacp->config.bandWidth) != 0){
|
|
src/aacplusenc.c: EnvClose (&aacp->hEnvEnc);
|
|
src/aacplusenc.c: aacp->hEnvEnc.fftctx = &aacp->fftctx;
|
|
src/aacplusenc.c: aacp->config.sampleRate = sampleRateAAC;
|
|
src/aacplusenc.c: if (AacEncOpen( &aacp->aacEnc, &aacp->config) != 0){
|
|
src/aacplusenc.c: AacEncClose(&aacp->aacEnc);
|
|
src/aacplusenc.c: aacp->aacEnc.fftctx = &aacp->fftctx;
|
|
src/aacplusenc.c: aacp->adts = calloc(1, sizeof(ADTSContext_t));
|
|
src/aacplusenc.c: if(!aacp->adts) {
|
|
src/aacplusenc.c: adts_hdr_init(aacp->adts, &aacp->config, &aacp->aacEnc.bitStream);
|
|
src/aacplusenc.c: if(aacp->useParametricStereo)
|
|
src/aacplusenc.c: srate_idx = FindSRIndex(aacp->config.sampleRate);
|
|
src/aacplusenc.c: ch_idx = FindCHIndex(aacp->config.nChannelsOut);
|
|
src/aacplusenc.c: if(aacp->config.nSamplesPerFrame != AACENC_BLOCKSIZE)
|
|
src/aacplusenc.c: srate_idx = FindSRIndex(aacp->config.sampleRate * 2);
|
|
src/aacplusenc.c: if(samplesInput > aacp->config.inputSamples)
|
|
src/aacplusenc.c: switch (aacp->config.inputFormat){
|
|
src/aacplusenc.c: aacp->inBuf[(2/aacp->config.nChannelsIn)*i+aacp->writeOffset+aacp->writtenSamples] = (float) inbuff[i];
|
|
src/aacplusenc.c: aacp->inBuf[(2/aacp->config.nChannelsIn)*i+aacp->writeOffset+aacp->writtenSamples] = inbuff[i] * SHRT_MAX;
|
|
src/aacplusenc.c: if((aacp->config.nChannelsIn == 2) &&
|
|
src/aacplusenc.c: (aacp->config.nChannelsOut == 1) && !aacp->useParametricStereo) {
|
|
src/aacplusenc.c: aacp->inBuf[i+aacp->writeOffset+aacp->writtenSamples] = (aacp->inBuf[i+aacp->writeOffset+aacp->writtenSamples]
|
|
src/aacplusenc.c: + aacp->inBuf[i+aacp->writeOffset+aacp->writtenSamples+1])*0.5f;
|
|
src/aacplusenc.c: aacp->writtenSamples+=samplesInput;
|
|
src/aacplusenc.c: if (aacp->writtenSamples < aacp->config.inputSamples)
|
|
src/aacplusenc.c: if(aacp->adts) adts_offset=ADTS_HEADER_SIZE;
|
|
src/aacplusenc.c: EnvEncodeFrame( &aacp->hEnvEnc,
|
|
src/aacplusenc.c: &aacp->inBuf[aacp->envReadOffset],
|
|
src/aacplusenc.c: &aacp->inBuf[aacp->coreWriteOffset],
|
|
src/aacplusenc.c: &aacp->numAncDataBytes,
|
|
src/aacplusenc.c: aacp->ancDataBytes);
|
|
src/aacplusenc.c: if (!aacp->useParametricStereo)
|
|
src/aacplusenc.c: for( ch=0; ch<aacp->config.nChannelsIn; ch++ )
|
|
src/aacplusenc.c: IIR21_Downsample( &aacp->IIR21_reSampler[ch],
|
|
src/aacplusenc.c: &aacp->inBuf[aacp->writeOffset+ch],
|
|
src/aacplusenc.c: aacp->config.nSamplesPerFrame * 2, //aacp->writtenSamples,
|
|
src/aacplusenc.c: &aacp->inBuf[ch],
|
|
src/aacplusenc.c: AacEncEncode( &aacp->aacEnc,
|
|
src/aacplusenc.c: aacp->inBuf,
|
|
src/aacplusenc.c: aacp->useParametricStereo ? 1 : MAX_CHANNELS, /* stride (step) */
|
|
src/aacplusenc.c: aacp->ancDataBytes,
|
|
src/aacplusenc.c: &aacp->numAncDataBytes,
|
|
src/aacplusenc.c: if (aacp->useParametricStereo) {
|
|
src/aacplusenc.c: memcpy( aacp->inBuf,&aacp->inBuf[aacp->config.nSamplesPerFrame],CORE_INPUT_OFFSET_PS*sizeof(float));
|
|
src/aacplusenc.c: memmove( aacp->inBuf,&aacp->inBuf[aacp->config.nSamplesPerFrame*2*MAX_CHANNELS],
|
|
src/aacplusenc.c: aacp->writeOffset*sizeof(float));
|
|
src/aacplusenc.c: if(numOutBytes > 0 && aacp->adts) {
|
|
src/aacplusenc.c: adts_hdr_up(aacp->adts, outputBuffer, numOutBytes);
|
|
src/aacplusenc.c: aacp->writtenSamples=0;
|
|
src/aacplusenc.c: AacEncClose(&aacp->aacEnc);
|
|
src/aacplusenc.c: EnvClose(&aacp->hEnvEnc);
|
|
src/aacplusenc.c: destroy_plans(&aacp->fftctx);
|
|
src/aacplusenc.c: aacplusEncFreeSBRAACRam(&aacp->aacEnc);
|
|
src/aacplusenc.c: if(aacp->adts)
|
|
src/aacplusenc.c: free(aacp->adts);
|