summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/codecs/amrnb/enc/src/cod_amr.h
diff options
context:
space:
mode:
Diffstat (limited to 'media/libstagefright/codecs/amrnb/enc/src/cod_amr.h')
-rw-r--r--media/libstagefright/codecs/amrnb/enc/src/cod_amr.h275
1 files changed, 275 insertions, 0 deletions
diff --git a/media/libstagefright/codecs/amrnb/enc/src/cod_amr.h b/media/libstagefright/codecs/amrnb/enc/src/cod_amr.h
new file mode 100644
index 0000000..7360c0a
--- /dev/null
+++ b/media/libstagefright/codecs/amrnb/enc/src/cod_amr.h
@@ -0,0 +1,275 @@
+/* ------------------------------------------------------------------
+ * Copyright (C) 1998-2009 PacketVideo
+ *
+ * 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.
+ * -------------------------------------------------------------------
+ */
+/****************************************************************************************
+Portions of this file are derived from the following 3GPP standard:
+
+ 3GPP TS 26.073
+ ANSI-C code for the Adaptive Multi-Rate (AMR) speech codec
+ Available from http://www.3gpp.org
+
+(C) 2004, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC)
+Permission to distribute, modify and use this file under the standard license
+terms listed above has been obtained from the copyright holder.
+****************************************************************************************/
+/*
+------------------------------------------------------------------------------
+
+
+
+ Filename: /audio/gsm_amr/c/src/include/cod_amr.h
+
+ Date: 02/07/2002
+
+------------------------------------------------------------------------------
+ REVISION HISTORY
+
+ Description: Added overflow flag as an element to the cod_amrState data
+ structure. Corrected the function prototype declaration for
+ cod_amr().
+
+ Description: Replaced "int" and/or "char" with OSCL defined types.
+
+ Description: Moved _cplusplus #ifdef after Include section.
+
+ Description:
+
+------------------------------------------------------------------------------
+ INCLUDE DESCRIPTION
+
+ File : cod_amr.h
+ Purpose : Main encoder routine operating on a frame basis.
+
+------------------------------------------------------------------------------
+*/
+
+#ifndef cod_amr_h
+#define cod_amr_h "$Id $"
+
+/*----------------------------------------------------------------------------
+; INCLUDES
+----------------------------------------------------------------------------*/
+#include "typedef.h"
+#include "cnst.h"
+#include "mode.h"
+#include "lpc.h"
+#include "lsp.h"
+#include "cl_ltp.h"
+#include "gain_q.h"
+#include "p_ol_wgh.h"
+#include "ton_stab.h"
+#include "vad.h"
+#include "dtx_enc.h"
+
+/*--------------------------------------------------------------------------*/
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ /*----------------------------------------------------------------------------
+ ; MACROS
+ ; [Define module specific macros here]
+ ----------------------------------------------------------------------------*/
+
+ /*----------------------------------------------------------------------------
+ ; DEFINES
+ ; [Include all pre-processor statements here.]
+ ----------------------------------------------------------------------------*/
+
+
+ /*----------------------------------------------------------------------------
+ ; EXTERNAL VARIABLES REFERENCES
+ ; [Declare variables used in this module but defined elsewhere]
+ ----------------------------------------------------------------------------*/
+
+ /*----------------------------------------------------------------------------
+ ; SIMPLE TYPEDEF'S
+ ----------------------------------------------------------------------------*/
+
+ /*----------------------------------------------------------------------------
+ ; ENUMERATED TYPEDEF'S
+ ----------------------------------------------------------------------------*/
+
+ /*----------------------------------------------------------------------------
+ ; STRUCTURES TYPEDEF'S
+ ----------------------------------------------------------------------------*/
+ /*-----------------------------------------------------------*
+ * Coder constant parameters (defined in "cnst.h") *
+ *-----------------------------------------------------------*
+ * L_WINDOW : LPC analysis window size. *
+ * L_NEXT : Samples of next frame needed for autocor. *
+ * L_FRAME : Frame size. *
+ * L_FRAME_BY2 : Half the frame size. *
+ * L_SUBFR : Sub-frame size. *
+ * M : LPC order. *
+ * MP1 : LPC order+1 *
+ * L_TOTAL7k4 : Total size of speech buffer. *
+ * PIT_MIN7k4 : Minimum pitch lag. *
+ * PIT_MAX : Maximum pitch lag. *
+ * L_INTERPOL : Length of filter for interpolation *
+ *-----------------------------------------------------------*/
+ typedef struct
+ {
+ /* Speech vector */
+ Word16 old_speech[L_TOTAL];
+ Word16 *speech, *p_window, *p_window_12k2;
+ Word16 *new_speech; /* Global variable */
+
+ /* Weight speech vector */
+ Word16 old_wsp[L_FRAME + PIT_MAX];
+ Word16 *wsp;
+
+ /* OL LTP states */
+ Word16 old_lags[5];
+ Word16 ol_gain_flg[2];
+
+ /* Excitation vector */
+ Word16 old_exc[L_FRAME + PIT_MAX + L_INTERPOL];
+ Word16 *exc;
+
+ /* Zero vector */
+ Word16 ai_zero[L_SUBFR + MP1];
+ Word16 *zero;
+
+ /* Impulse response vector */
+ Word16 *h1;
+ Word16 hvec[L_SUBFR * 2];
+
+ /* Substates */
+ lpcState *lpcSt;
+ lspState *lspSt;
+ clLtpState *clLtpSt;
+ gainQuantState *gainQuantSt;
+ pitchOLWghtState *pitchOLWghtSt;
+ tonStabState *tonStabSt;
+ vadState *vadSt;
+ Flag dtx;
+ dtx_encState *dtx_encSt;
+
+ /* Filter's memory */
+ Word16 mem_syn[M], mem_w0[M], mem_w[M];
+ Word16 mem_err[M + L_SUBFR], *error;
+
+ Word16 sharp;
+
+ /* Overflow flag */
+ Flag overflow;
+
+ } cod_amrState;
+
+
+ /*----------------------------------------------------------------------------
+ ; GLOBAL FUNCTION DEFINITIONS
+ ; [List function prototypes here]
+ ----------------------------------------------------------------------------*/
+ /*
+ **************************************************************************
+ *
+ * Function : cod_amr_init
+ * Purpose : Allocates memory and initializes state variables
+ * Description : Stores pointer to filter status struct in *st. This
+ * pointer has to be passed to cod_amr in each call.
+ * - initilize pointers to speech buffer
+ * - initialize static pointers
+ * - set static vectors to zero
+ * Returns : 0 on success
+ *
+ **************************************************************************
+ */
+ Word16 cod_amr_init(cod_amrState **st, Flag dtx);
+
+ /*
+ **************************************************************************
+ *
+ * Function : cod_amr_reset
+ * Purpose : Resets state memory
+ * Returns : 0 on success
+ *
+ **************************************************************************
+ */
+ Word16 cod_amr_reset(cod_amrState *st);
+
+ /*
+ **************************************************************************
+ *
+ * Function : cod_amr_exit
+ * Purpose : The memory used for state memory is freed
+ * Description : Stores NULL in *st
+ *
+ **************************************************************************
+ */
+ void cod_amr_exit(cod_amrState **st);
+
+ /***************************************************************************
+ * FUNCTION: cod_amr_first
+ *
+ * PURPOSE: Copes with look-ahead.
+ *
+ * INPUTS:
+ * No input argument are passed to this function. However, before
+ * calling this function, 40 new speech data should be copied to the
+ * vector new_speech[]. This is a global pointer which is declared in
+ * this file (it points to the end of speech buffer minus 200).
+ *
+ ***************************************************************************/
+
+ Word16 cod_amr_first(cod_amrState *st, /* i/o : State struct */
+ Word16 new_speech[] /* i : speech input (L_FRAME) */
+ );
+
+ /***************************************************************************
+ * FUNCTION: cod_amr
+ *
+ * PURPOSE: Main encoder routine.
+ *
+ * DESCRIPTION: This function is called every 20 ms speech frame,
+ * operating on the newly read 160 speech samples. It performs the
+ * principle encoding functions to produce the set of encoded parameters
+ * which include the LSP, adaptive codebook, and fixed codebook
+ * quantization indices (addresses and gains).
+ *
+ * INPUTS:
+ * No input argument are passed to this function. However, before
+ * calling this function, 160 new speech data should be copied to the
+ * vector new_speech[]. This is a global pointer which is declared in
+ * this file (it points to the end of speech buffer minus 160).
+ *
+ * OUTPUTS:
+ *
+ * ana[]: vector of analysis parameters.
+ * synth[]: Local synthesis speech (for debugging purposes)
+ *
+ ***************************************************************************/
+
+ Word16 cod_amr(cod_amrState *st, /* i/o : State struct */
+ enum Mode mode, /* i : AMR mode */
+ Word16 new_speech[], /* i : speech input (L_FRAME) */
+ Word16 ana[], /* o : Analysis parameters */
+ enum Mode *usedMode, /* o : used mode */
+ Word16 synth[] /* o : Local synthesis */
+ );
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _cod_amr_h_ */
+
+
+