FreeCalypso > hg > gsm-codec-lib
view libtwamr/gain_q.h @ 477:4c9222d95647
libtwamr encoder: always emit frame->mode = mode;
In the original implementation of amr_encode_frame(), the 'mode' member
of the output struct was set to 0xFF if the output frame type is TX_NO_DATA.
This design was made to mimic the mode field (16-bit word) being set to
0xFFFF (or -1) in 3GPP test sequence format - but nothing actually depends
on this struct member being set in any way, and amr_frame_to_tseq()
generates the needed 0xFFFF on its own, based on frame->type being equal
to TX_NO_DATA.
It is simpler and more efficient to always set frame->mode to the actual
encoding mode in amr_encode_frame(), and this new behavior has already
been documented in doc/AMR-library-API description in anticipation of
the present change.
| author | Mychaela Falconia <falcon@freecalypso.org> |
|---|---|
| date | Sat, 18 May 2024 22:30:42 +0000 |
| parents | ccba5812fa44 |
| 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 : gainQuant.h * Purpose : Quantazation of gains * ******************************************************************************** */ #ifndef gain_q_h #define gain_q_h "$Id $" /* ******************************************************************************** * INCLUDE FILES ******************************************************************************** */ #include "tw_amr.h" #include "typedef.h" #include "gc_pred.h" #include "g_adapt.h" /* ******************************************************************************** * DEFINITION OF DATA TYPES ******************************************************************************** */ typedef struct { Word16 sf0_exp_gcode0; Word16 sf0_frac_gcode0; Word16 sf0_exp_target_en; Word16 sf0_frac_target_en; Word16 sf0_exp_coeff[5]; Word16 sf0_frac_coeff[5]; Word16 *gain_idx_ptr; gc_predState gc_predSt; gc_predState gc_predUnqSt; GainAdaptState adaptSt; } gainQuantState; /* ******************************************************************************** * DECLARATION OF PROTOTYPES ******************************************************************************** */ void gainQuant_reset (gainQuantState *st); /* reset of pre processing state (i.e. set state memory to zero) returns 0 on success */ int gainQuant( gainQuantState *st, /* i/o : State struct */ enum Mode mode, /* i : coder mode */ Word16 res[], /* i : LP residual, Q0 */ Word16 exc[], /* i : LTP excitation (unfiltered), Q0 */ Word16 code[], /* i : CB innovation (unfiltered), Q13 */ /* (unsharpened for MR475) */ Word16 xn[], /* i : Target vector. */ Word16 xn2[], /* i : Target vector. */ Word16 y1[], /* i : Adaptive codebook. */ Word16 Y2[], /* i : Filtered innovative vector. */ Word16 g_coeff[], /* i : Correlations <xn y1> <y1 y1> */ /* Compute in G_pitch(). */ Word16 even_subframe, /* i : even subframe indicator flag */ Word16 gp_limit, /* i : pitch gain limit */ Word16 *sf0_gain_pit, /* o : Pitch gain sf 0. MR475 */ Word16 *sf0_gain_cod, /* o : Code gain sf 0. MR475 */ Word16 *gain_pit, /* i/o : Pitch gain. */ Word16 *gain_cod, /* o : Code gain. */ /* MR475: gain_* unquantized in even */ /* subframes, quantized otherwise */ Word16 **anap /* o : Index of quantization */ ); #endif
