FreeCalypso > hg > gsm-codec-lib
view libtwamr/dtx_dec.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 | 5a1d18542f8a |
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 : dtx_dec.h * Purpose : Decode comfort noice when in DTX * ***************************************************************************** */ #ifndef dtx_dec_h #define dtx_dec_h "$Id $" /* ***************************************************************************** * INCLUDE FILES ***************************************************************************** */ #include "tw_amr.h" #include "typedef.h" #include "dtx_common.h" #include "d_plsf.h" #include "gc_pred.h" #include "c_g_aver.h" /* ***************************************************************************** * LOCAL VARIABLES AND TABLES ***************************************************************************** */ enum DTXStateType {SPEECH = 0, DTX, DTX_MUTE}; #define DTX_MAX_EMPTY_THRESH 50 /* ***************************************************************************** * DEFINITION OF DATA TYPES ***************************************************************************** */ typedef struct { Word16 since_last_sid; Word16 true_sid_period_inv; Word16 log_en; Word16 old_log_en; Word32 L_pn_seed_rx; Word16 lsp[M]; Word16 lsp_old[M]; Word16 lsf_hist[M*DTX_HIST_SIZE]; Word16 lsf_hist_ptr; Word16 lsf_hist_mean[M*DTX_HIST_SIZE]; Word16 log_pg_mean; Word16 log_en_hist[DTX_HIST_SIZE]; Word16 log_en_hist_ptr; Word16 log_en_adjust; Word16 dtxHangoverCount; Word16 decAnaElapsedCount; Word16 sid_frame; Word16 valid_data; Word16 dtxHangoverAdded; enum DTXStateType dtxGlobalState; /* contains previous state */ /* updated in main decoder */ Word16 data_updated; /* marker to know if CNI data is ever renewed */ } dtx_decState; /* ***************************************************************************** * DECLARATION OF PROTOTYPES ***************************************************************************** */ /* ************************************************************************** * * Function : dtx_dec_reset * Purpose : Resets state memory * Returns : 0 on success * ************************************************************************** */ void dtx_dec_reset (dtx_decState *st); /* ************************************************************************** * * Function : dtx_dec * Purpose : * Description : * ************************************************************************** */ int dtx_dec( dtx_decState *st, /* i/o : State struct */ Word16 mem_syn[], /* i/o : AMR decoder state */ D_plsfState* lsfState, /* i/o : decoder lsf states */ gc_predState* predState, /* i/o : prediction states */ Cb_gain_averageState* averState, /* i/o : CB gain average states */ enum DTXStateType new_state, /* i : new DTX state */ enum Mode mode, /* i : AMR mode */ Word16 parm[], /* i : Vector of synthesis parameters */ Word16 synth[], /* o : synthesised speech */ Word16 A_t[] /* o : decoded LP filter in 4 subframes*/ ); void dtx_dec_activity_update(dtx_decState *st, Word16 lsf[], Word16 frame[]); /* ************************************************************************** * * Function : rx_dtx_handler * Purpose : reads the frame type and checks history * Description : to decide what kind of DTX/CNI action to perform ************************************************************************** */ enum DTXStateType rx_dtx_handler(dtx_decState *st, /* i/o : State struct */ enum RXFrameType frame_type /* i : Frame type */ ); #endif