LCOV - code coverage report
Current view: top level - lib_com - bitstream.c (source / functions) Hit Total Coverage
Test: Coverage on main -- dec/rend @ 6c320724ac154bae0b720af82641e0df71ffdfc7 Lines: 233 826 28.2 %
Date: 2025-07-01 04:22:09 Functions: 11 26 42.3 %

          Line data    Source code
       1             : /******************************************************************************************************
       2             : 
       3             :    (C) 2022-2025 IVAS codec Public Collaboration with portions copyright Dolby International AB, Ericsson AB,
       4             :    Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
       5             :    Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
       6             :    Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
       7             :    contributors to this repository. All Rights Reserved.
       8             : 
       9             :    This software is protected by copyright law and by international treaties.
      10             :    The IVAS codec Public Collaboration consisting of Dolby International AB, Ericsson AB,
      11             :    Fraunhofer-Gesellschaft zur Foerderung der angewandten Forschung e.V., Huawei Technologies Co. LTD.,
      12             :    Koninklijke Philips N.V., Nippon Telegraph and Telephone Corporation, Nokia Technologies Oy, Orange,
      13             :    Panasonic Holdings Corporation, Qualcomm Technologies, Inc., VoiceAge Corporation, and other
      14             :    contributors to this repository retain full ownership rights in their respective contributions in
      15             :    the software. This notice grants no license of any kind, including but not limited to patent
      16             :    license, nor is any license granted by implication, estoppel or otherwise.
      17             : 
      18             :    Contributors are required to enter into the IVAS codec Public Collaboration agreement before making
      19             :    contributions.
      20             : 
      21             :    This software is provided "AS IS", without any express or implied warranties. The software is in the
      22             :    development stage. It is intended exclusively for experts who have experience with such software and
      23             :    solely for the purpose of inspection. All implied warranties of non-infringement, merchantability
      24             :    and fitness for a particular purpose are hereby disclaimed and excluded.
      25             : 
      26             :    Any dispute, controversy or claim arising under or in relation to providing this software shall be
      27             :    submitted to and settled by the final, binding jurisdiction of the courts of Munich, Germany in
      28             :    accordance with the laws of the Federal Republic of Germany excluding its conflict of law rules and
      29             :    the United Nations Convention on Contracts on the International Sales of Goods.
      30             : 
      31             : *******************************************************************************************************/
      32             : 
      33             : /*====================================================================================
      34             :     EVS Codec 3GPP TS26.443 Nov 04, 2021. Version 12.14.0 / 13.10.0 / 14.6.0 / 15.4.0 / 16.3.0
      35             :   ====================================================================================*/
      36             : 
      37             : #include <assert.h>
      38             : #include <stdint.h>
      39             : #include "options.h"
      40             : #include "cnst.h"
      41             : #include "prot_fx.h"
      42             : #include "stat_enc.h"
      43             : #include "stat_dec.h"
      44             : #include "rom_com.h"
      45             : #include "mime.h"
      46             : #include "ivas_cnst.h"
      47             : #include "ivas_rom_com.h"
      48             : #include "wmc_auto.h"
      49             : #include "ivas_prot_fx.h"
      50             : #include "prot_fx_enc.h"
      51             : #ifdef DBG_BITSTREAM_ANALYSIS
      52             : #include <string.h>
      53             : #endif
      54             : 
      55             : #define STEP_MAX_NUM_INDICES 100 /* increase the maximum number of allowed indices in the list by this amount */
      56             : 
      57             : 
      58             : /*-------------------------------------------------------------------*
      59             :  * rate2AMRWB_IOmode()
      60             :  *
      61             :  * lookup AMRWB IO mode
      62             :  *-------------------------------------------------------------------*/
      63             : 
      64        3100 : static Word16 rate2AMRWB_IOmode(
      65             :     Word32 brate /* i  : bitrate */
      66             : )
      67             : {
      68        3100 :     switch ( brate )
      69             :     {
      70             :         /* EVS AMR-WB IO modes */
      71           0 :         case SID_1k75:
      72           0 :             return AMRWB_IO_SID;
      73           0 :         case ACELP_6k60:
      74           0 :             return AMRWB_IO_6600;
      75           0 :         case ACELP_8k85:
      76           0 :             return AMRWB_IO_8850;
      77           0 :         case ACELP_12k65:
      78           0 :             return AMRWB_IO_1265;
      79           0 :         case ACELP_14k25:
      80           0 :             return AMRWB_IO_1425;
      81           0 :         case ACELP_15k85:
      82           0 :             return AMRWB_IO_1585;
      83           0 :         case ACELP_18k25:
      84           0 :             return AMRWB_IO_1825;
      85           0 :         case ACELP_19k85:
      86           0 :             return AMRWB_IO_1985;
      87           0 :         case ACELP_23k05:
      88           0 :             return AMRWB_IO_2305;
      89           0 :         case ACELP_23k85:
      90           0 :             return AMRWB_IO_2385;
      91        3100 :         default:
      92        3100 :             break;
      93             :     }
      94             : 
      95        3100 :     return -1;
      96             : }
      97             : 
      98             : /*-------------------------------------------------------------------*
      99             :  * rate2EVSmode()
     100             :  *
     101             :  * lookup EVS mode
     102             :  *-------------------------------------------------------------------*/
     103        3100 : Word16 rate2EVSmode_float(
     104             :     const Word32 brate, /* i  : bitrate                                               */
     105             :     Word16 *is_amr_wb   /* o  : (flag) does the bitrate belong to AMR-WB? Can be NULL */
     106             : )
     107             : {
     108        3100 :     if ( is_amr_wb != NULL )
     109             :     {
     110           0 :         *is_amr_wb = 0;
     111             :     }
     112             : 
     113        3100 :     switch ( brate )
     114             :     {
     115             :         /* EVS Primary modes */
     116           0 :         case FRAME_NO_DATA:
     117           0 :             return NO_DATA_TYPE;
     118           0 :         case SID_2k40:
     119           0 :             return PRIMARY_SID;
     120           0 :         case PPP_NELP_2k80:
     121           0 :             return PRIMARY_2800;
     122           0 :         case ACELP_7k20:
     123           0 :             return PRIMARY_7200;
     124           0 :         case ACELP_8k00:
     125           0 :             return PRIMARY_8000;
     126           0 :         case ACELP_9k60:
     127           0 :             return PRIMARY_9600;
     128        1050 :         case ACELP_13k20:
     129        1050 :             return PRIMARY_13200;
     130           0 :         case ACELP_16k40:
     131           0 :             return PRIMARY_16400;
     132        1050 :         case ACELP_24k40:
     133        1050 :             return PRIMARY_24400;
     134           0 :         case ACELP_32k:
     135           0 :             return PRIMARY_32000;
     136           0 :         case ACELP_48k:
     137           0 :             return PRIMARY_48000;
     138        1000 :         case ACELP_64k:
     139        1000 :             return PRIMARY_64000;
     140           0 :         case HQ_96k:
     141           0 :             return PRIMARY_96000;
     142           0 :         case HQ_128k:
     143           0 :             return PRIMARY_128000;
     144           0 :         default:
     145           0 :             break;
     146             :     }
     147             : 
     148           0 :     if ( is_amr_wb != NULL )
     149             :     {
     150           0 :         *is_amr_wb = 1;
     151             :     }
     152             : 
     153           0 :     return rate2AMRWB_IOmode( brate );
     154             : }
     155             : 
     156             : /*-------------------------------------------------------------------*
     157             :  * ind_list_realloc()
     158             :  *
     159             :  * Re-allocate the list of indices
     160             :  *-------------------------------------------------------------------*/
     161             : 
     162           0 : ivas_error ind_list_realloc(
     163             :     INDICE_HANDLE old_ind_list,   /* i  : pointer to the beginning of the old buffer of indices */
     164             :     const Word16 max_num_indices, /* i  : new maximum number of allowed indices in the list */
     165             :     Encoder_Struct *st_ivas       /* i  : IVAS encoder structure                  */
     166             : )
     167             : {
     168             :     Word16 i, n, ch, n_channels, ind_list_pos, is_metadata, ivas_max_num_indices;
     169             :     INDICE_HANDLE new_ind_list;
     170             :     BSTR_ENC_HANDLE hBstr;
     171             : 
     172           0 :     IF( st_ivas == NULL )
     173             :     {
     174           0 :         return IVAS_ERR_OK;
     175             :     }
     176             : 
     177             :     /* get the pointer to the beginning of the old buffer of indices (either metadata or core coders) */
     178           0 :     IF( old_ind_list == st_ivas->ind_list_metadata )
     179             :     {
     180           0 :         is_metadata = 1;
     181           0 :         ivas_max_num_indices = st_ivas->ivas_max_num_indices_metadata;
     182             :     }
     183             :     ELSE
     184             :     {
     185           0 :         is_metadata = 0;
     186           0 :         ivas_max_num_indices = st_ivas->ivas_max_num_indices;
     187             :     }
     188           0 :     move16();
     189           0 :     move16();
     190             : 
     191             :     /* allocate new buffer of indices */
     192           0 :     IF( ( new_ind_list = (INDICE_HANDLE) malloc( max_num_indices * sizeof( Indice ) ) ) == NULL )
     193             :     {
     194           0 :         return ( IVAS_ERROR( IVAS_ERR_FAILED_ALLOC, "Can not allocate memory for buffer of indices!\n" ) );
     195             :     }
     196             : 
     197             :     /* move indices from the old list to the new list */
     198           0 :     FOR( i = 0; i < s_min( max_num_indices, ivas_max_num_indices ); i++ )
     199             :     {
     200           0 :         IF( GT_16( old_ind_list[i].nb_bits, -1 ) )
     201             :         {
     202           0 :             new_ind_list[i].id = old_ind_list[i].id;
     203           0 :             new_ind_list[i].value = old_ind_list[i].value;
     204             : #ifdef DBG_BITSTREAM_ANALYSIS
     205             :             strncpy( new_ind_list[i].function_name, old_ind_list[i].function_name, 100 );
     206             : #endif
     207           0 :             move16();
     208           0 :             move16();
     209             :         }
     210           0 :         new_ind_list[i].nb_bits = old_ind_list[i].nb_bits;
     211           0 :         move16();
     212             :     }
     213             : 
     214             :     /* reset nb_bits of all other indices to -1 */
     215           0 :     FOR( ; i < max_num_indices; i++ )
     216             :     {
     217           0 :         new_ind_list[i].nb_bits = -1;
     218             : #ifdef DBG_BITSTREAM_ANALYSIS
     219             :         sprintf( new_ind_list[i].function_name, "RESET in ind_list_realloc" );
     220             : #endif
     221           0 :         move16();
     222             :     }
     223             : 
     224             :     /* update parameters in all SCE elements */
     225           0 :     FOR( n = 0; n < st_ivas->nSCE; n++ )
     226             :     {
     227             :         /* get the pointer to hBstr */
     228           0 :         IF( is_metadata )
     229             :         {
     230           0 :             hBstr = st_ivas->hSCE[n]->hMetaData;
     231             :         }
     232             :         ELSE
     233             :         {
     234           0 :             hBstr = st_ivas->hSCE[n]->hCoreCoder[0]->hBstr;
     235             :         }
     236             : 
     237           0 :         IF( hBstr != NULL )
     238             :         {
     239             :             /* get the current position inside the old list */
     240           0 :             ind_list_pos = (Word16) ( hBstr->ind_list - old_ind_list );
     241             : 
     242             :             /* set pointers in the new list */
     243           0 :             *( hBstr->ivas_ind_list_zero ) = new_ind_list;
     244           0 :             hBstr->ind_list = &new_ind_list[ind_list_pos];
     245             : 
     246             :             /* set the new maximum number of indices */
     247           0 :             *( hBstr->ivas_max_num_indices ) = max_num_indices;
     248           0 :             move16();
     249             :         }
     250             :     }
     251             : 
     252             :     /* update parameters in all CPE elements */
     253           0 :     FOR( n = 0; n < st_ivas->nCPE; n++ )
     254             :     {
     255             :         /* get the pointer to hBstr */
     256           0 :         IF( is_metadata )
     257             :         {
     258           0 :             n_channels = 1;
     259             :         }
     260             :         ELSE
     261             :         {
     262           0 :             n_channels = CPE_CHANNELS;
     263             :         }
     264           0 :         move16();
     265             : 
     266           0 :         FOR( ch = 0; ch < n_channels; ch++ )
     267             :         {
     268           0 :             IF( is_metadata )
     269             :             {
     270           0 :                 hBstr = st_ivas->hCPE[n]->hMetaData;
     271             :             }
     272             :             ELSE
     273             :             {
     274           0 :                 hBstr = st_ivas->hCPE[n]->hCoreCoder[ch]->hBstr;
     275             :             }
     276             : 
     277           0 :             IF( hBstr != NULL )
     278             :             {
     279             :                 /* get the current position inside the old list */
     280           0 :                 ind_list_pos = (Word16) ( hBstr->ind_list - old_ind_list );
     281             : 
     282             :                 /* set pointers in the new list */
     283           0 :                 *( hBstr->ivas_ind_list_zero ) = new_ind_list;
     284           0 :                 hBstr->ind_list = &new_ind_list[ind_list_pos];
     285             : 
     286             :                 /* set the new maximum number of indices */
     287           0 :                 *( hBstr->ivas_max_num_indices ) = max_num_indices;
     288           0 :                 move16();
     289             :             }
     290             :         }
     291             :     }
     292             : 
     293             :     /* free the old list */
     294           0 :     free( old_ind_list );
     295             : 
     296           0 :     return IVAS_ERR_OK;
     297             : }
     298             : 
     299             : 
     300             : /*-----------------------------------------------------------------------*
     301             :  * get_ivas_max_num_indices()
     302             :  *
     303             :  * Get the maximum allowed number of indices in the encoder
     304             :  *-----------------------------------------------------------------------*/
     305             : 
     306             : /*! r: maximum number of indices */
     307           0 : Word16 get_ivas_max_num_indices_fx(
     308             :     const IVAS_FORMAT ivas_format, /* i  : IVAS format               */
     309             :     const Word32 ivas_total_brate  /* i  : IVAS total bitrate        */
     310             : )
     311             : {
     312           0 :     test();
     313           0 :     test();
     314           0 :     IF( EQ_16( ivas_format, STEREO_FORMAT ) )
     315             :     {
     316           0 :         IF( LE_32( ivas_total_brate, IVAS_16k4 ) )
     317             :         {
     318           0 :             return 300;
     319             :         }
     320           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_24k4 ) )
     321             :         {
     322           0 :             return 400;
     323             :         }
     324           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_32k ) )
     325             :         {
     326           0 :             return 450;
     327             :         }
     328           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_48k ) )
     329             :         {
     330           0 :             return 650;
     331             :         }
     332           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_80k ) )
     333             :         {
     334           0 :             return 750;
     335             :         }
     336           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_128k ) )
     337             :         {
     338           0 :             return 850;
     339             :         }
     340           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_192k ) )
     341             :         {
     342           0 :             return 950;
     343             :         }
     344           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_256k ) )
     345             :         {
     346           0 :             return 1350;
     347             :         }
     348             :         ELSE
     349             :         {
     350           0 :             return 1650;
     351             :         }
     352             :     }
     353           0 :     ELSE IF( EQ_16( ivas_format, ISM_FORMAT ) || EQ_16( ivas_format, MONO_FORMAT ) )
     354             :     {
     355           0 :         IF( LE_32( ivas_total_brate, IVAS_16k4 ) )
     356             :         {
     357           0 :             return 250;
     358             :         }
     359           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_24k4 ) )
     360             :         {
     361           0 :             return 350;
     362             :         }
     363           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_32k ) )
     364             :         {
     365           0 :             return 450;
     366             :         }
     367           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_48k ) )
     368             :         {
     369           0 :             return 550;
     370             :         }
     371           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_64k ) )
     372             :         {
     373           0 :             return 620;
     374             :         }
     375           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_80k ) )
     376             :         {
     377           0 :             return 670;
     378             :         }
     379           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_96k ) )
     380             :         {
     381           0 :             return 780;
     382             :         }
     383           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_128k ) )
     384             :         {
     385           0 :             return 880;
     386             :         }
     387           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_192k ) )
     388             :         {
     389           0 :             return 950;
     390             :         }
     391           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_256k ) )
     392             :         {
     393           0 :             return 1100;
     394             :         }
     395           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_384k ) )
     396             :         {
     397           0 :             return 1300;
     398             :         }
     399             :         ELSE
     400             :         {
     401           0 :             return 1650;
     402             :         }
     403             :     }
     404           0 :     ELSE IF( EQ_16( ivas_format, SBA_FORMAT ) || EQ_16( ivas_format, SBA_ISM_FORMAT ) )
     405             :     {
     406           0 :         IF( LE_32( ivas_total_brate, IVAS_16k4 ) )
     407             :         {
     408           0 :             return 250;
     409             :         }
     410           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_24k4 ) )
     411             :         {
     412           0 :             return 350;
     413             :         }
     414           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_32k ) )
     415             :         {
     416           0 :             return 400;
     417             :         }
     418           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_48k ) )
     419             :         {
     420           0 :             return 650;
     421             :         }
     422           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_80k ) )
     423             :         {
     424           0 :             return 750;
     425             :         }
     426           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_128k ) )
     427             :         {
     428           0 :             return 1020;
     429             :         }
     430           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_160k ) )
     431             :         {
     432           0 :             return 1160;
     433             :         }
     434           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_192k ) )
     435             :         {
     436           0 :             return 1220;
     437             :         }
     438           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_256k ) )
     439             :         {
     440           0 :             return 1300;
     441             :         }
     442           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_384k ) )
     443             :         {
     444           0 :             return 1720;
     445             :         }
     446             :         ELSE
     447             :         {
     448           0 :             return 2000;
     449             :         }
     450             :     }
     451           0 :     ELSE IF( EQ_16( ivas_format, MASA_FORMAT ) )
     452             :     {
     453           0 :         IF( LE_32( ivas_total_brate, IVAS_16k4 ) )
     454             :         {
     455           0 :             return 300;
     456             :         }
     457           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_32k ) )
     458             :         {
     459           0 :             return 400;
     460             :         }
     461           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_48k ) )
     462             :         {
     463           0 :             return 650;
     464             :         }
     465           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_80k ) )
     466             :         {
     467           0 :             return 750;
     468             :         }
     469           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_160k ) )
     470             :         {
     471           0 :             return 850;
     472             :         }
     473           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_192k ) )
     474             :         {
     475           0 :             return 950;
     476             :         }
     477           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_256k ) )
     478             :         {
     479           0 :             return 1150;
     480             :         }
     481           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_384k ) )
     482             :         {
     483           0 :             return 1450;
     484             :         }
     485             :         ELSE
     486             :         {
     487           0 :             return 1650;
     488             :         }
     489             :     }
     490           0 :     ELSE IF( EQ_16( ivas_format, MASA_ISM_FORMAT ) )
     491             :     {
     492           0 :         IF( LE_32( ivas_total_brate, IVAS_16k4 ) )
     493             :         {
     494           0 :             return 300;
     495             :         }
     496           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_32k ) )
     497             :         {
     498           0 :             return 400;
     499             :         }
     500           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_48k ) )
     501             :         {
     502           0 :             return 650;
     503             :         }
     504           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_80k ) )
     505             :         {
     506           0 :             return 750;
     507             :         }
     508           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_160k ) )
     509             :         {
     510           0 :             return 1150;
     511             :         }
     512           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_192k ) )
     513             :         {
     514           0 :             return 1250;
     515             :         }
     516           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_256k ) )
     517             :         {
     518           0 :             return 1400;
     519             :         }
     520           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_384k ) )
     521             :         {
     522           0 :             return 1650;
     523             :         }
     524             :         ELSE
     525             :         {
     526           0 :             return 1850;
     527             :         }
     528             :     }
     529           0 :     ELSE IF( EQ_16( ivas_format, MC_FORMAT ) )
     530             :     {
     531           0 :         IF( LE_32( ivas_total_brate, IVAS_16k4 ) )
     532             :         {
     533           0 :             return 250;
     534             :         }
     535           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_24k4 ) )
     536             :         {
     537           0 :             return 350;
     538             :         }
     539           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_32k ) )
     540             :         {
     541           0 :             return 400;
     542             :         }
     543           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_48k ) )
     544             :         {
     545           0 :             return 650;
     546             :         }
     547           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_64k ) )
     548             :         {
     549           0 :             return 750;
     550             :         }
     551           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_80k ) )
     552             :         {
     553           0 :             return 850;
     554             :         }
     555           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_128k ) )
     556             :         {
     557           0 :             return 1150;
     558             :         }
     559           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_160k ) )
     560             :         {
     561           0 :             return 1420;
     562             :         }
     563           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_256k ) )
     564             :         {
     565           0 :             return 2120;
     566             :         }
     567           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_384k ) )
     568             :         {
     569           0 :             return 2250;
     570             :         }
     571             :         ELSE
     572             :         {
     573           0 :             return 2450;
     574             :         }
     575             :     }
     576             : 
     577           0 :     return 2450;
     578             : }
     579             : /*-----------------------------------------------------------------------*
     580             :  * get_BWE_max_num_indices()
     581             :  *
     582             :  * Get the maximum number of indices in the BWE
     583             :  *-----------------------------------------------------------------------*/
     584             : 
     585             : /*! r: maximum number of indices */
     586           0 : Word16 get_BWE_max_num_indices(
     587             :     const Word32 extl_brate /* i  : extensiona layer bitrate  */
     588             : )
     589             : {
     590             :     /* set the maximum number of indices in the BWE */
     591           0 :     if ( extl_brate < SWB_BWE_16k )
     592             :     {
     593           0 :         return 30;
     594             :     }
     595             :     else
     596             :     {
     597           0 :         return 150;
     598             :     }
     599             : }
     600             : 
     601             : 
     602             : /*-----------------------------------------------------------------------*
     603             :  * get_ivas_max_num_indices_metadata()
     604             :  *
     605             :  * Set the maximum allowed number of metadata indices in the list
     606             :  *-----------------------------------------------------------------------*/
     607             : 
     608             : /*! r: maximum number of indices */
     609           0 : Word16 get_ivas_max_num_indices_metadata_fx(
     610             :     const IVAS_FORMAT ivas_format, /* i  : IVAS format              */
     611             :     const Word32 ivas_total_brate  /* i  : IVAS total bitrate       */
     612             : )
     613             : {
     614             :     /* set the maximum required number of metadata indices */
     615           0 :     test();
     616           0 :     IF( EQ_16( ivas_format, MONO_FORMAT ) )
     617             :     {
     618           0 :         return 0;
     619             :     }
     620           0 :     ELSE IF( EQ_16( ivas_format, STEREO_FORMAT ) )
     621             :     {
     622           0 :         IF( LE_32( ivas_total_brate, IVAS_16k4 ) )
     623             :         {
     624           0 :             return 60;
     625             :         }
     626             :         ELSE
     627             :         {
     628           0 :             return 80;
     629             :         }
     630             :     }
     631           0 :     ELSE IF( EQ_16( ivas_format, ISM_FORMAT ) )
     632             :     {
     633           0 :         IF( LE_32( ivas_total_brate, IVAS_16k4 ) )
     634             :         {
     635           0 :             return 20;
     636             :         }
     637           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_32k ) )
     638             :         {
     639           0 :             return 65;
     640             :         }
     641             :         ELSE
     642             :         {
     643           0 :             return 80;
     644             :         }
     645             :     }
     646           0 :     ELSE IF( EQ_16( ivas_format, SBA_FORMAT ) || EQ_16( ivas_format, SBA_ISM_FORMAT ) )
     647             :     {
     648           0 :         IF( LE_32( ivas_total_brate, IVAS_16k4 ) )
     649             :         {
     650           0 :             return 100;
     651             :         }
     652           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_24k4 ) )
     653             :         {
     654           0 :             return 200;
     655             :         }
     656           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_32k ) )
     657             :         {
     658           0 :             return 300;
     659             :         }
     660           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_192k ) )
     661             :         {
     662           0 :             return 500;
     663             :         }
     664           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_256k ) )
     665             :         {
     666           0 :             return 1050;
     667             :         }
     668           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_384k ) )
     669             :         {
     670           0 :             return 2000;
     671             :         }
     672             :         ELSE
     673             :         {
     674           0 :             return 2500;
     675             :         }
     676             :     }
     677           0 :     ELSE IF( EQ_16( ivas_format, MASA_FORMAT ) )
     678             :     {
     679           0 :         IF( LE_32( ivas_total_brate, IVAS_16k4 ) )
     680             :         {
     681           0 :             return 80;
     682             :         }
     683           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_32k ) )
     684             :         {
     685           0 :             return 125;
     686             :         }
     687           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_48k ) )
     688             :         {
     689           0 :             return 205;
     690             :         }
     691           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_96k ) )
     692             :         {
     693           0 :             return 240;
     694             :         }
     695           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_128k ) )
     696             :         {
     697           0 :             return 305;
     698             :         }
     699           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_160k ) )
     700             :         {
     701           0 :             return 425;
     702             :         }
     703           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_192k ) )
     704             :         {
     705           0 :             return 630;
     706             :         }
     707           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_256k ) )
     708             :         {
     709           0 :             return 850;
     710             :         }
     711           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_384k ) )
     712             :         {
     713           0 :             return 1000;
     714             :         }
     715             :         ELSE
     716             :         {
     717           0 :             return 1750;
     718             :         }
     719             :     }
     720           0 :     ELSE IF( EQ_16( ivas_format, MASA_ISM_FORMAT ) )
     721             :     {
     722           0 :         IF( LE_32( ivas_total_brate, IVAS_16k4 ) )
     723             :         {
     724           0 :             return 80;
     725             :         }
     726           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_32k ) )
     727             :         {
     728           0 :             return 125 + 100;
     729             :         }
     730           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_48k ) )
     731             :         {
     732           0 :             return 205 + 100;
     733             :         }
     734           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_96k ) )
     735             :         {
     736           0 :             return 240 + 150;
     737             :         }
     738           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_128k ) )
     739             :         {
     740           0 :             return 305 + 30;
     741             :         }
     742           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_160k ) )
     743             :         {
     744           0 :             return 425 + 30;
     745             :         }
     746           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_192k ) )
     747             :         {
     748           0 :             return 630 + 30;
     749             :         }
     750           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_256k ) )
     751             :         {
     752           0 :             return 850 + 30;
     753             :         }
     754           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_384k ) )
     755             :         {
     756           0 :             return 1000 + 30;
     757             :         }
     758             :         ELSE
     759             :         {
     760           0 :             return 1750 + 30;
     761             :         }
     762             :     }
     763           0 :     ELSE IF( EQ_16( ivas_format, MC_FORMAT ) )
     764             :     {
     765           0 :         IF( LE_32( ivas_total_brate, IVAS_13k2 ) )
     766             :         {
     767           0 :             return 80;
     768             :         }
     769           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_24k4 ) )
     770             :         {
     771           0 :             return 100;
     772             :         }
     773           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_64k ) )
     774             :         {
     775           0 :             return 210;
     776             :         }
     777           0 :         ELSE IF( LE_32( ivas_total_brate, IVAS_96k ) )
     778             :         {
     779           0 :             return 220;
     780             :         }
     781             :         ELSE
     782             :         {
     783           0 :             return 300;
     784             :         }
     785             :     }
     786             : 
     787           0 :     return 50;
     788             : }
     789             : /*-------------------------------------------------------------------*
     790             :  * move_indices()
     791             :  *
     792             :  * Move indices inside the buffer or among two buffers
     793             :  *-------------------------------------------------------------------*/
     794             : 
     795           0 : void move_indices(
     796             :     INDICE_HANDLE old_ind_list, /* i/o: old location of indices */
     797             :     INDICE_HANDLE new_ind_list, /* i/o: new location of indices */
     798             :     const Word16 nb_indices     /* i  : number of moved indices */
     799             : )
     800             : {
     801             :     Word16 i;
     802             : 
     803           0 :     if ( new_ind_list < old_ind_list )
     804             :     {
     805           0 :         for ( i = 0; i < nb_indices; i++ )
     806             :         {
     807           0 :             new_ind_list[i].id = old_ind_list[i].id;
     808           0 :             new_ind_list[i].value = old_ind_list[i].value;
     809           0 :             new_ind_list[i].nb_bits = old_ind_list[i].nb_bits;
     810             : 
     811             : #ifdef DBG_BITSTREAM_ANALYSIS
     812             :             strncpy( new_ind_list[i].function_name, old_ind_list[i].function_name, 100 );
     813             : #endif
     814           0 :             old_ind_list[i].nb_bits = -1;
     815             :         }
     816             :     }
     817           0 :     else if ( new_ind_list > old_ind_list )
     818             :     {
     819           0 :         for ( i = nb_indices - 1; i >= 0; i-- )
     820             :         {
     821           0 :             new_ind_list[i].id = old_ind_list[i].id;
     822           0 :             new_ind_list[i].value = old_ind_list[i].value;
     823           0 :             new_ind_list[i].nb_bits = old_ind_list[i].nb_bits;
     824             : #ifdef DBG_BITSTREAM_ANALYSIS
     825             :             strncpy( new_ind_list[i].function_name, old_ind_list[i].function_name, 100 );
     826             : #endif
     827             : 
     828           0 :             old_ind_list[i].nb_bits = -1;
     829             : #ifdef DBG_BITSTREAM_ANALYSIS
     830             :             sprintf( old_ind_list[i].function_name, "RESET in move_indices" );
     831             : #endif
     832             :         }
     833             :     }
     834             : 
     835           0 :     return;
     836             : }
     837             : 
     838             : 
     839             : /*-------------------------------------------------------------------*
     840             :  * check_ind_list_limits()
     841             :  *
     842             :  * Check, if the maximum number of indices has been reached -> reallocate
     843             :  * Check, if we will not overwrite an existing indice -> adjust the location
     844             :  *-------------------------------------------------------------------*/
     845             : 
     846           0 : ivas_error check_ind_list_limits(
     847             :     BSTR_ENC_HANDLE hBstr /* i/o: encoder bitstream handle                    */
     848             : )
     849             : {
     850             :     Indice *ivas_ind_list_zero, *ivas_ind_list_last;
     851             :     ivas_error error;
     852             : 
     853           0 :     error = IVAS_ERR_OK;
     854           0 :     move32();
     855           0 :     ivas_ind_list_zero = *( hBstr->ivas_ind_list_zero );
     856             : 
     857             :     /* check, if the maximum number of indices has been reached and re-allocate the buffer */
     858             :     /* the re-allocation can be avoided by increasing the limits in get_ivas_max_num_indices() or get_ivas_max_num_indices_metadata() */
     859           0 :     IF( GE_16( (Word16) ( &hBstr->ind_list[hBstr->nb_ind_tot] - ivas_ind_list_zero ), *( hBstr->ivas_max_num_indices ) ) )
     860             :     {
     861             : 
     862             :         /* reallocate the buffer of indices with increased limit */
     863           0 :         IF( NE_32( ( error = ind_list_realloc( *hBstr->ivas_ind_list_zero, *( hBstr->ivas_max_num_indices ) + STEP_MAX_NUM_INDICES, hBstr->st_ivas ) ), IVAS_ERR_OK ) )
     864             :         {
     865           0 :             return error;
     866             :         }
     867             :     }
     868             : 
     869             :     /* check, if we will not overwrite an existing indice */
     870           0 :     IF( hBstr->ind_list[hBstr->nb_ind_tot].nb_bits > 0 )
     871             :     {
     872           0 :         IF( hBstr->nb_ind_tot == 0 )
     873             :         {
     874             :             /* move the pointer to the next available empty slot */
     875           0 :             ivas_ind_list_last = &ivas_ind_list_zero[*( hBstr->ivas_max_num_indices )];
     876           0 :             WHILE( hBstr->ind_list[0].nb_bits > 0 && hBstr->ind_list < ivas_ind_list_last )
     877             :             {
     878           0 :                 hBstr->ind_list++;
     879             :             }
     880             : 
     881           0 :             IF( hBstr->ind_list >= ivas_ind_list_last )
     882             :             {
     883             : 
     884             :                 /* no available empty slot -> need to re-allocate the buffer */
     885           0 :                 IF( NE_32( ( error = ind_list_realloc( *hBstr->ivas_ind_list_zero, *( hBstr->ivas_max_num_indices ) + STEP_MAX_NUM_INDICES, hBstr->st_ivas ) ), IVAS_ERR_OK ) )
     886             :                 {
     887           0 :                     return error;
     888             :                 }
     889             :             }
     890             :         }
     891             :         ELSE
     892             :         {
     893           0 :             return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Buffer of indices corrupted in frame %d! Attempt to overwrite indice ID = %d (value: %d, bits: %d)!\n", hBstr->ind_list[hBstr->nb_ind_tot].id, hBstr->ind_list[hBstr->nb_ind_tot].value, hBstr->ind_list[hBstr->nb_ind_tot].nb_bits );
     894             :         }
     895             :     }
     896             : 
     897           0 :     return error;
     898             : }
     899             : 
     900             : #ifdef DBG_BITSTREAM_ANALYSIS
     901             : const char *named_indices_table[] = {
     902             :     "IND_IVAS_FORMAT",
     903             :     "IND_SMODE_OMASA",
     904             :     "IND_SMODE",
     905             :     "IND_SID_TYPE",
     906             :     "IND_BWIDTH",
     907             :     "IND_CORE",
     908             :     "IND_PPP_NELP_MODE",
     909             :     "IND_ACELP_16KHZ",
     910             :     "IND_ACELP_SIGNALLING",
     911             :     "IND_SHARP_FLAG",
     912             :     "IND_MDCT_CORE",
     913             :     "IND_TCX_CORE",
     914             :     "IND_BWE_FLAG",
     915             :     "IND_HQ_SWITCHING_FLG",
     916             :     "IND_LAST_L_FRAME",
     917             :     "IND_VAD_FLAG",
     918             :     "IND_HQ_BWIDTH",
     919             :     "IND_TC_SUBFR",
     920             :     "IND_TC_SUBFR",
     921             :     "IND_TC_SUBFR",
     922             :     "IND_TC_SUBFR",
     923             :     "IND_GSC_IVAS_SP",
     924             :     "IND_LSF_PREDICTOR_SELECT_BIT",
     925             :     "IND_LSF",
     926             :     "IND_LSF",
     927             :     "IND_LSF",
     928             :     "IND_LSF",
     929             :     "IND_LSF",
     930             :     "IND_LSF",
     931             :     "IND_LSF",
     932             :     "IND_LSF",
     933             :     "IND_LSF",
     934             :     "IND_LSF",
     935             :     "IND_LSF",
     936             :     "IND_LSF",
     937             :     "IND_LSF",
     938             :     "IND_LSF",
     939             :     "IND_LSF",
     940             :     "IND_LSF",
     941             :     "IND_LSF",
     942             :     "IND_MID_FRAME_LSF_INDEX",
     943             :     "IND_ISF_0_0",
     944             :     "IND_ISF_0_1",
     945             :     "IND_ISF_0_2",
     946             :     "IND_ISF_0_3",
     947             :     "IND_ISF_0_4",
     948             :     "IND_ISF_1_0",
     949             :     "IND_ISF_1_1",
     950             :     "IND_ISF_1_2",
     951             :     "IND_ISF_1_3",
     952             :     "IND_ISF_1_4",
     953             :     "IND_IC_LSF_PRED",
     954             :     "IND_GSC_ATTACK",
     955             :     "IND_GSC_SWB_SPEECH",
     956             :     "IND_NOISE_LEVEL",
     957             :     "IND_HF_NOISE",
     958             :     "IND_PIT_CONTR_IDX",
     959             :     "IND_FEC_CLAS",
     960             :     "IND_FEC_ENR",
     961             :     "IND_FEC_POS",
     962             :     "IND_ES_PRED",
     963             :     "IND_HARM_FLAG_ACELP",
     964             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     965             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     966             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     967             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     968             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     969             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     970             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     971             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     972             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     973             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     974             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     975             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     976             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     977             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     978             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     979             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     980             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     981             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     982             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     983             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     984             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     985             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     986             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     987             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     988             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     989             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     990             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     991             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     992             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     993             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     994             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     995             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     996             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     997             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     998             :     "IND_ALG_CDBK_4T64_2_24KBIT",
     999             :     "IND_ALG_CDBK_4T64_2_24KBIT",
    1000             :     "IND_ALG_CDBK_4T64_2_24KBIT",
    1001             :     "IND_ALG_CDBK_4T64_2_24KBIT",
    1002             :     "IND_ALG_CDBK_4T64_2_24KBIT",
    1003             :     "IND_ALG_CDBK_4T64_2_24KBIT",
    1004             :     "TAG_ALG_CDBK_4T64_24KBIT_END",
    1005             :     "IND_HF_GAIN_MODIFICATION",
    1006             :     "IND_HF_GAIN_MODIFICATION",
    1007             :     "IND_HF_GAIN_MODIFICATION",
    1008             :     "IND_HF_GAIN_MODIFICATION",
    1009             :     "IND_HF_GAIN_MODIFICATION",
    1010             :     "IND_HF_GAIN_MODIFICATION",
    1011             :     "IND_HF_GAIN_MODIFICATION",
    1012             :     "IND_HF_GAIN_MODIFICATION",
    1013             :     "IND_HF_GAIN_MODIFICATION",
    1014             :     "IND_HF_GAIN_MODIFICATION",
    1015             :     "IND_HF_GAIN_MODIFICATION",
    1016             :     "IND_HF_GAIN_MODIFICATION",
    1017             :     "IND_HF_GAIN_MODIFICATION",
    1018             :     "IND_HF_GAIN_MODIFICATION",
    1019             :     "IND_HF_GAIN_MODIFICATION",
    1020             :     "IND_HF_GAIN_MODIFICATION",
    1021             :     "IND_HF_GAIN_MODIFICATION",
    1022             :     "IND_HF_GAIN_MODIFICATION",
    1023             :     "IND_HF_GAIN_MODIFICATION",
    1024             :     "IND_HF_GAIN_MODIFICATION",
    1025             :     "IND_HF_GAIN_MODIFICATION",
    1026             :     "IND_HF_GAIN_MODIFICATION",
    1027             :     "IND_HF_GAIN_MODIFICATION",
    1028             :     "IND_HF_GAIN_MODIFICATION",
    1029             :     "IND_HF_GAIN_MODIFICATION",
    1030             :     "IND_HF_GAIN_MODIFICATION",
    1031             :     "IND_HF_GAIN_MODIFICATION",
    1032             :     "IND_HF_GAIN_MODIFICATION",
    1033             :     "IND_HF_GAIN_MODIFICATION",
    1034             :     "IND_HF_GAIN_MODIFICATION",
    1035             :     "IND_HF_GAIN_MODIFICATION",
    1036             :     "IND_HF_GAIN_MODIFICATION",
    1037             :     "IND_HF_GAIN_MODIFICATION",
    1038             :     "IND_HF_GAIN_MODIFICATION",
    1039             :     "IND_HF_GAIN_MODIFICATION",
    1040             :     "IND_HF_GAIN_MODIFICATION",
    1041             :     "IND_HF_GAIN_MODIFICATION",
    1042             :     "IND_HF_GAIN_MODIFICATION",
    1043             :     "IND_HF_GAIN_MODIFICATION",
    1044             :     "IND_HF_GAIN_MODIFICATION",
    1045             :     "IND_HF_GAIN_MODIFICATION",
    1046             :     "IND_HF_GAIN_MODIFICATION",
    1047             :     "IND_HF_GAIN_MODIFICATION",
    1048             :     "IND_HF_GAIN_MODIFICATION",
    1049             :     "IND_HF_GAIN_MODIFICATION",
    1050             :     "IND_HF_GAIN_MODIFICATION",
    1051             :     "IND_HF_GAIN_MODIFICATION",
    1052             :     "IND_HF_GAIN_MODIFICATION",
    1053             :     "IND_HF_GAIN_MODIFICATION",
    1054             :     "IND_HF_GAIN_MODIFICATION",
    1055             :     "IND_HF_GAIN_MODIFICATION",
    1056             :     "IND_HF_GAIN_MODIFICATION",
    1057             :     "IND_HF_GAIN_MODIFICATION",
    1058             :     "IND_HF_GAIN_MODIFICATION",
    1059             :     "IND_HF_GAIN_MODIFICATION",
    1060             :     "IND_HF_GAIN_MODIFICATION",
    1061             :     "IND_HF_GAIN_MODIFICATION",
    1062             :     "IND_HF_GAIN_MODIFICATION",
    1063             :     "IND_HF_GAIN_MODIFICATION",
    1064             :     "IND_HF_GAIN_MODIFICATION",
    1065             :     "IND_HF_GAIN_MODIFICATION",
    1066             :     "IND_HF_GAIN_MODIFICATION",
    1067             :     "IND_HF_GAIN_MODIFICATION",
    1068             :     "IND_HF_GAIN_MODIFICATION",
    1069             :     "IND_HF_GAIN_MODIFICATION",
    1070             :     "IND_HF_GAIN_MODIFICATION",
    1071             :     "IND_HF_GAIN_MODIFICATION",
    1072             :     "IND_HF_GAIN_MODIFICATION",
    1073             :     "IND_HF_GAIN_MODIFICATION",
    1074             :     "IND_HF_GAIN_MODIFICATION",
    1075             :     "IND_HF_GAIN_MODIFICATION",
    1076             :     "IND_HF_GAIN_MODIFICATION",
    1077             :     "IND_HF_GAIN_MODIFICATION",
    1078             :     "IND_HF_GAIN_MODIFICATION",
    1079             :     "IND_HF_GAIN_MODIFICATION",
    1080             :     "IND_HF_GAIN_MODIFICATION",
    1081             :     "IND_HF_GAIN_MODIFICATION",
    1082             :     "IND_HF_GAIN_MODIFICATION",
    1083             :     "IND_HF_GAIN_MODIFICATION",
    1084             :     "IND_HF_GAIN_MODIFICATION",
    1085             :     "IND_HF_GAIN_MODIFICATION",
    1086             :     "IND_HF_GAIN_MODIFICATION",
    1087             :     "IND_HF_GAIN_MODIFICATION",
    1088             :     "IND_HF_GAIN_MODIFICATION",
    1089             :     "IND_HF_GAIN_MODIFICATION",
    1090             :     "IND_HF_GAIN_MODIFICATION",
    1091             :     "IND_HF_GAIN_MODIFICATION",
    1092             :     "IND_HF_GAIN_MODIFICATION",
    1093             :     "IND_HF_GAIN_MODIFICATION",
    1094             :     "IND_HF_GAIN_MODIFICATION",
    1095             :     "IND_HF_GAIN_MODIFICATION",
    1096             :     "IND_HF_GAIN_MODIFICATION",
    1097             :     "IND_HF_GAIN_MODIFICATION",
    1098             :     "IND_HF_GAIN_MODIFICATION",
    1099             :     "IND_HF_GAIN_MODIFICATION",
    1100             :     "IND_HF_GAIN_MODIFICATION",
    1101             :     "IND_HF_GAIN_MODIFICATION",
    1102             :     "IND_HF_GAIN_MODIFICATION",
    1103             :     "IND_HF_GAIN_MODIFICATION",
    1104             :     "IND_HF_GAIN_MODIFICATION",
    1105             :     "IND_HF_GAIN_MODIFICATION",
    1106             :     "IND_HF_GAIN_MODIFICATION",
    1107             :     "IND_HF_GAIN_MODIFICATION",
    1108             :     "IND_HF_GAIN_MODIFICATION",
    1109             :     "IND_HF_GAIN_MODIFICATION",
    1110             :     "IND_HF_GAIN_MODIFICATION",
    1111             :     "IND_HF_GAIN_MODIFICATION",
    1112             :     "IND_HF_GAIN_MODIFICATION",
    1113             :     "IND_HF_GAIN_MODIFICATION",
    1114             :     "IND_HF_GAIN_MODIFICATION",
    1115             :     "IND_HF_GAIN_MODIFICATION",
    1116             :     "IND_HF_GAIN_MODIFICATION",
    1117             :     "IND_HF_GAIN_MODIFICATION",
    1118             :     "IND_HF_GAIN_MODIFICATION",
    1119             :     "IND_HF_GAIN_MODIFICATION",
    1120             :     "IND_HF_GAIN_MODIFICATION",
    1121             :     "IND_HF_GAIN_MODIFICATION",
    1122             :     "IND_HF_GAIN_MODIFICATION",
    1123             :     "IND_HF_GAIN_MODIFICATION",
    1124             :     "IND_HF_GAIN_MODIFICATION",
    1125             :     "IND_HF_GAIN_MODIFICATION",
    1126             :     "IND_HF_GAIN_MODIFICATION",
    1127             :     "IND_HF_GAIN_MODIFICATION",
    1128             :     "IND_HF_GAIN_MODIFICATION",
    1129             :     "IND_HF_GAIN_MODIFICATION",
    1130             :     "IND_HF_GAIN_MODIFICATION",
    1131             :     "IND_HF_GAIN_MODIFICATION",
    1132             :     "IND_HF_GAIN_MODIFICATION",
    1133             :     "IND_HF_GAIN_MODIFICATION",
    1134             :     "IND_HF_GAIN_MODIFICATION",
    1135             :     "IND_HF_GAIN_MODIFICATION",
    1136             :     "IND_HF_GAIN_MODIFICATION",
    1137             :     "IND_HF_GAIN_MODIFICATION",
    1138             :     "IND_HF_GAIN_MODIFICATION",
    1139             :     "IND_HF_GAIN_MODIFICATION",
    1140             :     "IND_HF_GAIN_MODIFICATION",
    1141             :     "IND_HF_GAIN_MODIFICATION",
    1142             :     "IND_HF_GAIN_MODIFICATION",
    1143             :     "IND_HF_GAIN_MODIFICATION",
    1144             :     "IND_HF_GAIN_MODIFICATION",
    1145             :     "IND_HF_GAIN_MODIFICATION",
    1146             :     "IND_HF_GAIN_MODIFICATION",
    1147             :     "IND_HF_GAIN_MODIFICATION",
    1148             :     "IND_HF_GAIN_MODIFICATION",
    1149             :     "IND_HF_GAIN_MODIFICATION",
    1150             :     "IND_HF_GAIN_MODIFICATION",
    1151             :     "IND_HF_GAIN_MODIFICATION",
    1152             :     "IND_HF_GAIN_MODIFICATION",
    1153             :     "IND_HF_GAIN_MODIFICATION",
    1154             :     "IND_HF_GAIN_MODIFICATION",
    1155             :     "IND_HF_GAIN_MODIFICATION",
    1156             :     "IND_HF_GAIN_MODIFICATION",
    1157             :     "IND_HF_GAIN_MODIFICATION",
    1158             :     "IND_HF_GAIN_MODIFICATION",
    1159             :     "IND_HF_GAIN_MODIFICATION",
    1160             :     "IND_HF_GAIN_MODIFICATION",
    1161             :     "IND_HF_GAIN_MODIFICATION",
    1162             :     "IND_HF_GAIN_MODIFICATION",
    1163             :     "IND_HF_GAIN_MODIFICATION",
    1164             :     "IND_HF_GAIN_MODIFICATION",
    1165             :     "IND_HF_GAIN_MODIFICATION",
    1166             :     "IND_HF_GAIN_MODIFICATION",
    1167             :     "IND_HF_GAIN_MODIFICATION",
    1168             :     "IND_HF_GAIN_MODIFICATION",
    1169             :     "IND_HF_GAIN_MODIFICATION",
    1170             :     "IND_HF_GAIN_MODIFICATION",
    1171             :     "IND_HF_GAIN_MODIFICATION",
    1172             :     "IND_HF_GAIN_MODIFICATION",
    1173             :     "IND_HF_GAIN_MODIFICATION",
    1174             :     "IND_HF_GAIN_MODIFICATION",
    1175             :     "IND_HF_GAIN_MODIFICATION",
    1176             :     "IND_HF_GAIN_MODIFICATION",
    1177             :     "IND_HF_GAIN_MODIFICATION",
    1178             :     "IND_HF_GAIN_MODIFICATION",
    1179             :     "IND_HF_GAIN_MODIFICATION",
    1180             :     "IND_HF_GAIN_MODIFICATION",
    1181             :     "IND_HF_GAIN_MODIFICATION",
    1182             :     "IND_HF_GAIN_MODIFICATION",
    1183             :     "IND_HF_GAIN_MODIFICATION",
    1184             :     "IND_HF_GAIN_MODIFICATION",
    1185             :     "IND_HF_GAIN_MODIFICATION",
    1186             :     "IND_HF_GAIN_MODIFICATION",
    1187             :     "IND_HF_GAIN_MODIFICATION",
    1188             :     "IND_HF_GAIN_MODIFICATION",
    1189             :     "IND_HF_GAIN_MODIFICATION",
    1190             :     "IND_HF_GAIN_MODIFICATION",
    1191             :     "IND_HF_GAIN_MODIFICATION",
    1192             :     "IND_HF_GAIN_MODIFICATION",
    1193             :     "IND_HF_GAIN_MODIFICATION",
    1194             :     "IND_HF_GAIN_MODIFICATION",
    1195             :     "IND_HF_GAIN_MODIFICATION",
    1196             :     "IND_HF_GAIN_MODIFICATION",
    1197             :     "IND_HF_GAIN_MODIFICATION",
    1198             :     "IND_HF_GAIN_MODIFICATION",
    1199             :     "IND_HF_GAIN_MODIFICATION",
    1200             :     "IND_HF_GAIN_MODIFICATION",
    1201             :     "IND_HF_GAIN_MODIFICATION",
    1202             :     "IND_HF_GAIN_MODIFICATION",
    1203             :     "IND_HF_GAIN_MODIFICATION",
    1204             :     "IND_HF_GAIN_MODIFICATION",
    1205             :     "IND_HF_GAIN_MODIFICATION",
    1206             :     "IND_HF_GAIN_MODIFICATION",
    1207             :     "IND_HF_GAIN_MODIFICATION",
    1208             :     "IND_HF_GAIN_MODIFICATION",
    1209             :     "IND_HF_GAIN_MODIFICATION",
    1210             :     "IND_HF_GAIN_MODIFICATION",
    1211             :     "IND_HF_GAIN_MODIFICATION",
    1212             :     "IND_HF_GAIN_MODIFICATION",
    1213             :     "IND_HF_GAIN_MODIFICATION",
    1214             :     "IND_HF_GAIN_MODIFICATION",
    1215             :     "IND_HF_GAIN_MODIFICATION",
    1216             :     "IND_HF_GAIN_MODIFICATION",
    1217             :     "IND_HF_GAIN_MODIFICATION",
    1218             :     "IND_HF_GAIN_MODIFICATION",
    1219             :     "IND_HF_GAIN_MODIFICATION",
    1220             :     "IND_HF_GAIN_MODIFICATION",
    1221             :     "IND_HF_GAIN_MODIFICATION",
    1222             :     "IND_HF_GAIN_MODIFICATION",
    1223             :     "IND_HF_GAIN_MODIFICATION",
    1224             :     "IND_HF_GAIN_MODIFICATION",
    1225             :     "IND_HF_GAIN_MODIFICATION",
    1226             :     "IND_HF_GAIN_MODIFICATION",
    1227             :     "IND_HF_GAIN_MODIFICATION",
    1228             :     "IND_HF_GAIN_MODIFICATION",
    1229             :     "IND_HF_GAIN_MODIFICATION",
    1230             :     "IND_HF_GAIN_MODIFICATION",
    1231             :     "IND_HF_GAIN_MODIFICATION",
    1232             :     "IND_HF_GAIN_MODIFICATION",
    1233             :     "IND_HF_GAIN_MODIFICATION",
    1234             :     "IND_HF_GAIN_MODIFICATION",
    1235             :     "IND_HF_GAIN_MODIFICATION",
    1236             :     "IND_HF_GAIN_MODIFICATION",
    1237             :     "IND_HF_GAIN_MODIFICATION",
    1238             :     "IND_HF_GAIN_MODIFICATION",
    1239             :     "IND_HF_GAIN_MODIFICATION",
    1240             :     "IND_HF_GAIN_MODIFICATION",
    1241             :     "IND_HF_GAIN_MODIFICATION",
    1242             :     "IND_HF_GAIN_MODIFICATION",
    1243             :     "IND_HF_GAIN_MODIFICATION",
    1244             :     "IND_HF_GAIN_MODIFICATION",
    1245             :     "IND_HF_GAIN_MODIFICATION",
    1246             :     "IND_HF_GAIN_MODIFICATION",
    1247             :     "IND_HF_GAIN_MODIFICATION",
    1248             :     "IND_HF_GAIN_MODIFICATION",
    1249             :     "IND_HF_GAIN_MODIFICATION",
    1250             :     "IND_HF_GAIN_MODIFICATION",
    1251             :     "IND_HF_GAIN_MODIFICATION",
    1252             :     "IND_HF_GAIN_MODIFICATION",
    1253             :     "IND_HF_GAIN_MODIFICATION",
    1254             :     "IND_HF_GAIN_MODIFICATION",
    1255             :     "IND_HF_GAIN_MODIFICATION",
    1256             :     "IND_HF_GAIN_MODIFICATION",
    1257             :     "IND_HF_GAIN_MODIFICATION",
    1258             :     "IND_HF_GAIN_MODIFICATION",
    1259             :     "IND_HF_GAIN_MODIFICATION",
    1260             :     "IND_HF_GAIN_MODIFICATION",
    1261             :     "IND_HF_GAIN_MODIFICATION",
    1262             :     "IND_HF_GAIN_MODIFICATION",
    1263             :     "IND_HF_GAIN_MODIFICATION",
    1264             :     "IND_HF_GAIN_MODIFICATION",
    1265             :     "IND_HF_GAIN_MODIFICATION",
    1266             :     "IND_HF_GAIN_MODIFICATION",
    1267             :     "IND_HF_GAIN_MODIFICATION",
    1268             :     "IND_HF_GAIN_MODIFICATION",
    1269             :     "IND_HF_GAIN_MODIFICATION",
    1270             :     "IND_HF_GAIN_MODIFICATION",
    1271             :     "IND_HF_GAIN_MODIFICATION",
    1272             :     "IND_HF_GAIN_MODIFICATION",
    1273             :     "IND_HF_GAIN_MODIFICATION",
    1274             :     "IND_HF_GAIN_MODIFICATION",
    1275             :     "IND_HF_GAIN_MODIFICATION",
    1276             :     "IND_HF_GAIN_MODIFICATION",
    1277             :     "IND_HF_GAIN_MODIFICATION",
    1278             :     "IND_HF_GAIN_MODIFICATION",
    1279             :     "IND_HF_GAIN_MODIFICATION",
    1280             :     "IND_HF_GAIN_MODIFICATION",
    1281             :     "IND_HF_GAIN_MODIFICATION",
    1282             :     "IND_HF_GAIN_MODIFICATION",
    1283             :     "IND_HF_GAIN_MODIFICATION",
    1284             :     "IND_HF_GAIN_MODIFICATION",
    1285             :     "IND_HF_GAIN_MODIFICATION",
    1286             :     "IND_HF_GAIN_MODIFICATION",
    1287             :     "IND_HF_GAIN_MODIFICATION",
    1288             :     "IND_HF_GAIN_MODIFICATION",
    1289             :     "IND_HF_GAIN_MODIFICATION",
    1290             :     "IND_HF_GAIN_MODIFICATION",
    1291             :     "IND_HF_GAIN_MODIFICATION",
    1292             :     "IND_HF_GAIN_MODIFICATION",
    1293             :     "IND_HF_GAIN_MODIFICATION",
    1294             :     "IND_HF_GAIN_MODIFICATION",
    1295             :     "IND_HF_GAIN_MODIFICATION",
    1296             :     "IND_HF_GAIN_MODIFICATION",
    1297             :     "IND_HF_GAIN_MODIFICATION",
    1298             :     "IND_HF_GAIN_MODIFICATION",
    1299             :     "IND_HF_GAIN_MODIFICATION",
    1300             :     "IND_HF_GAIN_MODIFICATION",
    1301             :     "IND_HF_GAIN_MODIFICATION",
    1302             :     "IND_HF_GAIN_MODIFICATION",
    1303             :     "IND_HF_GAIN_MODIFICATION",
    1304             :     "IND_HF_GAIN_MODIFICATION",
    1305             :     "TAG_ACELP_SUBFR_LOOP_END",
    1306             :     "IND_MEAN_GAIN2",
    1307             :     "IND_MEAN_GAIN2",
    1308             :     "IND_MEAN_GAIN2",
    1309             :     "IND_MEAN_GAIN2",
    1310             :     "IND_MEAN_GAIN2",
    1311             :     "IND_MEAN_GAIN2",
    1312             :     "IND_MEAN_GAIN2",
    1313             :     "IND_MEAN_GAIN2",
    1314             :     "IND_MEAN_GAIN2",
    1315             :     "IND_MEAN_GAIN2",
    1316             :     "IND_MEAN_GAIN2",
    1317             :     "IND_MEAN_GAIN2",
    1318             :     "IND_MEAN_GAIN2",
    1319             :     "IND_MEAN_GAIN2",
    1320             :     "IND_MEAN_GAIN2",
    1321             :     "IND_MEAN_GAIN2",
    1322             :     "IND_MEAN_GAIN2",
    1323             :     "IND_MEAN_GAIN2",
    1324             :     "IND_MEAN_GAIN2",
    1325             :     "IND_MEAN_GAIN2",
    1326             :     "IND_MEAN_GAIN2",
    1327             :     "IND_MEAN_GAIN2",
    1328             :     "IND_MEAN_GAIN2",
    1329             :     "IND_MEAN_GAIN2",
    1330             :     "IND_MEAN_GAIN2",
    1331             :     "IND_MEAN_GAIN2",
    1332             :     "IND_MEAN_GAIN2",
    1333             :     "IND_MEAN_GAIN2",
    1334             :     "IND_MEAN_GAIN2",
    1335             :     "IND_MEAN_GAIN2",
    1336             :     "IND_MEAN_GAIN2",
    1337             :     "IND_MEAN_GAIN2",
    1338             :     "IND_Y_GAIN_TMP",
    1339             :     "IND_Y_GAIN_TMP",
    1340             :     "IND_Y_GAIN_TMP",
    1341             :     "IND_Y_GAIN_TMP",
    1342             :     "IND_Y_GAIN_TMP",
    1343             :     "IND_Y_GAIN_TMP",
    1344             :     "IND_Y_GAIN_TMP",
    1345             :     "IND_Y_GAIN_TMP",
    1346             :     "IND_Y_GAIN_TMP",
    1347             :     "IND_Y_GAIN_TMP",
    1348             :     "IND_Y_GAIN_TMP",
    1349             :     "IND_Y_GAIN_TMP",
    1350             :     "IND_Y_GAIN_TMP",
    1351             :     "IND_Y_GAIN_TMP",
    1352             :     "IND_Y_GAIN_TMP",
    1353             :     "IND_Y_GAIN_TMP",
    1354             :     "IND_Y_GAIN_TMP",
    1355             :     "IND_Y_GAIN_TMP",
    1356             :     "IND_Y_GAIN_TMP",
    1357             :     "IND_Y_GAIN_TMP",
    1358             :     "IND_Y_GAIN_TMP",
    1359             :     "IND_Y_GAIN_TMP",
    1360             :     "IND_Y_GAIN_TMP",
    1361             :     "IND_Y_GAIN_TMP",
    1362             :     "IND_Y_GAIN_TMP",
    1363             :     "IND_Y_GAIN_TMP",
    1364             :     "IND_Y_GAIN_TMP",
    1365             :     "IND_Y_GAIN_TMP",
    1366             :     "IND_Y_GAIN_TMP",
    1367             :     "IND_Y_GAIN_TMP",
    1368             :     "IND_Y_GAIN_TMP",
    1369             :     "IND_Y_GAIN_TMP",
    1370             :     "IND_Y_GAIN_HF",
    1371             :     "IND_HQ_VOICING_FLAG",
    1372             :     "IND_HQ_SWB_CLAS",
    1373             :     "IND_NF_IDX",
    1374             :     "IND_LC_MODE",
    1375             :     "IND_YNRM",
    1376             :     "IND_YNRM",
    1377             :     "IND_YNRM",
    1378             :     "IND_YNRM",
    1379             :     "IND_YNRM",
    1380             :     "IND_YNRM",
    1381             :     "IND_YNRM",
    1382             :     "IND_YNRM",
    1383             :     "IND_YNRM",
    1384             :     "IND_YNRM",
    1385             :     "IND_YNRM",
    1386             :     "IND_YNRM",
    1387             :     "IND_YNRM",
    1388             :     "IND_YNRM",
    1389             :     "IND_YNRM",
    1390             :     "IND_YNRM",
    1391             :     "IND_YNRM",
    1392             :     "IND_YNRM",
    1393             :     "IND_YNRM",
    1394             :     "IND_YNRM",
    1395             :     "IND_YNRM",
    1396             :     "IND_YNRM",
    1397             :     "IND_YNRM",
    1398             :     "IND_YNRM",
    1399             :     "IND_YNRM",
    1400             :     "IND_YNRM",
    1401             :     "IND_YNRM",
    1402             :     "IND_YNRM",
    1403             :     "IND_YNRM",
    1404             :     "IND_YNRM",
    1405             :     "IND_YNRM",
    1406             :     "IND_YNRM",
    1407             :     "IND_YNRM",
    1408             :     "IND_YNRM",
    1409             :     "IND_YNRM",
    1410             :     "IND_YNRM",
    1411             :     "IND_YNRM",
    1412             :     "IND_YNRM",
    1413             :     "IND_YNRM",
    1414             :     "IND_YNRM",
    1415             :     "IND_YNRM",
    1416             :     "IND_YNRM",
    1417             :     "IND_YNRM",
    1418             :     "IND_YNRM",
    1419             :     "IND_SWB_FENV_HQ",
    1420             :     "IND_SWB_FENV_HQ",
    1421             :     "IND_SWB_FENV_HQ",
    1422             :     "IND_SWB_FENV_HQ",
    1423             :     "IND_SWB_FENV_HQ",
    1424             :     "IND_FB_FENV_HQ",
    1425             :     "IND_FB_FENV_HQ",
    1426             :     "IND_FB_FENV_HQ",
    1427             :     "IND_FB_FENV_HQ",
    1428             :     "IND_FB_FENV_HQ",
    1429             :     "IND_DELTA_ENV_HQ",
    1430             :     "IND_HVQ_BWE_NL",
    1431             :     "IND_HVQ_BWE_NL",
    1432             :     "IND_NUM_PEAKS",
    1433             :     "IND_POS_IDX",
    1434             :     "IND_POS_IDX",
    1435             :     "IND_POS_IDX",
    1436             :     "IND_POS_IDX",
    1437             :     "IND_POS_IDX",
    1438             :     "IND_POS_IDX",
    1439             :     "IND_POS_IDX",
    1440             :     "IND_POS_IDX",
    1441             :     "IND_POS_IDX",
    1442             :     "IND_POS_IDX",
    1443             :     "IND_POS_IDX",
    1444             :     "IND_POS_IDX",
    1445             :     "IND_POS_IDX",
    1446             :     "IND_POS_IDX",
    1447             :     "IND_POS_IDX",
    1448             :     "IND_POS_IDX",
    1449             :     "IND_POS_IDX",
    1450             :     "IND_POS_IDX",
    1451             :     "IND_POS_IDX",
    1452             :     "IND_POS_IDX",
    1453             :     "IND_POS_IDX",
    1454             :     "IND_POS_IDX",
    1455             :     "IND_POS_IDX",
    1456             :     "IND_POS_IDX",
    1457             :     "IND_POS_IDX",
    1458             :     "IND_POS_IDX",
    1459             :     "IND_POS_IDX",
    1460             :     "IND_POS_IDX",
    1461             :     "IND_POS_IDX",
    1462             :     "IND_POS_IDX",
    1463             :     "IND_POS_IDX",
    1464             :     "IND_POS_IDX",
    1465             :     "IND_POS_IDX",
    1466             :     "IND_POS_IDX",
    1467             :     "IND_POS_IDX",
    1468             :     "IND_POS_IDX",
    1469             :     "IND_POS_IDX",
    1470             :     "IND_POS_IDX",
    1471             :     "IND_POS_IDX",
    1472             :     "IND_POS_IDX",
    1473             :     "IND_POS_IDX",
    1474             :     "IND_POS_IDX",
    1475             :     "IND_POS_IDX",
    1476             :     "IND_POS_IDX",
    1477             :     "IND_POS_IDX",
    1478             :     "IND_POS_IDX",
    1479             :     "IND_POS_IDX",
    1480             :     "IND_POS_IDX",
    1481             :     "IND_POS_IDX",
    1482             :     "IND_POS_IDX",
    1483             :     "IND_POS_IDX",
    1484             :     "IND_POS_IDX",
    1485             :     "IND_POS_IDX",
    1486             :     "IND_POS_IDX",
    1487             :     "IND_POS_IDX",
    1488             :     "IND_POS_IDX",
    1489             :     "IND_POS_IDX",
    1490             :     "IND_POS_IDX",
    1491             :     "IND_POS_IDX",
    1492             :     "IND_POS_IDX",
    1493             :     "IND_POS_IDX",
    1494             :     "IND_POS_IDX",
    1495             :     "IND_POS_IDX",
    1496             :     "IND_POS_IDX",
    1497             :     "IND_POS_IDX",
    1498             :     "IND_POS_IDX",
    1499             :     "IND_POS_IDX",
    1500             :     "IND_POS_IDX",
    1501             :     "IND_POS_IDX",
    1502             :     "IND_POS_IDX",
    1503             :     "IND_POS_IDX",
    1504             :     "IND_POS_IDX",
    1505             :     "IND_POS_IDX",
    1506             :     "IND_POS_IDX",
    1507             :     "IND_POS_IDX",
    1508             :     "IND_POS_IDX",
    1509             :     "IND_POS_IDX",
    1510             :     "IND_POS_IDX",
    1511             :     "IND_POS_IDX",
    1512             :     "IND_POS_IDX",
    1513             :     "IND_POS_IDX",
    1514             :     "IND_POS_IDX",
    1515             :     "IND_POS_IDX",
    1516             :     "IND_POS_IDX",
    1517             :     "IND_POS_IDX",
    1518             :     "IND_POS_IDX",
    1519             :     "IND_POS_IDX",
    1520             :     "IND_POS_IDX",
    1521             :     "IND_POS_IDX",
    1522             :     "IND_POS_IDX",
    1523             :     "IND_POS_IDX",
    1524             :     "IND_POS_IDX",
    1525             :     "IND_POS_IDX",
    1526             :     "IND_POS_IDX",
    1527             :     "IND_POS_IDX",
    1528             :     "IND_POS_IDX",
    1529             :     "IND_POS_IDX",
    1530             :     "IND_POS_IDX",
    1531             :     "IND_POS_IDX",
    1532             :     "IND_POS_IDX",
    1533             :     "IND_POS_IDX",
    1534             :     "IND_POS_IDX",
    1535             :     "IND_POS_IDX",
    1536             :     "IND_POS_IDX",
    1537             :     "IND_POS_IDX",
    1538             :     "IND_POS_IDX",
    1539             :     "IND_POS_IDX",
    1540             :     "IND_POS_IDX",
    1541             :     "IND_POS_IDX",
    1542             :     "IND_POS_IDX",
    1543             :     "IND_POS_IDX",
    1544             :     "IND_POS_IDX",
    1545             :     "IND_POS_IDX",
    1546             :     "IND_POS_IDX",
    1547             :     "IND_POS_IDX",
    1548             :     "IND_POS_IDX",
    1549             :     "IND_POS_IDX",
    1550             :     "IND_POS_IDX",
    1551             :     "IND_POS_IDX",
    1552             :     "IND_POS_IDX",
    1553             :     "IND_POS_IDX",
    1554             :     "IND_POS_IDX",
    1555             :     "IND_POS_IDX",
    1556             :     "IND_POS_IDX",
    1557             :     "IND_POS_IDX",
    1558             :     "IND_POS_IDX",
    1559             :     "IND_POS_IDX",
    1560             :     "IND_POS_IDX",
    1561             :     "IND_POS_IDX",
    1562             :     "IND_POS_IDX",
    1563             :     "IND_POS_IDX",
    1564             :     "IND_POS_IDX",
    1565             :     "IND_POS_IDX",
    1566             :     "IND_POS_IDX",
    1567             :     "IND_POS_IDX",
    1568             :     "IND_POS_IDX",
    1569             :     "IND_POS_IDX",
    1570             :     "IND_POS_IDX",
    1571             :     "IND_POS_IDX",
    1572             :     "IND_POS_IDX",
    1573             :     "IND_POS_IDX",
    1574             :     "IND_POS_IDX",
    1575             :     "IND_POS_IDX",
    1576             :     "IND_POS_IDX",
    1577             :     "IND_POS_IDX",
    1578             :     "IND_POS_IDX",
    1579             :     "IND_POS_IDX",
    1580             :     "IND_POS_IDX",
    1581             :     "IND_POS_IDX",
    1582             :     "IND_POS_IDX",
    1583             :     "IND_POS_IDX",
    1584             :     "IND_POS_IDX",
    1585             :     "IND_POS_IDX",
    1586             :     "IND_POS_IDX",
    1587             :     "IND_POS_IDX",
    1588             :     "IND_POS_IDX",
    1589             :     "IND_POS_IDX",
    1590             :     "IND_POS_IDX",
    1591             :     "IND_POS_IDX",
    1592             :     "IND_POS_IDX",
    1593             :     "IND_POS_IDX",
    1594             :     "IND_POS_IDX",
    1595             :     "IND_POS_IDX",
    1596             :     "IND_POS_IDX",
    1597             :     "IND_POS_IDX",
    1598             :     "IND_POS_IDX",
    1599             :     "IND_POS_IDX",
    1600             :     "IND_POS_IDX",
    1601             :     "IND_POS_IDX",
    1602             :     "IND_POS_IDX",
    1603             :     "IND_POS_IDX",
    1604             :     "IND_POS_IDX",
    1605             :     "IND_POS_IDX",
    1606             :     "IND_POS_IDX",
    1607             :     "IND_POS_IDX",
    1608             :     "IND_POS_IDX",
    1609             :     "IND_POS_IDX",
    1610             :     "IND_POS_IDX",
    1611             :     "IND_POS_IDX",
    1612             :     "IND_POS_IDX",
    1613             :     "IND_POS_IDX",
    1614             :     "IND_POS_IDX",
    1615             :     "IND_POS_IDX",
    1616             :     "IND_POS_IDX",
    1617             :     "IND_POS_IDX",
    1618             :     "IND_POS_IDX",
    1619             :     "IND_POS_IDX",
    1620             :     "IND_POS_IDX",
    1621             :     "IND_POS_IDX",
    1622             :     "IND_POS_IDX",
    1623             :     "IND_POS_IDX",
    1624             :     "IND_POS_IDX",
    1625             :     "IND_POS_IDX",
    1626             :     "IND_POS_IDX",
    1627             :     "IND_POS_IDX",
    1628             :     "IND_POS_IDX",
    1629             :     "IND_POS_IDX",
    1630             :     "IND_POS_IDX",
    1631             :     "IND_POS_IDX",
    1632             :     "IND_POS_IDX",
    1633             :     "IND_POS_IDX",
    1634             :     "IND_POS_IDX",
    1635             :     "IND_POS_IDX",
    1636             :     "IND_POS_IDX",
    1637             :     "IND_POS_IDX",
    1638             :     "IND_POS_IDX",
    1639             :     "IND_POS_IDX",
    1640             :     "IND_POS_IDX",
    1641             :     "IND_POS_IDX",
    1642             :     "IND_POS_IDX",
    1643             :     "IND_POS_IDX",
    1644             :     "IND_POS_IDX",
    1645             :     "IND_POS_IDX",
    1646             :     "IND_POS_IDX",
    1647             :     "IND_POS_IDX",
    1648             :     "IND_POS_IDX",
    1649             :     "IND_POS_IDX",
    1650             :     "IND_POS_IDX",
    1651             :     "IND_POS_IDX",
    1652             :     "IND_POS_IDX",
    1653             :     "IND_POS_IDX",
    1654             :     "IND_POS_IDX",
    1655             :     "IND_POS_IDX",
    1656             :     "IND_POS_IDX",
    1657             :     "IND_POS_IDX",
    1658             :     "IND_POS_IDX",
    1659             :     "IND_POS_IDX",
    1660             :     "IND_POS_IDX",
    1661             :     "IND_POS_IDX",
    1662             :     "IND_POS_IDX",
    1663             :     "IND_POS_IDX",
    1664             :     "IND_POS_IDX",
    1665             :     "IND_POS_IDX",
    1666             :     "IND_POS_IDX",
    1667             :     "IND_POS_IDX",
    1668             :     "IND_POS_IDX",
    1669             :     "IND_POS_IDX",
    1670             :     "IND_POS_IDX",
    1671             :     "IND_POS_IDX",
    1672             :     "IND_POS_IDX",
    1673             :     "IND_POS_IDX",
    1674             :     "IND_POS_IDX",
    1675             :     "IND_POS_IDX",
    1676             :     "IND_POS_IDX",
    1677             :     "IND_POS_IDX",
    1678             :     "IND_POS_IDX",
    1679             :     "IND_POS_IDX",
    1680             :     "IND_POS_IDX",
    1681             :     "IND_POS_IDX",
    1682             :     "IND_POS_IDX",
    1683             :     "IND_POS_IDX",
    1684             :     "IND_POS_IDX",
    1685             :     "IND_POS_IDX",
    1686             :     "IND_POS_IDX",
    1687             :     "IND_POS_IDX",
    1688             :     "IND_POS_IDX",
    1689             :     "IND_POS_IDX",
    1690             :     "IND_POS_IDX",
    1691             :     "IND_POS_IDX",
    1692             :     "IND_POS_IDX",
    1693             :     "IND_POS_IDX",
    1694             :     "IND_POS_IDX",
    1695             :     "IND_POS_IDX",
    1696             :     "IND_POS_IDX",
    1697             :     "IND_POS_IDX",
    1698             :     "IND_POS_IDX",
    1699             :     "IND_POS_IDX",
    1700             :     "IND_POS_IDX",
    1701             :     "IND_POS_IDX",
    1702             :     "IND_POS_IDX",
    1703             :     "IND_POS_IDX",
    1704             :     "IND_POS_IDX",
    1705             :     "IND_POS_IDX",
    1706             :     "IND_POS_IDX",
    1707             :     "IND_POS_IDX",
    1708             :     "IND_POS_IDX",
    1709             :     "IND_POS_IDX",
    1710             :     "IND_POS_IDX",
    1711             :     "IND_POS_IDX",
    1712             :     "IND_POS_IDX",
    1713             :     "IND_FLAGN",
    1714             :     "IND_PG_IDX",
    1715             :     "IND_PG_IDX",
    1716             :     "IND_PG_IDX",
    1717             :     "IND_PG_IDX",
    1718             :     "IND_PG_IDX",
    1719             :     "IND_PG_IDX",
    1720             :     "IND_PG_IDX",
    1721             :     "IND_PG_IDX",
    1722             :     "IND_PG_IDX",
    1723             :     "IND_PG_IDX",
    1724             :     "IND_PG_IDX",
    1725             :     "IND_PG_IDX",
    1726             :     "IND_PG_IDX",
    1727             :     "IND_PG_IDX",
    1728             :     "IND_PG_IDX",
    1729             :     "IND_PG_IDX",
    1730             :     "IND_PG_IDX",
    1731             :     "IND_PG_IDX",
    1732             :     "IND_PG_IDX",
    1733             :     "IND_PG_IDX",
    1734             :     "IND_PG_IDX",
    1735             :     "IND_PG_IDX",
    1736             :     "IND_PG_IDX",
    1737             :     "IND_PG_IDX",
    1738             :     "IND_PG_IDX",
    1739             :     "IND_PG_IDX",
    1740             :     "IND_PG_IDX",
    1741             :     "IND_PG_IDX",
    1742             :     "IND_PG_IDX",
    1743             :     "IND_PG_IDX",
    1744             :     "IND_PG_IDX",
    1745             :     "IND_PG_IDX",
    1746             :     "IND_PG_IDX",
    1747             :     "IND_PG_IDX",
    1748             :     "IND_PG_IDX",
    1749             :     "IND_HVQ_PEAKS",
    1750             :     "IND_HVQ_PEAKS",
    1751             :     "IND_HVQ_PEAKS",
    1752             :     "IND_HVQ_PEAKS",
    1753             :     "IND_HVQ_PEAKS",
    1754             :     "IND_HVQ_PEAKS",
    1755             :     "IND_HVQ_PEAKS",
    1756             :     "IND_HVQ_PEAKS",
    1757             :     "IND_HVQ_PEAKS",
    1758             :     "IND_HVQ_PEAKS",
    1759             :     "IND_HVQ_PEAKS",
    1760             :     "IND_HVQ_PEAKS",
    1761             :     "IND_HVQ_PEAKS",
    1762             :     "IND_HVQ_PEAKS",
    1763             :     "IND_HVQ_PEAKS",
    1764             :     "IND_HVQ_PEAKS",
    1765             :     "IND_HVQ_PEAKS",
    1766             :     "IND_HVQ_PEAKS",
    1767             :     "IND_HVQ_PEAKS",
    1768             :     "IND_HVQ_PEAKS",
    1769             :     "IND_HVQ_PEAKS",
    1770             :     "IND_HVQ_PEAKS",
    1771             :     "IND_HVQ_PEAKS",
    1772             :     "IND_HVQ_PEAKS",
    1773             :     "IND_HVQ_PEAKS",
    1774             :     "IND_HVQ_PEAKS",
    1775             :     "IND_HVQ_PEAKS",
    1776             :     "IND_HVQ_PEAKS",
    1777             :     "IND_HVQ_PEAKS",
    1778             :     "IND_HVQ_PEAKS",
    1779             :     "IND_HVQ_PEAKS",
    1780             :     "IND_HVQ_PEAKS",
    1781             :     "IND_HVQ_PEAKS",
    1782             :     "IND_HVQ_PEAKS",
    1783             :     "IND_HVQ_PEAKS",
    1784             :     "IND_HVQ_PEAKS",
    1785             :     "IND_HVQ_PEAKS",
    1786             :     "IND_HVQ_PEAKS",
    1787             :     "IND_HVQ_PEAKS",
    1788             :     "IND_HVQ_PEAKS",
    1789             :     "IND_HVQ_PEAKS",
    1790             :     "IND_HVQ_PEAKS",
    1791             :     "IND_HVQ_PEAKS",
    1792             :     "IND_HVQ_PEAKS",
    1793             :     "IND_HVQ_PEAKS",
    1794             :     "IND_HVQ_PEAKS",
    1795             :     "IND_HVQ_PEAKS",
    1796             :     "IND_HVQ_PEAKS",
    1797             :     "IND_HVQ_PEAKS",
    1798             :     "IND_HVQ_PEAKS",
    1799             :     "IND_HVQ_PEAKS",
    1800             :     "IND_HVQ_PEAKS",
    1801             :     "IND_HVQ_PEAKS",
    1802             :     "IND_HVQ_PEAKS",
    1803             :     "IND_HVQ_PEAKS",
    1804             :     "IND_HVQ_PEAKS",
    1805             :     "IND_HVQ_PEAKS",
    1806             :     "IND_HVQ_PEAKS",
    1807             :     "IND_HVQ_PEAKS",
    1808             :     "IND_HVQ_PEAKS",
    1809             :     "IND_HVQ_PEAKS",
    1810             :     "IND_HVQ_PEAKS",
    1811             :     "IND_HVQ_PEAKS",
    1812             :     "IND_HVQ_PEAKS",
    1813             :     "IND_HVQ_PEAKS",
    1814             :     "IND_HVQ_PEAKS",
    1815             :     "IND_HVQ_PEAKS",
    1816             :     "IND_HVQ_PEAKS",
    1817             :     "IND_HVQ_PEAKS",
    1818             :     "IND_HVQ_PEAKS",
    1819             :     "IND_HVQ_NF_GAIN",
    1820             :     "IND_HVQ_NF_GAIN",
    1821             :     "IND_HQ2_SWB_CLAS",
    1822             :     "IND_HQ2_DENG_MODE",
    1823             :     "IND_HQ2_DENG_8SMODE",
    1824             :     "IND_HQ2_DENG_8SMODE_N0",
    1825             :     "IND_HQ2_DENG_8SMODE_N1",
    1826             :     "IND_HQ2_DENG_8SPOS",
    1827             :     "IND_HQ2_DENG_8SDEPTH",
    1828             :     "IND_HQ2_DENG_HMODE",
    1829             :     "IND_HQ2_DIFF_ENERGY",
    1830             :     "IND_HQ2_DIFF_ENERGY",
    1831             :     "IND_HQ2_DIFF_ENERGY",
    1832             :     "IND_HQ2_DIFF_ENERGY",
    1833             :     "IND_HQ2_DIFF_ENERGY",
    1834             :     "IND_HQ2_DIFF_ENERGY",
    1835             :     "IND_HQ2_DIFF_ENERGY",
    1836             :     "IND_HQ2_DIFF_ENERGY",
    1837             :     "IND_HQ2_DIFF_ENERGY",
    1838             :     "IND_HQ2_DIFF_ENERGY",
    1839             :     "IND_HQ2_DIFF_ENERGY",
    1840             :     "IND_HQ2_DIFF_ENERGY",
    1841             :     "IND_HQ2_DIFF_ENERGY",
    1842             :     "IND_HQ2_DIFF_ENERGY",
    1843             :     "IND_HQ2_DIFF_ENERGY",
    1844             :     "IND_HQ2_DIFF_ENERGY",
    1845             :     "IND_HQ2_DIFF_ENERGY",
    1846             :     "IND_HQ2_DIFF_ENERGY",
    1847             :     "IND_HQ2_DIFF_ENERGY",
    1848             :     "IND_HQ2_DIFF_ENERGY",
    1849             :     "IND_HQ2_DIFF_ENERGY",
    1850             :     "IND_HQ2_DIFF_ENERGY",
    1851             :     "IND_HQ2_DIFF_ENERGY",
    1852             :     "IND_HQ2_DIFF_ENERGY",
    1853             :     "IND_HQ2_DIFF_ENERGY",
    1854             :     "IND_HQ2_DIFF_ENERGY",
    1855             :     "IND_HQ2_DIFF_ENERGY",
    1856             :     "IND_HQ2_DIFF_ENERGY",
    1857             :     "IND_HQ2_DIFF_ENERGY",
    1858             :     "IND_HQ2_DIFF_ENERGY",
    1859             :     "IND_HQ2_DIFF_ENERGY",
    1860             :     "IND_HQ2_DIFF_ENERGY",
    1861             :     "IND_HQ2_DIFF_ENERGY",
    1862             :     "IND_HQ2_DIFF_ENERGY",
    1863             :     "IND_HQ2_DIFF_ENERGY",
    1864             :     "IND_HQ2_DIFF_ENERGY",
    1865             :     "IND_HQ2_DIFF_ENERGY",
    1866             :     "IND_HQ2_DIFF_ENERGY",
    1867             :     "IND_HQ2_DIFF_ENERGY",
    1868             :     "IND_HQ2_DIFF_ENERGY",
    1869             :     "IND_HQ2_DIFF_ENERGY",
    1870             :     "IND_HQ2_DIFF_ENERGY",
    1871             :     "IND_HQ2_DIFF_ENERGY",
    1872             :     "IND_HQ2_DIFF_ENERGY",
    1873             :     "IND_HQ2_DIFF_ENERGY",
    1874             :     "IND_HQ2_DIFF_ENERGY",
    1875             :     "IND_HQ2_DIFF_ENERGY",
    1876             :     "IND_HQ2_DIFF_ENERGY",
    1877             :     "IND_HQ2_DIFF_ENERGY",
    1878             :     "IND_HQ2_DIFF_ENERGY",
    1879             :     "IND_HQ2_DIFF_ENERGY",
    1880             :     "IND_HQ2_DIFF_ENERGY",
    1881             :     "IND_HQ2_DIFF_ENERGY",
    1882             :     "IND_HQ2_DIFF_ENERGY",
    1883             :     "IND_HQ2_DIFF_ENERGY",
    1884             :     "IND_HQ2_DIFF_ENERGY",
    1885             :     "IND_HQ2_DIFF_ENERGY",
    1886             :     "IND_HQ2_DIFF_ENERGY",
    1887             :     "IND_HQ2_DIFF_ENERGY",
    1888             :     "IND_HQ2_DIFF_ENERGY",
    1889             :     "IND_HQ2_DIFF_ENERGY",
    1890             :     "IND_HQ2_DIFF_ENERGY",
    1891             :     "IND_HQ2_DIFF_ENERGY",
    1892             :     "IND_HQ2_DIFF_ENERGY",
    1893             :     "IND_HQ2_DIFF_ENERGY",
    1894             :     "IND_HQ2_DIFF_ENERGY",
    1895             :     "IND_HQ2_DIFF_ENERGY",
    1896             :     "IND_HQ2_DIFF_ENERGY",
    1897             :     "IND_HQ2_DIFF_ENERGY",
    1898             :     "IND_HQ2_DIFF_ENERGY",
    1899             :     "IND_HQ2_DIFF_ENERGY",
    1900             :     "IND_HQ2_DIFF_ENERGY",
    1901             :     "IND_HQ2_DIFF_ENERGY",
    1902             :     "IND_HQ2_DIFF_ENERGY",
    1903             :     "IND_HQ2_DIFF_ENERGY",
    1904             :     "IND_HQ2_DIFF_ENERGY",
    1905             :     "IND_HQ2_DIFF_ENERGY",
    1906             :     "IND_HQ2_DIFF_ENERGY",
    1907             :     "IND_HQ2_DIFF_ENERGY",
    1908             :     "IND_HQ2_DIFF_ENERGY",
    1909             :     "IND_HQ2_DIFF_ENERGY",
    1910             :     "IND_HQ2_DIFF_ENERGY",
    1911             :     "IND_HQ2_DIFF_ENERGY",
    1912             :     "IND_HQ2_DIFF_ENERGY",
    1913             :     "IND_HQ2_DIFF_ENERGY",
    1914             :     "IND_HQ2_DIFF_ENERGY",
    1915             :     "IND_HQ2_DIFF_ENERGY",
    1916             :     "IND_HQ2_DIFF_ENERGY",
    1917             :     "IND_HQ2_DIFF_ENERGY",
    1918             :     "IND_HQ2_DIFF_ENERGY",
    1919             :     "IND_HQ2_DIFF_ENERGY",
    1920             :     "IND_HQ2_DIFF_ENERGY",
    1921             :     "IND_HQ2_DIFF_ENERGY",
    1922             :     "IND_HQ2_DIFF_ENERGY",
    1923             :     "IND_HQ2_DIFF_ENERGY",
    1924             :     "IND_HQ2_DIFF_ENERGY",
    1925             :     "IND_HQ2_DIFF_ENERGY",
    1926             :     "IND_HQ2_DIFF_ENERGY",
    1927             :     "IND_HQ2_DIFF_ENERGY",
    1928             :     "IND_HQ2_DIFF_ENERGY",
    1929             :     "IND_HQ2_P2A_FLAGS",
    1930             :     "IND_HQ2_P2A_FLAGS",
    1931             :     "IND_HQ2_P2A_FLAGS",
    1932             :     "IND_HQ2_P2A_FLAGS",
    1933             :     "IND_HQ2_P2A_FLAGS",
    1934             :     "IND_HQ2_P2A_FLAGS",
    1935             :     "IND_HQ2_P2A_FLAGS",
    1936             :     "IND_HQ2_P2A_FLAGS",
    1937             :     "IND_HQ2_P2A_FLAGS",
    1938             :     "IND_HQ2_P2A_FLAGS",
    1939             :     "IND_HQ2_P2A_FLAGS",
    1940             :     "IND_HQ2_P2A_FLAGS",
    1941             :     "IND_HQ2_P2A_FLAGS",
    1942             :     "IND_HQ2_P2A_FLAGS",
    1943             :     "IND_HQ2_P2A_FLAGS",
    1944             :     "IND_HQ2_P2A_FLAGS",
    1945             :     "IND_HQ2_P2A_FLAGS",
    1946             :     "IND_HQ2_P2A_FLAGS",
    1947             :     "IND_HQ2_P2A_FLAGS",
    1948             :     "IND_HQ2_P2A_FLAGS",
    1949             :     "IND_HQ2_P2A_FLAGS",
    1950             :     "IND_HQ2_P2A_FLAGS",
    1951             :     "IND_HQ2_P2A_FLAGS",
    1952             :     "IND_HQ2_P2A_FLAGS",
    1953             :     "IND_HQ2_P2A_FLAGS",
    1954             :     "IND_HQ2_P2A_FLAGS",
    1955             :     "IND_HQ2_P2A_FLAGS",
    1956             :     "IND_HQ2_P2A_FLAGS",
    1957             :     "IND_HQ2_P2A_FLAGS",
    1958             :     "IND_HQ2_P2A_FLAGS",
    1959             :     "IND_HQ2_P2A_FLAGS",
    1960             :     "IND_HQ2_P2A_FLAGS",
    1961             :     "IND_HQ2_P2A_FLAGS",
    1962             :     "IND_HQ2_P2A_FLAGS",
    1963             :     "IND_HQ2_P2A_FLAGS",
    1964             :     "IND_HQ2_P2A_FLAGS",
    1965             :     "IND_HQ2_P2A_FLAGS",
    1966             :     "IND_HQ2_P2A_FLAGS",
    1967             :     "IND_HQ2_P2A_FLAGS",
    1968             :     "IND_HQ2_P2A_FLAGS",
    1969             :     "IND_HQ2_P2A_FLAGS",
    1970             :     "IND_HQ2_P2A_FLAGS",
    1971             :     "IND_HQ2_P2A_FLAGS",
    1972             :     "IND_HQ2_P2A_FLAGS",
    1973             :     "IND_HQ2_P2A_FLAGS",
    1974             :     "IND_HQ2_P2A_FLAGS",
    1975             :     "IND_HQ2_P2A_FLAGS",
    1976             :     "IND_HQ2_P2A_FLAGS",
    1977             :     "IND_HQ2_P2A_FLAGS",
    1978             :     "IND_HQ2_P2A_FLAGS",
    1979             :     "IND_HQ2_P2A_FLAGS",
    1980             :     "IND_HQ2_P2A_FLAGS",
    1981             :     "IND_HQ2_P2A_FLAGS",
    1982             :     "IND_HQ2_P2A_FLAGS",
    1983             :     "IND_HQ2_P2A_FLAGS",
    1984             :     "IND_HQ2_P2A_FLAGS",
    1985             :     "IND_HQ2_P2A_FLAGS",
    1986             :     "IND_HQ2_P2A_FLAGS",
    1987             :     "IND_HQ2_P2A_FLAGS",
    1988             :     "IND_HQ2_P2A_FLAGS",
    1989             :     "IND_HQ2_LAST_BA_MAX_BAND",
    1990             :     "IND_HQ2_LAST_BA_MAX_BAND",
    1991             :     "IND_RC_START",
    1992             :     "IND_RC_START",
    1993             :     "IND_RC_START",
    1994             :     "IND_RC_START",
    1995             :     "IND_RC_START",
    1996             :     "IND_RC_START",
    1997             :     "IND_RC_START",
    1998             :     "IND_RC_START",
    1999             :     "IND_RC_START",
    2000             :     "IND_RC_START",
    2001             :     "IND_RC_START",
    2002             :     "IND_RC_START",
    2003             :     "IND_RC_START",
    2004             :     "IND_RC_START",
    2005             :     "IND_RC_START",
    2006             :     "IND_RC_START",
    2007             :     "IND_RC_START",
    2008             :     "IND_RC_START",
    2009             :     "IND_RC_START",
    2010             :     "IND_RC_START",
    2011             :     "IND_RC_START",
    2012             :     "IND_RC_START",
    2013             :     "IND_RC_START",
    2014             :     "IND_RC_START",
    2015             :     "IND_RC_START",
    2016             :     "IND_RC_START",
    2017             :     "IND_RC_START",
    2018             :     "IND_RC_START",
    2019             :     "IND_RC_START",
    2020             :     "IND_RC_START",
    2021             :     "IND_RC_START",
    2022             :     "IND_RC_START",
    2023             :     "IND_RC_START",
    2024             :     "IND_RC_START",
    2025             :     "IND_RC_START",
    2026             :     "IND_RC_START",
    2027             :     "IND_RC_START",
    2028             :     "IND_RC_START",
    2029             :     "IND_RC_START",
    2030             :     "IND_RC_START",
    2031             :     "IND_RC_START",
    2032             :     "IND_RC_START",
    2033             :     "IND_RC_START",
    2034             :     "IND_RC_START",
    2035             :     "IND_RC_START",
    2036             :     "IND_RC_START",
    2037             :     "IND_RC_START",
    2038             :     "IND_RC_START",
    2039             :     "IND_RC_START",
    2040             :     "IND_RC_START",
    2041             :     "IND_RC_START",
    2042             :     "IND_RC_START",
    2043             :     "IND_RC_START",
    2044             :     "IND_RC_START",
    2045             :     "IND_RC_START",
    2046             :     "IND_RC_START",
    2047             :     "IND_RC_START",
    2048             :     "IND_RC_START",
    2049             :     "IND_RC_START",
    2050             :     "IND_RC_START",
    2051             :     "IND_RC_START",
    2052             :     "IND_RC_START",
    2053             :     "IND_RC_START",
    2054             :     "IND_RC_START",
    2055             :     "IND_RC_START",
    2056             :     "IND_RC_START",
    2057             :     "IND_RC_START",
    2058             :     "IND_RC_START",
    2059             :     "IND_RC_START",
    2060             :     "IND_RC_START",
    2061             :     "IND_RC_START",
    2062             :     "IND_RC_START",
    2063             :     "IND_RC_START",
    2064             :     "IND_RC_START",
    2065             :     "IND_RC_START",
    2066             :     "IND_RC_START",
    2067             :     "IND_RC_START",
    2068             :     "IND_RC_START",
    2069             :     "IND_RC_START",
    2070             :     "IND_RC_START",
    2071             :     "IND_RC_START",
    2072             :     "IND_RC_START",
    2073             :     "IND_RC_START",
    2074             :     "IND_RC_START",
    2075             :     "IND_RC_START",
    2076             :     "IND_RC_START",
    2077             :     "IND_RC_START",
    2078             :     "IND_RC_START",
    2079             :     "IND_RC_START",
    2080             :     "IND_RC_START",
    2081             :     "IND_RC_START",
    2082             :     "IND_RC_START",
    2083             :     "IND_RC_START",
    2084             :     "IND_RC_START",
    2085             :     "IND_RC_START",
    2086             :     "IND_RC_START",
    2087             :     "IND_RC_START",
    2088             :     "IND_RC_START",
    2089             :     "IND_RC_START",
    2090             :     "IND_RC_START",
    2091             :     "IND_RC_START",
    2092             :     "IND_RC_START",
    2093             :     "IND_RC_START",
    2094             :     "IND_RC_START",
    2095             :     "IND_RC_START",
    2096             :     "IND_RC_START",
    2097             :     "IND_RC_START",
    2098             :     "IND_RC_START",
    2099             :     "IND_RC_START",
    2100             :     "IND_RC_START",
    2101             :     "IND_RC_START",
    2102             :     "IND_RC_START",
    2103             :     "IND_RC_START",
    2104             :     "IND_RC_START",
    2105             :     "IND_RC_START",
    2106             :     "IND_RC_START",
    2107             :     "IND_RC_START",
    2108             :     "IND_RC_START",
    2109             :     "IND_RC_START",
    2110             :     "IND_RC_START",
    2111             :     "IND_RC_START",
    2112             :     "IND_RC_START",
    2113             :     "IND_RC_START",
    2114             :     "IND_RC_START",
    2115             :     "IND_RC_START",
    2116             :     "IND_RC_START",
    2117             :     "IND_RC_START",
    2118             :     "IND_RC_START",
    2119             :     "IND_RC_START",
    2120             :     "IND_RC_START",
    2121             :     "IND_RC_START",
    2122             :     "IND_RC_START",
    2123             :     "IND_RC_START",
    2124             :     "IND_RC_START",
    2125             :     "IND_RC_START",
    2126             :     "IND_RC_START",
    2127             :     "IND_RC_START",
    2128             :     "IND_RC_START",
    2129             :     "IND_RC_START",
    2130             :     "IND_RC_START",
    2131             :     "IND_RC_START",
    2132             :     "IND_RC_START",
    2133             :     "IND_RC_START",
    2134             :     "IND_RC_START",
    2135             :     "IND_RC_START",
    2136             :     "IND_RC_START",
    2137             :     "IND_RC_START",
    2138             :     "IND_RC_START",
    2139             :     "IND_RC_START",
    2140             :     "IND_RC_START",
    2141             :     "IND_RC_START",
    2142             :     "IND_RC_START",
    2143             :     "IND_RC_START",
    2144             :     "IND_RC_START",
    2145             :     "IND_RC_START",
    2146             :     "IND_RC_START",
    2147             :     "IND_RC_START",
    2148             :     "IND_RC_START",
    2149             :     "IND_RC_START",
    2150             :     "IND_RC_START",
    2151             :     "IND_RC_START",
    2152             :     "IND_RC_START",
    2153             :     "IND_RC_START",
    2154             :     "IND_RC_START",
    2155             :     "IND_RC_START",
    2156             :     "IND_RC_START",
    2157             :     "IND_RC_START",
    2158             :     "IND_RC_START",
    2159             :     "IND_RC_START",
    2160             :     "IND_RC_START",
    2161             :     "IND_RC_START",
    2162             :     "IND_RC_START",
    2163             :     "IND_RC_START",
    2164             :     "IND_RC_START",
    2165             :     "IND_RC_START",
    2166             :     "IND_RC_START",
    2167             :     "IND_RC_START",
    2168             :     "IND_RC_START",
    2169             :     "IND_RC_START",
    2170             :     "IND_RC_START",
    2171             :     "IND_RC_START",
    2172             :     "IND_RC_START",
    2173             :     "IND_RC_START",
    2174             :     "IND_RC_START",
    2175             :     "IND_RC_START",
    2176             :     "IND_RC_START",
    2177             :     "IND_RC_START",
    2178             :     "IND_RC_START",
    2179             :     "IND_RC_START",
    2180             :     "IND_RC_START",
    2181             :     "IND_RC_START",
    2182             :     "IND_RC_START",
    2183             :     "IND_RC_START",
    2184             :     "IND_RC_START",
    2185             :     "IND_RC_START",
    2186             :     "IND_RC_START",
    2187             :     "IND_RC_START",
    2188             :     "IND_RC_START",
    2189             :     "IND_RC_START",
    2190             :     "IND_RC_START",
    2191             :     "IND_RC_START",
    2192             :     "IND_RC_START",
    2193             :     "IND_RC_START",
    2194             :     "IND_RC_START",
    2195             :     "IND_RC_START",
    2196             :     "IND_RC_START",
    2197             :     "IND_RC_START",
    2198             :     "IND_RC_START",
    2199             :     "IND_RC_START",
    2200             :     "IND_RC_START",
    2201             :     "IND_RC_START",
    2202             :     "IND_RC_START",
    2203             :     "IND_RC_START",
    2204             :     "IND_RC_START",
    2205             :     "IND_RC_START",
    2206             :     "IND_RC_START",
    2207             :     "IND_RC_START",
    2208             :     "IND_RC_START",
    2209             :     "IND_RC_START",
    2210             :     "IND_RC_START",
    2211             :     "IND_RC_START",
    2212             :     "IND_RC_START",
    2213             :     "IND_RC_START",
    2214             :     "IND_RC_START",
    2215             :     "IND_RC_START",
    2216             :     "IND_RC_START",
    2217             :     "IND_RC_START",
    2218             :     "IND_RC_START",
    2219             :     "IND_RC_START",
    2220             :     "IND_RC_START",
    2221             :     "IND_RC_START",
    2222             :     "IND_RC_START",
    2223             :     "IND_RC_START",
    2224             :     "IND_RC_START",
    2225             :     "IND_RC_START",
    2226             :     "IND_RC_START",
    2227             :     "IND_RC_START",
    2228             :     "IND_RC_START",
    2229             :     "IND_RC_START",
    2230             :     "IND_RC_START",
    2231             :     "IND_RC_START",
    2232             :     "IND_RC_START",
    2233             :     "IND_RC_START",
    2234             :     "IND_RC_START",
    2235             :     "IND_RC_START",
    2236             :     "IND_RC_START",
    2237             :     "IND_RC_START",
    2238             :     "IND_RC_START",
    2239             :     "IND_RC_START",
    2240             :     "IND_RC_START",
    2241             :     "IND_RC_START",
    2242             :     "IND_RC_START",
    2243             :     "IND_RC_START",
    2244             :     "IND_RC_START",
    2245             :     "IND_RC_START",
    2246             :     "IND_RC_START",
    2247             :     "IND_RC_START",
    2248             :     "IND_RC_START",
    2249             :     "IND_RC_START",
    2250             :     "IND_RC_START",
    2251             :     "IND_RC_START",
    2252             :     "IND_RC_START",
    2253             :     "IND_RC_START",
    2254             :     "IND_RC_START",
    2255             :     "IND_RC_START",
    2256             :     "IND_RC_START",
    2257             :     "IND_RC_START",
    2258             :     "IND_RC_START",
    2259             :     "IND_RC_START",
    2260             :     "IND_RC_START",
    2261             :     "IND_RC_START",
    2262             :     "IND_RC_START",
    2263             :     "IND_RC_START",
    2264             :     "IND_RC_START",
    2265             :     "IND_RC_START",
    2266             :     "IND_RC_START",
    2267             :     "IND_RC_START",
    2268             :     "IND_RC_START",
    2269             :     "IND_RC_START",
    2270             :     "IND_RC_START",
    2271             :     "IND_RC_START",
    2272             :     "IND_RC_START",
    2273             :     "IND_RC_START",
    2274             :     "IND_RC_START",
    2275             :     "IND_RC_START",
    2276             :     "IND_RC_START",
    2277             :     "IND_RC_START",
    2278             :     "IND_RC_START",
    2279             :     "IND_RC_START",
    2280             :     "IND_RC_START",
    2281             :     "IND_RC_START",
    2282             :     "IND_RC_START",
    2283             :     "IND_RC_START",
    2284             :     "IND_RC_START",
    2285             :     "IND_RC_START",
    2286             :     "IND_RC_START",
    2287             :     "IND_RC_START",
    2288             :     "IND_RC_START",
    2289             :     "IND_RC_START",
    2290             :     "IND_RC_START",
    2291             :     "IND_RC_START",
    2292             :     "IND_RC_START",
    2293             :     "IND_RC_START",
    2294             :     "IND_RC_START",
    2295             :     "IND_RC_START",
    2296             :     "IND_RC_START",
    2297             :     "IND_RC_START",
    2298             :     "IND_RC_START",
    2299             :     "IND_RC_START",
    2300             :     "IND_RC_START",
    2301             :     "IND_RC_START",
    2302             :     "IND_RC_START",
    2303             :     "IND_RC_START",
    2304             :     "IND_RC_START",
    2305             :     "IND_RC_START",
    2306             :     "IND_RC_START",
    2307             :     "IND_RC_START",
    2308             :     "IND_RC_START",
    2309             :     "IND_RC_START",
    2310             :     "IND_RC_START",
    2311             :     "IND_RC_END",
    2312             :     "IND_HVQ_PVQ_GAIN",
    2313             :     "IND_HVQ_PVQ_GAIN",
    2314             :     "IND_HVQ_PVQ_GAIN",
    2315             :     "IND_HVQ_PVQ_GAIN",
    2316             :     "IND_HVQ_PVQ_GAIN",
    2317             :     "IND_HVQ_PVQ_GAIN",
    2318             :     "IND_HVQ_PVQ_GAIN",
    2319             :     "IND_HVQ_PVQ_GAIN",
    2320             :     "IND_NOISINESS",
    2321             :     "IND_ENERGY",
    2322             :     "IND_CNG_HO",
    2323             :     "IND_SID_BW",
    2324             :     "IND_CNG_ENV1",
    2325             :     "IND_WB_FENV",
    2326             :     "IND_WB_CLASS",
    2327             :     "IND_IG1",
    2328             :     "IND_IG2A",
    2329             :     "IND_IG2B",
    2330             :     "IND_NELP_FID",
    2331             :     "IND_DELTALAG",
    2332             :     "IND_POWER",
    2333             :     "IND_AMP0",
    2334             :     "IND_AMP1",
    2335             :     "IND_GLOBAL_ALIGNMENT",
    2336             :     "IND_PVQ_FINE_GAIN",
    2337             :     "IND_UV_FLAG",
    2338             :     "IND_UV_FLAG",
    2339             :     "IND_UV_FLAG",
    2340             :     "IND_UV_FLAG",
    2341             :     "IND_UV_FLAG",
    2342             :     "IND_UV_FLAG",
    2343             :     "IND_UV_FLAG",
    2344             :     "IND_UV_FLAG",
    2345             :     "IND_UV_FLAG",
    2346             :     "IND_UV_FLAG",
    2347             :     "IND_UV_FLAG",
    2348             :     "IND_UV_FLAG",
    2349             :     "IND_UV_FLAG",
    2350             :     "IND_UV_FLAG",
    2351             :     "IND_UV_FLAG",
    2352             :     "IND_UV_FLAG",
    2353             :     "IND_UV_FLAG",
    2354             :     "IND_UV_FLAG",
    2355             :     "IND_UV_FLAG",
    2356             :     "IND_UV_FLAG",
    2357             :     "IND_UV_FLAG",
    2358             :     "IND_UV_FLAG",
    2359             :     "IND_UV_FLAG",
    2360             :     "IND_UV_FLAG",
    2361             :     "IND_UV_FLAG",
    2362             :     "IND_UV_FLAG",
    2363             :     "IND_UV_FLAG",
    2364             :     "IND_UV_FLAG",
    2365             :     "IND_UV_FLAG",
    2366             :     "IND_UV_FLAG",
    2367             :     "IND_UV_FLAG",
    2368             :     "IND_UV_FLAG",
    2369             :     "IND_UV_FLAG",
    2370             :     "IND_UV_FLAG",
    2371             :     "IND_UV_FLAG",
    2372             :     "IND_UV_FLAG",
    2373             :     "IND_UV_FLAG",
    2374             :     "IND_UV_FLAG",
    2375             :     "IND_UV_FLAG",
    2376             :     "IND_UV_FLAG",
    2377             :     "IND_UV_FLAG",
    2378             :     "IND_UV_FLAG",
    2379             :     "IND_UV_FLAG",
    2380             :     "IND_SHB_SUBGAIN",
    2381             :     "IND_SHB_FRAMEGAIN",
    2382             :     "IND_STEREO_ICBWE_MSFLAG",
    2383             :     "IND_SHB_ENER_SF",
    2384             :     "IND_SHB_RES_GS",
    2385             :     "IND_SHB_RES_GS",
    2386             :     "IND_SHB_RES_GS",
    2387             :     "IND_SHB_RES_GS",
    2388             :     "IND_SHB_RES_GS",
    2389             :     "IND_SHB_VF",
    2390             :     "IND_SHB_LSF",
    2391             :     "IND_SHB_LSF",
    2392             :     "IND_SHB_LSF",
    2393             :     "IND_SHB_LSF",
    2394             :     "IND_SHB_LSF",
    2395             :     "IND_SHB_MIRROR",
    2396             :     "IND_SHB_GRID",
    2397             :     "IND_SWB_CLASS",
    2398             :     "IND_SWB_TENV",
    2399             :     "IND_SWB_TENV",
    2400             :     "IND_SWB_TENV",
    2401             :     "IND_SWB_TENV",
    2402             :     "IND_SWB_FENV",
    2403             :     "IND_SWB_FENV",
    2404             :     "IND_SWB_FENV",
    2405             :     "IND_SWB_FENV",
    2406             :     "IND_SHB_CNG_GAIN",
    2407             :     "IND_DITHERING",
    2408             :     "IND_FB_SLOPE",
    2409             :     "IND_HQ2_SPT_SHORTEN",
    2410             :     "IND_HQ2_SUBBAND_TCQ",
    2411             :     "IND_HQ2_SUBBAND_TCQ",
    2412             :     "IND_HQ2_SUBBAND_TCQ",
    2413             :     "IND_HQ2_SUBBAND_TCQ",
    2414             :     "IND_HQ2_SUBBAND_TCQ",
    2415             :     "IND_HQ2_SUBBAND_TCQ",
    2416             :     "IND_HQ2_SUBBAND_TCQ",
    2417             :     "IND_HQ2_SUBBAND_TCQ",
    2418             :     "IND_HQ2_SUBBAND_TCQ",
    2419             :     "IND_HQ2_SUBBAND_TCQ",
    2420             :     "IND_HQ2_SUBBAND_TCQ",
    2421             :     "IND_HQ2_SUBBAND_TCQ",
    2422             :     "IND_HQ2_SUBBAND_TCQ",
    2423             :     "IND_HQ2_SUBBAND_TCQ",
    2424             :     "IND_HQ2_SUBBAND_TCQ",
    2425             :     "IND_HQ2_SUBBAND_TCQ",
    2426             :     "IND_HQ2_SUBBAND_TCQ",
    2427             :     "IND_HQ2_SUBBAND_TCQ",
    2428             :     "IND_HQ2_SUBBAND_TCQ",
    2429             :     "IND_HQ2_SUBBAND_TCQ",
    2430             :     "IND_HQ2_SUBBAND_TCQ",
    2431             :     "IND_HQ2_SUBBAND_TCQ",
    2432             :     "IND_HQ2_SUBBAND_TCQ",
    2433             :     "IND_HQ2_SUBBAND_TCQ",
    2434             :     "IND_HQ2_SUBBAND_TCQ",
    2435             :     "IND_HQ2_SUBBAND_TCQ",
    2436             :     "IND_HQ2_SUBBAND_TCQ",
    2437             :     "IND_HQ2_SUBBAND_TCQ",
    2438             :     "IND_HQ2_SUBBAND_TCQ",
    2439             :     "IND_HQ2_SUBBAND_TCQ",
    2440             :     "IND_HQ2_SUBBAND_TCQ",
    2441             :     "IND_HQ2_SUBBAND_TCQ",
    2442             :     "IND_HQ2_SUBBAND_TCQ",
    2443             :     "IND_HQ2_SUBBAND_TCQ",
    2444             :     "IND_HQ2_SUBBAND_TCQ",
    2445             :     "IND_HQ2_SUBBAND_TCQ",
    2446             :     "IND_HQ2_SUBBAND_TCQ",
    2447             :     "IND_HQ2_SUBBAND_TCQ",
    2448             :     "IND_HQ2_SUBBAND_TCQ",
    2449             :     "IND_HQ2_SUBBAND_TCQ",
    2450             :     "IND_HQ2_SUBBAND_TCQ",
    2451             :     "IND_HQ2_SUBBAND_TCQ",
    2452             :     "IND_HQ2_SUBBAND_TCQ",
    2453             :     "IND_HQ2_SUBBAND_TCQ",
    2454             :     "IND_HQ2_SUBBAND_TCQ",
    2455             :     "IND_HQ2_SUBBAND_TCQ",
    2456             :     "IND_HQ2_SUBBAND_TCQ",
    2457             :     "IND_HQ2_SUBBAND_TCQ",
    2458             :     "IND_HQ2_SUBBAND_TCQ",
    2459             :     "IND_HQ2_SUBBAND_TCQ",
    2460             :     "IND_HQ2_SUBBAND_TCQ",
    2461             :     "IND_HQ2_SUBBAND_TCQ",
    2462             :     "IND_HQ2_SUBBAND_TCQ",
    2463             :     "IND_HQ2_SUBBAND_TCQ",
    2464             :     "IND_HQ2_SUBBAND_TCQ",
    2465             :     "IND_HQ2_SUBBAND_TCQ",
    2466             :     "IND_HQ2_SUBBAND_TCQ",
    2467             :     "IND_HQ2_SUBBAND_TCQ",
    2468             :     "IND_HQ2_SUBBAND_TCQ",
    2469             :     "IND_HQ2_SUBBAND_TCQ",
    2470             :     "IND_HQ2_SUBBAND_TCQ",
    2471             :     "IND_HQ2_SUBBAND_TCQ",
    2472             :     "IND_HQ2_SUBBAND_TCQ",
    2473             :     "IND_HQ2_SUBBAND_TCQ",
    2474             :     "IND_HQ2_SUBBAND_TCQ",
    2475             :     "IND_HQ2_SUBBAND_TCQ",
    2476             :     "IND_HQ2_SUBBAND_TCQ",
    2477             :     "IND_HQ2_SUBBAND_TCQ",
    2478             :     "IND_HQ2_SUBBAND_TCQ",
    2479             :     "IND_HQ2_SUBBAND_TCQ",
    2480             :     "IND_HQ2_SUBBAND_TCQ",
    2481             :     "IND_HQ2_SUBBAND_TCQ",
    2482             :     "IND_HQ2_SUBBAND_TCQ",
    2483             :     "IND_HQ2_SUBBAND_TCQ",
    2484             :     "IND_HQ2_SUBBAND_TCQ",
    2485             :     "IND_HQ2_SUBBAND_TCQ",
    2486             :     "IND_HQ2_SUBBAND_TCQ",
    2487             :     "IND_HQ2_SUBBAND_TCQ",
    2488             :     "IND_HQ2_SUBBAND_TCQ",
    2489             :     "IND_HQ2_SUBBAND_TCQ",
    2490             :     "IND_HQ2_SUBBAND_TCQ",
    2491             :     "IND_HQ2_SUBBAND_TCQ",
    2492             :     "IND_HQ2_SUBBAND_TCQ",
    2493             :     "IND_HQ2_SUBBAND_TCQ",
    2494             :     "IND_HQ2_SUBBAND_TCQ",
    2495             :     "IND_HQ2_SUBBAND_TCQ",
    2496             :     "IND_HQ2_SUBBAND_TCQ",
    2497             :     "IND_HQ2_SUBBAND_TCQ",
    2498             :     "IND_HQ2_SUBBAND_TCQ",
    2499             :     "IND_HQ2_SUBBAND_TCQ",
    2500             :     "IND_HQ2_SUBBAND_TCQ",
    2501             :     "IND_HQ2_SUBBAND_TCQ",
    2502             :     "IND_HQ2_SUBBAND_TCQ",
    2503             :     "IND_HQ2_SUBBAND_TCQ",
    2504             :     "IND_HQ2_SUBBAND_TCQ",
    2505             :     "IND_HQ2_SUBBAND_TCQ",
    2506             :     "IND_HQ2_SUBBAND_TCQ",
    2507             :     "IND_HQ2_SUBBAND_TCQ",
    2508             :     "IND_HQ2_SUBBAND_TCQ",
    2509             :     "IND_HQ2_SUBBAND_TCQ",
    2510             :     "IND_HQ2_SUBBAND_GAIN",
    2511             :     "IND_HQ2_SUBBAND_GAIN",
    2512             :     "IND_HQ2_SUBBAND_GAIN",
    2513             :     "IND_HQ2_SUBBAND_GAIN",
    2514             :     "IND_HQ2_SUBBAND_GAIN",
    2515             :     "IND_HQ2_SUBBAND_GAIN",
    2516             :     "IND_HQ2_SUBBAND_GAIN",
    2517             :     "IND_HQ2_SUBBAND_GAIN",
    2518             :     "IND_HQ2_SUBBAND_GAIN",
    2519             :     "IND_HQ2_SUBBAND_GAIN",
    2520             :     "IND_HQ2_SUBBAND_GAIN",
    2521             :     "IND_HQ2_SUBBAND_GAIN",
    2522             :     "IND_HQ2_SUBBAND_GAIN",
    2523             :     "IND_HQ2_SUBBAND_GAIN",
    2524             :     "IND_HQ2_SUBBAND_GAIN",
    2525             :     "IND_HQ2_SUBBAND_GAIN",
    2526             :     "IND_HQ2_SUBBAND_GAIN",
    2527             :     "IND_HQ2_SUBBAND_GAIN",
    2528             :     "IND_HQ2_SUBBAND_GAIN",
    2529             :     "IND_HQ2_SUBBAND_GAIN",
    2530             :     "IND_HQ2_DUMMY",
    2531             :     "IND_LAGINDICES",
    2532             :     "IND_NOISEG",
    2533             :     "IND_AUDIO_GAIN",
    2534             :     "IND_AUDIO_DELAY",
    2535             :     "IND_AUDIO_DELAY",
    2536             :     "IND_AUDIO_DELAY",
    2537             :     "IND_AUDIO_DELAY",
    2538             :     "IND_NQ2",
    2539             :     "IND_NQ2",
    2540             :     "IND_NQ2",
    2541             :     "IND_NQ2",
    2542             :     "IND_NQ2",
    2543             :     "IND_NQ2",
    2544             :     "IND_NQ2",
    2545             :     "IND_NQ2",
    2546             :     "IND_NQ2",
    2547             :     "IND_NQ2",
    2548             :     "IND_NQ2",
    2549             :     "IND_NQ2",
    2550             :     "IND_NQ2",
    2551             :     "IND_NQ2",
    2552             :     "IND_NQ2",
    2553             :     "IND_NQ2",
    2554             :     "IND_NQ2",
    2555             :     "IND_NQ2",
    2556             :     "IND_NQ2",
    2557             :     "IND_NQ2",
    2558             :     "IND_NQ2",
    2559             :     "IND_NQ2",
    2560             :     "IND_NQ2",
    2561             :     "IND_NQ2",
    2562             :     "IND_NQ2",
    2563             :     "IND_NQ2",
    2564             :     "IND_NQ2",
    2565             :     "IND_NQ2",
    2566             :     "IND_NQ2",
    2567             :     "IND_NQ2",
    2568             :     "IND_NQ2",
    2569             :     "IND_NQ2",
    2570             :     "IND_NQ2",
    2571             :     "IND_NQ2",
    2572             :     "IND_NQ2",
    2573             :     "IND_NQ2",
    2574             :     "IND_NQ2",
    2575             :     "IND_NQ2",
    2576             :     "IND_NQ2",
    2577             :     "IND_NQ2",
    2578             :     "IND_NQ2",
    2579             :     "IND_NQ2",
    2580             :     "IND_NQ2",
    2581             :     "IND_NQ2",
    2582             :     "IND_NQ2",
    2583             :     "IND_NQ2",
    2584             :     "IND_NQ2",
    2585             :     "IND_NQ2",
    2586             :     "IND_NQ2",
    2587             :     "IND_NQ2",
    2588             :     "IND_NQ2",
    2589             :     "IND_NQ2",
    2590             :     "IND_NQ2",
    2591             :     "IND_NQ2",
    2592             :     "IND_NQ2",
    2593             :     "IND_NQ2",
    2594             :     "IND_NQ2",
    2595             :     "IND_NQ2",
    2596             :     "IND_NQ2",
    2597             :     "IND_NQ2",
    2598             :     "IND_NQ2",
    2599             :     "IND_NQ2",
    2600             :     "IND_NQ2",
    2601             :     "IND_NQ2",
    2602             :     "IND_NQ2",
    2603             :     "IND_NQ2",
    2604             :     "IND_NQ2",
    2605             :     "IND_NQ2",
    2606             :     "IND_NQ2",
    2607             :     "IND_NQ2",
    2608             :     "IND_NQ2",
    2609             :     "IND_NQ2",
    2610             :     "IND_NQ2",
    2611             :     "IND_NQ2",
    2612             :     "IND_NQ2",
    2613             :     "IND_NQ2",
    2614             :     "IND_NQ2",
    2615             :     "IND_NQ2",
    2616             :     "IND_NQ2",
    2617             :     "IND_NQ2",
    2618             :     "IND_NQ2",
    2619             :     "IND_NQ2",
    2620             :     "IND_NQ2",
    2621             :     "IND_NQ2",
    2622             :     "IND_NQ2",
    2623             :     "IND_NQ2",
    2624             :     "IND_NQ2",
    2625             :     "IND_NQ2",
    2626             :     "IND_NQ2",
    2627             :     "IND_NQ2",
    2628             :     "IND_NQ2",
    2629             :     "IND_NQ2",
    2630             :     "IND_NQ2",
    2631             :     "IND_NQ2",
    2632             :     "IND_NQ2",
    2633             :     "IND_NQ2",
    2634             :     "IND_NQ2",
    2635             :     "IND_NQ2",
    2636             :     "IND_NQ2",
    2637             :     "IND_NQ2",
    2638             :     "IND_NQ2",
    2639             :     "IND_NQ2",
    2640             :     "IND_NQ2",
    2641             :     "IND_NQ2",
    2642             :     "IND_NQ2",
    2643             :     "IND_NQ2",
    2644             :     "IND_NQ2",
    2645             :     "IND_NQ2",
    2646             :     "IND_NQ2",
    2647             :     "IND_NQ2",
    2648             :     "IND_NQ2",
    2649             :     "IND_NQ2",
    2650             :     "IND_NQ2",
    2651             :     "IND_NQ2",
    2652             :     "IND_NQ2",
    2653             :     "IND_NQ2",
    2654             :     "IND_NQ2",
    2655             :     "IND_NQ2",
    2656             :     "IND_NQ2",
    2657             :     "IND_NQ2",
    2658             :     "IND_NQ2",
    2659             :     "IND_NQ2",
    2660             :     "IND_NQ2",
    2661             :     "IND_NQ2",
    2662             :     "IND_NQ2",
    2663             :     "IND_NQ2",
    2664             :     "IND_NQ2",
    2665             :     "IND_NQ2",
    2666             :     "IND_NQ2",
    2667             :     "IND_NQ2",
    2668             :     "IND_NQ2",
    2669             :     "IND_NQ2",
    2670             :     "IND_NQ2",
    2671             :     "IND_NQ2",
    2672             :     "IND_NQ2",
    2673             :     "IND_NQ2",
    2674             :     "IND_NQ2",
    2675             :     "IND_NQ2",
    2676             :     "IND_NQ2",
    2677             :     "IND_NQ2",
    2678             :     "IND_NQ2",
    2679             :     "IND_NQ2",
    2680             :     "IND_NQ2",
    2681             :     "IND_NQ2",
    2682             :     "IND_NQ2",
    2683             :     "IND_NQ2",
    2684             :     "IND_NQ2",
    2685             :     "IND_NQ2",
    2686             :     "IND_NQ2",
    2687             :     "IND_NQ2",
    2688             :     "IND_NQ2",
    2689             :     "IND_NQ2",
    2690             :     "IND_NQ2",
    2691             :     "IND_NQ2",
    2692             :     "IND_NQ2",
    2693             :     "IND_NQ2",
    2694             :     "IND_NQ2",
    2695             :     "IND_NQ2",
    2696             :     "IND_NQ2",
    2697             :     "IND_NQ2",
    2698             :     "IND_NQ2",
    2699             :     "IND_NQ2",
    2700             :     "IND_NQ2",
    2701             :     "IND_NQ2",
    2702             :     "IND_NQ2",
    2703             :     "IND_NQ2",
    2704             :     "IND_NQ2",
    2705             :     "IND_NQ2",
    2706             :     "IND_NQ2",
    2707             :     "IND_NQ2",
    2708             :     "IND_NQ2",
    2709             :     "IND_NQ2",
    2710             :     "IND_NQ2",
    2711             :     "IND_NQ2",
    2712             :     "IND_NQ2",
    2713             :     "IND_NQ2",
    2714             :     "IND_NQ2",
    2715             :     "IND_NQ2",
    2716             :     "IND_NQ2",
    2717             :     "IND_NQ2",
    2718             :     "IND_NQ2",
    2719             :     "IND_NQ2",
    2720             :     "IND_NQ2",
    2721             :     "IND_NQ2",
    2722             :     "IND_NQ2",
    2723             :     "IND_NQ2",
    2724             :     "IND_NQ2",
    2725             :     "IND_NQ2",
    2726             :     "IND_NQ2",
    2727             :     "IND_NQ2",
    2728             :     "IND_NQ2",
    2729             :     "IND_NQ2",
    2730             :     "IND_NQ2",
    2731             :     "IND_NQ2",
    2732             :     "IND_NQ2",
    2733             :     "IND_NQ2",
    2734             :     "IND_NQ2",
    2735             :     "IND_NQ2",
    2736             :     "IND_NQ2",
    2737             :     "IND_NQ2",
    2738             :     "TAG_HR_BWE_LOOP_END",
    2739             :     "IND_CORE_SWITCHING_CELP_SUBFRAME",
    2740             :     "IND_CORE_SWITCHING_CELP_SUBFRAME",
    2741             :     "IND_CORE_SWITCHING_CELP_SUBFRAME",
    2742             :     "IND_CORE_SWITCHING_CELP_SUBFRAME",
    2743             :     "IND_CORE_SWITCHING_CELP_SUBFRAME",
    2744             :     "IND_CORE_SWITCHING_CELP_SUBFRAME",
    2745             :     "IND_CORE_SWITCHING_CELP_SUBFRAME",
    2746             :     "IND_CORE_SWITCHING_CELP_SUBFRAME",
    2747             :     "IND_CORE_SWITCHING_CELP_SUBFRAME",
    2748             :     "IND_CORE_SWITCHING_CELP_SUBFRAME",
    2749             :     "IND_CORE_SWITCHING_CELP_SUBFRAME",
    2750             :     "IND_CORE_SWITCHING_CELP_SUBFRAME",
    2751             :     "IND_CORE_SWITCHING_CELP_SUBFRAME",
    2752             :     "IND_CORE_SWITCHING_CELP_SUBFRAME",
    2753             :     "IND_CORE_SWITCHING_CELP_SUBFRAME",
    2754             :     "IND_CORE_SWITCHING_CELP_SUBFRAME",
    2755             :     "IND_CORE_SWITCHING_CELP_SUBFRAME",
    2756             :     "IND_CORE_SWITCHING_CELP_SUBFRAME",
    2757             :     "IND_CORE_SWITCHING_CELP_SUBFRAME",
    2758             :     "IND_CORE_SWITCHING_CELP_SUBFRAME",
    2759             :     "IND_CORE_SWITCHING_AUDIO_DELAY",
    2760             :     "IND_CORE_SWITCHING_AUDIO_GAIN",
    2761             :     "IND_STEREO_ICBWE_REF",
    2762             :     "IND_STEREO_ICBWE_SP",
    2763             :     "IND_STEREO_ICBWE_GS",
    2764             :     "IND_STEREO_REFCHAN",
    2765             :     "IND_STEREO_CORRSTATS",
    2766             :     "IND_STEREO_GD",
    2767             :     "IND_STEREO_LRTD_FLAG",
    2768             :     "IND_STEREO_LPC_REUSE",
    2769             :     "IND_STEREO_TD_ALPHA",
    2770             :     "IND_STEREO_2ND_CODER_T",
    2771             :     "IND_UNUSED"
    2772             : };
    2773             : #endif
    2774             : 
    2775             : 
    2776             : /*-------------------------------------------------------------------*
    2777             :  * push_indice()
    2778             :  *
    2779             :  * Push a new indice into the buffer
    2780             :  *-------------------------------------------------------------------*/
    2781             : 
    2782           0 : ivas_error push_indice(
    2783             :     BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle                    */
    2784             :     Word16 id,             /* i  : ID of the indice                            */
    2785             :     UWord16 value,         /* i  : value of the quantized indice               */
    2786             :     Word16 nb_bits         /* i  : number of bits used to quantize the indice  */
    2787             : )
    2788             : {
    2789             :     Word16 i;
    2790             :     Word16 j;
    2791             :     ivas_error error;
    2792             : 
    2793           0 :     error = IVAS_ERR_OK;
    2794           0 :     move32();
    2795             : 
    2796             :     /* check the limits of the list of indices */
    2797           0 :     IF( NE_32( ( error = check_ind_list_limits( hBstr ) ), IVAS_ERR_OK ) )
    2798             :     {
    2799           0 :         return IVAS_ERROR( error, "Error occured in push_indice() while re-allocating the list of indices (frame %d) !\n" );
    2800             :     }
    2801             : 
    2802             :     /* find the location in the list of indices based on ID */
    2803           0 :     i = hBstr->nb_ind_tot;
    2804           0 :     move16();
    2805           0 :     test();
    2806           0 :     WHILE( i > 0 && ( id < hBstr->ind_list[i - 1].id ) )
    2807             :     {
    2808           0 :         test();
    2809           0 :         i = sub( i, 1 );
    2810             :     }
    2811             : 
    2812             :     /* shift indices, if the new ID is to be written somewhere inside the list */
    2813           0 :     IF( i < hBstr->nb_ind_tot )
    2814             :     {
    2815           0 :         FOR( j = hBstr->nb_ind_tot; j > i; j-- )
    2816             :         {
    2817           0 :             hBstr->ind_list[j].id = hBstr->ind_list[j - 1].id;
    2818           0 :             hBstr->ind_list[j].nb_bits = hBstr->ind_list[j - 1].nb_bits;
    2819           0 :             hBstr->ind_list[j].value = hBstr->ind_list[j - 1].value;
    2820             : #ifdef DBG_BITSTREAM_ANALYSIS
    2821             :             strncpy( hBstr->ind_list[j].function_name, hBstr->ind_list[j - 1].function_name, 100 );
    2822             : #endif
    2823           0 :             move16();
    2824           0 :             move16();
    2825           0 :             move16();
    2826             :         }
    2827             :     }
    2828             : 
    2829             : 
    2830             :     /* store the new indice in the list */
    2831           0 :     hBstr->ind_list[i].id = id;
    2832           0 :     hBstr->ind_list[i].value = value;
    2833           0 :     hBstr->ind_list[i].nb_bits = nb_bits;
    2834             : #ifdef DBG_BITSTREAM_ANALYSIS
    2835             :     strncpy( hBstr->ind_list[i].function_name, named_indices_table[id], 100 );
    2836             : #endif
    2837           0 :     move16();
    2838           0 :     move16();
    2839           0 :     move16();
    2840             : 
    2841             :     /* updates */
    2842           0 :     hBstr->nb_ind_tot = add( hBstr->nb_ind_tot, 1 );
    2843           0 :     hBstr->nb_bits_tot = add( hBstr->nb_bits_tot, nb_bits );
    2844           0 :     move16();
    2845           0 :     move16();
    2846             : 
    2847           0 :     return error;
    2848             : }
    2849             : 
    2850             : /*-------------------------------------------------------------------*
    2851             :  * push_next_indice()
    2852             :  *
    2853             :  * Push a new indice into the buffer at the next position
    2854             :  *-------------------------------------------------------------------*/
    2855             : #ifdef DBG_BITSTREAM_ANALYSIS
    2856             : ivas_error push_next_indice_(
    2857             : #else
    2858           0 : ivas_error push_next_indice(
    2859             : #endif
    2860             : #ifdef DBG_BITSTREAM_ANALYSIS
    2861             :     const char *caller,
    2862             : #endif
    2863             :     BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle                    */
    2864             :     UWord16 value,         /* i  : value of the quantized indice               */
    2865             :     Word16 nb_bits         /* i  : number of bits used to quantize the indice  */
    2866             : )
    2867             : {
    2868             :     Word16 prev_id;
    2869             :     ivas_error error;
    2870             : 
    2871           0 :     error = IVAS_ERR_OK;
    2872           0 :     move32();
    2873             : 
    2874             : 
    2875             :     /* check the limits of the list of indices */
    2876           0 :     IF( NE_32( ( error = check_ind_list_limits( hBstr ) ), IVAS_ERR_OK ) )
    2877             :     {
    2878           0 :         return error;
    2879             :     }
    2880             : 
    2881             :     /* get the id of the previous indice -> it will be re-used */
    2882           0 :     IF( hBstr->nb_ind_tot > 0 )
    2883             :     {
    2884           0 :         prev_id = hBstr->ind_list[hBstr->nb_ind_tot - 1].id;
    2885             :     }
    2886             :     ELSE
    2887             :     {
    2888           0 :         prev_id = 0;
    2889             :     }
    2890           0 :     move16();
    2891             : 
    2892             :     /* store the values in the list */
    2893           0 :     hBstr->ind_list[hBstr->nb_ind_tot].id = prev_id;
    2894           0 :     hBstr->ind_list[hBstr->nb_ind_tot].value = value;
    2895           0 :     hBstr->ind_list[hBstr->nb_ind_tot].nb_bits = nb_bits;
    2896           0 :     move16();
    2897           0 :     move16();
    2898           0 :     move16();
    2899             : 
    2900             : #ifdef DBG_BITSTREAM_ANALYSIS
    2901             :     strncpy( hBstr->ind_list[hBstr->nb_ind_tot].function_name, caller, 100 );
    2902             : #endif
    2903             : 
    2904             :     /* updates */
    2905           0 :     hBstr->nb_ind_tot = add( hBstr->nb_ind_tot, 1 );
    2906           0 :     hBstr->nb_bits_tot = add( hBstr->nb_bits_tot, nb_bits );
    2907           0 :     move16();
    2908           0 :     move16();
    2909             : 
    2910           0 :     return error;
    2911             : }
    2912             : 
    2913             : /*-------------------------------------------------------------------*
    2914             :  * push_next_bits()
    2915             :  * Push a bit buffer into the buffer at the next position
    2916             :  *-------------------------------------------------------------------*/
    2917             : #ifdef DBG_BITSTREAM_ANALYSIS
    2918             : ivas_error push_next_bits_(
    2919             : #else
    2920           0 : ivas_error push_next_bits(
    2921             : #endif
    2922             : #ifdef DBG_BITSTREAM_ANALYSIS
    2923             :     const char *caller,
    2924             : #endif
    2925             :     BSTR_ENC_HANDLE hBstr, /* i/o: encoder bitstream handle                     */
    2926             :     const UWord16 bits[],  /* i  : bit buffer to pack, sequence of single bits  */
    2927             :     const Word16 nb_bits   /* i  : number of bits to pack                       */
    2928             : )
    2929             : {
    2930             :     UWord16 code;
    2931             :     Word16 i, nb_bits_m15;
    2932             :     Indice *ptr;
    2933             :     Word16 prev_id;
    2934             :     ivas_error error;
    2935             : 
    2936           0 :     error = IVAS_ERR_OK;
    2937           0 :     move32();
    2938             : 
    2939           0 :     ptr = &hBstr->ind_list[hBstr->nb_ind_tot];
    2940             : 
    2941             :     /* get the id of the previous indice -> will be re-used */
    2942           0 :     IF( hBstr->nb_ind_tot > 0 )
    2943             :     {
    2944           0 :         prev_id = hBstr->ind_list[hBstr->nb_ind_tot - 1].id;
    2945           0 :         move16();
    2946             :     }
    2947             :     ELSE
    2948             :     {
    2949           0 :         prev_id = 0;
    2950           0 :         move16();
    2951             :     }
    2952           0 :     nb_bits_m15 = sub( nb_bits, 15 );
    2953             : 
    2954           0 :     FOR( i = 0; i < nb_bits_m15; i += 16 )
    2955             :     {
    2956           0 :         code = (UWord16) L_or( L_shl( bits[i], 15 ), L_or( L_shl( bits[i + 1], 14 ), L_or( L_shl( bits[i + 2], 13 ), L_or( L_shl( bits[i + 3], 12 ), L_or( L_shl( bits[i + 4], 11 ), L_or( L_shl( bits[i + 5], 10 ), L_or( L_shl( bits[i + 6], 9 ), L_or( L_shl( bits[i + 7], 8 ), L_or( L_shl( bits[i + 8], 7 ), L_or( L_shl( bits[i + 9], 6 ), L_or( L_shl( bits[i + 10], 5 ), L_or( L_shl( bits[i + 11], 4 ), L_or( L_shl( bits[i + 12], 3 ), L_or( L_shl( bits[i + 13], 2 ), L_or( L_shl( bits[i + 14], 1 ), bits[i + 15] ) ) ) ) ) ) ) ) ) ) ) ) ) ) );
    2957             : 
    2958             :         /* check the limits of the list of indices */
    2959           0 :         IF( NE_32( ( error = check_ind_list_limits( hBstr ) ), IVAS_ERR_OK ) )
    2960             :         {
    2961           0 :             return IVAS_ERROR( error, "Error occured in push_next_bits() while re-allocating the list of indices (frame %d) !\n" );
    2962             :         }
    2963           0 :         ptr = &hBstr->ind_list[hBstr->nb_ind_tot];
    2964             : 
    2965           0 :         ptr->value = code;
    2966           0 :         ptr->nb_bits = 16;
    2967           0 :         ptr->id = prev_id;
    2968             : #ifdef DBG_BITSTREAM_ANALYSIS
    2969             :         strncpy( ptr->function_name, caller, 100 );
    2970             : #endif
    2971           0 :         hBstr->nb_ind_tot = add( hBstr->nb_ind_tot, 1 );
    2972           0 :         move16();
    2973           0 :         move16();
    2974           0 :         move16();
    2975           0 :         move16();
    2976             : 
    2977           0 :         ++ptr;
    2978             :     }
    2979             : 
    2980           0 :     FOR( ; i < nb_bits; ++i )
    2981             :     {
    2982             :         /* check the limits of the list of indices */
    2983           0 :         IF( NE_32( ( error = check_ind_list_limits( hBstr ) ), IVAS_ERR_OK ) )
    2984             :         {
    2985           0 :             return IVAS_ERROR( error, "Error occured in push_next_bits() while re-allocating the list of indices (frame %d) !\n" );
    2986             :         }
    2987           0 :         ptr = &hBstr->ind_list[hBstr->nb_ind_tot];
    2988             : 
    2989           0 :         ptr->value = bits[i];
    2990           0 :         ptr->nb_bits = 1;
    2991           0 :         ptr->id = prev_id;
    2992             : #ifdef DBG_BITSTREAM_ANALYSIS
    2993             :         strncpy( ptr->function_name, caller, 100 );
    2994             : #endif
    2995           0 :         hBstr->nb_ind_tot = add( hBstr->nb_ind_tot, 1 );
    2996           0 :         move16();
    2997           0 :         move16();
    2998           0 :         move16();
    2999           0 :         move16();
    3000             : 
    3001           0 :         ++ptr;
    3002             :     }
    3003             : 
    3004           0 :     hBstr->nb_bits_tot = add( hBstr->nb_bits_tot, nb_bits );
    3005           0 :     move16();
    3006             : 
    3007           0 :     return error;
    3008             : }
    3009             : 
    3010             : /*-------------------------------------------------------------------*
    3011             :  * find_indice()
    3012             :  *
    3013             :  * Find indice based on its id
    3014             :  *-------------------------------------------------------------------*/
    3015             : 
    3016             : /*! r: result: index of the indice in the list, -1 if not found */
    3017           0 : Word16 find_indice(
    3018             :     BSTR_ENC_HANDLE hBstr, /* i  : encoder bitstream handle                    */
    3019             :     const Word16 id,       /* i  : ID of the indice                            */
    3020             :     UWord16 *value,        /* o  : value of the quantized indice               */
    3021             :     Word16 *nb_bits        /* o  : number of bits used to quantize the indice  */
    3022             : )
    3023             : {
    3024             :     Word16 i;
    3025             : 
    3026           0 :     for ( i = 0; i < hBstr->nb_ind_tot; i++ )
    3027             :     {
    3028           0 :         if ( hBstr->ind_list[i].id == id && hBstr->ind_list[i].nb_bits > 0 )
    3029             :         {
    3030           0 :             *value = hBstr->ind_list[i].value;
    3031           0 :             *nb_bits = hBstr->ind_list[i].nb_bits;
    3032           0 :             return i;
    3033             :         }
    3034             :     }
    3035             : 
    3036           0 :     return -1;
    3037             : }
    3038             : 
    3039             : 
    3040             : /*-------------------------------------------------------------------*
    3041             :  * delete_indice()
    3042             :  *
    3043             :  * Delete indice based on its id (note, that nb_ind_tot and nb_bits_tot are updated)
    3044             :  *-------------------------------------------------------------------*/
    3045             : 
    3046             : /*! r: number of deleted indices */
    3047           0 : UWord16 delete_indice(
    3048             :     BSTR_ENC_HANDLE hBstr, /* i  : encoder bitstream handle                    */
    3049             :     const Word16 id        /* i  : ID of the indice                            */
    3050             : )
    3051             : {
    3052             :     Word16 i, j;
    3053             : 
    3054           0 :     j = 0;
    3055           0 :     for ( i = 0; i < hBstr->nb_ind_tot; i++ )
    3056             :     {
    3057           0 :         if ( hBstr->ind_list[i].id == id )
    3058             :         {
    3059           0 :             hBstr->nb_bits_tot -= hBstr->ind_list[i].nb_bits;
    3060           0 :             continue;
    3061             :         }
    3062             : 
    3063           0 :         if ( j < i )
    3064             :         {
    3065             :             /* shift the indice left */
    3066           0 :             hBstr->ind_list[j].id = hBstr->ind_list[i].id;
    3067           0 :             hBstr->ind_list[j].value = hBstr->ind_list[i].value;
    3068           0 :             hBstr->ind_list[j].nb_bits = hBstr->ind_list[i].nb_bits;
    3069             : #ifdef DBG_BITSTREAM_ANALYSIS
    3070             :             strncpy( hBstr->ind_list[j].function_name, hBstr->ind_list[i].function_name, 100 );
    3071             : #endif
    3072             :         }
    3073             : 
    3074           0 :         j++;
    3075             :     }
    3076             : 
    3077           0 :     hBstr->nb_ind_tot = j;
    3078             : 
    3079           0 :     for ( ; j < i; j++ )
    3080             :     {
    3081             :         /* reset the shifted indices at the end of the list */
    3082           0 :         hBstr->ind_list[j].nb_bits = -1;
    3083             : #ifdef DBG_BITSTREAM_ANALYSIS
    3084             :         sprintf( hBstr->ind_list[j].function_name, "RESET in delete_indice" );
    3085             : #endif
    3086             :     }
    3087             : 
    3088           0 :     return i - j;
    3089             : }
    3090             : 
    3091             : 
    3092             : /*-------------------------------------------------------------------*
    3093             :  * get_next_indice()
    3094             :  *
    3095             :  * Get the next indice from the buffer
    3096             :  *-------------------------------------------------------------------*/
    3097             : 
    3098             : /*! r: value of the indice */
    3099        3046 : UWord16 get_next_indice(
    3100             :     Decoder_State *st, /* i/o: decoder state structure                               */
    3101             :     Word16 nb_bits     /* i  : number of bits that were used to quantize the indice  */
    3102             : )
    3103             : {
    3104             :     UWord16 value;
    3105             :     Word16 i;
    3106             :     Word32 nbits_total;
    3107             : 
    3108        3046 :     assert( nb_bits <= 16 );
    3109             : 
    3110        3046 :     nbits_total = st->total_brate / FRAMES_PER_SEC;
    3111             :     /* detect corrupted bitstream */
    3112        3046 :     if ( st->next_bit_pos + nb_bits > nbits_total )
    3113             :     {
    3114           0 :         st->BER_detect = 1;
    3115           0 :         return ( 0 );
    3116             :     }
    3117             : 
    3118        3046 :     value = 0;
    3119        7504 :     for ( i = 0; i < nb_bits; i++ )
    3120             :     {
    3121        4458 :         value <<= 1;
    3122        4458 :         value += st->bit_stream[st->next_bit_pos + i];
    3123             :     }
    3124             : 
    3125             :     /* update the position in the bitstream */
    3126        3046 :     st->next_bit_pos += nb_bits;
    3127             : 
    3128        3046 :     return value;
    3129             : }
    3130             : 
    3131             : /*-------------------------------------------------------------------*
    3132             :  * get_next_indice_1()
    3133             :  *
    3134             :  * Get the next 1-bit indice from the buffer
    3135             :  *-------------------------------------------------------------------*/
    3136             : 
    3137             : /*! r: value of the indice */
    3138           0 : UWord16 get_next_indice_1(
    3139             :     Decoder_State *st /* i/o: decoder state structure   */
    3140             : )
    3141             : {
    3142             :     Word32 nbits_total;
    3143           0 :     nbits_total = st->total_brate / FRAMES_PER_SEC;
    3144             :     /* detect corrupted bitstream */
    3145           0 :     if ( ( st->next_bit_pos + 1 > nbits_total && st->codec_mode == MODE1 ) ||
    3146           0 :          ( ( st->next_bit_pos + 1 > nbits_total + ( 2 * 8 ) ) && st->codec_mode == MODE2 ) /* add two zero bytes for arithmetic coder flush */
    3147             :     )
    3148             :     {
    3149           0 :         st->BER_detect = 1;
    3150           0 :         return ( 0 );
    3151             :     }
    3152             : 
    3153           0 :     return st->bit_stream[st->next_bit_pos++];
    3154             : }
    3155             : 
    3156             : /*-------------------------------------------------------------------*
    3157             :  * get_next_indice_tmp()
    3158             :  *
    3159             :  * update the total number of bits and the position in the bitstream
    3160             :  *-------------------------------------------------------------------*/
    3161             : 
    3162      560908 : void get_next_indice_tmp(
    3163             :     Decoder_State *st, /* o  : decoder state structure                              */
    3164             :     Word16 nb_bits     /* i  : number of bits that were used to quantize the indice */
    3165             : )
    3166             : {
    3167             :     /* update the position in the bitstream */
    3168      560908 :     st->next_bit_pos += nb_bits;
    3169             : 
    3170      560908 :     return;
    3171             : }
    3172             : 
    3173             : /*-------------------------------------------------------------------*
    3174             :  * get_indice()
    3175             :  *
    3176             :  * Get indice at specific position in the buffer
    3177             :  *-------------------------------------------------------------------*/
    3178             : 
    3179             : /*! r: value of the indice */
    3180      536584 : UWord16 get_indice(
    3181             :     Decoder_State *st, /* i/o: decoder state structure                                    */
    3182             :     Word16 pos,        /* i  : absolute position in the bitstream (update after the read) */
    3183             :     Word16 nb_bits     /* i  : number of bits that were used to quantize the indice       */
    3184             : )
    3185             : {
    3186             :     UWord16 value;
    3187             :     Word16 i;
    3188             :     Word32 nbits_total;
    3189             : 
    3190      536584 :     assert( nb_bits <= 16 );
    3191             : 
    3192      536584 :     nbits_total = st->total_brate / FRAMES_PER_SEC;
    3193             : 
    3194             :     /* detect corrupted bitstream */
    3195      536584 :     if ( pos + nb_bits > nbits_total )
    3196             :     {
    3197           0 :         st->BER_detect = 1;
    3198           0 :         return ( 0 );
    3199             :     }
    3200             : 
    3201      536584 :     value = 0;
    3202     3395718 :     for ( i = 0; i < nb_bits; i++ )
    3203             :     {
    3204     2859134 :         value <<= 1;
    3205     2859134 :         value += st->bit_stream[pos + i];
    3206             :     }
    3207      536584 :     return value;
    3208             : }
    3209             : 
    3210             : /*-------------------------------------------------------------------*
    3211             :  * get_indice_st()
    3212             :  *
    3213             :  * Get indice at specific position in the buffer
    3214             :  *-------------------------------------------------------------------*/
    3215             : 
    3216             : /*! r: value of the indice */
    3217       19352 : UWord16 get_indice_st(
    3218             :     Decoder_State *st,          /* i/o: decoder state structure                 */
    3219             :     const Word32 element_brate, /* i  : element bitrate                         */
    3220             :     const Word16 pos,           /* i  : absolute position in the bitstream      */
    3221             :     const Word16 nb_bits        /* i  : number of bits to quantize the indice   */
    3222             : )
    3223             : {
    3224             :     UWord16 value;
    3225             :     Word16 i;
    3226             : 
    3227       19352 :     assert( nb_bits <= 16 );
    3228             : 
    3229             :     /* detect corrupted bitstream */
    3230       19352 :     IF( GT_32( L_deposit_l( add( pos, nb_bits ) ), Mpy_32_32( element_brate, ONE_BY_FRAMES_PER_SEC_Q31 ) ) )
    3231             :     {
    3232           0 :         st->BER_detect = 1;
    3233           0 :         move16();
    3234           0 :         return ( 0 );
    3235             :     }
    3236             : 
    3237       19352 :     value = 0;
    3238       19352 :     move16();
    3239       62880 :     FOR( i = 0; i < nb_bits; i++ )
    3240             :     {
    3241       43528 :         value = shl( value, 1 );
    3242       43528 :         value = add( value, st->bit_stream[pos + i] );
    3243             :     }
    3244             : 
    3245       19352 :     return value;
    3246             : }
    3247             : #define WMC_TOOL_SKIP
    3248             : 
    3249             : /*-------------------------------------------------------------------*
    3250             :  * reset_indices_dec()
    3251             :  *
    3252             :  * Reset the buffer of decoder indices
    3253             :  *-------------------------------------------------------------------*/
    3254     2162322 : void reset_indices_dec(
    3255             :     Decoder_State *st )
    3256             : {
    3257     2162322 :     st->next_bit_pos = 0;
    3258     2162322 :     move16();
    3259             : 
    3260     2162322 :     return;
    3261             : }
    3262             : /*-------------------------------------------------------------------*
    3263             :  * write_indices_to_stream()
    3264             :  *
    3265             :  * writing forward or backward to a serial stream
    3266             :  *-------------------------------------------------------------------*/
    3267           0 : static Word16 write_indices_to_stream_fx(
    3268             :     Indice *ind_list,
    3269             :     UWord16 **pt_stream,
    3270             :     const Word16 inc,
    3271             :     const Word16 num_indices )
    3272             : {
    3273             :     Word16 i, k;
    3274             :     Word16 value, nb_bits;
    3275             :     UWord16 mask;
    3276             : 
    3277           0 :     FOR( i = 0; i < num_indices; i++ )
    3278             :     {
    3279           0 :         value = ind_list[i].value;
    3280           0 :         nb_bits = ind_list[i].nb_bits;
    3281           0 :         move16();
    3282           0 :         move16();
    3283             : 
    3284           0 :         IF( nb_bits > 0 )
    3285             :         {
    3286             :             /* mask from MSB to LSB */
    3287           0 :             mask = (UWord16) L_shl( 1, sub( nb_bits, 1 ) );
    3288             : 
    3289             :             /* write bit by bit */
    3290           0 :             FOR( k = 0; k < nb_bits; k++ )
    3291             :             {
    3292           0 :                 IF( L_and( value, mask ) )
    3293             :                 {
    3294           0 :                     **pt_stream = 1;
    3295           0 :                     move16();
    3296           0 :                     *pt_stream += inc;
    3297             :                 }
    3298             :                 ELSE
    3299             :                 {
    3300           0 :                     **pt_stream = 0;
    3301           0 :                     move16();
    3302           0 :                     *pt_stream += inc;
    3303             :                 }
    3304             : 
    3305           0 :                 mask = (UWord16) L_shr( mask, 1 );
    3306             :             }
    3307             :         }
    3308             :     }
    3309           0 :     return 0;
    3310             : }
    3311             : 
    3312             : /*-------------------------------------------------------------------*
    3313             :  * write_indices_element()
    3314             :  *
    3315             :  * Bitstream writing function of one element (one SCE or one CPE)
    3316             :  *-------------------------------------------------------------------*/
    3317           0 : static ivas_error write_indices_element_fx(
    3318             :     Encoder_Struct *st_ivas, /* i/o: IVAS encoder structure                                          */
    3319             :     UWord16 **pt_stream,     /* i  : pointer to bitstream buffer                                     */
    3320             :     const Word16 is_SCE,     /* i  : flag to distingusih SCE and CPE                                 */
    3321             :     const Word16 element_id  /* i  : id of the SCE or CPE                                            */
    3322             : #ifdef DBG_BITSTREAM_ANALYSIS
    3323             :     ,
    3324             :     int32_t frame
    3325             : #endif
    3326             : )
    3327             : {
    3328             :     Word16 ch;
    3329           0 :     Encoder_State **sts = NULL;
    3330             :     UWord16 *pt_stream_loc;
    3331             :     UWord16 *pt_stream_backup;
    3332             :     UWord16 *pt_stream_end;
    3333             :     Word16 nb_bits_tot_metadata;
    3334             :     Word16 nb_ind_tot_metadata;
    3335             : 
    3336             :     Indice *ind_list_metadata;
    3337             :     Word16 n, n_channels;
    3338             :     ivas_error error;
    3339             : 
    3340           0 :     error = IVAS_ERR_OK;
    3341           0 :     move32();
    3342             : 
    3343           0 :     ind_list_metadata = NULL;
    3344           0 :     nb_ind_tot_metadata = 0;
    3345           0 :     move16();
    3346             : 
    3347           0 :     IF( EQ_32( st_ivas->hEncoderConfig->ivas_format, MONO_FORMAT ) )
    3348             :     {
    3349           0 :         sts = st_ivas->hSCE[0]->hCoreCoder;
    3350           0 :         nb_bits_tot_metadata = 0;
    3351           0 :         move16();
    3352             :     }
    3353             :     ELSE
    3354             :     {
    3355           0 :         nb_bits_tot_metadata = 0;
    3356           0 :         move16();
    3357           0 :         test();
    3358           0 :         test();
    3359           0 :         IF( is_SCE && st_ivas->hSCE[element_id] != NULL )
    3360             :         {
    3361           0 :             sts = st_ivas->hSCE[element_id]->hCoreCoder;
    3362             : 
    3363           0 :             IF( st_ivas->hSCE[element_id]->hMetaData != NULL )
    3364             :             {
    3365           0 :                 nb_bits_tot_metadata = st_ivas->hSCE[element_id]->hMetaData->nb_bits_tot;
    3366           0 :                 ind_list_metadata = st_ivas->hSCE[element_id]->hMetaData->ind_list;
    3367           0 :                 nb_ind_tot_metadata = st_ivas->hSCE[element_id]->hMetaData->nb_ind_tot;
    3368           0 :                 move16();
    3369           0 :                 move16();
    3370             :             }
    3371             :         }
    3372           0 :         ELSE IF( !is_SCE && st_ivas->hCPE[element_id] != NULL )
    3373             :         {
    3374           0 :             sts = st_ivas->hCPE[element_id]->hCoreCoder;
    3375             : 
    3376           0 :             IF( st_ivas->hCPE[element_id]->hMetaData != NULL )
    3377             :             {
    3378           0 :                 nb_bits_tot_metadata = st_ivas->hCPE[element_id]->hMetaData->nb_bits_tot;
    3379           0 :                 ind_list_metadata = st_ivas->hCPE[element_id]->hMetaData->ind_list;
    3380           0 :                 nb_ind_tot_metadata = st_ivas->hCPE[element_id]->hMetaData->nb_ind_tot;
    3381           0 :                 move16();
    3382           0 :                 move16();
    3383             :             }
    3384             :         }
    3385             :     }
    3386             : 
    3387           0 :     n_channels = 1;
    3388           0 :     move16();
    3389           0 :     if ( GT_16( sts[0]->element_mode, IVAS_CPE_DFT ) )
    3390             :     {
    3391           0 :         n_channels = CPE_CHANNELS;
    3392           0 :         move16();
    3393             :     }
    3394             : 
    3395             :     /*----------------------------------------------------------------*
    3396             :      * Bitstream packing (conversion of individual indices into a serial stream)
    3397             :      *----------------------------------------------------------------*/
    3398             : 
    3399           0 :     pt_stream_loc = *pt_stream;
    3400           0 :     pt_stream_end = pt_stream_loc;
    3401             : 
    3402           0 :     FOR( n = 0; n < n_channels; n++ )
    3403             :     {
    3404             :         /* write the metadata buffer */
    3405           0 :         test();
    3406           0 :         IF( n == 0 && nb_bits_tot_metadata != 0 )
    3407             :         {
    3408           0 :             pt_stream_backup = pt_stream_loc;
    3409             : 
    3410           0 :             FOR( ch = 0; ch < n_channels; ch++ )
    3411             :             {
    3412           0 :                 pt_stream_loc += sts[ch]->hBstr->nb_bits_tot;
    3413             :             }
    3414           0 :             pt_stream_loc += nb_bits_tot_metadata - 1;
    3415           0 :             pt_stream_end = pt_stream_loc + 1;
    3416             : 
    3417           0 :             write_indices_to_stream_fx( ind_list_metadata, &pt_stream_loc, -1,
    3418             :                                         nb_ind_tot_metadata );
    3419             : 
    3420             :             /* restore previous pointer position */
    3421           0 :             pt_stream_loc = pt_stream_backup;
    3422             :         }
    3423           0 :         write_indices_to_stream_fx( sts[n]->hBstr->ind_list, &pt_stream_loc, 1,
    3424           0 :                                     sts[n]->hBstr->nb_ind_tot );
    3425             : 
    3426           0 :         if ( pt_stream_loc > pt_stream_end )
    3427             :         {
    3428           0 :             pt_stream_end = pt_stream_loc;
    3429             :         }
    3430             :     }
    3431             : 
    3432             : #ifdef DBG_BITSTREAM_ANALYSIS
    3433             :     if ( is_SCE ) /* EVS and SCE */
    3434             :     {
    3435             :         static FILE *f1 = 0;
    3436             : 
    3437             :         if ( f1 == 0 )
    3438             :             f1 = fopen( "bitstream_text", "w" );
    3439             : 
    3440             :         for ( int16_t i = 0; i < sts[0]->hBstr->nb_ind_tot; i++ )
    3441             :         {
    3442             :             Indice *ind_list = sts[0]->hBstr->ind_list;
    3443             :             int16_t value = ind_list[i].value;
    3444             :             int16_t nb_bits = ind_list[i].nb_bits;
    3445             :             char *function_name = ind_list[i].function_name;
    3446             : 
    3447             :             fprintf( f1, "%d %d %d %s %d %d\n", frame, element_id, i, function_name, nb_bits, value );
    3448             :         }
    3449             : 
    3450             :         if ( st_ivas->hSCE[element_id]->hMetaData != NULL )
    3451             :         {
    3452             :             for ( int16_t i = 0; i < st_ivas->hSCE[element_id]->hMetaData->nb_ind_tot; i++ )
    3453             :             {
    3454             :                 Indice *ind_list = st_ivas->hSCE[element_id]->hMetaData->ind_list;
    3455             :                 int16_t value = ind_list[i].value;
    3456             :                 int16_t nb_bits = ind_list[i].nb_bits;
    3457             :                 char *function_name = ind_list[i].function_name;
    3458             : 
    3459             :                 fprintf( f1, "%d %d %d %s %d %d\n", frame, element_id, i, function_name, nb_bits, value );
    3460             :             }
    3461             :         }
    3462             :     }
    3463             :     else
    3464             :     {
    3465             :         static FILE *f1 = 0;
    3466             : 
    3467             :         if ( f1 == 0 )
    3468             :             f1 = fopen( "bitstream_text", "w" );
    3469             : 
    3470             : 
    3471             :         for ( n = 0; n < n_channels; n++ )
    3472             :         {
    3473             :             for ( int16_t i = 0; i < sts[n]->hBstr->nb_ind_tot; i++ )
    3474             :             {
    3475             :                 Indice *ind_list = sts[n]->hBstr->ind_list;
    3476             :                 int16_t value = ind_list[i].value;
    3477             :                 int16_t nb_bits = ind_list[i].nb_bits;
    3478             :                 char *function_name = ind_list[i].function_name;
    3479             : 
    3480             :                 fprintf( f1, "%d %d %d %d %s %d %d\n", frame, element_id, n, i, function_name, nb_bits, value );
    3481             :             }
    3482             :         }
    3483             : 
    3484             :         if ( st_ivas->hCPE[element_id]->hMetaData != NULL )
    3485             :         {
    3486             :             for ( int16_t i = 0; i < st_ivas->hCPE[element_id]->hMetaData->nb_ind_tot; i++ )
    3487             :             {
    3488             :                 Indice *ind_list = st_ivas->hCPE[element_id]->hMetaData->ind_list;
    3489             :                 int16_t value = ind_list[i].value;
    3490             :                 int16_t nb_bits = ind_list[i].nb_bits;
    3491             :                 char *function_name = ind_list[i].function_name;
    3492             : 
    3493             :                 fprintf( f1, "%d %d %d %d %s %d %d\n", frame, element_id, -1, i, function_name, nb_bits, value );
    3494             :             }
    3495             :         }
    3496             :     }
    3497             : #endif
    3498             : 
    3499             :     /*----------------------------------------------------------------*
    3500             :      * Clearing of indices
    3501             :      * Reset index pointers
    3502             :      *----------------------------------------------------------------*/
    3503             : 
    3504           0 :     IF( is_SCE ) /* EVS and SCE */
    3505             :     {
    3506           0 :         IF( st_ivas->hSCE[element_id]->hMetaData != NULL )
    3507             :         {
    3508           0 :             reset_indices_enc_fx( st_ivas->hSCE[element_id]->hMetaData, st_ivas->hSCE[element_id]->hMetaData->nb_ind_tot );
    3509             :         }
    3510             : 
    3511           0 :         reset_indices_enc_fx( sts[0]->hBstr, sts[0]->hBstr->nb_ind_tot );
    3512             :     }
    3513             :     ELSE
    3514             :     {
    3515           0 :         IF( st_ivas->hCPE[element_id]->hMetaData != NULL )
    3516             :         {
    3517           0 :             reset_indices_enc_fx( st_ivas->hCPE[element_id]->hMetaData, st_ivas->hCPE[element_id]->hMetaData->nb_ind_tot );
    3518             :         }
    3519             : 
    3520           0 :         FOR( n = 0; n < n_channels; n++ )
    3521             :         {
    3522           0 :             reset_indices_enc_fx( sts[n]->hBstr, sts[n]->hBstr->nb_ind_tot );
    3523             :         }
    3524             :     }
    3525             : 
    3526             :     /* update pointer */
    3527           0 :     *pt_stream = pt_stream_end;
    3528             : 
    3529           0 :     return error;
    3530             : }
    3531             : 
    3532             : /*-------------------------------------------------------------------*
    3533             :  * write_indices_ivas()
    3534             :  *
    3535             :  * Write the buffer of indices to a serial bitstream buffer,
    3536             :  * each bit represented as a uint16_t of value 0 or 1
    3537             :  *-------------------------------------------------------------------*/
    3538           0 : ivas_error write_indices_ivas_fx(
    3539             :     Encoder_Struct *st_ivas, /* i/o: encoder state structure             */
    3540             :     UWord16 *bit_stream,     /* i/o: output bitstream                    */
    3541             :     UWord16 *num_bits        /* i  : number of indices written to output */
    3542             : #ifdef DBG_BITSTREAM_ANALYSIS
    3543             :     ,
    3544             :     int32_t frame
    3545             : #endif
    3546             : )
    3547             : {
    3548             :     Word16 i, n;
    3549             :     UWord16 *pt_stream;
    3550             :     ivas_error error;
    3551             : 
    3552           0 :     error = IVAS_ERR_OK;
    3553           0 :     move32();
    3554             : 
    3555           0 :     pt_stream = bit_stream;
    3556           0 :     FOR( i = 0; i < MAX_BITS_PER_FRAME; ++i )
    3557             :     {
    3558           0 :         bit_stream[i] = 0;
    3559           0 :         move16();
    3560             :     }
    3561             : 
    3562             : 
    3563             :     /*-----------------------------------------------------------------*
    3564             :      * Encode Payload
    3565             :      *-----------------------------------------------------------------*/
    3566             : 
    3567           0 :     FOR( n = 0; n < st_ivas->nSCE; n++ )
    3568             :     {
    3569           0 :         write_indices_element_fx( st_ivas, &pt_stream, 1, n
    3570             : #ifdef DBG_BITSTREAM_ANALYSIS
    3571             :                                   ,
    3572             :                                   frame
    3573             : #endif
    3574             :         );
    3575             :     }
    3576             : 
    3577           0 :     FOR( n = 0; n < st_ivas->nCPE; n++ )
    3578             :     {
    3579           0 :         write_indices_element_fx( st_ivas, &pt_stream, 0, n
    3580             : #ifdef DBG_BITSTREAM_ANALYSIS
    3581             :                                   ,
    3582             :                                   frame
    3583             : #endif
    3584             :         );
    3585             :     }
    3586             : 
    3587           0 :     *num_bits = (UWord16) ( pt_stream - bit_stream );
    3588           0 :     move16();
    3589             : 
    3590           0 :     return error;
    3591             : }
    3592             : 
    3593             : /*-------------------------------------------------------------------*
    3594             :  * decoder_selectCodec()
    3595             :  *
    3596             :  *
    3597             :  *-------------------------------------------------------------------*/
    3598             : 
    3599        3100 : static void decoder_selectCodec(
    3600             :     Decoder_State *st,        /* i/o: decoder state structure                */
    3601             :     const Word32 total_brate, /* i  : total bitrate                          */
    3602             :     const Word16 bit0         /* i  : first bit                              */
    3603             : )
    3604             : {
    3605             :     /* set the AMR-WB IO flag */
    3606        3100 :     if ( rate2AMRWB_IOmode( total_brate ) != -1 )
    3607             :     {
    3608           0 :         st->Opt_AMR_WB = 1;
    3609             :     }
    3610        3100 :     else if ( total_brate != FRAME_NO_DATA )
    3611             :     {
    3612        3100 :         st->Opt_AMR_WB = 0;
    3613             :     }
    3614             : 
    3615        3100 :     if ( st->Opt_AMR_WB )
    3616             :     {
    3617           0 :         st->codec_mode = MODE1;
    3618             :     }
    3619             :     else
    3620             :     {
    3621        3100 :         st->codec_mode = get_codec_mode( total_brate );
    3622             : 
    3623        3100 :         if ( st->codec_mode == -1 )
    3624             :         {
    3625           0 :             switch ( total_brate )
    3626             :             {
    3627           0 :                 case 0:
    3628           0 :                     st->codec_mode = st->last_codec_mode;
    3629           0 :                     break;
    3630           0 :                 case 2400:
    3631           0 :                     st->codec_mode = st->last_codec_mode;
    3632           0 :                     break;
    3633           0 :                 case 2800:
    3634           0 :                     st->codec_mode = MODE1;
    3635           0 :                     break;
    3636           0 :                 default: /* validate that total_brate (derived from RTP packet or a file header) is one of the defined bitrates  */
    3637           0 :                     st->codec_mode = st->last_codec_mode;
    3638           0 :                     st->bfi = 1;
    3639           0 :                     break;
    3640             :             }
    3641        3100 :         }
    3642             :     }
    3643             : 
    3644        3100 :     if ( st->ini_frame == 0 )
    3645             :     {
    3646           3 :         if ( st->codec_mode == -1 )
    3647             :         {
    3648           0 :             st->codec_mode = MODE1;
    3649             :         }
    3650           3 :         st->last_codec_mode = st->codec_mode;
    3651             :     }
    3652             : 
    3653             :     /* set SID/CNG type */
    3654        3100 :     if ( total_brate == SID_2k40 )
    3655             :     {
    3656           0 :         if ( bit0 == 0 )
    3657             :         {
    3658           0 :             st->cng_type = LP_CNG;
    3659             : 
    3660             :             /* force MODE1 when selecting LP_CNG */
    3661           0 :             st->codec_mode = MODE1;
    3662             :         }
    3663           0 :         else if ( bit0 == 1 )
    3664             :         {
    3665           0 :             st->cng_type = FD_CNG;
    3666           0 :             if ( st->last_codec_mode == MODE2 && st->last_total_brate == ACELP_13k20 )
    3667             :             {
    3668           0 :                 st->codec_mode = MODE1;
    3669             :             }
    3670             :         }
    3671             :     }
    3672             : 
    3673        3100 :     return;
    3674             : }
    3675             : 
    3676             : 
    3677             : /*-------------------------------------------------------------------*
    3678             :  * reset_elements()
    3679             :  *
    3680             :  * Simulate packet losses by reading FEC pattern from external file
    3681             :  *-------------------------------------------------------------------*/
    3682             : 
    3683      788299 : Decoder_State **reset_elements(
    3684             :     Decoder_Struct *st_ivas /* i/o: IVAS decoder structure      */
    3685             : )
    3686             : {
    3687             :     Word16 k, n;
    3688      788299 :     Decoder_State **sts = NULL; /* to avoid compilation warning */
    3689             : 
    3690     1417174 :     FOR( k = 0; k < st_ivas->nSCE; k++ )
    3691             :     {
    3692      628875 :         sts = st_ivas->hSCE[k]->hCoreCoder;
    3693             : 
    3694      628875 :         sts[0]->bfi = 0;
    3695      628875 :         sts[0]->BER_detect = 0;
    3696      628875 :         sts[0]->mdct_sw_enable = 0;
    3697      628875 :         sts[0]->mdct_sw = 0;
    3698             : 
    3699      628875 :         move16();
    3700      628875 :         move16();
    3701      628875 :         move16();
    3702      628875 :         move16();
    3703             : 
    3704      628875 :         reset_indices_dec( sts[0] );
    3705             :     }
    3706             : 
    3707     1554221 :     FOR( k = 0; k < st_ivas->nCPE; k++ )
    3708             :     {
    3709      765922 :         sts = st_ivas->hCPE[k]->hCoreCoder;
    3710             : 
    3711     2297766 :         FOR( n = 0; n < CPE_CHANNELS; n++ )
    3712             :         {
    3713     1531844 :             sts[n]->bfi = 0;
    3714     1531844 :             sts[n]->BER_detect = 0;
    3715     1531844 :             sts[n]->mdct_sw_enable = 0;
    3716     1531844 :             sts[n]->mdct_sw = 0;
    3717             : 
    3718     1531844 :             move16();
    3719     1531844 :             move16();
    3720     1531844 :             move16();
    3721     1531844 :             move16();
    3722             : 
    3723     1531844 :             reset_indices_dec( sts[n] );
    3724             :         }
    3725             :     }
    3726             : 
    3727      788299 :     return sts; /* return last decoder state */
    3728             : }
    3729             : 
    3730             : /*-------------------------------------------------------------------*
    3731             :  * ivas_set_bitstream_pointers()
    3732             :  *
    3733             :  * Set bitstream pointers for every SCE/CPE Core-Decoder
    3734             :  *-------------------------------------------------------------------*/
    3735             : 
    3736      391414 : void ivas_set_bitstream_pointers(
    3737             :     Decoder_Struct *st_ivas /* i/o: IVAS decoder structure    */
    3738             : )
    3739             : {
    3740             :     Word16 k, num_bits;
    3741             :     Decoder_State **sts;
    3742             : 
    3743      391414 :     num_bits = 0;
    3744             : 
    3745             :     /* set bitstream pointers for SCEs */
    3746      705105 :     for ( k = 0; k < st_ivas->nSCE; k++ )
    3747             :     {
    3748      313691 :         sts = st_ivas->hSCE[k]->hCoreCoder;
    3749      313691 :         sts[0]->bit_stream = st_ivas->bit_stream + num_bits;
    3750      313691 :         num_bits += (Word16) ( st_ivas->hSCE[k]->element_brate / FRAMES_PER_SEC );
    3751             :     }
    3752             : 
    3753             :     /* set bitstream pointers for CPEs */
    3754      771479 :     for ( k = 0; k < st_ivas->nCPE; k++ )
    3755             :     {
    3756      380065 :         sts = st_ivas->hCPE[k]->hCoreCoder;
    3757      380065 :         sts[0]->bit_stream = st_ivas->bit_stream + num_bits;
    3758      380065 :         num_bits += (Word16) ( st_ivas->hCPE[k]->element_brate / FRAMES_PER_SEC );
    3759             :     }
    3760             : 
    3761      391414 :     return;
    3762             : }
    3763             : 
    3764             : 
    3765             : /*-------------------------------------------------------------------*
    3766             :  * read_indices()
    3767             :  *
    3768             :  * Read indices from an ITU-T G.192 bitstream to the buffer
    3769             :  * Simulate packet losses by inserting frame erasures
    3770             :  *-------------------------------------------------------------------*/
    3771             : 
    3772             : /*! r: 1 = reading OK, 0 = problem */
    3773      399985 : ivas_error read_indices_fx(
    3774             :     Decoder_Struct *st_ivas, /* i/o: IVAS decoder structure         */
    3775             :     UWord16 bit_stream[],    /* i  : bitstream buffer               */
    3776             :     UWord16 num_bits,        /* i  : number of bits in bitstream    */
    3777             :     Word16 *prev_ft_speech,
    3778             :     Word16 *CNG,
    3779             :     Word16 bfi /* i  : bad frame indicator            */
    3780             : )
    3781             : {
    3782             :     Word16 k;
    3783             :     Decoder_State **sts;
    3784      399985 :     Word32 total_brate = 0;
    3785      399985 :     move32();
    3786             :     Word16 curr_ft_good_sp, curr_ft_bad_sp;
    3787             :     Word16 g192_sid_first, sid_upd_bad, sid_update;
    3788             :     Word16 speech_bad, speech_lost;
    3789             :     Word16 n;
    3790             :     ivas_error error;
    3791             : 
    3792      399985 :     error = IVAS_ERR_OK;
    3793      399985 :     move32();
    3794             : 
    3795      399985 :     st_ivas->BER_detect = 0;
    3796      399985 :     move16();
    3797      399985 :     st_ivas->num_bits = num_bits;
    3798      399985 :     move16();
    3799      399985 :     sts = reset_elements( st_ivas );
    3800             : 
    3801      399985 :     st_ivas->bfi = bfi;
    3802      399985 :     move16();
    3803             : 
    3804             :     /* convert the frame length to total bitrate */
    3805      399985 :     total_brate = imult3216( num_bits, FRAMES_PER_SEC );
    3806      399985 :     move32();
    3807             : 
    3808             :     /*  verify that a  valid  num bits value  is present in the G.192 file */
    3809             :     /*  only AMRWB, EVS or IVAS bitrates or 0(NO DATA) are  allowed  in G.192 file frame reading  */
    3810      399985 :     IF( NE_32( st_ivas->ivas_format, MONO_FORMAT ) )
    3811             :     {
    3812      396885 :         k = 0;
    3813      396885 :         move16();
    3814             : 
    3815      396885 :         test();
    3816     3338374 :         WHILE( LT_16( k, SIZE_IVAS_BRATE_TBL ) && NE_32( total_brate, ivas_brate_tbl[k] ) )
    3817             :         {
    3818     2941489 :             k = add( k, 1 );
    3819             :         }
    3820             : 
    3821      396885 :         test();
    3822      396885 :         test();
    3823      396885 :         test();
    3824      396885 :         test();
    3825      396885 :         IF( EQ_32( st_ivas->ivas_format, ISM_FORMAT ) && ( LT_16( k, SIZE_IVAS_BRATE_TBL ) || LE_32( total_brate, SID_2k40 ) ) )
    3826             :         {
    3827       93770 :             st_ivas->element_mode_init = IVAS_SCE;
    3828       93770 :             move16();
    3829             :         }
    3830      303115 :         ELSE IF( ( EQ_32( st_ivas->ivas_format, SBA_FORMAT ) || EQ_32( st_ivas->ivas_format, MASA_FORMAT ) ) && LE_32( total_brate, SID_2k40 ) )
    3831             :         {
    3832        3901 :             st_ivas->element_mode_init = IVAS_SCE;
    3833        3901 :             move16();
    3834             :         }
    3835      299214 :         ELSE IF( EQ_16( k, SIZE_IVAS_BRATE_TBL ) )
    3836             :         {
    3837           0 :             return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error, illegal bitrate (%d) in the  G.192 frame ! Exiting ! \n", total_brate );
    3838             :         }
    3839             :         ELSE
    3840             :         {
    3841      299214 :             st_ivas->element_mode_init = -1;
    3842      299214 :             move16();
    3843             :         }
    3844             :     }
    3845             :     ELSE /* AMRWB or EVS */
    3846             :     {
    3847        3100 :         st_ivas->element_mode_init = EVS_MONO;
    3848        3100 :         move16();
    3849             : 
    3850        3100 :         IF( rate2EVSmode_float( total_brate, NULL ) < 0 ) /* negative value means that a valid rate was not found */
    3851             :         {
    3852           0 :             return IVAS_ERROR( IVAS_ERR_INTERNAL_FATAL, "Error, illegal bitrate (%d) in  the  G.192 frame ! Exiting ! \n", total_brate );
    3853             :         }
    3854             :     }
    3855             : 
    3856             :     /* G.192 RX DTX handler*/
    3857             :     /* handle SID_FIRST, SID_BAD, SPEECH_LOST,  NO_DATA as properly  as possible for the ITU-T  G.192 format  */
    3858             :     /* (total_brate, bfi , st_CNG)   =  rx_handler(received frame type, [previous frame type],  past CNG state, past core) */
    3859      399985 :     curr_ft_good_sp = 0;
    3860      399985 :     move16();
    3861      399985 :     curr_ft_bad_sp = 0;
    3862      399985 :     move16();
    3863             : 
    3864      399985 :     IF( is_DTXrate( total_brate ) == 0 )
    3865             :     {
    3866      380176 :         IF( st_ivas->bfi == 0 )
    3867             :         {
    3868      372669 :             curr_ft_good_sp = 1;
    3869      372669 :             move16();
    3870             :         }
    3871             :         ELSE
    3872             :         {
    3873        7507 :             curr_ft_bad_sp = 1;
    3874        7507 :             move16();
    3875             :         }
    3876             :     }
    3877             : 
    3878      399985 :     sid_update = 0;
    3879      399985 :     move16();
    3880      399985 :     sid_upd_bad = 0;
    3881      399985 :     move16();
    3882      399985 :     IF( EQ_16( is_SIDrate( total_brate ), 1 ) )
    3883             :     {
    3884        2980 :         IF( st_ivas->bfi == 0 )
    3885             :         {
    3886        2907 :             sid_update = 1;
    3887        2907 :             move16();
    3888             :         }
    3889             :         ELSE
    3890             :         {
    3891          73 :             sid_upd_bad = 1; /* this frame type may happen in ETSI/3GPP CS cases, a corrupt SID frames  */
    3892          73 :             move16();
    3893             :         }
    3894             :     }
    3895             : 
    3896             :     /* all zero indices/bits iSP AMRWB SID_update results in a valid LP filter with extremely high LP-filter-gain  */
    3897             :     /* all zero indices/bits  may be a result of CS bit errors  and/or  erroneously injected by gateways or by a bad dejitter handlers */
    3898      399985 :     test();
    3899      399985 :     IF( EQ_32( total_brate, SID_1k75 ) && EQ_16( sid_update, 1 ) )
    3900             :     {
    3901             :         /* valid sid_update received, check for very risky but formally valid content  */
    3902           0 :         Word16 sum = 0;
    3903           0 :         move16();
    3904           0 :         FOR( k = 0; k < num_bits; ++k )
    3905             :         {
    3906           0 :             sum = add( sum, extract_l( EQ_32( bit_stream[k], 1 ) ) ); /*   check of 35 zeroes   */
    3907             :         }
    3908           0 :         if ( sum == 0 )
    3909             :         {                    /* all zeros  */
    3910           0 :             sid_upd_bad = 1; /* initial signal as corrupt (BER likely)  */
    3911           0 :             move16();
    3912             :         }
    3913             :     }
    3914             : 
    3915             :     /* AMRWB  26.173 G.192  file reader (read_serial)  does not declare/use SID_BAD ft,
    3916             :                       it declares every bad synch marked frame initially as  a lost_speech frame,
    3917             :                       and then the RXDTX handler CNG state decides the decoding mode CNG/SPEECH.
    3918             :                       While In the AMRWB ETSI/3GPP format eid a CRC error in a detected  SID_UPDATE frames triggers SID_BAD.
    3919             : 
    3920             :                       Here we inhibit use of the SID-length info, even though it is available in the G.192 file format after STL/EID-XOR .
    3921             :                    */
    3922      399985 :     IF( sid_upd_bad )
    3923             :     {
    3924          73 :         sid_upd_bad = 0;
    3925          73 :         move16();
    3926          73 :         total_brate = FRAME_NO_DATA; /* treat SID_BAD  as a  stolen signaling frame --> SPEECH LOST */
    3927          73 :         move32();
    3928             :     }
    3929             : 
    3930      399985 :     g192_sid_first = 0;
    3931      399985 :     move16();
    3932             : 
    3933      399985 :     test();
    3934      399985 :     test();
    3935      399985 :     test();
    3936      399985 :     test();
    3937      399985 :     if ( EQ_32( st_ivas->ivas_format, MONO_FORMAT ) && EQ_16( sts[0]->core, AMR_WB_CORE ) && *prev_ft_speech && total_brate == FRAME_NO_DATA && st_ivas->bfi == 0 )
    3938             :     {
    3939           0 :         g192_sid_first = 1; /*  SID_FIRST detected for previous AMRWB/AMRWBIO  active frames only  */
    3940             :                             /* It is not possible to perfectly simulate rate switching conditions EVS->AMRWBIO  where:
    3941             :                                            the very first SID_FIRST detection is based on a past EVS active frame
    3942             :                                            and  a  good length 0  "SID_FIRST"(NO_DATA)   frame is sent in AMRWBIO,
    3943             :                                            due to the one frame state memory in the AMRWB legacy  G.192 SID_FIRST encoding
    3944             :                                          */
    3945           0 :         move16();
    3946             :     }
    3947             : 
    3948      399985 :     speech_bad = 0;
    3949      399985 :     move16();
    3950             : 
    3951      399985 :     test();
    3952      399985 :     if ( st_ivas->bfi != 0 && ( is_DTXrate( total_brate ) == 0 ) )
    3953             :     {
    3954        7507 :         speech_bad = 1; /* initial ft assumption, CNG_state decides what to do */
    3955        7507 :         move16();
    3956             :     }
    3957             : 
    3958      399985 :     speech_lost = 0;
    3959      399985 :     move16();
    3960             : 
    3961      399985 :     test();
    3962      399985 :     if ( total_brate == FRAME_NO_DATA && st_ivas->bfi != 0 ) /*  unsent  NO_DATA or stolen NO_DATA/signaling  frame  */
    3963             :     {
    3964        2457 :         speech_lost = 1; /* initial ft assumption, CNG_state decides what to do */
    3965        2457 :         move16();
    3966             :     }
    3967             : 
    3968             :     /* Do not allow decoder to enter CNG-synthesis for  any instantly  received  GOOD+LENGTH==0  frame
    3969             :                    as this frame was never transmitted, one  can not know it is good and has a a length of zero ) */
    3970      399985 :     IF( *CNG != 0 )
    3971             :     {
    3972             :         /* We were in CNG synthesis  */
    3973       18675 :         if ( curr_ft_good_sp != 0 )
    3974             :         {
    3975             :             /* only a good speech frame makes you leave CNG synthesis */
    3976         934 :             *CNG = 0;
    3977         934 :             move16();
    3978             :         }
    3979             :     }
    3980             :     ELSE
    3981             :     {
    3982             :         /* We were in SPEECH synthesis  */
    3983             :         /* only a received/detected SID frame can make the decoder enter into CNG synthsis  */
    3984      381310 :         test();
    3985      381310 :         test();
    3986      381310 :         if ( g192_sid_first || sid_update || sid_upd_bad )
    3987             :         {
    3988        1010 :             *CNG = 1;
    3989        1010 :             move16();
    3990             :         }
    3991             :     }
    3992             : 
    3993             :     /* set bfi, total_brate pair  for proper decoding  */
    3994             :     /*  handle the  G.192   _simulated_ untransmitted NO_DATA frame,  setting  for decoder  SPEECH synthesis  */
    3995      399985 :     test();
    3996      399985 :     test();
    3997      399985 :     if ( *CNG == 0 && total_brate == FRAME_NO_DATA && st_ivas->bfi == 0 )
    3998             :     {
    3999          80 :         st_ivas->bfi = 1; /*  SPEECH PLC code will now become active as in a real system */
    4000             :                           /* total_brate= 0  */
    4001          80 :         move16();
    4002             :     }
    4003             : 
    4004             :     /* handle bad/lost speech frame(and CS bad SID frame) in the decoders CNG synthesis settings pair (total_brate, bfi) */
    4005      399985 :     test();
    4006      399985 :     test();
    4007      399985 :     test();
    4008      399985 :     test();
    4009      399985 :     IF( (
    4010             :             NE_16( bfi, FRAMEMODE_FUTURE ) &&
    4011             :             ( *CNG != 0 ) && ( ( speech_bad != 0 ) || ( speech_lost != 0 ) ) ) || /* SP_BAD or SPEECH_LOST)   --> stay in CNG */
    4012             :         ( sid_upd_bad != 0 ) )                                                    /* SID_UPD_BAD              --> start CNG */
    4013             :     {
    4014        1479 :         st_ivas->bfi = 0; /* bfi=0 needed to activate CNG code */
    4015        1479 :         move16();
    4016        1479 :         total_brate = FRAME_NO_DATA;
    4017        1479 :         move32();
    4018             :     }
    4019             : 
    4020             :     /* update for next frame's G.192 file format's  odd SID_FIRST detection (primarily for AMRWBIO)  */
    4021      399985 :     test();
    4022      399985 :     *prev_ft_speech = ( ( curr_ft_good_sp != 0 ) || ( curr_ft_bad_sp != 0 ) );
    4023      399985 :     move16();
    4024             : 
    4025             :     /*   st->total brate= total_brate;   updated in a good frame below */
    4026             : 
    4027      785842 :     FOR( k = 0; k < st_ivas->nCPE; k++ )
    4028             :     {
    4029      385857 :         sts = st_ivas->hCPE[k]->hCoreCoder;
    4030     1157571 :         FOR( n = 0; n < CPE_CHANNELS; n++ )
    4031             :         {
    4032      771714 :             sts[n]->bfi = st_ivas->bfi;
    4033      771714 :             move16();
    4034             :         }
    4035             :     }
    4036             : 
    4037      718269 :     FOR( k = 0; k < st_ivas->nSCE; k++ )
    4038             :     {
    4039      318284 :         sts = st_ivas->hSCE[k]->hCoreCoder;
    4040      318284 :         sts[0]->bfi = st_ivas->bfi;
    4041      318284 :         move16();
    4042             :     }
    4043             : 
    4044      399985 :     IF( st_ivas->bfi == 0 )
    4045             :     {
    4046             :         /* select Mode 1 or Mode 2 */
    4047      391420 :         IF( EQ_32( st_ivas->ivas_format, MONO_FORMAT ) ) /* EVS mono */
    4048             :         {
    4049        3100 :             decoder_selectCodec( sts[0], total_brate, bit_stream[0] );
    4050        3100 :             st_ivas->hDecoderConfig->Opt_AMR_WB = sts[0]->Opt_AMR_WB;
    4051        3100 :             move16();
    4052             :         }
    4053             :         ELSE /* IVAS */
    4054             :         {
    4055      388320 :             st_ivas->codec_mode = MODE1;
    4056      388320 :             move16();
    4057      388320 :             st_ivas->hDecoderConfig->Opt_AMR_WB = 0;
    4058      388320 :             move16();
    4059             :         }
    4060             :     }
    4061             : 
    4062             :     /* GOOD frame */
    4063      399985 :     test();
    4064      399985 :     if ( st_ivas->bfi == 0 || EQ_16( st_ivas->bfi, FRAMEMODE_FUTURE ) )
    4065             :     {
    4066             :         /* GOOD frame - convert ITU-T G.192 words to short values */
    4067      391420 :         st_ivas->hDecoderConfig->ivas_total_brate = total_brate;
    4068      391420 :         move32();
    4069             :     }
    4070             : 
    4071      399985 :     st_ivas->bit_stream = bit_stream;
    4072             : 
    4073      399985 :     IF( EQ_32( st_ivas->ivas_format, MONO_FORMAT ) )
    4074             :     {
    4075        3100 :         ivas_set_bitstream_pointers( st_ivas );
    4076             :     }
    4077             : 
    4078      399985 :     return error;
    4079             : }
    4080             : #undef WMC_TOOL_SKIP

Generated by: LCOV version 1.14