FreeCalypso > hg > gsm-codec-lib
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