diff libtwamr/gc_pred.h @ 336:7f99b8ed30e5

libtwamr: integrate gc_pred.c
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 18 Apr 2024 23:02:35 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/libtwamr/gc_pred.h	Thu Apr 18 23:02:35 2024 +0000
@@ -0,0 +1,114 @@
+/*
+********************************************************************************
+*
+*      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             : gc_pred.h
+*      Purpose          : codebook gain MA prediction
+*
+********************************************************************************
+*/
+
+#ifndef gc_pred_h
+#define gc_pred_h "$Id $"
+ 
+/*
+********************************************************************************
+*                         INCLUDE FILES
+********************************************************************************
+*/
+#include "tw_amr.h"
+#include "typedef.h"
+
+/*
+********************************************************************************
+*                         LOCAL VARIABLES AND TABLES
+********************************************************************************
+*/
+ 
+/*
+********************************************************************************
+*                         DEFINITION OF DATA TYPES
+********************************************************************************
+*/
+typedef struct {
+   Word16 past_qua_en[4];         /* normal MA predictor memory,         Q10 */
+                                  /* (contains 20*log10(qua_err))            */
+   Word16 past_qua_en_MR122[4];   /* MA predictor memory for MR122 mode, Q10 */
+                                  /* (contains log2(qua_err))                */
+} gc_predState;
+ 
+/*
+********************************************************************************
+*                         DECLARATION OF PROTOTYPES
+********************************************************************************
+*/
+ 
+void gc_pred_reset (gc_predState *st);
+/* reset of codebook gain MA predictor state (i.e. set state memory to zero)
+   returns 0 on success
+ */
+
+void
+gc_pred_copy(
+    gc_predState *st_src,  /* i : State struct                           */
+    gc_predState *st_dest  /* o : State struct                           */
+);
+
+/*************************************************************************
+ *
+ * FUNCTION:  gc_pred()
+ *
+ * PURPOSE: MA prediction of the innovation energy
+ *          (in dB/(20*log10(2))) with mean  removed).
+ *
+ *************************************************************************/
+void gc_pred(
+    gc_predState *st,   /* i/o: State struct                           */
+    enum Mode mode,     /* i  : AMR mode                               */
+    Word16 *code,       /* i  : innovative codebook vector (L_SUBFR)   */
+                        /*      MR122: Q12, other modes: Q13           */
+    Word16 *exp_gcode0, /* o  : exponent of predicted gain factor, Q0  */
+    Word16 *frac_gcode0,/* o  : fraction of predicted gain factor  Q15 */
+    Word16 *exp_en,     /* o  : exponent of innovation energy,     Q0  */
+                        /*      (only calculated for MR795)            */
+    Word16 *frac_en     /* o  : fraction of innovation energy,     Q15 */
+                        /*      (only calculated for MR795)            */
+);
+
+/*************************************************************************
+ *
+ * FUNCTION:  gc_pred_update()
+ *
+ * PURPOSE: update MA predictor with last quantized energy
+ *
+ *************************************************************************/
+void gc_pred_update(
+    gc_predState *st,      /* i/o: State struct                     */
+    Word16 qua_ener_MR122, /* i  : quantized energy for update, Q10 */
+                           /*      (log2(qua_err))                  */
+    Word16 qua_ener        /* i  : quantized energy for update, Q10 */
+                           /*      (20*log10(qua_err))              */
+);
+
+/*************************************************************************
+ *
+ * FUNCTION:  gc_pred_average_limited()
+ *
+ * PURPOSE: get average of MA predictor state values (with a lower limit)
+ *          [used in error concealment]
+ *
+ *************************************************************************/
+void gc_pred_average_limited(
+    gc_predState *st,       /* i: State struct                    */
+    Word16 *ener_avg_MR122, /* o: averaged quantized energy,  Q10 */
+                            /*    (log2(qua_err))                 */
+    Word16 *ener_avg        /* o: averaged quantized energy,  Q10 */
+                            /*    (20*log10(qua_err))             */
+);
+
+#endif