view libtwamr/d_gain_p.c @ 340:e18452a4fbac

libtwamr: integrate d_gain_p.c
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 18 Apr 2024 23:45:25 +0000
parents
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             : d_gain_p.c
*
********************************************************************************
*/
 
 
/*
********************************************************************************
*                         MODULE INCLUDE FILE AND VERSION ID
********************************************************************************
*/
#include "namespace.h"
#include "d_gain_p.h"
 
/*
********************************************************************************
*                         INCLUDE FILES
********************************************************************************
*/
#include "tw_amr.h"
#include "typedef.h"
#include "basic_op.h"
#include "oper_32b.h"
#include "no_count.h"
#include "cnst.h"
#include "gains_tab.h"

/*
********************************************************************************
*                         PUBLIC PROGRAM CODE
********************************************************************************
*/

/*
**************************************************************************
*
*  Function    : d_gain_pitch
*  Purpose     : Decodes the pitch gain using the received index.
*                output is in Q14 
*
**************************************************************************
*/
Word16 d_gain_pitch (      /* return value: gain (Q14)                */
    enum Mode mode,        /* i   : AMR mode                          */   
    Word16 index           /* i   : index of quantization             */
)
{
    Word16 gain;

    test ();
    if (sub(mode, MR122) == 0)
    {
       /* clear 2 LSBits */
       gain = shl (shr (qua_gain_pitch[index], 2), 2);    move16 ();
    }
    else
    {
       gain = qua_gain_pitch[index];                      move16 (); 
    }
    
    return gain;
}