12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- /*
- *****************************************************************************
- *
- * 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 : lflg_upd.c
- * Purpose : LTP_flag update for AMR VAD option 2
- *
- *****************************************************************************
- */
- const char lflg_upd_id[] = "@(#)$Id $";
- #include "typedef.h"
- #include "cnst.h"
- #include "basic_op.h"
- #include "oper_32b.h"
- #include "count.h"
- #include "vad2.h"
- #include "mode.h"
- /***************************************************************************
- *
- * FUNCTION NAME: LTP_flag_update
- *
- * PURPOSE:
- * Set LTP_flag if the LTP gain > LTP_THRESHOLD, where the value of
- * LTP_THRESHOLD depends on the LTP analysis window length.
- *
- * INPUTS:
- *
- * mode
- * AMR mode
- * vadState->L_R0
- * LTP energy
- * vadState->L_Rmax
- * LTP maximum autocorrelation
- * OUTPUTS:
- *
- * vadState->LTP_flag
- * Set if LTP gain > LTP_THRESHOLD
- *
- * RETURN VALUE:
- *
- * none
- *
- *************************************************************************/
- void LTP_flag_update (vadState2 * st, Word16 mode)
- {
- Word16 thresh;
- Word16 hi1;
- Word16 lo1;
- Word32 Ltmp;
- test(); test();
- if ((sub_ex(mode, MR475) == 0) || (sub_ex(mode, MR515) == 0))
- {
- thresh = (Word16)(32768.0*0.55); move16();
- }
- else if (sub_ex(mode, MR102) == 0)
- {
- thresh = (Word16)(32768.0*0.60); move16();
- }
- else
- {
- thresh = (Word16)(32768.0*0.65); move16();
- }
- L_Extract (st->L_R0, &hi1, &lo1);
- Ltmp = Mpy_32_16(hi1, lo1, thresh); test();
- if (L_sub_ex(st->L_Rmax, Ltmp) > 0)
- {
- st->LTP_flag = TRUE; move16();
- }
- else
- {
- st->LTP_flag = FALSE; move16();
- }
- return;
- }
|