diff -Nupr src.p7/aacenc.c src.p8/aacenc.c --- src.p7/aacenc.c 2010-10-21 13:06:37.000000000 +0300 +++ src.p8/aacenc.c 2010-10-21 13:06:37.000000000 +0300 @@ -52,22 +52,28 @@ static struct AAC_ENCODER aacEncoder; returns: --- ------------------------------------------------------------------------------*/ -void AacInitDefaultConfig(AACENC_CONFIG *config) +void AacInitDefaultConfig(aacplusEncConfiguration *config) { /* make the pre initialization of the structs flexible */ - memset(config, 0, sizeof(AACENC_CONFIG)); + memset(config, 0, sizeof(aacplusEncConfiguration)); /* default configurations */ config->bitRate = 48000; config->bandWidth = 0; + config->nSamplesPerFrame = AACENC_BLOCKSIZE; } + + + + + /*--------------------------------------------------------------------------- functionname: AacEncOpen @@ -77,38 +83,26 @@ void AacInitDefaultConfig(AACENC_CONFIG ---------------------------------------------------------------------------*/ int -AacEncOpen ( struct AAC_ENCODER** phAacEnc, /* pointer to an encoder handle, initialized on return */ - const AACENC_CONFIG config /* pre-initialized config struct */ +AacEncOpen ( struct AAC_ENCODER *hAacEnc, /* pointer to an encoder handle, initialized on return */ + aacplusEncConfiguration *config /* pre-initialized config struct */ ) { int error = 0; int profile = 1; ELEMENT_INFO* elInfo = NULL; - struct AAC_ENCODER *hAacEnc ; - - /* counting previous operations */ - hAacEnc = &aacEncoder; - - - if (phAacEnc==0) { - - error=1; - } - - if (!error) { /* sanity checks on config structure */ - error = (&config == 0 || phAacEnc == 0 || - config.nChannelsIn < 1 || config.nChannelsIn > MAX_CHANNELS || - config.nChannelsOut < 1 || config.nChannelsOut > MAX_CHANNELS || - config.nChannelsIn < config.nChannelsOut || - (config.bitRate!=0 && (config.bitRate / config.nChannelsOut < 8000 || - config.bitRate / config.nChannelsOut > 160000))); + error = (&config == 0 || hAacEnc == 0 || + config->nChannelsIn < 1 || config->nChannelsIn > MAX_CHANNELS || + config->nChannelsOut < 1 || config->nChannelsOut > MAX_CHANNELS || + config->nChannelsIn < config->nChannelsOut || + (config->bitRate!=0 && (config->bitRate / config->nChannelsOut < 8000 || + config->bitRate / config->nChannelsOut > 160000))); } /* check sample rate */ @@ -116,7 +110,7 @@ AacEncOpen ( struct AAC_ENCODER** ph if (!error) { - switch (config.sampleRate) { + switch (config->sampleRate) { case 8000: case 11025: case 12000: case 16000: case 22050: case 24000: case 32000: case 44100: case 48000: @@ -134,8 +128,8 @@ AacEncOpen ( struct AAC_ENCODER** ph if (!error) { - if (config.bitRate > ((float)(MAX_CHANNEL_BITS-744)/FRAME_LEN_LONG* - config.sampleRate*config.nChannelsOut)) + if (config->bitRate > ((float)(MAX_CHANNEL_BITS-744)/FRAME_LEN_LONG* + config->sampleRate*config->nChannelsOut)) { error=1; @@ -153,7 +147,7 @@ AacEncOpen ( struct AAC_ENCODER** ph if (!error) { - error = InitElementInfo (config.nChannelsOut, + error = InitElementInfo (config->nChannelsOut, &hAacEnc->elInfo); } @@ -179,12 +173,12 @@ AacEncOpen ( struct AAC_ENCODER** ph /* counting previous operation */ - hAacEnc->bandwidth90dB = (int)hAacEnc->config.bandWidth; + hAacEnc->bandwidth90dB = (int)hAacEnc->config->bandWidth; error = psyMainInit(&hAacEnc->psyKernel, - config.sampleRate, - config.bitRate, + config->sampleRate, + config->bitRate, elInfo->nChannelsInEl, tnsMask, hAacEnc->bandwidth90dB); @@ -220,20 +214,20 @@ AacEncOpen ( struct AAC_ENCODER** ph qcInit.bitRes = qcInit.maxBits; - qcInit.averageBits = (config.bitRate * FRAME_LEN_LONG) / config.sampleRate; + qcInit.averageBits = (config->bitRate * FRAME_LEN_LONG) / config->sampleRate; - qcInit.padding.paddingRest = config.sampleRate; + qcInit.padding.paddingRest = config->sampleRate; - qcInit.meanPe = 10.0f * FRAME_LEN_LONG * hAacEnc->bandwidth90dB/(config.sampleRate/2.0f); + qcInit.meanPe = 10.0f * FRAME_LEN_LONG * hAacEnc->bandwidth90dB/(config->sampleRate/2.0f); qcInit.maxBitFac = (float)((MAX_CHANNEL_BITS-744)*elInfo->nChannelsInEl) / (float)(qcInit.averageBits?qcInit.averageBits:1); - qcInit.bitrate = config.bitRate; + qcInit.bitrate = config->bitRate; error = QCInit(&hAacEnc->qcKernel, &qcInit); @@ -245,8 +239,8 @@ AacEncOpen ( struct AAC_ENCODER** ph hAacEnc->bseInit.nChannels = elInfo->nChannelsInEl; - hAacEnc->bseInit.bitrate = config.bitRate; - hAacEnc->bseInit.sampleRate = config.sampleRate; + hAacEnc->bseInit.bitrate = config->bitRate; + hAacEnc->bseInit.sampleRate = config->sampleRate; hAacEnc->bseInit.profile = profile; } @@ -256,10 +250,10 @@ AacEncOpen ( struct AAC_ENCODER** ph if (!error) { - hAacEnc->downmix = (config.nChannelsIn==2 && config.nChannelsOut==1); + hAacEnc->downmix = (config->nChannelsIn==2 && config->nChannelsOut==1); - hAacEnc->downmixFac = (hAacEnc->downmix) ? config.nChannelsIn : 1; + hAacEnc->downmixFac = (hAacEnc->downmix) ? config->nChannelsIn : 1; } @@ -273,7 +267,7 @@ AacEncOpen ( struct AAC_ENCODER** ph if ( elInfo->elType == ID_CPE && - (config.sampleRate <= 24000 && (config.bitRate/elInfo->nChannelsInEl*2) < 60000) ) { + (config->sampleRate <= 24000 && (config->bitRate/elInfo->nChannelsInEl*2) < 60000) ) { float scfUsedRatio = (float) hAacEnc->psyKernel.psyConfLong.sfbActive / hAacEnc->psyKernel.psyConfLong.sfbCnt ; @@ -282,8 +276,8 @@ AacEncOpen ( struct AAC_ENCODER** ph error = InitStereoPreProcessing(&(hAacEnc->stereoPrePro), elInfo->nChannelsInEl, - config.bitRate, - config.sampleRate, + config->bitRate, + config->sampleRate, scfUsedRatio); } } @@ -295,11 +289,9 @@ AacEncOpen ( struct AAC_ENCODER** ph AacEncClose(hAacEnc); - hAacEnc=0; } - *phAacEnc = hAacEnc; @@ -361,8 +353,8 @@ int AacEncEncode(struct AAC_ENCODER *aac AdjustBitrate(&aacEnc->qcKernel, - aacEnc->config.bitRate, - aacEnc->config.sampleRate); + aacEnc->config->bitRate, + aacEnc->config->sampleRate); /* aacEnc->qcKernel.elementBits @@ -456,11 +448,10 @@ void AacEncClose (struct AAC_ENCODER* hA error = PsyOutDelete(&hAacEnc->psyOut); - - DeleteBitBuffer(&hAacEnc->hBitStream); + if(hAacEnc->hBitStream) + DeleteBitBuffer(&hAacEnc->hBitStream); - hAacEnc=0; } diff -Nupr src.p7/aacenc.h src.p8/aacenc.h --- src.p7/aacenc.h 2010-10-21 13:06:37.000000000 +0300 +++ src.p8/aacenc.h 2010-10-21 13:06:37.000000000 +0300 @@ -46,7 +46,7 @@ struct AAC_ENCODER; returns: --- ------------------------------------------------------------------------------*/ -void AacInitDefaultConfig(AACENC_CONFIG *config); +void AacInitDefaultConfig(aacplusEncConfiguration *config); /*--------------------------------------------------------------------------- @@ -57,8 +57,8 @@ void AacInitDefaultConfig(AACENC_CONFIG ---------------------------------------------------------------------------*/ int AacEncOpen -( struct AAC_ENCODER** phAacEnc, /* pointer to an encoder handle, initialized on return */ - const AACENC_CONFIG config /* pre-initialized config struct */ +( struct AAC_ENCODER* hAacEnc, /* pointer to an encoder handle, initialized on return */ + aacplusEncConfiguration *config /* pre-initialized config struct */ ); int AacEncEncode(struct AAC_ENCODER *hAacEnc,