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/ph_disp.h
     35 
     36 
     37      Date: 08/11/2000
     38 
     39 ------------------------------------------------------------------------------
     40  REVISION HISTORY
     41 
     42  Description: Updated template. Updated function prototype declaration for
     43               ph_disp(). Included extern declaration for ph_imp_low_MR795 and
     44               ph_imp_mid_MR795
     45 
     46  Description:  Replaced "int" and/or "char" with OSCL defined types.
     47 
     48  Description: Moved _cplusplus #ifdef after Include section.
     49 
     50  Description:
     51 
     52 
     53 ------------------------------------------------------------------------------
     54  INCLUDE DESCRIPTION
     55 
     56  This file contains all the constant definitions and prototype definitions
     57  needed by the Phase dispersion of excitation signal ph_disp() function.
     58 
     59 ------------------------------------------------------------------------------
     60 */
     61 
     62 #ifndef PH_DISP_H
     63 #define PH_DISP_H "$Id $"
     64 
     65 /*----------------------------------------------------------------------------
     66 ; INCLUDES
     67 ----------------------------------------------------------------------------*/
     68 #include    "typedef.h"
     69 #include    "mode.h"
     70 
     71 /*--------------------------------------------------------------------------*/
     72 #ifdef __cplusplus
     73 extern "C"
     74 {
     75 #endif
     76 
     77     /*----------------------------------------------------------------------------
     78     ; MACROS
     79     ; Define module specific macros here
     80     ----------------------------------------------------------------------------*/
     81 
     82     /*----------------------------------------------------------------------------
     83     ; DEFINES
     84     ; Include all pre-processor statements here.
     85     ----------------------------------------------------------------------------*/
     86 #define PHDGAINMEMSIZE 5
     87 #define PHDTHR1LTP     9830  /* 0.6 in Q14 */
     88 #define PHDTHR2LTP     14746 /* 0.9 in Q14 */
     89 #define ONFACTPLUS1    16384 /* 2.0 in Q13   */
     90 #define ONLENGTH 2
     91 
     92     /*----------------------------------------------------------------------------
     93     ; EXTERNAL VARIABLES REFERENCES
     94     ; Declare variables used in this module but defined elsewhere
     95     ----------------------------------------------------------------------------*/
     96     extern Word16 ph_imp_low_MR795[];
     97     extern Word16 ph_imp_mid_MR795[];
     98     extern Word16 ph_imp_low[];
     99     extern Word16 ph_imp_mid[];
    100 
    101     /*----------------------------------------------------------------------------
    102     ; SIMPLE TYPEDEF'S
    103     ----------------------------------------------------------------------------*/
    104 
    105     /*----------------------------------------------------------------------------
    106     ; ENUMERATED TYPEDEF'S
    107     ----------------------------------------------------------------------------*/
    108 
    109     /*----------------------------------------------------------------------------
    110     ; STRUCTURES TYPEDEF'S
    111     ----------------------------------------------------------------------------*/
    112     typedef struct
    113     {
    114         Word16 gainMem[PHDGAINMEMSIZE];
    115         Word16 prevState;
    116         Word16 prevCbGain;
    117         Word16 lockFull;
    118         Word16 onset;
    119     } ph_dispState;
    120 
    121     /*----------------------------------------------------------------------------
    122     ; GLOBAL FUNCTION DEFINITIONS
    123     ; Function Prototype declaration
    124     ----------------------------------------------------------------------------*/
    125 
    126     /*----------------------------------------------------------------------------
    127     ;
    128     ;  Function:   ph_disp_reset
    129     ;  Purpose:    Initializes state memory
    130     ;
    131     ----------------------------------------------------------------------------*/
    132     Word16 ph_disp_reset(ph_dispState *state);
    133 
    134     /*----------------------------------------------------------------------------
    135     ;
    136     ;  Function:   ph_disp_exit
    137     ;  Purpose:    The memory used for state memory is freed
    138     ;
    139     ----------------------------------------------------------------------------*/
    140     void ph_disp_exit(ph_dispState **state);
    141 
    142     /*----------------------------------------------------------------------------
    143     ;
    144     ;  Function:   ph_disp_lock
    145     ;  Purpose:    mark phase dispersion as locked in state struct
    146     ;
    147     ----------------------------------------------------------------------------*/
    148     void ph_disp_lock(ph_dispState *state);
    149 
    150     /*----------------------------------------------------------------------------
    151     ;
    152     ;  Function:   ph_disp_release
    153     ;  Purpose:    mark phase dispersion as unlocked in state struct
    154     ;
    155     ----------------------------------------------------------------------------*/
    156 
    157     void ph_disp_release(ph_dispState *state);
    158 
    159     /*----------------------------------------------------------------------------
    160     ;
    161     ;  Function:   ph_disp
    162     ;  Purpose:    perform phase dispersion according to the specified codec
    163     ;              mode and computes total excitation for synthesis part
    164     ;              if decoder
    165     ;
    166     ----------------------------------------------------------------------------*/
    167 
    168     void ph_disp(
    169         ph_dispState *state,    /* i/o     : State struct                       */
    170         enum Mode mode,         /* i       : codec mode                         */
    171         Word16 x[],             /* i/o Q0  : in:  LTP excitation signal         */
    172         /*           out: total excitation signal       */
    173         Word16 cbGain,          /* i   Q1  : Codebook gain                      */
    174         Word16 ltpGain,         /* i   Q14 : LTP gain                           */
    175         Word16 inno[],          /* i/o Q13 : Innovation vector (Q12 for 12.2)   */
    176         Word16 pitch_fac,       /* i   Q14 : pitch factor used to scale the
    177                                          LTP excitation (Q13 for 12.2)      */
    178         Word16 tmp_shift,       /* i   Q0  : shift factor applied to sum of
    179                                          scaled LTP ex & innov. before
    180                                          rounding                           */
    181         Flag   *pOverflow       /* i/o     : oveflow indicator                  */
    182     );
    183 
    184     /*----------------------------------------------------------------------------
    185     ; END
    186     ----------------------------------------------------------------------------*/
    187 #ifdef __cplusplus
    188 }
    189 #endif
    190 
    191 #endif /* _PH_DISP_H_ */
    192 
    193