diff options
author | James Dong <jdong@google.com> | 2010-05-14 15:45:22 -0700 |
---|---|---|
committer | James Dong <jdong@google.com> | 2010-05-19 07:21:25 -0700 |
commit | 956c553ab0ce72f8074ad0fda2ffd66a0305700c (patch) | |
tree | fe111ecd29e01c270246f5f338c56806d6d5b136 /media/libstagefright/codecs/aacenc/src/band_nrg.c | |
parent | e1f61055b4abb96a86d1ff24b5a7777dfe40fe5f (diff) | |
download | frameworks_av-956c553ab0ce72f8074ad0fda2ffd66a0305700c.zip frameworks_av-956c553ab0ce72f8074ad0fda2ffd66a0305700c.tar.gz frameworks_av-956c553ab0ce72f8074ad0fda2ffd66a0305700c.tar.bz2 |
Initial software encoder checkins
Change-Id: I27f387db23594e46384c4eb3a0093ce220bb6b60
Diffstat (limited to 'media/libstagefright/codecs/aacenc/src/band_nrg.c')
-rw-r--r-- | media/libstagefright/codecs/aacenc/src/band_nrg.c | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/media/libstagefright/codecs/aacenc/src/band_nrg.c b/media/libstagefright/codecs/aacenc/src/band_nrg.c new file mode 100644 index 0000000..666c4ca --- /dev/null +++ b/media/libstagefright/codecs/aacenc/src/band_nrg.c @@ -0,0 +1,102 @@ +/*
+ ** Copyright 2003-2010, VisualOn, Inc.
+ **
+ ** Licensed under the Apache License, Version 2.0 (the "License");
+ ** you may not use this file except in compliance with the License.
+ ** You may obtain a copy of the License at
+ **
+ ** http://www.apache.org/licenses/LICENSE-2.0
+ **
+ ** Unless required by applicable law or agreed to in writing, software
+ ** distributed under the License is distributed on an "AS IS" BASIS,
+ ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ** See the License for the specific language governing permissions and
+ ** limitations under the License.
+ */
+/*******************************************************************************
+ File: band_nrg.c
+
+ Content: Band/Line energy calculations functions
+
+*******************************************************************************/ + +#include "basic_op.h"
+#include "band_nrg.h" + +#ifndef ARMV5E
+/******************************************************************************** +* +* function name: CalcBandEnergy +* description: Calc sfb-bandwise mdct-energies for left and right channel +* +**********************************************************************************/
+void CalcBandEnergy(const Word32 *mdctSpectrum, + const Word16 *bandOffset, + const Word16 numBands, + Word32 *bandEnergy, + Word32 *bandEnergySum) +{ + Word32 i, j; + Word32 accuSum = 0; + + for (i=0; i<numBands; i++) { + Word32 accu = 0; + for (j=bandOffset[i]; j<bandOffset[i+1]; j++) + accu = L_add(accu, MULHIGH(mdctSpectrum[j], mdctSpectrum[j]));
+
+ accu = L_add(accu, accu); + accuSum = L_add(accuSum, accu); + bandEnergy[i] = accu; + } + *bandEnergySum = accuSum; +} + +/******************************************************************************** +* +* function name: CalcBandEnergyMS +* description: Calc sfb-bandwise mdct-energies for left add or minus right channel +* +**********************************************************************************/ +void CalcBandEnergyMS(const Word32 *mdctSpectrumLeft, + const Word32 *mdctSpectrumRight, + const Word16 *bandOffset, + const Word16 numBands, + Word32 *bandEnergyMid, + Word32 *bandEnergyMidSum, + Word32 *bandEnergySide, + Word32 *bandEnergySideSum) +{ + + Word32 i, j; + Word32 accuMidSum = 0; + Word32 accuSideSum = 0; + + + for(i=0; i<numBands; i++) { + Word32 accuMid = 0; + Word32 accuSide = 0; + for (j=bandOffset[i]; j<bandOffset[i+1]; j++) { + Word32 specm, specs; + Word32 l, r; + + l = mdctSpectrumLeft[j] >> 1; + r = mdctSpectrumRight[j] >> 1; + specm = l + r; + specs = l - r; + accuMid = L_add(accuMid, MULHIGH(specm, specm)); + accuSide = L_add(accuSide, MULHIGH(specs, specs)); + } +
+ accuMid = L_add(accuMid, accuMid);
+ accuSide = L_add(accuSide, accuSide);
+ bandEnergyMid[i] = accuMid; + accuMidSum = L_add(accuMidSum, accuMid); + bandEnergySide[i] = accuSide; + accuSideSum = L_add(accuSideSum, accuSide); + + } + *bandEnergyMidSum = accuMidSum; + *bandEnergySideSum = accuSideSum; +} + +#endif
\ No newline at end of file |