FreeCalypso > hg > gsm-codec-lib
view libtwamr/agc.h @ 441:ebe499058c63
libtwamr: implement API functions for RFC 4867 I/O
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 09 May 2024 07:06:31 +0000 |
parents | 6b33f3ba4289 |
children |
line wrap: on
line source
/* ***************************************************************************** * * 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 : agc.h * Purpose : Scales the postfilter output on a subframe basis * : by automatic control of the subframe gain. * ***************************************************************************** */ #ifndef agc_h #define agc_h "$Id $" /* ***************************************************************************** * INCLUDE FILES ***************************************************************************** */ #include "typedef.h" /* ***************************************************************************** * DEFINITION OF DATA TYPES ***************************************************************************** */ typedef struct { Word16 past_gain; } agcState; /* ***************************************************************************** * DECLARATION OF PROTOTYPES ***************************************************************************** */ /* ************************************************************************** * * Function : agc_reset * Purpose : Reset of agc (i.e. set state memory to 1.0) * Returns : 0 on success * ************************************************************************** */ void agc_reset (agcState *st); /* ************************************************************************** * * Function : agc * Purpose : Scales the postfilter output on a subframe basis * Description : sig_out[n] = sig_out[n] * gain[n]; * where gain[n] is the gain at the nth sample given by * gain[n] = agc_fac * gain[n-1] + (1 - agc_fac) g_in/g_out * g_in/g_out is the square root of the ratio of energy at * the input and output of the postfilter. * ************************************************************************** */ int agc ( agcState *st, /* i/o : agc state */ Word16 *sig_in, /* i : postfilter input signal, (l_trm) */ Word16 *sig_out, /* i/o : postfilter output signal, (l_trm) */ Word16 agc_fac, /* i : AGC factor */ Word16 l_trm /* i : subframe size */ ); /* ************************************************************************** * * Function: agc2 * Purpose: Scales the excitation on a subframe basis * ************************************************************************** */ void agc2 ( Word16 *sig_in, /* i : postfilter input signal */ Word16 *sig_out, /* i/o : postfilter output signal */ Word16 l_trm /* i : subframe size */ ); #endif