summaryrefslogtreecommitdiffstats
path: root/libSBRdec/src/env_calc.h
diff options
context:
space:
mode:
Diffstat (limited to 'libSBRdec/src/env_calc.h')
-rw-r--r--libSBRdec/src/env_calc.h107
1 files changed, 107 insertions, 0 deletions
diff --git a/libSBRdec/src/env_calc.h b/libSBRdec/src/env_calc.h
new file mode 100644
index 0000000..ef14996
--- /dev/null
+++ b/libSBRdec/src/env_calc.h
@@ -0,0 +1,107 @@
+/****************************************************************************
+
+ (C) Copyright Fraunhofer IIS (2004)
+ All Rights Reserved
+
+ Please be advised that this software and/or program delivery is
+ Confidential Information of Fraunhofer and subject to and covered by the
+
+ Fraunhofer IIS Software Evaluation Agreement
+ between Google Inc. and Fraunhofer
+ effective and in full force since March 1, 2012.
+
+ You may use this software and/or program only under the terms and
+ conditions described in the above mentioned Fraunhofer IIS Software
+ Evaluation Agreement. Any other and/or further use requires a separate agreement.
+
+
+ This software and/or program is protected by copyright law and international
+ treaties. Any reproduction or distribution of this software and/or program,
+ or any portion of it, may result in severe civil and criminal penalties, and
+ will be prosecuted to the maximum extent possible under law.
+
+ $Id$
+
+*******************************************************************************/
+/*!
+ \file
+ \brief Envelope calculation prototypes $Revision: 36841 $
+*/
+#ifndef __ENV_CALC_H
+#define __ENV_CALC_H
+
+#include "sbrdecoder.h"
+#include "env_extr.h" /* for HANDLE_SBR_HEADER_DATA */
+#include "sbr_scale.h"
+
+
+typedef struct
+{
+ FIXP_DBL filtBuffer[MAX_FREQ_COEFFS]; /*!< previous gains (required for smoothing) */
+ FIXP_DBL filtBufferNoise[MAX_FREQ_COEFFS]; /*!< previous noise levels (required for smoothing) */
+ SCHAR filtBuffer_e[MAX_FREQ_COEFFS]; /*!< Exponents of previous gains */
+ SCHAR filtBufferNoise_e; /*!< Common exponent of previous noise levels */
+
+ int startUp; /*!< flag to signal initial conditions in buffers */
+ int phaseIndex; /*!< Index for randomPase array */
+ int prevTranEnv; /*!< The transient envelope of the previous frame. */
+
+ int harmFlagsPrev[(MAX_FREQ_COEFFS+15)/16];
+ /*!< Words with 16 flags each indicating where a sine was added in the previous frame.*/
+ UCHAR harmIndex; /*!< Current phase of synthetic sine */
+
+}
+SBR_CALCULATE_ENVELOPE;
+
+typedef SBR_CALCULATE_ENVELOPE *HANDLE_SBR_CALCULATE_ENVELOPE;
+
+
+
+void
+calculateSbrEnvelope (QMF_SCALE_FACTOR *sbrScaleFactor,
+ HANDLE_SBR_CALCULATE_ENVELOPE h_sbr_cal_env,
+ HANDLE_SBR_HEADER_DATA hHeaderData,
+ HANDLE_SBR_FRAME_DATA hFrameData,
+ FIXP_DBL **analysBufferReal,
+ FIXP_DBL **analysBufferImag, /*!< Imag part of subband samples to be processed */
+ const int useLP,
+ FIXP_DBL *degreeAlias, /*!< Estimated aliasing for each QMF channel */
+ const UINT flags,
+ const int frameErrorFlag
+ );
+
+SBR_ERROR
+createSbrEnvelopeCalc (HANDLE_SBR_CALCULATE_ENVELOPE hSbrCalculateEnvelope,
+ HANDLE_SBR_HEADER_DATA hHeaderData,
+ const int chan,
+ const UINT flags);
+
+int
+deleteSbrEnvelopeCalc (HANDLE_SBR_CALCULATE_ENVELOPE hSbrCalculateEnvelope);
+
+void
+resetSbrEnvelopeCalc (HANDLE_SBR_CALCULATE_ENVELOPE hCalEnv);
+
+SBR_ERROR
+ResetLimiterBands ( UCHAR *limiterBandTable,
+ UCHAR *noLimiterBands,
+ UCHAR *freqBandTable,
+ int noFreqBands,
+ const PATCH_PARAM *patchParam,
+ int noPatches,
+ int limiterBands);
+
+void rescaleSubbandSamples( FIXP_DBL ** re,
+ FIXP_DBL ** im,
+ int lowSubband, int noSubbands,
+ int start_pos, int next_pos,
+ int shift);
+
+FIXP_DBL maxSubbandSample( FIXP_DBL ** analysBufferReal_m,
+ FIXP_DBL ** analysBufferImag_m,
+ int lowSubband,
+ int highSubband,
+ int start_pos,
+ int stop_pos);
+
+#endif // __ENV_CALC_H