diff -Nupr src.p9/aacenc.c src.p10/aacenc.c --- src.p9/aacenc.c 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/aacenc.c 2010-10-21 13:06:37.000000000 +0300 @@ -130,7 +130,7 @@ AacEncOpen ( struct AAC_ENCODER *hA if (!error) { - error = (PsyNew(&hAacEnc->psyKernel, elInfo->nChannelsInEl) || + error = (PsyNew(hAacEnc->aac_ram, hAacEnc->sbr_ram, &hAacEnc->psyKernel, elInfo->nChannelsInEl) || PsyOutNew(&hAacEnc->psyOut)); } @@ -157,7 +157,7 @@ AacEncOpen ( struct AAC_ENCODER *hA if (!error) { - error = QCOutNew(&hAacEnc->qcOut, + error = QCOutNew(hAacEnc->aac_ram, &hAacEnc->qcOut, elInfo->nChannelsInEl); } @@ -198,7 +198,7 @@ AacEncOpen ( struct AAC_ENCODER *hA qcInit.bitrate = config->bitRate; - error = QCInit(&hAacEnc->qcKernel, &qcInit); + error = QCInit(hAacEnc->aac_ram, &hAacEnc->qcKernel, &qcInit); } /* init bitstream encoder */ @@ -307,7 +307,8 @@ int AacEncEncode(struct AAC_ENCODER *aac } - psyMain(timeInStride, + psyMain(aacEnc->fftctx, + timeInStride, elInfo, timeSignal, &aacEnc->psyKernel.psyData[elInfo->ChannelIndex[0]], @@ -332,7 +333,8 @@ int AacEncEncode(struct AAC_ENCODER *aac */ /* min() */ - QCMain( &aacEnc->qcKernel, + QCMain( aacEnc->aac_ram, + &aacEnc->qcKernel, elInfo->nChannelsInEl, &aacEnc->qcKernel.elementBits, &aacEnc->qcKernel.adjThr.adjThrStateElem, diff -Nupr src.p9/dyn_bits.c src.p10/dyn_bits.c --- src.p9/dyn_bits.c 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/dyn_bits.c 2010-10-21 13:06:37.000000000 +0300 @@ -417,7 +417,7 @@ gmStage2(SECTION_INFO * section, count bits used by the noiseless coder */ static void -noiselessCounter(SECTION_DATA * sectionData, +noiselessCounter(AACRam_t *aacram, SECTION_DATA * sectionData, int mergeGainLookUp[MAX_SFB_LONG], int bitLookUp[MAX_SFB_LONG][CODE_BOOK_ESC_NDX + 1], const short *quantSpectrum, @@ -441,12 +441,12 @@ noiselessCounter(SECTION_DATA * sectionD case STOP_WINDOW: - sideInfoTab = sideInfoTabLong; + sideInfoTab = aacram->sideInfoTabLong; break; case SHORT_WINDOW: - sideInfoTab = sideInfoTabShort; + sideInfoTab = aacram->sideInfoTabShort; break; } @@ -715,7 +715,8 @@ static void scfCount(const short *scalef typedef int (*lookUpTable)[CODE_BOOK_ESC_NDX + 1]; int -dynBitCount(const short *quantSpectrum, +dynBitCount(AACRam_t *aacram, + const short *quantSpectrum, const unsigned short *maxValueInSfb, const signed short *scalefac, const int blockType, @@ -742,7 +743,7 @@ dynBitCount(const short *quantS sectionData->maxSfbPerGroup = maxSfbPerGroup; - noiselessCounter(sectionData, + noiselessCounter(aacram, sectionData, mergeGainLookUp, (lookUpTable)bitLookUp, quantSpectrum, @@ -766,7 +767,7 @@ dynBitCount(const short *quantS int -BCInit(void) +BCInit(AACRam_t *aacram) { int i; @@ -777,14 +778,14 @@ BCInit(void) for (i = 0; i <= MAX_SFB_LONG; i++) { - sideInfoTabLong[i] = calcSideInfoBits(i, LONG_WINDOW); + aacram->sideInfoTabLong[i] = calcSideInfoBits(i, LONG_WINDOW); } /* sideInfoTabShort[] */ for (i = 0; i <= MAX_SFB_SHORT; i++) { - sideInfoTabShort[i] = calcSideInfoBits(i, SHORT_WINDOW); + aacram->sideInfoTabShort[i] = calcSideInfoBits(i, SHORT_WINDOW); } diff -Nupr src.p9/dyn_bits.h src.p10/dyn_bits.h --- src.p9/dyn_bits.h 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/dyn_bits.h 2010-10-21 13:06:37.000000000 +0300 @@ -36,10 +36,10 @@ typedef struct } SECTION_DATA; +int BCInit(AACRam_t *aacram); -int BCInit(void); - -int dynBitCount(const short *quantSpectrum, +int dynBitCount(AACRam_t *aacram, + const short *quantSpectrum, const unsigned short *maxValueInSfb, const signed short *scalefac, const int blockType, diff -Nupr src.p9/env_est.c src.p10/env_est.c --- src.p9/env_est.c 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/env_est.c 2010-10-21 13:06:37.000000000 +0300 @@ -1675,7 +1675,7 @@ extractSbrEnvelope (FFTWFContext_t *fftc ****************************************************************************/ int -CreateExtractSbrEnvelope (int chan, +CreateExtractSbrEnvelope (SBRRam_t *sbrram, int chan, HANDLE_SBR_EXTRACT_ENVELOPE hSbrCut, int start_index) { @@ -1723,7 +1723,7 @@ CreateExtractSbrEnvelope (int chan, for (i = 0; i < YBufferLength; i++) { - hSbrCut->YBuffer[i] = &sbr_envYBuffer[chan*YBufferLength*64 + i*QMF_CHANNELS]; + hSbrCut->YBuffer[i] = &sbrram->sbr_envYBuffer[chan*YBufferLength*64 + i*QMF_CHANNELS]; } /* hSbrCut->rBuffer[] @@ -1732,10 +1732,10 @@ CreateExtractSbrEnvelope (int chan, for (i = 0; i < rBufferLength; i++) { - hSbrCut->rBuffer[i] = &sbr_envRBuffer[chan*QMF_TIME_SLOTS*QMF_CHANNELS + i*QMF_CHANNELS]; + hSbrCut->rBuffer[i] = &sbrram->sbr_envRBuffer[chan*QMF_TIME_SLOTS*QMF_CHANNELS + i*QMF_CHANNELS]; - hSbrCut->iBuffer[i] = &sbr_envIBuffer[chan*QMF_TIME_SLOTS*QMF_CHANNELS + i*QMF_CHANNELS]; + hSbrCut->iBuffer[i] = &sbrram->sbr_envIBuffer[chan*QMF_TIME_SLOTS*QMF_CHANNELS + i*QMF_CHANNELS]; } diff -Nupr src.p9/env_est.h src.p10/env_est.h --- src.p9/env_est.h 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/env_est.h 2010-10-21 13:06:37.000000000 +0300 @@ -29,7 +29,7 @@ typedef SBR_EXTRACT_ENVELOPE *HANDLE_SBR /************ Function Declarations ***************/ int -CreateExtractSbrEnvelope (int chan, +CreateExtractSbrEnvelope (SBRRam_t *sbrram, int chan, HANDLE_SBR_EXTRACT_ENVELOPE hSbr, diff -Nupr src.p9/mh_det.c src.p10/mh_det.c --- src.p9/mh_det.c 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/mh_det.c 2010-10-21 13:06:37.000000000 +0300 @@ -1264,7 +1264,8 @@ SbrMissingHarmonicsDetectorQmf(HANDLE_SB */ /**************************************************************************/ int -CreateSbrMissingHarmonicsDetector (int chan, +CreateSbrMissingHarmonicsDetector (SBRRam_t *sbrram, + int chan, HANDLE_SBR_MISSING_HARMONICS_DETECTOR hSbrMHDet, int sampleFreq, unsigned char* freqBandTable, @@ -1305,7 +1306,7 @@ CreateSbrMissingHarmonicsDetector (int c hs->noEstPerFrame = noEstPerFrame; - ptr = &sbr_toncorrBuff[chan*5*NO_OF_ESTIMATES*MAX_FREQ_COEFFS]; + ptr = &sbrram->sbr_toncorrBuff[chan*5*NO_OF_ESTIMATES*MAX_FREQ_COEFFS]; /* hs->tonalityDiff[i] hs->sfmOrig[i] @@ -1347,13 +1348,13 @@ CreateSbrMissingHarmonicsDetector (int c memset(hs->guideVectors[i].guideVectorOrig,0,sizeof(float)*MAX_FREQ_COEFFS); - hs->detectionVectors[i] = &(sbr_detectionVectors[chan*NO_OF_ESTIMATES*MAX_FREQ_COEFFS + i*MAX_FREQ_COEFFS]); + hs->detectionVectors[i] = &(sbrram->sbr_detectionVectors[chan*NO_OF_ESTIMATES*MAX_FREQ_COEFFS + i*MAX_FREQ_COEFFS]); memset(hs->detectionVectors[i],0,sizeof(unsigned char)*MAX_FREQ_COEFFS); - hs->guideVectors[i].guideVectorDetected = &(sbr_guideVectorDetected[chan*NO_OF_ESTIMATES*MAX_FREQ_COEFFS + i*MAX_FREQ_COEFFS]); + hs->guideVectors[i].guideVectorDetected = &(sbrram->sbr_guideVectorDetected[chan*NO_OF_ESTIMATES*MAX_FREQ_COEFFS + i*MAX_FREQ_COEFFS]); memset(hs->guideVectors[i].guideVectorDetected,0,sizeof(unsigned char)*MAX_FREQ_COEFFS); @@ -1361,13 +1362,13 @@ CreateSbrMissingHarmonicsDetector (int c } - hs->prevEnvelopeCompensation = &(sbr_prevEnvelopeCompensation[chan*MAX_FREQ_COEFFS]); + hs->prevEnvelopeCompensation = &(sbrram->sbr_prevEnvelopeCompensation[chan*MAX_FREQ_COEFFS]); memset( hs->prevEnvelopeCompensation,0, sizeof(char)*MAX_FREQ_COEFFS); - hs->guideScfb = &(sbr_guideScfb[chan*MAX_FREQ_COEFFS]); + hs->guideScfb = &(sbrram->sbr_guideScfb[chan*MAX_FREQ_COEFFS]); memset( hs->guideScfb,0, sizeof(unsigned char)*MAX_FREQ_COEFFS); @@ -1377,7 +1378,7 @@ CreateSbrMissingHarmonicsDetector (int c hs->previousTransientFrame = 0; hs->previousTransientPos = 0; - assert (ptr-&sbr_toncorrBuff[0] <= 5*MAX_CHANNELS*NO_OF_ESTIMATES*MAX_FREQ_COEFFS); + assert (ptr-&sbrram->sbr_toncorrBuff[0] <= 5*MAX_CHANNELS*NO_OF_ESTIMATES*MAX_FREQ_COEFFS); diff -Nupr src.p9/mh_det.h src.p10/mh_det.h --- src.p9/mh_det.h 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/mh_det.h 2010-10-21 13:06:37.000000000 +0300 @@ -61,7 +61,8 @@ SbrMissingHarmonicsDetectorQmf(HANDLE_SB int -CreateSbrMissingHarmonicsDetector(int chan, +CreateSbrMissingHarmonicsDetector(SBRRam_t *sbrram, + int chan, HANDLE_SBR_MISSING_HARMONICS_DETECTOR h_sbrMissingHarmonicsDetector, int sampleFreq, unsigned char* freqBandTable, diff -Nupr src.p9/ps_enc.c src.p10/ps_enc.c --- src.p9/ps_enc.c 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/ps_enc.c 2010-10-21 13:06:37.000000000 +0300 @@ -56,7 +56,8 @@ int GetPsMode(int bitRate) } int -CreatePsEnc(HANDLE_PS_ENC h_ps_e, +CreatePsEnc(SBRRam_t *sbrram, + HANDLE_PS_ENC h_ps_e, int psMode) { int i; @@ -67,10 +68,10 @@ CreatePsEnc(HANDLE_PS_ENC h_ps_e, - ptr1 = &sbr_envYBuffer[QMF_TIME_SLOTS * QMF_CHANNELS]; - ptr2 = &PsBuf2[0]; - ptr3 = &PsBuf3[0]; - ptr4 = &PsBuf4[0]; + ptr1 = &sbrram->sbr_envYBuffer[QMF_TIME_SLOTS * QMF_CHANNELS]; + ptr2 = &sbrram->PsBuf2[0]; + ptr3 = &sbrram->PsBuf3[0]; + ptr4 = &sbrram->PsBuf4[0]; if (h_ps_e == NULL) diff -Nupr src.p9/ps_enc.h src.p10/ps_enc.h --- src.p9/ps_enc.h 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/ps_enc.h 2010-10-21 13:06:37.000000000 +0300 @@ -85,7 +85,8 @@ typedef struct PS_ENC *HANDLE_PS_ENC; int GetPsMode(int bitRate); int -CreatePsEnc(HANDLE_PS_ENC h_ps_enc, +CreatePsEnc(SBRRam_t *sbrram, + HANDLE_PS_ENC h_ps_enc, int psMode); void diff -Nupr src.p9/psy_main.c src.p10/psy_main.c --- src.p9/psy_main.c 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/psy_main.c 2010-10-21 13:06:37.000000000 +0300 @@ -44,7 +44,7 @@ static int advancePsychShortMS (PSY_DATA input: pointer to a psych handle *****************************************************************************/ -int PsyNew(PSY_KERNEL *hPsy, int nChan) +int PsyNew(AACRam_t *aacram, SBRRam_t *sbrram, PSY_KERNEL *hPsy, int nChan) { int i; @@ -60,7 +60,7 @@ int PsyNew(PSY_KERNEL *hPsy, int nChan) reserve memory for mdct delay buffer */ - hPsy->psyData[i].mdctDelayBuffer = &mdctDelayBuffer[i*BLOCK_SWITCHING_OFFSET]; + hPsy->psyData[i].mdctDelayBuffer = &aacram->mdctDelayBuffer[i*BLOCK_SWITCHING_OFFSET]; /* @@ -68,12 +68,12 @@ int PsyNew(PSY_KERNEL *hPsy, int nChan) */ - hPsy->psyData[i].mdctSpectrum = &sbr_envRBuffer[i*FRAME_LEN_LONG]; + hPsy->psyData[i].mdctSpectrum = &sbrram->sbr_envRBuffer[i*FRAME_LEN_LONG]; } - hPsy->pScratchTns = sbr_envIBuffer; + hPsy->pScratchTns = sbrram->sbr_envIBuffer; diff -Nupr src.p9/psy_main.h src.p10/psy_main.h --- src.p9/psy_main.h 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/psy_main.h 2010-10-21 13:06:37.000000000 +0300 @@ -16,7 +16,7 @@ typedef struct { }PSY_KERNEL; -int PsyNew( PSY_KERNEL *hPsy, int nChan); +int PsyNew( AACRam_t *aacram, SBRRam_t *sbrram, PSY_KERNEL *hPsy, int nChan); int PsyDelete( PSY_KERNEL *hPsy); int PsyOutNew( PSY_OUT *hPsyOut); diff -Nupr src.p9/qc_main.c src.p10/qc_main.c --- src.p9/qc_main.c 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/qc_main.c 2010-10-21 13:06:37.000000000 +0300 @@ -118,7 +118,7 @@ static int framePadding(int bitRate, **********************************************************************************/ -int QCOutNew(QC_OUT *hQC, int nChannels) +int QCOutNew(AACRam_t *aacram, QC_OUT *hQC, int nChannels) { int error=0; int i; @@ -135,13 +135,13 @@ int QCOutNew(QC_OUT *hQC, int nChannels) for (i=0; iqcChannel[i].quantSpec = &quantSpec[i*FRAME_LEN_LONG]; + hQC->qcChannel[i].quantSpec = &aacram->quantSpec[i*FRAME_LEN_LONG]; - hQC->qcChannel[i].maxValueInSfb = &maxValueInSfb[i*MAX_GROUPED_SFB]; + hQC->qcChannel[i].maxValueInSfb = &aacram->maxValueInSfb[i*MAX_GROUPED_SFB]; - hQC->qcChannel[i].scf = &scf[i*MAX_GROUPED_SFB]; + hQC->qcChannel[i].scf = &aacram->scf[i*MAX_GROUPED_SFB]; } @@ -231,7 +231,7 @@ void QCDelete(QC_STATE *hQC) return: **********************************************************************************/ -int QCInit(QC_STATE *hQC, +int QCInit(AACRam_t *aacram, QC_STATE *hQC, struct QC_INIT *init) { @@ -264,7 +264,7 @@ int QCInit(QC_STATE *hQC, hQC->elementBits.chBitrate); - BCInit(); + BCInit(aacram); @@ -279,7 +279,8 @@ int QCInit(QC_STATE *hQC, return: **********************************************************************************/ -int QCMain(QC_STATE* hQC, +int QCMain(AACRam_t *aacram, + QC_STATE* hQC, int nChannels, ELEMENT_BITS* elBits, ATS_ELEMENT* adjThrStateElement, @@ -350,7 +351,8 @@ int QCMain(QC_STATE* hQC, qcOutElement->staticBitsUsed+qcOutElement->ancBitsUsed); - EstimateScaleFactors(psyOutChannel, + EstimateScaleFactors(aacram, + psyOutChannel, qcOutChannel, sfbFormFactor, sfbNRelevantLines, @@ -427,7 +429,8 @@ int QCMain(QC_STATE* hQC, chDynBits = - dynBitCount(qcOutChannel[ch].quantSpec, + dynBitCount(aacram, + qcOutChannel[ch].quantSpec, qcOutChannel[ch].maxValueInSfb, qcOutChannel[ch].scf, psyOutChannel[ch].windowSequence, diff -Nupr src.p9/qc_main.h src.p10/qc_main.h --- src.p9/qc_main.h 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/qc_main.h 2010-10-21 13:06:37.000000000 +0300 @@ -4,19 +4,18 @@ #ifndef _QC_MAIN_H #define _QC_MAIN_H - - -int QCOutNew(QC_OUT *hQC, int nChannels); +int QCOutNew(AACRam_t *aacram, QC_OUT *hQC, int nChannels); void QCOutDelete(QC_OUT *hQC); int QCNew(QC_STATE *hQC); -int QCInit(QC_STATE *hQC, struct QC_INIT *init); +int QCInit(AACRam_t *aacram, QC_STATE *hQC, struct QC_INIT *init); void QCDelete(QC_STATE *hQC); -int QCMain(QC_STATE *hQC, +int QCMain(AACRam_t *aacram, + QC_STATE *hQC, int nChannels, ELEMENT_BITS* elBits, ATS_ELEMENT* adjThrStateElement, diff -Nupr src.p9/qmf_enc.c src.p10/qmf_enc.c --- src.p9/qmf_enc.c 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/qmf_enc.c 2010-10-21 13:06:37.000000000 +0300 @@ -1094,7 +1094,8 @@ getEnergyFromCplxQmfData(float **energyV */ int -createQmfBank (int chan, +createQmfBank (SBRRam_t *sbrram, + int chan, HANDLE_SBR_QMF_FILTER_BANK h_sbrQmf @@ -1112,7 +1113,7 @@ createQmfBank (int chan, h_sbrQmf->p_filter = sbr_qmf_64_640; - h_sbrQmf->qmf_states_buffer = sbr_QmfStatesAnalysis + chan * 640; + h_sbrQmf->qmf_states_buffer = sbrram->sbr_QmfStatesAnalysis + chan * 640; @@ -1228,14 +1229,14 @@ SynthesisQmfFiltering (float **sbrReal, *******************************************************************************/ int -CreateSynthesisQmfBank (HANDLE_SBR_QMF_FILTER_BANK hs) +CreateSynthesisQmfBank (SBRRam_t *sbrram,HANDLE_SBR_QMF_FILTER_BANK hs) { float *ptr; - ptr = &PsBuf5[0]; + ptr = &sbrram->PsBuf5[0]; memset (hs, 0, sizeof (SBR_QMF_FILTER_BANK)); diff -Nupr src.p9/qmf_enc.h src.p10/qmf_enc.h --- src.p9/qmf_enc.h 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/qmf_enc.h 2010-10-21 13:06:37.000000000 +0300 @@ -31,7 +31,7 @@ void sbrAnalysisFiltering (const float * HANDLE_SBR_QMF_FILTER_BANK qmfBank); -int createQmfBank (int chan,HANDLE_SBR_QMF_FILTER_BANK h_sbrQmf); +int createQmfBank (SBRRam_t *sbrram,int chan,HANDLE_SBR_QMF_FILTER_BANK h_sbrQmf); void deleteQmfBank (HANDLE_SBR_QMF_FILTER_BANK h_sbrQmf); @@ -52,7 +52,7 @@ SynthesisQmfFiltering (float **sbrReal, int -CreateSynthesisQmfBank (HANDLE_SBR_QMF_FILTER_BANK h_sbrQmf); +CreateSynthesisQmfBank (SBRRam_t *sbrram,HANDLE_SBR_QMF_FILTER_BANK h_sbrQmf); diff -Nupr src.p9/sbr_main.c src.p10/sbr_main.c --- src.p9/sbr_main.c 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/sbr_main.c 2010-10-21 13:06:37.000000000 +0300 @@ -377,7 +377,7 @@ EnvClose (HANDLE_SBR_ENCODER hEnvEnc) deleteEnvChannel (hEnvEnc->hEnvChannel[i]); - + free(hEnvEnc->hEnvChannel[i]); hEnvEnc->hEnvChannel[i] = NULL; } @@ -390,6 +390,7 @@ EnvClose (HANDLE_SBR_ENCODER hEnvEnc) { DeleteSynthesisQmfBank ((HANDLE_SBR_QMF_FILTER_BANK*)&hEnvEnc->hSynthesisQmfBank); + free(hEnvEnc->hSynthesisQmfBank); } @@ -397,6 +398,7 @@ EnvClose (HANDLE_SBR_ENCODER hEnvEnc) { DeletePsEnc(&hEnvEnc->hPsEnc); + free(hEnvEnc->hPsEnc); } #endif /* #ifndef MONO_ONLY */ @@ -535,7 +537,8 @@ EnvEncodeFrame (HANDLE_SBR_ENCODER hEnvE - extractSbrEnvelope(samples, + extractSbrEnvelope(hEnvEncoder->fftctx, + samples, pCoreBuffer, timeInStride, &hEnvEncoder->sbrConfigData, @@ -587,7 +590,8 @@ EnvEncodeFrame (HANDLE_SBR_ENCODER hEnvE *****************************************************************************/ static int -createEnvChannel (int chan, +createEnvChannel (SBRRam_t *sbrram, + int chan, HANDLE_SBR_CONFIG_DATA sbrConfigData, HANDLE_SBR_HEADER_DATA sbrHeaderData, HANDLE_ENV_CHANNEL hEnv, @@ -616,7 +620,7 @@ createEnvChannel (int chan, - if(createQmfBank (chan, &hEnv->sbrQmf)){ + if(createQmfBank (sbrram, chan, &hEnv->sbrQmf)){ return (1); /* initialisation failed */ @@ -627,7 +631,8 @@ createEnvChannel (int chan, - if(CreateTonCorrParamExtr (chan, + if(CreateTonCorrParamExtr (sbrram, + chan, &hEnv->TonCorr, @@ -691,7 +696,8 @@ createEnvChannel (int chan, - if(CreateExtractSbrEnvelope (chan, + if(CreateExtractSbrEnvelope (sbrram, + chan, &hEnv->sbrExtractEnvelope, startIndex @@ -742,7 +748,8 @@ createEnvChannel (int chan, hEnv->encEnvData.freq_res_fixfix); - if(CreateSbrTransientDetector (chan, + if(CreateSbrTransientDetector (sbrram, + chan, &hEnv->sbrTransientDetector, sbrConfigData->sampleFreq, @@ -782,7 +789,8 @@ createEnvChannel (int chan, *****************************************************************************/ int -EnvOpen (HANDLE_SBR_ENCODER hEnvEnc, +EnvOpen (SBRRam_t *sbrram, + HANDLE_SBR_ENCODER hEnvEnc, float *pCoreBuffer, sbrConfigurationPtr params, int *coreBandWith) @@ -802,7 +810,7 @@ EnvOpen (HANDLE_SBR_ENCODER hEnvEnc, for (ch=0; chhEnvChannel[ch] = &EnvChannel[ch]; + hEnvEnc->hEnvChannel[ch] = calloc(1, sizeof(struct ENV_CHANNEL)); } @@ -817,19 +825,19 @@ EnvOpen (HANDLE_SBR_ENCODER hEnvEnc, - hEnvEnc->sbrConfigData.freqBandTable[LO] = sbr_freqBandTableLO; + hEnvEnc->sbrConfigData.freqBandTable[LO] = sbrram->sbr_freqBandTableLO; memset(hEnvEnc->sbrConfigData.freqBandTable[LO],0,sizeof(unsigned char)*MAX_FREQ_COEFFS/2+1); - hEnvEnc->sbrConfigData.freqBandTable[HI] = sbr_freqBandTableHI; + hEnvEnc->sbrConfigData.freqBandTable[HI] = sbrram->sbr_freqBandTableHI; memset(hEnvEnc->sbrConfigData.freqBandTable[HI],0,sizeof(unsigned char)*MAX_FREQ_COEFFS+1); - hEnvEnc->sbrConfigData.v_k_master = sbr_v_k_master; + hEnvEnc->sbrConfigData.v_k_master = sbrram->sbr_v_k_master; memset(hEnvEnc->sbrConfigData.v_k_master,0,sizeof(unsigned char)*MAX_FREQ_COEFFS+1); @@ -986,7 +994,8 @@ EnvOpen (HANDLE_SBR_ENCODER hEnvEnc, for ( ch = 0; ch < hEnvEnc->sbrConfigData.nChannels; ch++ ) { - if(createEnvChannel(ch, + if(createEnvChannel(sbrram, + ch, &hEnvEnc->sbrConfigData, &hEnvEnc->sbrHeaderData, hEnvEnc->hEnvChannel[ch], @@ -1011,12 +1020,13 @@ EnvOpen (HANDLE_SBR_ENCODER hEnvEnc, if (params->usePs) { - if(createQmfBank (1, &hEnvEnc->hEnvChannel[1]->sbrQmf)){ + if(createQmfBank (sbrram, 1, &hEnvEnc->hEnvChannel[1]->sbrQmf)){ return (1); } - if(CreateExtractSbrEnvelope (1, + if(CreateExtractSbrEnvelope (sbrram, + 1, &hEnvEnc->hEnvChannel[1]->sbrExtractEnvelope, 576 )) { @@ -1025,10 +1035,10 @@ EnvOpen (HANDLE_SBR_ENCODER hEnvEnc, } - hEnvEnc->hSynthesisQmfBank = &SynthesisQmfBank; + hEnvEnc->hSynthesisQmfBank = calloc(1, sizeof(SBR_QMF_FILTER_BANK)); - if(CreateSynthesisQmfBank (hEnvEnc->hSynthesisQmfBank)){ + if(CreateSynthesisQmfBank (sbrram, hEnvEnc->hSynthesisQmfBank)){ DeleteSynthesisQmfBank ((HANDLE_SBR_QMF_FILTER_BANK*)&hEnvEnc->hSynthesisQmfBank); @@ -1038,10 +1048,11 @@ EnvOpen (HANDLE_SBR_ENCODER hEnvEnc, } - hEnvEnc->hPsEnc = &psEncoder; + hEnvEnc->hPsEnc = calloc(1, sizeof(struct PS_ENC)); - if(CreatePsEnc (hEnvEnc->hPsEnc, + if(CreatePsEnc (sbrram, + hEnvEnc->hPsEnc, params->psMode)){ diff -Nupr src.p9/sbr_main.h src.p10/sbr_main.h --- src.p9/sbr_main.h 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/sbr_main.h 2010-10-21 13:06:37.000000000 +0300 @@ -102,7 +102,8 @@ typedef struct SBR_ENCODER *HANDLE_SBR_E int -EnvOpen (HANDLE_SBR_ENCODER hEnvEnc, +EnvOpen (SBRRam_t *sbrram, + HANDLE_SBR_ENCODER hEnvEnc, float *pCoreBuffer, sbrConfigurationPtr params, int *coreBandWith diff -Nupr src.p9/sf_estim.c src.p10/sf_estim.c --- src.p9/sf_estim.c 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/sf_estim.c 2010-10-21 13:06:37.000000000 +0300 @@ -1035,7 +1035,8 @@ static void assimilateMultipleScf(PSY_OU static void -estimateScaleFactorsChannel(PSY_OUT_CHANNEL *psyOutChan, +estimateScaleFactorsChannel(AACRam_t *aacram, + PSY_OUT_CHANNEL *psyOutChan, short *scf, int *globalGain, float *sfbFormFactor, @@ -1062,7 +1063,7 @@ estimateScaleFactorsChannel(PSY_OUT_CHAN for (i=0; iexpSpec[i] = 0.0f; quantSpec[i] = 0; } @@ -1124,15 +1125,15 @@ estimateScaleFactorsChannel(PSY_OUT_CHAN /* find better scalefactor with analysis by synthesis */ - calcExpSpec(expSpec+psyOutChan->sfbOffsets[i], + calcExpSpec(aacram->expSpec+psyOutChan->sfbOffsets[i], psyOutChan->mdctSpectrum+psyOutChan->sfbOffsets[i], psyOutChan->sfbOffsets[i+1]-psyOutChan->sfbOffsets[i]); scfInt = improveScf(psyOutChan->mdctSpectrum+psyOutChan->sfbOffsets[i], - expSpec+psyOutChan->sfbOffsets[i], + aacram->expSpec+psyOutChan->sfbOffsets[i], quantSpec+psyOutChan->sfbOffsets[i], - quantSpecTmp+psyOutChan->sfbOffsets[i], + aacram->quantSpecTmp+psyOutChan->sfbOffsets[i], psyOutChan->sfbOffsets[i+1]-psyOutChan->sfbOffsets[i], thresh, scfInt, minSfMaxQuant[i], &sfbDist[i], &minScfCalculated[i]); @@ -1155,12 +1156,12 @@ estimateScaleFactorsChannel(PSY_OUT_CHAN } - assimilateSingleScf(psyOutChan, expSpec, quantSpec, quantSpecTmp, scf, + assimilateSingleScf(psyOutChan, aacram->expSpec, quantSpec, aacram->quantSpecTmp, scf, minSfMaxQuant, sfbDist, sfbConstPePart, sfbFormFactor, sfbNRelevantLines, minScfCalculated, 1); - assimilateMultipleScf(psyOutChan, expSpec, quantSpec, quantSpecTmp, scf, + assimilateMultipleScf(psyOutChan, aacram->expSpec, quantSpec, aacram->quantSpecTmp, scf, minSfMaxQuant, sfbDist, sfbConstPePart, sfbFormFactor, sfbNRelevantLines); } @@ -1204,7 +1205,7 @@ estimateScaleFactorsChannel(PSY_OUT_CHAN /* ??? */ sfbDist[i] = calcSfbDist(psyOutChan->mdctSpectrum+psyOutChan->sfbOffsets[i], - expSpec+psyOutChan->sfbOffsets[i], + aacram->expSpec+psyOutChan->sfbOffsets[i], quantSpec+psyOutChan->sfbOffsets[i], psyOutChan->sfbOffsets[i+1]-psyOutChan->sfbOffsets[i], scf[i]); @@ -1301,7 +1302,8 @@ CalcFormFactor(float sfbFormFactor[MAX_C void -EstimateScaleFactors(PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], +EstimateScaleFactors(AACRam_t *aacram, + PSY_OUT_CHANNEL psyOutChannel[MAX_CHANNELS], QC_OUT_CHANNEL qcOutChannel[MAX_CHANNELS], float sfbFormFactor[MAX_CHANNELS][MAX_GROUPED_SFB], float sfbNRelevantLines[MAX_CHANNELS][MAX_GROUPED_SFB], @@ -1315,7 +1317,8 @@ EstimateScaleFactors(PSY_OUT_CHANNEL psy for (j=0; jnumberOfEstimates;i++) { - hTonCorr->quotaMatrix[i] = &(sbr_quotaMatrix[chan* NO_OF_ESTIMATES*QMF_CHANNELS + i*noQmfChannels]); + hTonCorr->quotaMatrix[i] = &(sbrram->sbr_quotaMatrix[chan* NO_OF_ESTIMATES*QMF_CHANNELS + i*noQmfChannels]); memset(hTonCorr->quotaMatrix[i] ,0, sizeof(float)*QMF_CHANNELS); @@ -815,7 +816,8 @@ CreateTonCorrParamExtr (int chan, - if(CreateSbrMissingHarmonicsDetector (chan, + if(CreateSbrMissingHarmonicsDetector (sbrram, + chan, &hTonCorr->sbrMissingHarmonicsDetector, fs, freqBandTable[HI], diff -Nupr src.p9/ton_corr.h src.p10/ton_corr.h --- src.p9/ton_corr.h 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/ton_corr.h 2010-10-21 13:06:37.000000000 +0300 @@ -72,7 +72,8 @@ TonCorrParamExtr(HANDLE_SBR_TON_CORR_EST int -CreateTonCorrParamExtr (int chan, +CreateTonCorrParamExtr (SBRRam_t *sbrram, + int chan, HANDLE_SBR_TON_CORR_EST hTonCorr, int fs, int usb, diff -Nupr src.p9/tran_det.c src.p10/tran_det.c --- src.p9/tran_det.c 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/tran_det.c 2010-10-21 13:06:37.000000000 +0300 @@ -489,7 +489,8 @@ transientDetect (float **Energies, int -CreateSbrTransientDetector (int chan, +CreateSbrTransientDetector (SBRRam_t *sbrram, + int chan, HANDLE_SBR_TRANSIENT_DETECTOR h_sbrTransientDetector, int sampleFreq, @@ -555,13 +556,13 @@ CreateSbrTransientDetector (int chan, h_sbrTransientDetector->prevLowBandEnergy = 0; - h_sbrTransientDetector->thresholds = &sbr_thresholds[chan*QMF_CHANNELS]; + h_sbrTransientDetector->thresholds = &sbrram->sbr_thresholds[chan*QMF_CHANNELS]; memset(h_sbrTransientDetector->thresholds,0,sizeof(float)*QMF_CHANNELS); - h_sbrTransientDetector->transients = &sbr_transients[chan*h_sbrTransientDetector->buffer_length]; + h_sbrTransientDetector->transients = &sbrram->sbr_transients[chan*h_sbrTransientDetector->buffer_length]; memset(h_sbrTransientDetector->transients,0,sizeof(float)*h_sbrTransientDetector->buffer_length); diff -Nupr src.p9/tran_det.h src.p10/tran_det.h --- src.p9/tran_det.h 2010-10-21 13:06:37.000000000 +0300 +++ src.p10/tran_det.h 2010-10-21 13:06:37.000000000 +0300 @@ -36,7 +36,8 @@ void transientDetect (float **Energies, ); int -CreateSbrTransientDetector (int chan, +CreateSbrTransientDetector (SBRRam_t *sbrram, + int chan, HANDLE_SBR_TRANSIENT_DETECTOR h_sbrTransientDetector, int sampleFreq,