libaacplus/patches/0008-enchance_config.patch

256 lines
8.7 KiB
Diff

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,