256 lines
8.7 KiB
Diff
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,
|