initial commit from tarball

This commit is contained in:
2021-07-04 10:00:20 +02:00
commit ad5143f78d
41 changed files with 5859 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,459 @@
diff -Nupr src.p1/cfftn.c src.p2/cfftn.c
--- src.p1/cfftn.c 2010-10-21 13:06:37.000000000 +0300
+++ src.p2/cfftn.c 2010-10-21 13:06:37.000000000 +0300
@@ -1,10 +1,19 @@
/*
Complex FFT core for transforms
*/
+#include "cfftn.h"
+#include <stdlib.h>
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifdef _FFTW3
+#include <fftw3.h>
+#else
#include <math.h>
#include <string.h>
-#include "cfftn.h"
/* the 3GPP instrumenting tool */
@@ -17,8 +26,29 @@
#define SIN60 0.86602540378443865
#define COS72 0.30901699437494742
#define SIN72 0.95105651629515357
+#endif
+
+#ifdef _FFTW3
+void init_plans(FFTWFContext_t *ctx)
+{
+ fftwf_complex fft_data;
+ ctx->plan4 = fftwf_plan_dft_1d(4, &fft_data, &fft_data, FFTW_BACKWARD, FFTW_ESTIMATE);
+ ctx->plan8 = fftwf_plan_dft_1d(8, &fft_data, &fft_data, FFTW_BACKWARD, FFTW_ESTIMATE);
+ ctx->plan64 = fftwf_plan_dft_1d(64, &fft_data, &fft_data, FFTW_FORWARD, FFTW_ESTIMATE);
+ ctx->plan512 = fftwf_plan_dft_1d(512, &fft_data, &fft_data, FFTW_FORWARD, FFTW_ESTIMATE);
+}
+void destroy_plans(FFTWFContext_t *ctx)
+{
+ fftwf_destroy_plan(ctx->plan512);
+ fftwf_destroy_plan(ctx->plan64);
+ fftwf_destroy_plan(ctx->plan8);
+ fftwf_destroy_plan(ctx->plan4);
+}
+#endif
+
+#ifndef _FFTW3
int cfftn(float Re[],
float Im[],
int nTotal,
@@ -1336,40 +1366,36 @@ Permute_Single_Label:
return 1;
}
+#endif
/*
computes complex fourier transform of length len
returns status
*/
-int CFFTN(float *afftData,int len, int isign)
+int CFFTN(FFTWFContext_t *ctx, float *afftData,int len, int isign)
{
- return(cfftn(afftData,afftData+1,len,len,len,2*isign));
-}
-
-/*
- computes complex fourier transform of length len
-
- returns status
-*/
-int CFFTNRI(float *afftDataReal,float *afftDataImag,int len, int isign)
-{
- return(cfftn(afftDataReal,afftDataImag,len,len,len,isign));
-}
+#ifdef _FFTW3
+ switch(len) {
+ case 4:
+ fftwf_execute_dft(ctx->plan4, (fftwf_complex*)afftData, (fftwf_complex*)afftData);
+ break;
+ case 8:
+ fftwf_execute_dft(ctx->plan8, (fftwf_complex*)afftData, (fftwf_complex*)afftData);
+ break;
+ case 64:
+ fftwf_execute_dft(ctx->plan64, (fftwf_complex*)afftData, (fftwf_complex*)afftData);
+ break;
+ case 512:
+ fftwf_execute_dft(ctx->plan512, (fftwf_complex*)afftData, (fftwf_complex*)afftData);
+ break;
+ default:
+ printf("non standard len for FFT: %d\nWill now die", len);
+ exit(1);
+ }
-/*
- computes complex fourier transform of length len
-
- returns status
-**/
-int CFFTN_NI(float *InRealData,
- float *InImagData,
- float *OutRealData,
- float *OutImagData,
- int len, int isign)
-{
- memcpy ( OutRealData, InRealData, len*sizeof(float) ) ;
- memcpy ( OutImagData, InImagData, len*sizeof(float) ) ;
-
- return cfftn(OutRealData,OutImagData,len,len,len,isign);
+ return 1;
+#else
+ return(cfftn(afftData,afftData+1,len,len,len,2*isign));
+#endif
}
diff -Nupr src.p1/cfftn.h src.p2/cfftn.h
--- src.p1/cfftn.h 2010-10-21 13:06:37.000000000 +0300
+++ src.p2/cfftn.h 2010-10-21 13:06:37.000000000 +0300
@@ -5,30 +5,24 @@
#ifndef __cfftn_h
#define __cfftn_h
-void forwardFFT( float *data, int length );
-
-int cfftn(float Re[],
- float Im[],
- int nTotal,
- int nPass,
- int nSpan,
- int iSign);
-
-int CFFTN(float *afftData,int len, int isign);
-int CFFTNRI(float *afftDataReal,float *afftDataImag,int len, int isign);
-
-int CFFTN_NI(float *InRealData,
- float *InImagData,
- float *OutRealData,
- float *OurImagData,
- int len, int isign);
-
-#ifndef min
-#define min(a, b) ((a) < (b) ? (a) : (b))
+#ifdef HAVE_CONFIG_H
+#include "config.h"
#endif
-#ifndef max
-#define max(a, b) ((a) > (b) ? (a) : (b))
+
+#ifdef _FFTW3
+#include <fftw3.h>
+typedef struct {
+ fftwf_plan plan4, plan8, plan64, plan512;
+} FFTWFContext_t;
+void init_plans(FFTWFContext_t *ctx);
+void destroy_plans(FFTWFContext_t *ctx);
+#else
+#define init_plans(c);
+#define destroy_plans(c);
+typedef int FFTWFContext_t;
#endif
+int CFFTN(FFTWFContext_t *ctx, float *afftData,int len, int isign);
+
#endif
diff -Nupr src.p1/env_est.c src.p2/env_est.c
--- src.p1/env_est.c 2010-10-21 13:06:37.000000000 +0300
+++ src.p2/env_est.c 2010-10-21 13:06:37.000000000 +0300
@@ -582,7 +582,8 @@ calculateSbrEnvelope (float **YBufferLef
****************************************************************************/
void
-extractSbrEnvelope (float *timeInPtr,
+extractSbrEnvelope (FFTWFContext_t *fftctx,
+ float *timeInPtr,
float *pCoreBuffer,
unsigned int timeInStride,
HANDLE_SBR_CONFIG_DATA h_con,
@@ -670,7 +671,7 @@ extractSbrEnvelope (float *timeInPtr,
if (hPsEnc && hSynthesisQmfBank) {
- EncodePsFrame(hPsEnc,
+ EncodePsFrame(fftctx, hPsEnc,
h_envChan[0]->sbrExtractEnvelope.iBuffer,
h_envChan[0]->sbrExtractEnvelope.rBuffer,
h_envChan[1]->sbrExtractEnvelope.iBuffer,
diff -Nupr src.p1/env_est.h src.p2/env_est.h
--- src.p1/env_est.h 2010-10-21 13:06:37.000000000 +0300
+++ src.p2/env_est.h 2010-10-21 13:06:37.000000000 +0300
@@ -51,7 +51,8 @@ struct PS_ENC;
void
-extractSbrEnvelope(float *timeInPtr,
+extractSbrEnvelope(FFTWFContext_t *fftctx,
+ float *timeInPtr,
float *pCoreBuffer,
unsigned int timeInStride,
struct SBR_CONFIG_DATA *h_con,
diff -Nupr src.p1/hybrid.c src.p2/hybrid.c
--- src.p1/hybrid.c 2010-10-21 13:06:37.000000000 +0300
+++ src.p2/hybrid.c 2010-10-21 13:06:37.000000000 +0300
@@ -10,7 +10,8 @@
/* the 3GPP instrumenting tool */
-static void fourChannelFiltering( const float *pQmfReal,
+static void fourChannelFiltering( FFTWFContext_t *fftctx,
+ const float *pQmfReal,
const float *pQmfImag,
float **mHybridReal,
float **mHybridImag,
@@ -77,7 +78,7 @@ static void fourChannelFiltering( const
cum[3] = (real + imag ) * 0.70710678118655f;
- CFFTN(cum, 4, 1);
+ CFFTN(fftctx, cum, 4, 1);
for(n = 0; n < 4; n++) {
@@ -90,7 +91,8 @@ static void fourChannelFiltering( const
}
-static void eightChannelFiltering( const float *pQmfReal,
+static void eightChannelFiltering( FFTWFContext_t *fftctx,
+ const float *pQmfReal,
const float *pQmfImag,
float **mHybridReal,
float **mHybridImag)
@@ -196,7 +198,7 @@ static void eightChannelFiltering( const
cum[3] = real * 0.38268343236509f + imag * 0.92387953251129f;
- CFFTN(cum, 8, 1);
+ CFFTN(fftctx, cum, 8, 1);
for(n = 0; n < 8; n++) {
@@ -219,7 +221,8 @@ static void eightChannelFiltering( const
*/
/**************************************************************************/
void
-HybridAnalysis ( const float **mQmfReal,
+HybridAnalysis ( FFTWFContext_t *fftctx,
+ const float **mQmfReal,
const float **mQmfImag,
float **mHybridReal,
float **mHybridImag,
@@ -270,7 +273,8 @@ HybridAnalysis ( const float **mQmfReal,
/* filtering. */
- fourChannelFiltering( hHybrid->pWorkReal,
+ fourChannelFiltering( fftctx,
+ hHybrid->pWorkReal,
hHybrid->pWorkImag,
mHybridReal,
mHybridImag,
@@ -282,7 +286,8 @@ HybridAnalysis ( const float **mQmfReal,
/* filtering. */
- eightChannelFiltering( hHybrid->pWorkReal,
+ eightChannelFiltering( fftctx,
+ hHybrid->pWorkReal,
hHybrid->pWorkImag,
mHybridReal,
mHybridImag);
diff -Nupr src.p1/hybrid.h src.p2/hybrid.h
--- src.p1/hybrid.h 2010-10-21 13:06:37.000000000 +0300
+++ src.p2/hybrid.h 2010-10-21 13:06:37.000000000 +0300
@@ -31,7 +31,8 @@ typedef struct
typedef HYBRID *HANDLE_HYBRID;
void
-HybridAnalysis ( const float **mQmfReal,
+HybridAnalysis ( FFTWFContext_t *fftctx,
+ const float **mQmfReal,
const float **mQmfImag,
float **mHybridReal,
float **mHybridImag,
diff -Nupr src.p1/ps_enc.c src.p2/ps_enc.c
--- src.p1/ps_enc.c 2010-10-21 13:06:37.000000000 +0300
+++ src.p2/ps_enc.c 2010-10-21 13:06:37.000000000 +0300
@@ -303,7 +303,8 @@ DeletePsEnc(HANDLE_PS_ENC *h_ps_e)
****************************************************************************/
void
-EncodePsFrame(HANDLE_PS_ENC pms,
+EncodePsFrame(FFTWFContext_t *fftctx,
+ HANDLE_PS_ENC pms,
float **iBufferLeft,
float **rBufferLeft,
float **iBufferRight,
@@ -322,14 +323,16 @@ EncodePsFrame(HANDLE_PS_ENC pms,
- HybridAnalysis ( (const float**) rBufferLeft,
+ HybridAnalysis ( fftctx,
+ (const float**) rBufferLeft,
(const float**) iBufferLeft,
pms->mHybridRealLeft,
pms->mHybridImagLeft,
pms->hHybridLeft);
- HybridAnalysis ( (const float**) rBufferRight,
+ HybridAnalysis ( fftctx,
+ (const float**) rBufferRight,
(const float**) iBufferRight,
pms->mHybridRealRight,
pms->mHybridImagRight,
diff -Nupr src.p1/ps_enc.h src.p2/ps_enc.h
--- src.p1/ps_enc.h 2010-10-21 13:06:37.000000000 +0300
+++ src.p2/ps_enc.h 2010-10-21 13:06:37.000000000 +0300
@@ -93,7 +93,8 @@ DeletePsEnc(HANDLE_PS_ENC *h_ps_e);
void
-EncodePsFrame(HANDLE_PS_ENC h_ps_e,
+EncodePsFrame(FFTWFContext_t *fftctx,
+ HANDLE_PS_ENC h_ps_e,
float **iBufferLeft,
float **rBufferLeft,
float **iBufferRight,
diff -Nupr src.p1/psy_main.c src.p2/psy_main.c
--- src.p1/psy_main.c 2010-10-21 13:06:37.000000000 +0300
+++ src.p2/psy_main.c 2010-10-21 13:06:37.000000000 +0300
@@ -230,7 +230,8 @@ int psyMainInit(PSY_KERNEL *hPsy,
*****************************************************************************/
-int psyMain(int timeInStride,
+int psyMain(FFTWFContext_t *fftctx,
+ int timeInStride,
ELEMENT_INFO *elemInfo,
float *timeSignal,
PSY_DATA psyData[MAX_CHANNELS],
@@ -285,7 +286,8 @@ int psyMain(int timeInStride,
if(psyData[ch].blockSwitchingControl.windowSequence != SHORT_WINDOW){
- Transform_Real( psyData[ch].mdctDelayBuffer,
+ Transform_Real( fftctx,
+ psyData[ch].mdctDelayBuffer,
timeSignal+elemInfo->ChannelIndex[ch],
timeInStride,
psyData[ch].mdctSpectrum,
@@ -294,7 +296,8 @@ int psyMain(int timeInStride,
else {
- Transform_Real( psyData[ch].mdctDelayBuffer,
+ Transform_Real( fftctx,
+ psyData[ch].mdctDelayBuffer,
timeSignal+elemInfo->ChannelIndex[ch],
timeInStride,
psyData[ch].mdctSpectrum,
diff -Nupr src.p1/psy_main.h src.p2/psy_main.h
--- src.p1/psy_main.h 2010-10-21 13:06:37.000000000 +0300
+++ src.p2/psy_main.h 2010-10-21 13:06:37.000000000 +0300
@@ -30,7 +30,8 @@ int psyMainInit( PSY_KERNEL *hPsy,
int bandwidth);
-int psyMain(int nChannels, /*! total number of channels */
+int psyMain(FFTWFContext_t *fftctx,
+ int nChannels, /*! total number of channels */
ELEMENT_INFO *elemInfo,
float *timeSignal, /*! interleaved time signal */
PSY_DATA psyData[MAX_CHANNELS],
diff -Nupr src.p1/transform.c src.p2/transform.c
--- src.p1/transform.c 2010-10-21 13:06:37.000000000 +0300
+++ src.p2/transform.c 2010-10-21 13:06:37.000000000 +0300
@@ -111,7 +111,8 @@ static void postModulationDCT(float *x,i
}
-static void mdct(float *dctdata,
+static void mdct(FFTWFContext_t *fftctx,
+ float *dctdata,
const float *trigData,
const float *sineWindow,
int n,
@@ -124,7 +125,7 @@ static void mdct(float *dctdata,
preModulationDCT(dctdata,n,sineWindow);
- CFFTN(dctdata,n/2,-1);
+ CFFTN(fftctx, dctdata,n/2,-1);
assert (LD_FFT_TWIDDLE_TABLE_SIZE >= ld_n-1);
@@ -172,7 +173,7 @@ static void shiftMdctDelayBuffer(
}
-int Transform_Real(float *mdctDelayBuffer,float *timeSignal,int chIncrement,float *realOut,int blockType)
+int Transform_Real(FFTWFContext_t *fftctx, float *mdctDelayBuffer,float *timeSignal,int chIncrement,float *realOut,int blockType)
{
int i,w;
float timeSignalSample;
@@ -245,7 +246,7 @@ int Transform_Real(float *mdctDelayBuffe
}
- mdct(dctIn, fftTwiddleTab, LongWindowSine, FRAME_LEN_LONG, 10);
+ mdct(fftctx, dctIn, fftTwiddleTab, LongWindowSine, FRAME_LEN_LONG, 10);
break;
@@ -323,7 +324,7 @@ int Transform_Real(float *mdctDelayBuffe
}
- mdct(dctIn, fftTwiddleTab, LongWindowSine, FRAME_LEN_LONG, 10);
+ mdct(fftctx, dctIn, fftTwiddleTab, LongWindowSine, FRAME_LEN_LONG, 10);
break;
@@ -402,7 +403,7 @@ int Transform_Real(float *mdctDelayBuffe
}
- mdct(dctIn, fftTwiddleTab, LongWindowSine, FRAME_LEN_LONG, 10);
+ mdct(fftctx, dctIn, fftTwiddleTab, LongWindowSine, FRAME_LEN_LONG, 10);
break;
@@ -458,7 +459,7 @@ int Transform_Real(float *mdctDelayBuffe
}
- mdct(dctIn, fftTwiddleTab, ShortWindowSine, FRAME_LEN_SHORT, 7);
+ mdct(fftctx, dctIn, fftTwiddleTab, ShortWindowSine, FRAME_LEN_SHORT, 7);
}
diff -Nupr src.p1/transform.h src.p2/transform.h
--- src.p1/transform.h 2010-10-21 13:06:37.000000000 +0300
+++ src.p2/transform.h 2010-10-21 13:06:37.000000000 +0300
@@ -4,7 +4,8 @@
#ifndef __TRANSFORM_H__
#define __TRANSFORM_H__
-int Transform_Real(float *mdctDelayBuffer,
+int Transform_Real(FFTWFContext_t *fftctx,
+ float *mdctDelayBuffer,
float *timeSignal,
int chIncrement,
float *realOut,

View File

@@ -0,0 +1,94 @@
diff -Nupr src.p2/aacenc.c src.p3/aacenc.c
--- src.p2/aacenc.c 2010-10-21 13:06:37.000000000 +0300
+++ src.p3/aacenc.c 2010-10-21 13:06:37.000000000 +0300
@@ -402,7 +402,7 @@ int AacEncEncode(struct AAC_ENCODER *aac
&aacEnc->qcOut);
- WriteBitstream( aacEnc->hBitStream,
+ WriteBitstreamData( aacEnc->hBitStream,
*elInfo,
&aacEnc->qcOut,
&aacEnc->psyOut,
diff -Nupr src.p2/bitenc.c src.p3/bitenc.c
--- src.p2/bitenc.c 2010-10-21 13:06:37.000000000 +0300
+++ src.p3/bitenc.c 2010-10-21 13:06:37.000000000 +0300
@@ -812,14 +812,14 @@ static void writeFillElement( const unsi
/*****************************************************************************
- functionname: WriteBitStream
+ functionname: WriteBitStreamData
description: main function of write process
returns:
input:
output:
*****************************************************************************/
-int WriteBitstream (HANDLE_BIT_BUF hBitStream,
+int WriteBitstreamData (HANDLE_BIT_BUF hBitStream,
ELEMENT_INFO elInfo,
QC_OUT *qcOut,
PSY_OUT* psyOut,
diff -Nupr src.p2/bitenc.h src.p3/bitenc.h
--- src.p2/bitenc.h 2010-10-21 13:06:37.000000000 +0300
+++ src.p3/bitenc.h 2010-10-21 13:06:37.000000000 +0300
@@ -16,7 +16,7 @@ struct BITSTREAMENCODER_INIT
-int WriteBitstream (HANDLE_BIT_BUF hBitstream,
+int WriteBitstreamData (HANDLE_BIT_BUF hBitstream,
ELEMENT_INFO elInfo,
QC_OUT* qcOut,
PSY_OUT* psyOut,
diff -Nupr src.p2/psy_main.c src.p3/psy_main.c
--- src.p2/psy_main.c 2010-10-21 13:06:37.000000000 +0300
+++ src.p3/psy_main.c 2010-10-21 13:06:37.000000000 +0300
@@ -597,7 +597,7 @@ static int advancePsychLong(PSY_DATA* ps
}
- TnsEncode( &psyOutChannel->tnsInfo,
+ TnsEncodeData( &psyOutChannel->tnsInfo,
tnsData,
psyConfLong->sfbCnt,
psyConfLong->tnsConf,
@@ -826,7 +826,7 @@ static int advancePsychShort(PSY_DATA* p
}
- TnsEncode( &psyOutChannel->tnsInfo,
+ TnsEncodeData( &psyOutChannel->tnsInfo,
tnsData,
psyConfShort->sfbCnt,
psyConfShort->tnsConf,
diff -Nupr src.p2/tns.c src.p3/tns.c
--- src.p2/tns.c 2010-10-21 13:06:37.000000000 +0300
+++ src.p3/tns.c 2010-10-21 13:06:37.000000000 +0300
@@ -463,11 +463,11 @@ void TnsSync(TNS_DATA *tnsDataDest,
/*****************************************************************************
- functionname: TnsEncode
+ functionname: TnsEncodeData
description:
*****************************************************************************/
-int TnsEncode(TNS_INFO* tnsInfo,
+int TnsEncodeData(TNS_INFO* tnsInfo,
TNS_DATA* tnsData,
int numOfSfb,
TNS_CONFIG tC,
diff -Nupr src.p2/tns_func.h src.p3/tns_func.h
--- src.p2/tns_func.h 2010-10-21 13:06:37.000000000 +0300
+++ src.p3/tns_func.h 2010-10-21 13:06:37.000000000 +0300
@@ -33,7 +33,7 @@ void TnsSync(TNS_DATA *tnsDataDest,
const int subBlockNumber,
const int blockType);
-int TnsEncode(TNS_INFO* tnsInfo,
+int TnsEncodeData(TNS_INFO* tnsInfo,
TNS_DATA* tnsData,
int numOfSfb,
TNS_CONFIG tC,

View File

@@ -0,0 +1,85 @@
diff -Nupr src.p3/invf_est.c src.p4/invf_est.c
--- src.p3/invf_est.c 2010-10-21 13:06:37.000000000 +0300
+++ src.p4/invf_est.c 2010-10-21 13:06:37.000000000 +0300
@@ -29,11 +29,11 @@
-static float quantStepsSbr[4] = {1, 10, 14, 19};
-static float quantStepsOrig[4] = {0, 3, 7, 10};
-static float nrgBorders[4] = {25.0f, 30.0f, 35.0f, 40.0f};
+static const float quantStepsSbr[4] = {1, 10, 14, 19};
+static const float quantStepsOrig[4] = {0, 3, 7, 10};
+static const float nrgBorders[4] = {25.0f, 30.0f, 35.0f, 40.0f};
-static DETECTOR_PARAMETERS detectorParamsAAC = {
+static const DETECTOR_PARAMETERS detectorParamsAAC = {
quantStepsSbr,
quantStepsOrig,
nrgBorders,
@@ -60,7 +60,7 @@ static DETECTOR_PARAMETERS detectorParam
static const float hysteresis = 1.0f;
-static DETECTOR_PARAMETERS detectorParamsAACSpeech = {
+static const DETECTOR_PARAMETERS detectorParamsAACSpeech = {
quantStepsSbr,
quantStepsOrig,
nrgBorders,
@@ -87,13 +87,13 @@ static DETECTOR_PARAMETERS detectorParam
typedef const float FIR_FILTER[5];
-static FIR_FILTER fir_0 = { 1.0f };
-static FIR_FILTER fir_1 = { 0.3333333f, 0.6666666f };
-static FIR_FILTER fir_2 = { 0.125f, 0.375f, 0.5f };
-static FIR_FILTER fir_3 = { 0.0585786f, 0.2f, 0.3414214f, 0.4f };
-static FIR_FILTER fir_4 = { 0.0318305f, 0.1151638f, 0.2181695f, 0.3015028f, 0.3333333f };
+static const FIR_FILTER fir_0 = { 1.0f };
+static const FIR_FILTER fir_1 = { 0.3333333f, 0.6666666f };
+static const FIR_FILTER fir_2 = { 0.125f, 0.375f, 0.5f };
+static const FIR_FILTER fir_3 = { 0.0585786f, 0.2f, 0.3414214f, 0.4f };
+static const FIR_FILTER fir_4 = { 0.0318305f, 0.1151638f, 0.2181695f, 0.3015028f, 0.3333333f };
-static FIR_FILTER *fir_table[5] = {
+static const FIR_FILTER *fir_table[5] = {
&fir_0,
&fir_1,
&fir_2,
diff -Nupr src.p3/invf_est.h src.p4/invf_est.h
--- src.p3/invf_est.h 2010-10-21 13:06:37.000000000 +0300
+++ src.p4/invf_est.h 2010-10-21 13:06:37.000000000 +0300
@@ -8,9 +8,9 @@
typedef struct
{
- float *quantStepsSbr;
- float *quantStepsOrig;
- float *nrgBorders;
+ const float *quantStepsSbr;
+ const float *quantStepsOrig;
+ const float *nrgBorders;
int numRegionsSbr;
int numRegionsOrig;
int numRegionsNrg;
@@ -46,7 +46,7 @@ typedef struct
int noDetectorBands;
int noDetectorBandsMax;
- DETECTOR_PARAMETERS *detectorParams;
+ const DETECTOR_PARAMETERS *detectorParams;
INVF_MODE prevInvfMode[MAX_NUM_NOISE_VALUES];
DETECTOR_VALUES detectorValues[MAX_NUM_NOISE_VALUES];
diff -Nupr src.p3/psy_configuration.c src.p4/psy_configuration.c
--- src.p3/psy_configuration.c 2010-10-21 13:06:37.000000000 +0300
+++ src.p4/psy_configuration.c 2010-10-21 13:06:37.000000000 +0300
@@ -23,7 +23,7 @@ static const float BARC_THR_QUIET[] = {1
0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 3.0f, 5.0f, 10.0f, 20.0f, 30.0f};
-static SFB_INFO_TAB sfbInfoTab[] ={
+static const SFB_INFO_TAB sfbInfoTab[] ={
{11025, sfb_11025_long_1024, sfb_11025_short_128},
{12000, sfb_12000_long_1024, sfb_12000_short_128},
{16000, sfb_16000_long_1024, sfb_16000_short_128},

View File

@@ -0,0 +1,30 @@
diff -Nupr src.p4/bitbuffer.c src.p5/bitbuffer.c
--- src.p4/bitbuffer.c 2010-10-21 13:06:37.000000000 +0300
+++ src.p5/bitbuffer.c 2010-10-21 13:06:37.000000000 +0300
@@ -191,7 +191,7 @@ unsigned long ReadBits(HANDLE_BIT_BUF hB
- /* return value is of type unsigned int, it can hold up to 32 bits
+ /* return value is of type unsigned int, it can hold up to 32 bits OETELAAR TODO wat is dit een 64 platform is??
this optimized code can read upto 25 Bits a time*/
if (noBitsToRead >= 25) {
@@ -235,7 +235,7 @@ unsigned long ReadBits(HANDLE_BIT_BUF hB
}
- returnValue = returnValue << (31 - noBitsToRead - hBitBuf->rBitPos) >> (32 - noBitsToRead);
+ returnValue = returnValue << ((LongSize-1) - noBitsToRead - hBitBuf->rBitPos) >> (LongSize - noBitsToRead);
return (returnValue);
@@ -281,7 +281,7 @@ unsigned char WriteBits(HANDLE_BIT_BUF h
bitsToWrite = min(hBitBuf->wBitPos + 1, noBitsToWrite);
- tmp = (unsigned char) ( writeValue << (32 - noBitsToWrite) >> (32 - bitsToWrite) << (hBitBuf->wBitPos + 1 - bitsToWrite) );
+ tmp = (unsigned char) ( writeValue << (LongSize - noBitsToWrite) >> (LongSize - bitsToWrite) << (hBitBuf->wBitPos + 1 - bitsToWrite) );
/* (hBitBuf->wBitPos + 1 - bitsToWrite) --> already calculated */
msk = ~(((1 << bitsToWrite) - 1) << (hBitBuf->wBitPos + 1 - bitsToWrite));

View File

@@ -0,0 +1,21 @@
diff -Nupr src.p5/sbr_main.c src.p6/sbr_main.c
--- src.p5/sbr_main.c 2010-10-21 13:06:37.000000000 +0300
+++ src.p6/sbr_main.c 2010-10-21 13:06:37.000000000 +0300
@@ -57,11 +57,17 @@ static const struct
{ 28000, 36000, 22050, 2, 7, 8, 2, 0, -3, SBR_SWITCH_LRC, 2 }, /* nominal: 32 kbit/s */
{ 36000, 44000, 22050, 2, 10, 9, 2, 0, -3, SBR_SWITCH_LRC, 2 }, /* nominal: 40 kbit/s */
{ 44000, 52000, 22050, 2, 12, 9, 3, 0, -3, SBR_SWITCH_LRC, 2 }, /* nominal: 48 kbit/s */
+ { 52000, 60000, 22050, 2, 12, 9, 3, 0, -3, SBR_SWITCH_LRC, 2 }, /* nominal: 56 kbit/s */
+ { 60000, 68000, 22050, 2, 14, 10, 3, 0, -3, SBR_SWITCH_LRC, 2 }, /* nominal: 64 kbit/s */
+ { 68000, 72001, 22050, 2, 14, 10, 3, 0, -3, SBR_SWITCH_LRC, 2 }, /* nominal: 72 kbit/s */
{ 24000, 28000, 24000, 2, 5, 6, 1, 0, -3, SBR_SWITCH_LRC, 3 }, /* nominal: 24 kbit/s */
{ 28000, 36000, 24000, 2, 7, 8, 2, 0, -3, SBR_SWITCH_LRC, 2 }, /* nominal: 32 kbit/s */
{ 36000, 44000, 24000, 2, 10, 9, 2, 0, -3, SBR_SWITCH_LRC, 2 }, /* nominal: 40 kbit/s */
{ 44000, 52000, 24000, 2, 12, 9, 3, 0, -3, SBR_SWITCH_LRC, 2 }, /* nominal: 48 kbit/s */
+ { 52000, 60000, 24000, 2, 12, 9, 3, 0, -3, SBR_SWITCH_LRC, 2 }, /* nominal: 56 kbit/s */
+ { 60000, 68000, 24000, 2, 14, 10, 3, 0, -3, SBR_SWITCH_LRC, 2 }, /* nominal: 64 kbit/s */
+ { 68000, 72001, 24000, 2, 14, 10, 3, 0, -3, SBR_SWITCH_LRC, 2 }, /* nominal: 72 kbit/s */
};

View File

@@ -0,0 +1,60 @@
diff -Nupr src.p6/env_bit.h src.p7/env_bit.h
--- src.p6/env_bit.h 2010-10-21 13:06:37.000000000 +0300
+++ src.p7/env_bit.h 2010-10-21 13:06:37.000000000 +0300
@@ -22,12 +22,24 @@
-#define SI_ID_BITS_AAC 3
-#define SI_FILL_COUNT_BITS 4
-#define SI_FILL_ESC_COUNT_BITS 8
-#define SI_FILL_EXTENTION_BITS 4
-#define ID_FIL 6
-
+//#define SI_ID_BITS_AAC 3
+//#define SI_FILL_COUNT_BITS 4
+//#define SI_FILL_ESC_COUNT_BITS 8
+//#define SI_FILL_EXTENTION_BITS 4
+//#define ID_FIL 6
+typedef enum{
+ SI_ID_BITS =(3),
+ SI_FILL_COUNT_BITS =(4),
+ SI_FILL_ESC_COUNT_BITS =(8),
+ SI_FILL_EXTENTION_BITS =(4),
+ SI_FILL_NIBBLE_BITS =(4),
+ SI_SCE_BITS =(4),
+ SI_CPE_BITS =(5),
+ SI_CPE_MS_MASK_BITS =(2) ,
+ SI_ICS_INFO_BITS_LONG =(1+2+1+6+1),
+ SI_ICS_INFO_BITS_SHORT =(1+2+1+4+7),
+ SI_ICS_BITS =(8+1+1+1),
+}SI_BITS;
diff -Nupr src.p6/stat_bits.c src.p7/stat_bits.c
--- src.p6/stat_bits.c 2010-10-21 13:06:37.000000000 +0300
+++ src.p7/stat_bits.c 2010-10-21 13:06:37.000000000 +0300
@@ -5,22 +5,6 @@
/* the 3GPP instrumenting tool */
-typedef enum{
- SI_ID_BITS =(3),
- SI_FILL_COUNT_BITS =(4),
- SI_FILL_ESC_COUNT_BITS =(8),
- SI_FILL_EXTENTION_BITS =(4),
- SI_FILL_NIBBLE_BITS =(4),
- SI_SCE_BITS =(4),
- SI_CPE_BITS =(5),
- SI_CPE_MS_MASK_BITS =(2) ,
- SI_ICS_INFO_BITS_LONG =(1+2+1+6+1),
- SI_ICS_INFO_BITS_SHORT =(1+2+1+4+7),
- SI_ICS_BITS =(8+1+1+1),
-}SI_BITS;
-
-
-
static int countMsMaskBits(int sfbCnt,
int sfbPerGroup,
int maxSfbPerGroup,

View File

@@ -0,0 +1,255 @@
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,

View File

@@ -0,0 +1,190 @@
diff -Nupr src.p8/aacenc.c src.p9/aacenc.c
--- src.p8/aacenc.c 2010-10-21 13:06:37.000000000 +0300
+++ src.p9/aacenc.c 2010-10-21 13:06:37.000000000 +0300
@@ -10,39 +10,7 @@
/* the 3GPP instrumenting tool */
-struct AAC_ENCODER {
- AACENC_CONFIG config;
-
- ELEMENT_INFO elInfo;
-
- QC_STATE qcKernel;
- QC_OUT qcOut;
-
- PSY_OUT psyOut;
- PSY_KERNEL psyKernel;
-
- struct BITSTREAMENCODER_INIT bseInit;
-
- struct STEREO_PREPRO stereoPrePro;
-
- struct BIT_BUF bitStream;
- HANDLE_BIT_BUF hBitStream;
-
- /* lifetime vars */
- int downmix;
- int downmixFac;
- int dualMono;
- int bandwidth90dB;
-};
-
-
-/*
- static AAC encoder instance for one encoder
- all other major static and dynamic memory areas are located
- in module aac_ram.c and aac_rom.c
-*/
-static struct AAC_ENCODER aacEncoder;
/*-----------------------------------------------------------------------------
diff -Nupr src.p8/aacenc.h src.p9/aacenc.h
--- src.p8/aacenc.h 2010-10-21 13:06:37.000000000 +0300
+++ src.p9/aacenc.h 2010-10-21 13:06:37.000000000 +0300
@@ -5,38 +5,36 @@
#ifndef _aacenc_h_
#define _aacenc_h_
-/* here we distinguish between stereo and the mono only encoder */
-#ifdef MONO_ONLY
-#define MAX_CHANNELS 1
-#else
-#define MAX_CHANNELS 2
-#endif
-
-#define AACENC_BLOCKSIZE 1024 /*! encoder only takes BLOCKSIZE samples at a time */
-#define AACENC_TRANS_FAC 8 /*! encoder short long ratio */
-#define AACENC_PCM_LEVEL 1.0 /*! encoder pcm 0db refernence */
-
-
-/*-------------------------- defines --------------------------------------*/
-
-#define BUFFERSIZE 1024 /* anc data */
-
-/*-------------------- structure definitions ------------------------------*/
-
-typedef struct {
- int sampleRate; /* audio file sample rate */
- int bitRate; /* encoder bit rate in bits/sec */
- int nChannelsIn; /* number of channels on input (1,2) */
- int nChannelsOut; /* number of channels on output (1,2) */
- int bandWidth; /* core coder audio bandwidth in Hz */
-} AACENC_CONFIG;
-
-struct AAC_ENCODER;
-
-/*
- * p u b l i c a n c i l l a r y
- *
- */
+struct AAC_ENCODER {
+//#ifdef _FFTW3
+ FFTWFContext_t *fftctx;
+//#endif
+
+ aacplusEncConfiguration *config;
+ AACRam_t *aac_ram;
+ SBRRam_t *sbr_ram;
+
+ ELEMENT_INFO elInfo;
+
+ QC_STATE qcKernel;
+ QC_OUT qcOut;
+
+ PSY_OUT psyOut;
+ PSY_KERNEL psyKernel;
+
+ struct BITSTREAMENCODER_INIT bseInit;
+
+ struct STEREO_PREPRO stereoPrePro;
+
+ struct BIT_BUF bitStream;
+ HANDLE_BIT_BUF hBitStream;
+
+ /* lifetime vars */
+ int downmix;
+ int downmixFac;
+ int dualMono;
+ int bandwidth90dB;
+};
/*-----------------------------------------------------------------------------
diff -Nupr src.p8/sbr_main.c src.p9/sbr_main.c
--- src.p8/sbr_main.c 2010-10-21 13:06:37.000000000 +0300
+++ src.p9/sbr_main.c 2010-10-21 13:06:37.000000000 +0300
@@ -72,28 +72,6 @@ static const struct
};
-struct SBR_ENCODER
-{
-
- struct SBR_CONFIG_DATA sbrConfigData;
- struct SBR_HEADER_DATA sbrHeaderData;
- struct SBR_BITSTREAM_DATA sbrBitstreamData;
- struct ENV_CHANNEL* hEnvChannel[MAX_CHANNELS];
- struct COMMON_DATA CmonData;
- struct PS_ENC *hPsEnc;
- SBR_QMF_FILTER_BANK *hSynthesisQmfBank;
- unsigned int sbrPayloadPrevious[MAX_PAYLOAD_SIZE/(sizeof(int))];
- unsigned int sbrPayload[MAX_PAYLOAD_SIZE/(sizeof(int))];
- int sbrPayloadSize;
-} ;
-
-
-static struct ENV_CHANNEL EnvChannel[MAX_CHANNELS];
-static struct SBR_ENCODER sbrEncoder;
-static SBR_QMF_FILTER_BANK SynthesisQmfBank;
-static struct PS_ENC psEncoder;
-
-
/***************************************************************************/
/*!
@@ -804,21 +782,18 @@ createEnvChannel (int chan,
*****************************************************************************/
int
-EnvOpen (HANDLE_SBR_ENCODER * hEnvEncoder,
+EnvOpen (HANDLE_SBR_ENCODER hEnvEnc,
float *pCoreBuffer,
sbrConfigurationPtr params,
int *coreBandWith)
{
- HANDLE_SBR_ENCODER hEnvEnc ;
int ch;
- *hEnvEncoder=0;
- hEnvEnc = &sbrEncoder;
/* hEnvEnc->hEnvChannel[]
EnvChannel[]
@@ -1085,7 +1060,6 @@ EnvOpen (HANDLE_SBR_ENCODER * hEnvEncode
hEnvEnc->sbrPayloadSize = 0;
- *hEnvEncoder = hEnvEnc;
*coreBandWith = hEnvEnc->sbrConfigData.xOverFreq;
diff -Nupr src.p8/sbr_main.h src.p9/sbr_main.h
--- src.p8/sbr_main.h 2010-10-21 13:06:37.000000000 +0300
+++ src.p9/sbr_main.h 2010-10-21 13:06:37.000000000 +0300
@@ -102,7 +102,7 @@ typedef struct SBR_ENCODER *HANDLE_SBR_E
int
-EnvOpen (HANDLE_SBR_ENCODER* hEnvEncoder,
+EnvOpen (HANDLE_SBR_ENCODER hEnvEnc,
float *pCoreBuffer,
sbrConfigurationPtr params,
int *coreBandWith

View File

@@ -0,0 +1,894 @@
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; i<nChannels; i++) {
- hQC->qcChannel[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; ch<MAX_CHANNELS; ch++)
{
- hEnvEnc->hEnvChannel[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; i<FRAME_LEN_LONG; i++) {
- expSpec[i] = 0.0f;
+ aacram->expSpec[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; j<nChannels; j++) {
- estimateScaleFactorsChannel(&psyOutChannel[j],
+ estimateScaleFactorsChannel(aacram,
+ &psyOutChannel[j],
qcOutChannel[j].scf,
&(qcOutChannel[j].globalGain),
sfbFormFactor[j],
diff -Nupr src.p9/sf_estim.h src.p10/sf_estim.h
--- src.p9/sf_estim.h 2010-10-21 13:06:37.000000000 +0300
+++ src.p10/sf_estim.h 2010-10-21 13:06:37.000000000 +0300
@@ -13,7 +13,8 @@ CalcFormFactor(float sfbFormFactor[MAX_C
const int nChannels);
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],
diff -Nupr src.p9/ton_corr.c src.p10/ton_corr.c
--- src.p9/ton_corr.c 2010-10-21 13:06:37.000000000 +0300
+++ src.p10/ton_corr.c 2010-10-21 13:06:37.000000000 +0300
@@ -712,7 +712,8 @@ resetPatch(HANDLE_SBR_TON_CORR_EST hTonC
*/
/**************************************************************************/
int
-CreateTonCorrParamExtr (int chan,
+CreateTonCorrParamExtr (SBRRam_t *sbrram,
+ int chan,
HANDLE_SBR_TON_CORR_EST hTonCorr,
int fs,
int usb,
@@ -762,7 +763,7 @@ CreateTonCorrParamExtr (int chan,
for(i=0;i<hTonCorr->numberOfEstimates;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,

11
patches/Makefile.am Normal file
View File

@@ -0,0 +1,11 @@
EXTRA_DIST = \
0001-move_headers_at_one_place.patch \
0002-cfftn-add-fftw3f.patch \
0003-faac_compatible.patch \
0004-const_where_possible.patch \
0005-fix_bitbuff_64bit.patch \
0006-add_bitrates.patch \
0007-fix_si_bits_dup.patch \
0008-enchance_config.patch \
0009-move_aac_sbr_enc_2_hdr.patch \
0010-use_dynamic_alloc.patch