FreeCalypso > hg > gsm-codec-lib
view libtwamr/g_adapt.h @ 605:63f774192906
gsmhr_decoder_twts002_in(): set BFI=1 SID=1 for invalid SID
When a received TW-TS-002 RTP payload indicates invalid SID,
which of the 3 possible BFI/SID combinations should we pass to
our internal ETSI-based speech decoder or TFO engine?
Our original code passed BFI=0 SID=1, but upon further reflection,
BFI=1 SID=1 is a better choice. In the corner case where received
invalid SID is fed to a full decoder in homed state, setting BFI=1
allows that decoder to emit zeros on PCM and stay homed, instead of
launching into full decoding.
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Thu, 04 Dec 2025 21:01:46 +0000 |
| parents | 2a265be82195 |
| 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 : g_adapt.h * Purpose : gain adaptation for MR795 gain quantization * ******************************************************************************** */ /* ******************************************************************************** * MODULE INCLUDE FILE AND VERSION ID ******************************************************************************** */ #ifndef g_adapt_h #define g_adapt_h "$Id $" /* ******************************************************************************** * INCLUDE FILES ******************************************************************************** */ #include "typedef.h" #define LTPG_MEM_SIZE 5 /* number of stored past LTP coding gains + 1 */ /* ******************************************************************************** * DEFINITION OF DATA TYPES ******************************************************************************** */ typedef struct { Word16 onset; /* onset state, Q0 */ Word16 prev_alpha; /* previous adaptor output, Q15 */ Word16 prev_gc; /* previous code gain, Q1 */ Word16 ltpg_mem[LTPG_MEM_SIZE]; /* LTP coding gain history, Q13 */ /* (ltpg_mem[0] not used for history) */ } GainAdaptState; /* ******************************************************************************** * DECLARATION OF PROTOTYPES ******************************************************************************** */ void gain_adapt_reset (GainAdaptState *st); /* reset of gain adaptor state (i.e. set state memory to zero) returns 0 on success */ /************************************************************************* * * Function: gain_adapt() * Purpose: calculate pitch/codebook gain adaptation factor alpha * (and update the adaptor state) * ************************************************************************** */ void gain_adapt( GainAdaptState *st, /* i : state struct */ Word16 ltpg, /* i : ltp coding gain (log2()), Q */ Word16 gain_cod, /* i : code gain, Q13 */ Word16 *alpha /* o : gain adaptation factor, Q15 */ ); #endif
