LCOV - code coverage report
Current view: top level - lib_enc - update_decision_fx.c (source / functions) Hit Total Coverage
Test: Coverage on main enc/dec/rend @ fad4d7ba6e6a5c113994f3d29634634b872c6804 Lines: 200 226 88.5 %
Date: 2025-05-16 01:59:29 Functions: 2 2 100.0 %

          Line data    Source code
       1             : /*====================================================================================
       2             :     EVS Codec 3GPP TS26.452 Aug 12, 2021. Version 16.3.0
       3             :   ====================================================================================*/
       4             : 
       5             : 
       6             : #include <stdint.h>
       7             : #include "options.h"
       8             : #include "basop_util.h"
       9             : #include "vad_basop.h"
      10             : //#include "prot_fx.h"
      11             : #include "prot_fx.h"     /* Function prototypes                    */
      12             : #include "prot_fx_enc.h" /* Function prototypes                    */
      13             :                          /*-------------------------------------------------------------------*
      14             :                           * bg_music_decision_fx()
      15             :                           *
      16             :                           *
      17             :                           * -------------------------------------------------------------------*/
      18        3100 : void bg_music_decision_fx(
      19             :     VAD_CLDFB_HANDLE hVAD_CLDFB, /* i/o: CLDFB VAD state     */
      20             :     Word16 *music_backgound_f,   /* i  : background music flag*/
      21             :     Word32 frame_energy,         /* i  : current frame energy 1*/
      22             :     Word16 frame_energy_Q        /* i  : the Scaling of current frame energy*/
      23             : )
      24             : {
      25             : 
      26        3100 :     Word16 *f_tonality_rate = hVAD_CLDFB->f_tonality_rate;
      27        3100 :     Word16 *ltd_stable_rate = hVAD_CLDFB->ltd_stable_rate;
      28        3100 :     Word16 *sp_center = hVAD_CLDFB->sp_center;
      29        3100 :     Word16 *sSFM = hVAD_CLDFB->sfm;
      30             :     Word16 cmp_result;
      31             :     Word32 music_background_frame;
      32             :     Word32 tmp1;
      33             :     Word16 tmp1_Q;
      34             :     Word16 tmp_norm;
      35             :     Word32 frame_energy_Mcount;
      36             :     Word16 fg_energy_Qtmp;
      37             : 
      38             : 
      39        3100 :     music_background_frame = 0;
      40        3100 :     move32();
      41        3100 :     tmp1 = L_mult( hVAD_CLDFB->fg_energy_count, 18842 );
      42        3100 :     tmp1_Q = norm_l( tmp1 );
      43        3100 :     tmp1 = L_shl( tmp1, tmp1_Q );
      44        3100 :     tmp_norm = extract_h( tmp1 );
      45        3100 :     frame_energy_Mcount = MUL_F( frame_energy, tmp_norm );
      46             : 
      47        3100 :     fg_energy_Qtmp = sub( frame_energy_Q, 18 );
      48        3100 :     fg_energy_Qtmp = add( fg_energy_Qtmp, tmp1_Q );
      49             : 
      50        3100 :     cmp_result = VAD_L_CMP( frame_energy_Mcount, fg_energy_Qtmp, hVAD_CLDFB->fg_energy, hVAD_CLDFB->fg_energy_scale );
      51             : 
      52        3100 :     test();
      53        3100 :     IF( ( GT_16( f_tonality_rate[1], 9830 /* 0.6 Q14 */ ) ) || ( GT_16( f_tonality_rate[0], 14089 /* 0.86 Q14 */ ) ) )
      54             :     {
      55             : 
      56        1745 :         test();
      57        1745 :         test();
      58        1745 :         test();
      59        1745 :         test();
      60        1745 :         if ( ( LT_16( ltd_stable_rate[0], 2359 /* 0.072 Q15 */ ) ) && ( GT_16( sp_center[0], 1228 /* 1.2 Q10 */ ) ) && ( ( LT_16( sSFM[0], 24903 /* 0.76 Q15 */ ) ) || ( LT_16( sSFM[1], 28835 /* 0.88 Q15 */ ) ) || ( LT_16( sSFM[2], 31456 /* 0.96 Q15 */ ) ) ) )
      61             :         {
      62          20 :             music_background_frame = 1;
      63          20 :             move32();
      64             :         }
      65             :     }
      66             : 
      67        3100 :     test();
      68        3100 :     test();
      69        3100 :     IF( music_background_frame && ( cmp_result > 0 ) && ( EQ_32( hVAD_CLDFB->fg_energy_est_start, 1 ) ) )
      70             :     {
      71          20 :         hVAD_CLDFB->music_background_rate = add( mult( hVAD_CLDFB->music_background_rate, 31949 ), 819 );
      72          20 :         move16();
      73             :     }
      74        3080 :     ELSE IF( music_background_frame )
      75             :     {
      76           0 :         hVAD_CLDFB->music_background_rate = add( mult( hVAD_CLDFB->music_background_rate, 32702 ), 66 );
      77           0 :         move16();
      78             :     }
      79             :     ELSE
      80             :     {
      81        3080 :         hVAD_CLDFB->music_background_rate = mult( hVAD_CLDFB->music_background_rate, 32670 );
      82        3080 :         move16();
      83             :     }
      84             : 
      85        3100 :     *music_backgound_f = 0;
      86        3100 :     move16();
      87        3100 :     if ( GT_16( hVAD_CLDFB->music_background_rate, 16384 ) )
      88             :     {
      89           0 :         *music_backgound_f = 1;
      90           0 :         move16();
      91             :     }
      92        3100 : }
      93             : /*-------------------------------------------------------------------*
      94             :  * update_decision_fx()
      95             :  *
      96             :  *
      97             :  *-------------------------------------------------------------------*/
      98             : 
      99        3100 : Word16 update_decision_fx(
     100             :     VAD_CLDFB_HANDLE hVAD_CLDFB,   /* i/o: CLDFB VAD state     */
     101             :     const Word32 frame_energy,     /* i  : current frame energy*/
     102             :     Word32 HB_Power,               /* i  : current frame high frequency energy*/
     103             :     const Word16 frameloop,        /* i  : amount of  frames*/
     104             :     const Word16 bw,               /* i  : band width index*/
     105             :     const Word16 frame_energy_Q,   /* i  : the Scaling of current frame energy*/
     106             :     const Word16 HB_Power_Q,       /* i  : the Scaling of current frame high frequency energy*/
     107             :     const Word32 snr,              /* i  : frequency domain SNR */
     108             :     const Word32 tsnr,             /* i  : time domain SNR */
     109             :     const Word16 vad_flag,         /* i  : VAD flag                            */
     110             :     const Word16 music_backgound_f /* i  : background music flag*/
     111             : )
     112             : {
     113        3100 :     Word16 *sp_center = hVAD_CLDFB->sp_center;
     114        3100 :     Word16 *ltd_stable_rate = hVAD_CLDFB->ltd_stable_rate;
     115        3100 :     Word16 *sSFM = hVAD_CLDFB->sfm;
     116        3100 :     Word16 *f_tonality_rate = hVAD_CLDFB->f_tonality_rate;
     117             : 
     118             :     Word16 update_flag;
     119             :     Word16 tonality_flag;
     120             :     Word32 tmp1;
     121             :     Word16 tmp1_Q;
     122             :     Word16 tmp_norm;
     123             :     Word32 frame_energy_Mcount;
     124             :     Word32 lt_bg_highf_eng_trbl;
     125             :     Word16 flag_high_eng;
     126             :     Word16 fg_energy_Qtmp;
     127             :     Word16 cmp_result;
     128             :     Word16 tmpout;
     129             :     Word16 sp_center3_diff;
     130             : 
     131             :     Word16 Q_counter;
     132             :     Word16 Q_sum;
     133             :     Word32 sum_num, counter_den;
     134             :     Word16 div_r;
     135             : 
     136             :     Word16 div_r_Q;
     137             :     Word32 div_r_32;
     138             : 
     139             : 
     140        3100 :     update_flag = 1;
     141        3100 :     move16();
     142        3100 :     tonality_flag = 0;
     143        3100 :     move16();
     144             : 
     145        3100 :     lt_bg_highf_eng_trbl = MUL_F( hVAD_CLDFB->lt_bg_highf_eng, 24576 );
     146        3100 :     IF( GT_16( 14, HB_Power_Q ) )
     147             :     {
     148          99 :         lt_bg_highf_eng_trbl = L_shr( lt_bg_highf_eng_trbl, sub( 14, HB_Power_Q ) );
     149             :     }
     150             :     ELSE
     151             :     {
     152        3001 :         HB_Power = L_shr( HB_Power, s_min( 31, sub( HB_Power_Q, 14 ) ) );
     153             :     }
     154             : 
     155        3100 :     flag_high_eng = 0;
     156        3100 :     move16();
     157        3100 :     if ( GT_32( HB_Power, lt_bg_highf_eng_trbl ) )
     158             :     {
     159        1093 :         flag_high_eng = 1;
     160        1093 :         move16();
     161             :     }
     162             : 
     163        3100 :     sp_center3_diff = sub( sp_center[3], hVAD_CLDFB->lt_noise_sp_center3 );
     164             : 
     165        3100 :     IF( sub( frameloop, 50 ) > 0 )
     166             :     {
     167        2947 :         if ( GT_16( ltd_stable_rate[0], 3932 /* 0.12 Q15 */ ) )
     168             : 
     169             :         {
     170        2825 :             update_flag = 0;
     171        2825 :             move16();
     172             :         }
     173             : 
     174        2947 :         tmpout = VAD_L_CMP( frame_energy, sub( frame_energy_Q, 2 ), hVAD_CLDFB->frame_energy_smooth, hVAD_CLDFB->frame_energy_smooth_scale );
     175        2947 :         test();
     176        2947 :         IF( ( NE_16( bw, CLDFBVAD_NB_ID ) ) && tmpout > 0 )
     177             :         {
     178        1649 :             test();
     179        1649 :             if ( ( flag_high_eng ) && ( GT_16( sp_center3_diff, 409 ) ) )
     180             :             {
     181         459 :                 update_flag = 0;
     182         459 :                 move16();
     183             :             }
     184        1649 :             test();
     185        1649 :             if ( ( GT_16( sp_center[3], 2864 /* 2.8 Q10 */ ) ) && ( GT_16( ltd_stable_rate[0], 655 /* 0.02 Q15 */ ) ) )
     186             :             {
     187         365 :                 update_flag = 0;
     188         365 :                 move16();
     189             :             }
     190             :         }
     191             :     }
     192             : 
     193        3100 :     test();
     194        3100 :     if ( ( GT_16( f_tonality_rate[1], 8192 /* 0.5 Q14 */ ) ) && ( GT_16( ltd_stable_rate[0], 3277 /* 0.1 Q15 */ ) ) )
     195             :     {
     196        2051 :         update_flag = 0;
     197        2051 :         move16();
     198             :     }
     199             : 
     200        3100 :     test();
     201        3100 :     test();
     202        3100 :     IF( ( LT_16( sSFM[1], 30146 /* 0.92 Q15 */ ) ) && ( LT_16( sSFM[0], 30146 /* 0.92 Q15 */ ) ) && ( LT_16( sSFM[2], 30146 /* 0.92 Q15 */ ) ) )
     203             :     {
     204        1669 :         update_flag = 0;
     205        1669 :         move16();
     206             :     }
     207             : 
     208        3100 :     test();
     209        3100 :     test();
     210        3100 :     IF( ( LT_16( sSFM[0], 26214 /* 0.8 Q15 */ ) ) || ( LT_16( sSFM[1], 25558 /* 0.78 Q15 */ ) ) || ( LT_16( sSFM[2], 26214 /* 0.8 Q15 */ ) ) )
     211             :     {
     212        2222 :         update_flag = 0;
     213        2222 :         move16();
     214             :     }
     215             : 
     216             :     /*if(frame_energy > 32*hVAD_CLDFB->frame_energy_smooth)*/
     217        3100 :     tmpout = VAD_L_CMP( frame_energy, frame_energy_Q, hVAD_CLDFB->frame_energy_smooth, sub( hVAD_CLDFB->frame_energy_smooth_scale, 5 ) );
     218             : 
     219        3100 :     if ( tmpout > 0 )
     220             :     {
     221           8 :         update_flag = 0;
     222           8 :         move16();
     223             :     }
     224        3100 :     tmp1 = L_mult( hVAD_CLDFB->fg_energy_count, 18842 );
     225        3100 :     tmp1_Q = norm_l( tmp1 );
     226        3100 :     tmp1 = L_shl( tmp1, tmp1_Q );
     227        3100 :     tmp_norm = extract_h( tmp1 );
     228        3100 :     frame_energy_Mcount = MUL_F( frame_energy, tmp_norm );
     229             : 
     230        3100 :     fg_energy_Qtmp = sub( frame_energy_Q, 18 );
     231        3100 :     fg_energy_Qtmp = add( fg_energy_Qtmp, tmp1_Q );
     232             : 
     233        3100 :     cmp_result = VAD_L_CMP( frame_energy_Mcount, fg_energy_Qtmp, hVAD_CLDFB->fg_energy, hVAD_CLDFB->fg_energy_scale );
     234             : 
     235        3100 :     tmpout = VAD_L_CMP( frame_energy, frame_energy_Q, 3, 0 );
     236             : 
     237        3100 :     test();
     238        3100 :     test();
     239        3100 :     if ( ( cmp_result > 0 ) && ( EQ_32( hVAD_CLDFB->fg_energy_est_start, 1 ) ) && ( tmpout > 0 ) )
     240             :     {
     241        1595 :         update_flag = 0;
     242        1595 :         move16();
     243             :     }
     244             : 
     245        3100 :     test();
     246        3100 :     IF( ( GT_16( f_tonality_rate[1], 9830 /* 0.6 Q14 */ ) ) || ( GT_16( f_tonality_rate[0], 14089 /* 0.86 Q14 */ ) ) )
     247             :     {
     248        1745 :         update_flag = 0;
     249        1745 :         move16();
     250        1745 :         tonality_flag = 1;
     251        1745 :         move16();
     252             :     }
     253             : 
     254        3100 :     hVAD_CLDFB->tonality_rate3 = mult( hVAD_CLDFB->tonality_rate3, 32211 );
     255        3100 :     move16();
     256        3100 :     IF( tonality_flag )
     257             :     {
     258        1745 :         hVAD_CLDFB->tonality_rate3 = add( mult( hVAD_CLDFB->tonality_rate3, 32211 ), 557 );
     259        1745 :         move16();
     260             :     }
     261             : 
     262        3100 :     if ( GT_16( hVAD_CLDFB->tonality_rate3, 16384 ) )
     263             :     {
     264         621 :         update_flag = 0;
     265         621 :         move16();
     266             :     }
     267             : 
     268        3100 :     test();
     269        3100 :     if ( ( GT_16( sp_center[0], 4092 /* 4.0 Q10 */ ) ) && ( GT_16( ltd_stable_rate[0], 1311 /* 0.04 Q15 */ ) ) )
     270             :     {
     271         168 :         update_flag = 0;
     272         168 :         move16();
     273             :     }
     274             : 
     275        3100 :     test();
     276        3100 :     test();
     277        3100 :     if ( ( GT_16( f_tonality_rate[1], 7536 /* 0.46 Q14 */ ) ) && ( ( GT_16( sSFM[1], 30473 /* 0.93 Q15 */ ) ) || ( GT_16( ltd_stable_rate[0], 2949 /* 0.09 Q15 */ ) ) ) )
     278             :     {
     279        2343 :         update_flag = 0;
     280        2343 :         move16();
     281             :     }
     282             : 
     283        3100 :     test();
     284        3100 :     test();
     285        3100 :     test();
     286        3100 :     if ( ( LT_16( sSFM[1], 30473 /* 0.93 Q15 */ ) && LT_16( sSFM[0], 30146 /* 0.92 Q15 */ ) && LT_16( sSFM[2], 31784 /* 0.97 Q15 */ ) ) && ( GT_16( f_tonality_rate[1], 8192 /* 0.5 Q14 */ ) ) )
     287             :     {
     288        1787 :         update_flag = 0;
     289        1787 :         move16();
     290             :     }
     291             : 
     292        3100 :     test();
     293        3100 :     test();
     294        3100 :     if ( ( f_tonality_rate[1] > 7045 /* 0.43 Q14 */ ) && ( sSFM[0] < 31129 /* 0.95 Q15 */ ) && ( sp_center[1] > 1985 /* 1.94 Q10 */ ) )
     295             :     {
     296           0 :         update_flag = 0;
     297           0 :         move16();
     298             :     }
     299             : 
     300        3100 :     IF( EQ_16( update_flag, 1 ) )
     301             :     {
     302          28 :         IF( LT_16( hVAD_CLDFB->update_count, 1000 ) )
     303             :         {
     304          28 :             hVAD_CLDFB->update_count = add( hVAD_CLDFB->update_count, 1 );
     305          28 :             move16();
     306             :         }
     307             :     }
     308             : 
     309             : 
     310        3100 :     IF( update_flag )
     311             :     {
     312          28 :         hVAD_CLDFB->lt_noise_sp_center3 = add( mult( hVAD_CLDFB->lt_noise_sp_center3, 29491 ), mult( sp_center[3], 3277 ) );
     313          28 :         move16();
     314             :     }
     315             : 
     316             : 
     317        3100 :     tmpout = VAD_L_CMP( frame_energy, frame_energy_Q, hVAD_CLDFB->frame_energy_smooth, sub( hVAD_CLDFB->frame_energy_smooth_scale, 2 ) );
     318             : 
     319             : 
     320        3100 :     test();
     321        3100 :     test();
     322        3100 :     test();
     323        3100 :     test();
     324        3100 :     if ( ( tmpout > 0 ) && ( LT_16( frameloop, 100 ) ) && ( LT_16( f_tonality_rate[1], 9174 /* 0.56 Q14 */ ) ) && ( ( LT_16( sp_center[0], 1391 /* 1.36 Q10 */ ) ) || LT_16( ltd_stable_rate[0], 983 /* 0.03 Q15 */ ) ) )
     325             :     {
     326           0 :         update_flag = 1;
     327           0 :         move16();
     328             :     }
     329             : 
     330        3100 :     test();
     331        3100 :     test();
     332        3100 :     test();
     333        3100 :     test();
     334        3100 :     test();
     335        3100 :     test();
     336        3100 :     if ( ( LT_32( snr, 10066329 /* 0.3 Q25 */ ) ) && tmpout < 0 && ( LT_32( L_shr( tsnr, 1 ), 20132659 /* 1.2/2.0 Q25 */ ) ) && ( vad_flag == 0 ) && ( LT_16( hVAD_CLDFB->f_tonality_rate[1], 8192 /* 0.5 Q14 */ ) ) && ( music_backgound_f == 0 ) && ( LT_16( hVAD_CLDFB->ltd_stable_rate[3], 3277 /* 0.1 Q15 */ ) ) )
     337             :     {
     338          16 :         update_flag = 1;
     339          16 :         move16();
     340             :     }
     341             : 
     342        3100 :     test();
     343        3100 :     test();
     344        3100 :     test();
     345        3100 :     if ( vad_flag && GT_32( snr, 33554431 /* 1.0 Q25 */ ) && EQ_16( bw, CLDFBVAD_SWB_ID ) && tmpout > 0 )
     346             :     {
     347         305 :         update_flag = 0;
     348         305 :         move16();
     349             :     }
     350             : 
     351        3100 :     test();
     352        3100 :     test();
     353        3100 :     test();
     354        3100 :     if ( vad_flag && GT_32( snr, 50331647 /* 1.5 Q25 */ ) && NE_16( bw, CLDFBVAD_SWB_ID ) && tmpout > 0 )
     355             :     {
     356           0 :         update_flag = 0;
     357           0 :         move16();
     358             :     }
     359             : 
     360             : 
     361        3100 :     IF( update_flag == 0 )
     362             :     {
     363        3070 :         hVAD_CLDFB->update_num_with_snr = 0;
     364        3070 :         move16();
     365             :     }
     366             :     ELSE
     367             :     {
     368          30 :         test();
     369          30 :         test();
     370          30 :         IF( vad_flag && GT_32( snr, 100663293 /* 3.0 Q25 */ ) && LT_16( hVAD_CLDFB->update_num_with_snr, 10 ) )
     371             :         {
     372           0 :             update_flag = 0;
     373           0 :             move16();
     374           0 :             hVAD_CLDFB->update_num_with_snr = add( hVAD_CLDFB->update_num_with_snr, 1 );
     375           0 :             move16();
     376             :         }
     377             :     }
     378             : 
     379             : 
     380        3100 :     test();
     381        3100 :     IF( vad_flag == 0 || EQ_16( update_flag, 1 ) )
     382             :     {
     383             :         Word16 tmp_fix;
     384          90 :         tmp_fix = sub( hVAD_CLDFB->sp_center[2], hVAD_CLDFB->lt_noise_sp_center0 );
     385          90 :         tmp_fix = abs_s( tmp_fix );
     386          90 :         if ( GT_16( tmp_fix, 2558 /* 2.5 Q10 */ ) )
     387             :         {
     388           0 :             tmp_fix = 2558 /* 2.5 Q10 */;
     389           0 :             move16();
     390             :         }
     391          90 :         hVAD_CLDFB->lt_noise_sp_center_diff_sum = L_add( hVAD_CLDFB->lt_noise_sp_center_diff_sum, tmp_fix );
     392          90 :         move32();
     393             : 
     394          90 :         hVAD_CLDFB->lt_noise_sp_center_diff_counter = L_add( hVAD_CLDFB->lt_noise_sp_center_diff_counter, 1 );
     395          90 :         move32();
     396          90 :         IF( EQ_32( hVAD_CLDFB->lt_noise_sp_center_diff_counter, 128 ) )
     397             :         {
     398           0 :             hVAD_CLDFB->lt_noise_sp_center_diff_sum = MUL_F( hVAD_CLDFB->lt_noise_sp_center_diff_sum, 24576 );
     399           0 :             move32();
     400           0 :             hVAD_CLDFB->lt_noise_sp_center_diff_counter = 96;
     401           0 :             move32();
     402             :         }
     403             : 
     404          90 :         IF( GT_16( (Word16) abs_s( sub( hVAD_CLDFB->sp_center[0], hVAD_CLDFB->lt_noise_sp_center0 ) ), 2455 /* 2.4 Q10 */ ) )
     405             :         {
     406           0 :             hVAD_CLDFB->lt_noise_sp_center0 = add( mult( hVAD_CLDFB->lt_noise_sp_center0, 32637 ), mult( hVAD_CLDFB->sp_center[0], 131 ) );
     407           0 :             move16();
     408             :         }
     409          90 :         ELSE IF( GT_16( (Word16) abs_s( sub( hVAD_CLDFB->sp_center[0], hVAD_CLDFB->lt_noise_sp_center0 ) ), 1023 /* 1.0 Q10 */ ) )
     410             :         {
     411           0 :             hVAD_CLDFB->lt_noise_sp_center0 = add( mult( hVAD_CLDFB->lt_noise_sp_center0, 32440 ), mult( hVAD_CLDFB->sp_center[0], 328 ) );
     412           0 :             move16();
     413             :         }
     414             :         ELSE
     415             :         {
     416          90 :             hVAD_CLDFB->lt_noise_sp_center0 = add( mult( hVAD_CLDFB->lt_noise_sp_center0, 31457 ), mult( hVAD_CLDFB->sp_center[0], 1311 ) );
     417          90 :             move16();
     418             :         }
     419             :     }
     420             : 
     421        3100 :     Q_sum = sub( norm_l( hVAD_CLDFB->lt_noise_sp_center_diff_sum ), 1 );
     422        3100 :     Q_counter = norm_l( hVAD_CLDFB->lt_noise_sp_center_diff_counter );
     423        3100 :     sum_num = L_shl( hVAD_CLDFB->lt_noise_sp_center_diff_sum, Q_sum );
     424        3100 :     counter_den = L_shl( hVAD_CLDFB->lt_noise_sp_center_diff_counter, Q_counter );
     425             : 
     426        3100 :     IF( extract_h( counter_den ) == 0 )
     427             :     {
     428           0 :         div_r = EVS_SW_MAX;
     429           0 :         move16();
     430             :     }
     431             :     ELSE
     432             :     {
     433        3100 :         div_r = div_l( sum_num, extract_h( counter_den ) );
     434             :     }
     435             : 
     436        3100 :     div_r = mult( div_r, 24576 );
     437        3100 :     div_r_32 = VAD_L_ADD( L_deposit_l( div_r ), add( sub( Q_sum, Q_counter ), 22 ), 9830, 15, &div_r_Q );
     438        3100 :     div_r = extract_l( L_shr( div_r_32, sub( div_r_Q, SP_CENTER_Q ) ) );
     439             : 
     440        3100 :     test();
     441        3100 :     if ( ( GT_16( abs_s( sub( hVAD_CLDFB->sp_center[2], hVAD_CLDFB->lt_noise_sp_center0 ) ), div_r ) ) && ( GT_16( frameloop, 200 ) ) )
     442             :     {
     443         133 :         update_flag = 0;
     444         133 :         move16();
     445             :     }
     446             : 
     447             : 
     448        3100 :     return update_flag;
     449             : }

Generated by: LCOV version 1.14