Home | History | Annotate | Download | only in src
      1 /* ------------------------------------------------------------------
      2  * Copyright (C) 1998-2009 PacketVideo
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
     13  * express or implied.
     14  * See the License for the specific language governing permissions
     15  * and limitations under the License.
     16  * -------------------------------------------------------------------
     17  */
     18 /****************************************************************************************
     19 Portions of this file are derived from the following 3GPP standard:
     20 
     21     3GPP TS 26.073
     22     ANSI-C code for the Adaptive Multi-Rate (AMR) speech codec
     23     Available from http://www.3gpp.org
     24 
     25 (C) 2004, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC)
     26 Permission to distribute, modify and use this file under the standard license
     27 terms listed above has been obtained from the copyright holder.
     28 ****************************************************************************************/
     29 /*
     30 ------------------------------------------------------------------------------
     31 
     32 
     33 
     34  Filename: /audio/gsm_amr/c/include/dec_amr.h
     35 
     36      Date: 02/06/2002
     37 
     38 ------------------------------------------------------------------------------
     39  REVISION HISTORY
     40 
     41  Description: Update function prototype for Decoder_amr(). Include overflow
     42               flag in Decode_amrState structure
     43 
     44  Description:  Replaced "int" and/or "char" with OSCL defined types.
     45 
     46  Description: Moved _cplusplus #ifdef after Include section.
     47 
     48  Description:
     49 
     50 ------------------------------------------------------------------------------
     51  INCLUDE DESCRIPTION
     52 
     53      File             : dec_amr.h
     54      Purpose          : Speech decoder routine.
     55 
     56 ------------------------------------------------------------------------------
     57 */
     58 
     59 /*----------------------------------------------------------------------------
     60 ; CONTINUE ONLY IF NOT ALREADY DEFINED
     61 ----------------------------------------------------------------------------*/
     62 #ifndef DEC_AMR_H
     63 #define DEC_AMR_H "$Id $"
     64 
     65 /*----------------------------------------------------------------------------
     66 ; INCLUDES
     67 ----------------------------------------------------------------------------*/
     68 #include "typedef.h"
     69 #include "cnst.h"
     70 #include "mode.h"
     71 #include "dtx_dec.h"
     72 #include "d_plsf.h"
     73 #include "gc_pred.h"
     74 #include "ec_gains.h"
     75 #include "ph_disp.h"
     76 #include "c_g_aver.h"
     77 #include "bgnscd.h"
     78 #include "lsp_avg.h"
     79 #include "frame.h"
     80 
     81 /*--------------------------------------------------------------------------*/
     82 #ifdef __cplusplus
     83 extern "C"
     84 {
     85 #endif
     86 
     87     /*----------------------------------------------------------------------------
     88     ; MACROS
     89     ; Define module specific macros here
     90     ----------------------------------------------------------------------------*/
     91 
     92     /*----------------------------------------------------------------------------
     93     ; DEFINES
     94     ; Include all pre-processor statements here.
     95     ----------------------------------------------------------------------------*/
     96 #define EXC_ENERGY_HIST_LEN  9
     97 #define LTP_GAIN_HISTORY_LEN 9
     98     /*----------------------------------------------------------------------------
     99     ; EXTERNAL VARIABLES REFERENCES
    100     ; Declare variables used in this module but defined elsewhere
    101     ----------------------------------------------------------------------------*/
    102 
    103     /*----------------------------------------------------------------------------
    104     ; SIMPLE TYPEDEF'S
    105     ----------------------------------------------------------------------------*/
    106 
    107     /*----------------------------------------------------------------------------
    108     ; ENUMERATED TYPEDEF'S
    109     ----------------------------------------------------------------------------*/
    110 
    111     /*----------------------------------------------------------------------------
    112     ; STRUCTURES TYPEDEF'S
    113     ----------------------------------------------------------------------------*/
    114     typedef struct Decoder_amrState
    115     {
    116         /* Excitation vector */
    117         Word16 old_exc[L_SUBFR + PIT_MAX + L_INTERPOL];
    118         Word16 *exc;
    119 
    120         /* Lsp (Line spectral pairs) */
    121         /* Word16 lsp[M]; */      /* Used by CN codec */
    122         Word16 lsp_old[M];
    123 
    124         /* Filter's memory */
    125         Word16 mem_syn[M];
    126 
    127         /* pitch sharpening */
    128         Word16 sharp;
    129         Word16 old_T0;
    130 
    131         /* Memories for bad frame handling */
    132         Word16 prev_bf;
    133         Word16 prev_pdf;
    134         Word16 state;
    135         Word16 excEnergyHist[EXC_ENERGY_HIST_LEN];
    136 
    137         /* Variable holding received ltpLag, used in background noise and BFI */
    138         Word16 T0_lagBuff;
    139 
    140         /* Variables for the source characteristic detector (SCD) */
    141         Word16 inBackgroundNoise;
    142         Word16 voicedHangover;
    143         Word16 ltpGainHistory[LTP_GAIN_HISTORY_LEN];
    144 
    145         Bgn_scdState background_state;
    146         Word16 nodataSeed;
    147 
    148         Cb_gain_averageState Cb_gain_averState;
    149         lsp_avgState lsp_avg_st;
    150 
    151         D_plsfState lsfState;
    152         ec_gain_pitchState ec_gain_p_st;
    153         ec_gain_codeState ec_gain_c_st;
    154         gc_predState pred_state;
    155         ph_dispState ph_disp_st;
    156         dtx_decState dtxDecoderState;
    157         Flag overflow;
    158     } Decoder_amrState;
    159 
    160     /*----------------------------------------------------------------------------
    161     ; GLOBAL FUNCTION DEFINITIONS
    162     ; Function Prototype declaration
    163     ----------------------------------------------------------------------------*/
    164     /*
    165      *  Function    : Decoder_amr_init
    166      *  Purpose     : Allocates initializes state memory
    167      *  Description : Stores pointer to filter status struct in *st. This
    168      *                pointer has to be passed to Decoder_amr in each call.
    169      *  Returns     : 0 on success
    170      */
    171     Word16 Decoder_amr_init(Decoder_amrState *st);
    172 
    173     /*
    174      *  Function    : Decoder_amr_reset
    175      *  Purpose     : Resets state memory
    176      *  Returns     : 0 on success
    177      */
    178     Word16 Decoder_amr_reset(Decoder_amrState *st, enum Mode mode);
    179 
    180     /*
    181      *  Function    : Decoder_amr
    182      *  Purpose     : Speech decoder routine.
    183      *  Returns     : 0
    184      */
    185     void Decoder_amr(
    186         Decoder_amrState *st,  /* i/o : State variables                       */
    187         enum Mode mode,        /* i   : AMR mode                              */
    188         Word16 parm[],         /* i   : vector of synthesis parameters
    189                                     (PRM_SIZE)                            */
    190         enum RXFrameType frame_type, /* i   : received frame type               */
    191         Word16 synth[],        /* o   : synthesis speech (L_FRAME)            */
    192         Word16 A_t[]           /* o   : decoded LP filter in 4 subframes
    193                                     (AZ_SIZE)                             */
    194     );
    195 
    196     /*----------------------------------------------------------------------------
    197     ; END
    198     ----------------------------------------------------------------------------*/
    199 #ifdef __cplusplus
    200 }
    201 #endif
    202 
    203 #endif /* DEC_AMR_H_ */
    204 
    205 
    206 
    207