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  Pathname: .audio/gsm-amr/c/src/bitno_tab.c
     32 
     33 ------------------------------------------------------------------------------
     34  REVISION HISTORY
     35 
     36  Description: Define "const Word16 *bitno[N_MODES]" as "const Word16 *const
     37                       bitno[N_MODES]"
     38 
     39  Description: Added #ifdef __cplusplus and removed "extern" from table
     40               definition.
     41 
     42  Description: Put "extern" back.
     43 
     44  Who:                       Date:
     45  Description:
     46 
     47 ------------------------------------------------------------------------------
     48  INPUT AND OUTPUT DEFINITIONS
     49 
     50  Inputs:
     51     None
     52 
     53  Local Stores/Buffers/Pointers Needed:
     54     None
     55 
     56  Global Stores/Buffers/Pointers Needed:
     57     None
     58 
     59  Outputs:
     60     None
     61 
     62  Pointers and Buffers Modified:
     63     None
     64 
     65  Local Stores Modified:
     66     None
     67 
     68  Global Stores Modified:
     69     None
     70 
     71 ------------------------------------------------------------------------------
     72  FUNCTION DESCRIPTION
     73 
     74       File             : bitno.tab
     75       Purpose          : Tables for bit2prm and prm2bit
     76 
     77 ------------------------------------------------------------------------------
     78  REQUIREMENTS
     79 
     80  None
     81 
     82 ------------------------------------------------------------------------------
     83  REFERENCES
     84 
     85  None
     86 
     87 ------------------------------------------------------------------------------
     88  PSEUDO-CODE
     89 
     90 
     91 ------------------------------------------------------------------------------
     92  RESOURCES USED
     93    When the code is written for a specific target processor the
     94      the resources used should be documented below.
     95 
     96  STACK USAGE: [stack count for this module] + [variable to represent
     97           stack usage for each subroutine called]
     98 
     99      where: [stack usage variable] = stack usage for [subroutine
    100          name] (see [filename].ext)
    101 
    102  DATA MEMORY USED: x words
    103 
    104  PROGRAM MEMORY USED: x words
    105 
    106  CLOCK CYCLES: [cycle count equation for this module] + [variable
    107            used to represent cycle count for each subroutine
    108            called]
    109 
    110      where: [cycle count variable] = cycle count for [subroutine
    111         name] (see [filename].ext)
    112 
    113 ------------------------------------------------------------------------------
    114 */
    115 
    116 
    117 /*----------------------------------------------------------------------------
    118 ; INCLUDES
    119 ----------------------------------------------------------------------------*/
    120 #include "typedef.h"
    121 #include "cnst.h"   /* parameter sizes: MAX_PRM_SIZE */
    122 #include "mode.h"   /* N_MODES */
    123 #include "bitno_tab.h"
    124 
    125 
    126 /*--------------------------------------------------------------------------*/
    127 #ifdef __cplusplus
    128 extern "C"
    129 {
    130 #endif
    131 
    132     /*----------------------------------------------------------------------------
    133     ; MACROS
    134     ; Define module specific macros here
    135     ----------------------------------------------------------------------------*/
    136 
    137 
    138     /*----------------------------------------------------------------------------
    139     ; DEFINES
    140     ; Include all pre-processor statements here. Include conditional
    141     ; compile variables also.
    142     ----------------------------------------------------------------------------*/
    143 
    144     /*----------------------------------------------------------------------------
    145     ; LOCAL FUNCTION DEFINITIONS
    146     ; Function Prototype declaration
    147     ----------------------------------------------------------------------------*/
    148 
    149 
    150     /*----------------------------------------------------------------------------
    151     ; LOCAL STORE/BUFFER/POINTER DEFINITIONS
    152     ; Variable declaration - defined here and used outside this module
    153     ----------------------------------------------------------------------------*/
    154     /* number of parameters per modes (values must be <= MAX_PRM_SIZE!) */
    155     const Word16 prmno[N_MODES] =
    156     {
    157         PRMNO_MR475,
    158         PRMNO_MR515,
    159         PRMNO_MR59,
    160         PRMNO_MR67,
    161         PRMNO_MR74,
    162         PRMNO_MR795,
    163         PRMNO_MR102,
    164         PRMNO_MR122,
    165         PRMNO_MRDTX
    166     };
    167 
    168     /* number of parameters to first subframe per modes */
    169     const Word16 prmnofsf[N_MODES - 1] =
    170     {
    171         PRMNOFSF_MR475,
    172         PRMNOFSF_MR515,
    173         PRMNOFSF_MR59,
    174         PRMNOFSF_MR67,
    175         PRMNOFSF_MR74,
    176         PRMNOFSF_MR795,
    177         PRMNOFSF_MR102,
    178         PRMNOFSF_MR122
    179     };
    180 
    181     /* parameter sizes (# of bits), one table per mode */
    182     const Word16 bitno_MR475[PRMNO_MR475] =
    183     {
    184         8, 8, 7,                                 /* LSP VQ          */
    185         8, 7, 2, 8,                              /* first subframe  */
    186         4, 7, 2,                                 /* second subframe */
    187         4, 7, 2, 8,                              /* third subframe  */
    188         4, 7, 2,                                 /* fourth subframe */
    189     };
    190 
    191     const Word16 bitno_MR515[PRMNO_MR515] =
    192     {
    193         8, 8, 7,                                 /* LSP VQ          */
    194         8, 7, 2, 6,                              /* first subframe  */
    195         4, 7, 2, 6,                              /* second subframe */
    196         4, 7, 2, 6,                              /* third subframe  */
    197         4, 7, 2, 6,                              /* fourth subframe */
    198     };
    199 
    200     const Word16 bitno_MR59[PRMNO_MR59] =
    201     {
    202         8, 9, 9,                                 /* LSP VQ          */
    203         8, 9, 2, 6,                              /* first subframe  */
    204         4, 9, 2, 6,                              /* second subframe */
    205         8, 9, 2, 6,                              /* third subframe  */
    206         4, 9, 2, 6,                              /* fourth subframe */
    207     };
    208 
    209     const Word16 bitno_MR67[PRMNO_MR67] =
    210     {
    211         8, 9, 9,                                 /* LSP VQ          */
    212         8, 11, 3, 7,                             /* first subframe  */
    213         4, 11, 3, 7,                             /* second subframe */
    214         8, 11, 3, 7,                             /* third subframe  */
    215         4, 11, 3, 7,                             /* fourth subframe */
    216     };
    217 
    218     const Word16 bitno_MR74[PRMNO_MR74] =
    219     {
    220         8, 9, 9,                                 /* LSP VQ          */
    221         8, 13, 4, 7,                             /* first subframe  */
    222         5, 13, 4, 7,                             /* second subframe */
    223         8, 13, 4, 7,                             /* third subframe  */
    224         5, 13, 4, 7,                             /* fourth subframe */
    225     };
    226 
    227     const Word16 bitno_MR795[PRMNO_MR795] =
    228     {
    229         9, 9, 9,                                 /* LSP VQ          */
    230         8, 13, 4, 4, 5,                          /* first subframe  */
    231         6, 13, 4, 4, 5,                          /* second subframe */
    232         8, 13, 4, 4, 5,                          /* third subframe  */
    233         6, 13, 4, 4, 5,                          /* fourth subframe */
    234     };
    235 
    236     const Word16 bitno_MR102[PRMNO_MR102] =
    237     {
    238         8, 9, 9,                                 /* LSP VQ          */
    239         8, 1, 1, 1, 1, 10, 10, 7, 7,             /* first subframe  */
    240         5, 1, 1, 1, 1, 10, 10, 7, 7,             /* second subframe */
    241         8, 1, 1, 1, 1, 10, 10, 7, 7,             /* third subframe  */
    242         5, 1, 1, 1, 1, 10, 10, 7, 7,             /* fourth subframe */
    243     };
    244 
    245     const Word16 bitno_MR122[PRMNO_MR122] =
    246     {
    247         7, 8, 9, 8, 6,                           /* LSP VQ          */
    248         9, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 5,   /* first subframe  */
    249         6, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 5,   /* second subframe */
    250         9, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 5,   /* third subframe  */
    251         6, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 5    /* fourth subframe */
    252     };
    253 
    254     const Word16 bitno_MRDTX[PRMNO_MRDTX] =
    255     {
    256         3,
    257         8, 9, 9,
    258         6
    259     };
    260 
    261     /* overall table with all parameter sizes for all modes */
    262     const Word16 * const bitno[N_MODES] =
    263     {
    264         bitno_MR475,
    265         bitno_MR515,
    266         bitno_MR59,
    267         bitno_MR67,
    268         bitno_MR74,
    269         bitno_MR795,
    270         bitno_MR102,
    271         bitno_MR122,
    272         bitno_MRDTX
    273     };
    274     /*----------------------------------------------------------------------------
    275     ; EXTERNAL FUNCTION REFERENCES
    276     ; Declare functions defined elsewhere and referenced in this module
    277     ----------------------------------------------------------------------------*/
    278 
    279 
    280     /*----------------------------------------------------------------------------
    281     ; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
    282     ; Declare variables used in this module but defined elsewhere
    283     ----------------------------------------------------------------------------*/
    284 
    285 
    286     /*--------------------------------------------------------------------------*/
    287 #ifdef __cplusplus
    288 }
    289 #endif
    290 
    291 /*----------------------------------------------------------------------------
    292 ; FUNCTION CODE
    293 ----------------------------------------------------------------------------*/
    294 
    295 /*----------------------------------------------------------------------------
    296 ; Define all local variables
    297 ----------------------------------------------------------------------------*/
    298 
    299 
    300 /*----------------------------------------------------------------------------
    301 ; Function body here
    302 ----------------------------------------------------------------------------*/
    303 
    304 
    305 /*----------------------------------------------------------------------------
    306 ; Return nothing or data or data pointer
    307 ----------------------------------------------------------------------------*/
    308 
    309 
    310