diff libtwamr/cod_amr.h @ 418:93d6c6960a46

libtwamr: integrate cod_amr.c
author Mychaela Falconia <falcon@freecalypso.org>
date Tue, 07 May 2024 03:50:25 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libtwamr/cod_amr.h	Tue May 07 03:50:25 2024 +0000
@@ -0,0 +1,165 @@
+/*
+*****************************************************************************
+*
+*      GSM AMR-NB speech codec   R98   Version 7.6.0   December 12, 2001
+*                                R99   Version 3.3.0                
+*                                REL-4 Version 4.1.0                
+*
+*****************************************************************************
+*
+*      File             : cod_amr.h
+*      Purpose          : Main encoder routine operating on a frame basis.
+*
+*****************************************************************************
+*/
+#ifndef cod_amr_h
+#define cod_amr_h "$Id $"
+
+/*
+*****************************************************************************
+*                         INCLUDE FILES
+*****************************************************************************
+*/
+#include "tw_amr.h"
+#include "typedef.h"
+#include "cnst.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"
+ 
+/*
+*****************************************************************************
+*                         DEFINITION OF DATA TYPES
+*****************************************************************************
+*/
+/*-----------------------------------------------------------*
+ *    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;
+} cod_amrState;
+
+/*
+********************************************************************************
+*                         DECLARATION OF PROTOTYPES
+********************************************************************************
+*/
+
+/*
+**************************************************************************
+*
+*  Function    : cod_amr_reset
+*  Purpose     : Resets state memory
+*  Returns     : 0 on success
+*
+**************************************************************************
+*/
+void cod_amr_reset (cod_amrState *st, Flag dtx, Flag use_vad2);
+
+/***************************************************************************
+ *   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).
+ *
+ ***************************************************************************/
+ 
+int 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)
+ *
+ ***************************************************************************/
+
+int 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              */
+);
+
+#endif