Home | History | Annotate | Download | only in include
      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  Filename: /audio/gsm_amr/c/src/include/gc_pred.h
     32 
     33 ------------------------------------------------------------------------------
     34  REVISION HISTORY
     35 
     36  Description:  Replaced "int" and/or "char" with OSCL defined types.
     37 
     38  Description: Moved _cplusplus #ifdef after Include section.
     39 
     40  Who:                       Date:
     41  Description:
     42 
     43 ------------------------------------------------------------------------------
     44  INCLUDE DESCRIPTION
     45 
     46       File             : gc_pred.h
     47       Purpose          : codebook gain MA prediction
     48 
     49 ------------------------------------------------------------------------------
     50 */
     51 
     52 #ifndef _GC_PRED_H_
     53 #define _GC_PRED_H_
     54 #define gc_pred_h "$Id $"
     55 
     56 /*----------------------------------------------------------------------------
     57 ; INCLUDES
     58 ----------------------------------------------------------------------------*/
     59 #include "typedef.h"
     60 #include "mode.h"
     61 
     62 
     63 /*--------------------------------------------------------------------------*/
     64 #ifdef __cplusplus
     65 extern "C"
     66 {
     67 #endif
     68 
     69     /*----------------------------------------------------------------------------
     70     ; MACROS
     71     ; [Define module specific macros here]
     72     ----------------------------------------------------------------------------*/
     73 
     74     /*----------------------------------------------------------------------------
     75     ; DEFINES
     76     ; [Include all pre-processor statements here.]
     77     ----------------------------------------------------------------------------*/
     78 
     79     /*----------------------------------------------------------------------------
     80     ; EXTERNAL VARIABLES REFERENCES
     81     ; [Declare variables used in this module but defined elsewhere]
     82     ----------------------------------------------------------------------------*/
     83 
     84     /*----------------------------------------------------------------------------
     85     ; SIMPLE TYPEDEF'S
     86     ----------------------------------------------------------------------------*/
     87 
     88     /*----------------------------------------------------------------------------
     89     ; ENUMERATED TYPEDEF'S
     90     ----------------------------------------------------------------------------*/
     91 
     92     /*----------------------------------------------------------------------------
     93     ; STRUCTURES TYPEDEF'S
     94     ----------------------------------------------------------------------------*/
     95     typedef struct
     96     {
     97         Word16 past_qua_en[4];         /* normal MA predictor memory,         Q10 */
     98         /* (contains 20*log10(qua_err))            */
     99         Word16 past_qua_en_MR122[4];   /* MA predictor memory for MR122 mode, Q10 */
    100         /* (contains log2(qua_err))                */
    101     } gc_predState;
    102 
    103     /*----------------------------------------------------------------------------
    104     ; GLOBAL FUNCTION DEFINITIONS
    105     ; [List function prototypes here]
    106     ----------------------------------------------------------------------------*/
    107 
    108     Word16 gc_pred_reset(gc_predState *st);
    109     /* reset of codebook gain MA predictor state (i.e. set state memory to zero)
    110        returns 0 on success
    111      */
    112     void gc_pred_exit(gc_predState **st);
    113     /* de-initialize codebook gain MA predictor state (i.e. free state struct)
    114        stores NULL in *st
    115      */
    116 
    117     void
    118     gc_pred_copy(
    119         gc_predState *st_src,  /* i : State struct                           */
    120         gc_predState *st_dest  /* o : State struct                           */
    121     );
    122 
    123     /*
    124      * FUNCTION:  gc_pred()
    125      * PURPOSE: MA prediction of the innovation energy
    126      *          (in dB/(20*log10(2))) with mean  removed).
    127      */
    128     void gc_pred(
    129         gc_predState *st,   /* i/o: State struct                           */
    130         enum Mode mode,     /* i  : AMR mode                               */
    131         Word16 *code,       /* i  : innovative codebook vector (L_SUBFR)   */
    132         /*      MR122: Q12, other modes: Q13           */
    133         Word16 *exp_gcode0, /* o  : exponent of predicted gain factor, Q0  */
    134         Word16 *frac_gcode0,/* o  : fraction of predicted gain factor  Q15 */
    135         Word16 *exp_en,     /* o  : exponent of innovation energy,     Q0  */
    136         /*      (only calculated for MR795)            */
    137         Word16 *frac_en,    /* o  : fraction of innovation energy,     Q15 */
    138         /*      (only calculated for MR795)            */
    139         Flag   *pOverflow
    140     );
    141 
    142     /*
    143      * FUNCTION:  gc_pred_update()
    144      * PURPOSE: update MA predictor with last quantized energy
    145      */
    146     void gc_pred_update(
    147         gc_predState *st,      /* i/o: State struct                     */
    148         Word16 qua_ener_MR122, /* i  : quantized energy for update, Q10 */
    149         /*      (log2(qua_err))                  */
    150         Word16 qua_ener        /* i  : quantized energy for update, Q10 */
    151         /*      (20*log10(qua_err))              */
    152     );
    153 
    154     /*
    155      * FUNCTION:  gc_pred_average_limited()
    156      * PURPOSE: get average of MA predictor state values (with a lower limit)
    157      *          [used in error concealment]
    158      */
    159     void gc_pred_average_limited(
    160         gc_predState *st,       /* i: State struct                    */
    161         Word16 *ener_avg_MR122, /* o: averaged quantized energy,  Q10 */
    162         /*    (log2(qua_err))                 */
    163         Word16 *ener_avg,       /* o: averaged quantized energy,  Q10 */
    164         /*    (20*log10(qua_err))             */
    165         Flag   *pOverflow
    166     );
    167 
    168 
    169 #ifdef __cplusplus
    170 }
    171 #endif
    172 
    173 #endif  /* _GC_PRED_H_ */
    174 
    175 
    176 
    177