summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/codecs/aacenc/src/spreading.c
diff options
context:
space:
mode:
Diffstat (limited to 'media/libstagefright/codecs/aacenc/src/spreading.c')
-rw-r--r--media/libstagefright/codecs/aacenc/src/spreading.c52
1 files changed, 52 insertions, 0 deletions
diff --git a/media/libstagefright/codecs/aacenc/src/spreading.c b/media/libstagefright/codecs/aacenc/src/spreading.c
new file mode 100644
index 0000000..aaf2fff
--- /dev/null
+++ b/media/libstagefright/codecs/aacenc/src/spreading.c
@@ -0,0 +1,52 @@
+/*
+ ** 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: spreading.c
+
+ Content: Spreading of energy function
+
+*******************************************************************************/
+
+#include "basic_op.h"
+#include "oper_32b.h"
+#include "spreading.h"
+
+/*********************************************************************************
+*
+* function name: SpreadingMax
+* description: spreading the energy
+* higher frequencies thr(n) = max(thr(n), sh(n)*thr(n-1))
+* lower frequencies thr(n) = max(thr(n), sl(n)*thr(n+1))
+*
+**********************************************************************************/
+void SpreadingMax(const Word16 pbCnt,
+ const Word16 *maskLowFactor,
+ const Word16 *maskHighFactor,
+ Word32 *pbSpreadedEnergy)
+{
+ Word32 i;
+
+ /* slope to higher frequencies */
+ for (i=1; i<pbCnt; i++) {
+ pbSpreadedEnergy[i] = max(pbSpreadedEnergy[i],
+ L_mpy_ls(pbSpreadedEnergy[i-1], maskHighFactor[i]));
+ }
+ /* slope to lower frequencies */
+ for (i=pbCnt - 2; i>=0; i--) {
+ pbSpreadedEnergy[i] = max(pbSpreadedEnergy[i],
+ L_mpy_ls(pbSpreadedEnergy[i+1], maskLowFactor[i]));
+ }
+}