Commit abbafbab authored by Jonas Svedberg's avatar Jonas Svedberg
Browse files

corrected HQ_MDCT PHECU-PLC beta_mute final muting after 200ms for IVAS...

corrected  HQ_MDCT PHECU-PLC beta_mute final muting after 200ms for IVAS operation, EVS_MONO operation kept BE
parent 97140f25
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -172,6 +172,7 @@

#define NONBE_FIX_1176_OSBA_REVERB_JBM_ASAN_ERROR       /* Ericsson: Issue 1176, fix in TDREND_firfilt for subframes shorter than the filter length */
#define NONBE_1240_FIX_CORE_SELECTION_ISM_SW            /* VA: issue 1240: Remove the forcing of the TCX core in ISM when switching from a high bitarte to a low one */
#define NONBE_FIX_1180_HQMDCT_PHECU_LT_MUTING           /* Ericsson: issue 1180, corrected long term mute loop attnuation after 200ms  in PhECU-PLC  */

/* ##################### End NON-BE switches ########################### */

+45 −17
Original line number Diff line number Diff line
@@ -263,6 +263,9 @@ static void trans_ana(
    const int16_t time_offs,     /* i  : Time offset                                          */
    const float est_mus_content, /* i  : 0.0=speech_like ... 1.0=Music    (==st->env_stab )   */
    const int16_t last_fec,      /* i  : signal that previous frame was concealed with fec_alg*/
#ifdef NONBE_FIX_1180_HQMDCT_PHECU_LT_MUTING
    const int16_t element_mode,  /* i :  element_mode req to handle EVS_MONO specific BE path  */
#endif
    float *alpha,       /* o  : Magnitude modification factors for fade to average   */
    float *beta,        /* o  : Magnitude modification factors for fade to average   */
    float *beta_mute,   /* o  : Factor for long-term mute                            */
@@ -416,10 +419,27 @@ static void trans_ana(
            {
                mag_chg[k] = 0;
            }
#ifdef NONBE_FIX_1180_HQMDCT_PHECU_LT_MUTING
            if ( element_mode != EVS_MONO )
            {
                if ( k == 0 && burst_len > BETA_MUTE_THR ) /* beta_mute final long term attenuation adjusted only once per frame in the first sub-band */
                {
                    *beta_mute *= BETA_MUTE_FAC;
                }
            }
            else
            {
                if ( burst_len > BETA_MUTE_THR ) /* legacy incorrect EVS_MONO operation, kept for BE,  to be updated after EVS CR */
                {
                    *beta_mute *= BETA_MUTE_FAC;
                }
            }
#else
            if ( burst_len > BETA_MUTE_THR )
            {
                *beta_mute *= BETA_MUTE_FAC;
            }
#endif
            alpha[k] = mag_chg[k];
            beta[k] = (float) ( sqrt( 1.0f - SQR( alpha[k] ) ) * *beta_mute );
            if ( k >= LGW32k - 1 )
@@ -2098,7 +2118,11 @@ static void hq_phase_ecu(
            *time_offs = 0;
        }

        trans_ana( prevsynth + 2 * output_frame - Lprot - *time_offs + ph_ecu_lookahead, mag_chg, &ph_dith, mag_chg_1st, output_frame, *time_offs, env_stab, *last_fec, alpha, beta, beta_mute, Xavg );
        trans_ana( prevsynth + 2 * output_frame - Lprot - *time_offs + ph_ecu_lookahead, mag_chg, &ph_dith, mag_chg_1st, output_frame, *time_offs, env_stab, *last_fec,
#ifdef NONBE_FIX_1180_HQMDCT_PHECU_LT_MUTING
                   element_mode,
#endif
                   alpha, beta, beta_mute, Xavg );
        spec_ana( prevsynth + 2 * output_frame - Lprot - *time_offs + ph_ecu_lookahead, plocs, plocsi, num_p, X_sav, output_frame, bwidth, element_mode, &noise_fac, pcorr );

        if ( prev_bfi && *last_fec )
@@ -2115,7 +2139,11 @@ static void hq_phase_ecu(
            *time_offs = MAX16B; /* continued muting will ensure that the now fixed seeds are not creating tones */
        }

        trans_ana( prevsynth + 2 * output_frame - Lprot, mag_chg, &ph_dith, mag_chg_1st, output_frame, *time_offs, env_stab, 0, alpha, beta, beta_mute, Xavg ); /* 1.0 stable-music,  0.0 speech-like */
        trans_ana( prevsynth + 2 * output_frame - Lprot, mag_chg, &ph_dith, mag_chg_1st, output_frame, *time_offs, env_stab, 0,
#ifdef NONBE_FIX_1180_HQMDCT_PHECU_LT_MUTING
                   element_mode,
#endif
                   alpha, beta, beta_mute, Xavg ); /* 1.0 stable-music,  0.0 speech-like */
    }

    mvr2r( X_sav, X, Lprot );
+129 B

File added.

No diff preview for this file type.

+1 −0
Original line number Diff line number Diff line
!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k!k!k!k!k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k!k!k!k!k!k!k!k!k k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k!k!k!k!k!k!k!k!k!k!k k k k!k!k!k!k!k!k!k!k!k!k!k!k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k!k!k!k!k!k!k!k!k k k k!k!k!k!k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k!k!k!k!k!k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k!k!k!k k k k k k k!k!k!k!k!k!k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k!k!k!k!k!k!k k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k!k!k!k!k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k k k k k k k k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k!k!k!k!k!k k k k!k!k!k!k!k!k!k!k k k k!k!k!k!k!k!k!k!k!k!k k k k k k k k k!k k!k!k!k!k!k k k k!k!k k k k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k!k k k k k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k!k!k!k!k k k!k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k!k!k!k!k!k!k!k!k!k!k k k!k!k!k!k!k!k!k!k!k!k k k k k k k!k!k!k!k!k!k!k!k!k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k!k!k k k!k k k k!k!k!k k k k k!k!k!k!k!k k k!k k k k k!k!k!k!k!k!k k k k k k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k!k!k!k!k!k k k k k k k k k k!k!k!k!k!k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k!k!k!k k k k!k k k k k!k!k!k!k!k!k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k!k!k!k!k!k!k!k!k!k k k k!k!k!k k k k k k k k k k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k k k k k!k!k!k!k!k!k!k!k!k!k k k k k!k!k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k k k!k!k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k!k k k k k k!k!k!k!k!k!k!k!k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k!k!k!k!k!k!k!k!k k k k!k!k!k k k k k!k!k!k!k k k k k k!k!k!k!k!k!k!k k k!k k k!k!k!k!k!k!k!k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k!k!k!k!k!k!k!k k k k k k k k k!k!k!k!k k k k k k k k k!k k k k k k k k k k k!k k k k k k!k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k!k k k!k!k!k!k!k!k!k k k k k k k k k!k!k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k!k!k!k!k!k!k!k k k k k k k k k!k!k!k!k!k!k k k k k k k k k!k!k!k!k!k!k!k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k k!k!k!k!k!k!k!k!k k!k!k!k k k k k k k!k!k!k!k!k!k k k k k k k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k!k k k k!k!k k k!k k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k!k!k!k!k k k k k!k!k!k!k!k!k!k!k!k!k!k!k k k k!k!k!k!k!k!k!k k k k k k k k k k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k!k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k!k k k k k k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k!k!k!k!k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k!k!k!k k!k!k!k!k!k!k!k!k!k k k!k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k!k!k!k!k!k!k!k!k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k k!k!k!k!k!k!k k k k k k!k!k k k!k!k!k!k!k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k!k!k!k!k!k!k!k!k!k!k k k k k!k!k!k k k!k k k k k!k!k!k!k!k!k!k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k!k!k!k!k!k!k!k!k!k!k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k!k!k!k!k!k!k!k!k k k k k k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k k!k!k!k!k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k k!k!k!k!k!k!k!k k k k k k k k k!k!k!k!k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k!k!k k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k!k!k!k!k!k!k!k!k!k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k!k!k!k!k!k!k!k!k!k!k!k k k!k!k!k!k!k k k!k!k!k!k!k!k!k!k!k!k!k k k k k!k!k!k k k!k!k!k!k!k!k!k!k!k k k k k k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k!k!k!k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k k!k!k!k!k!k!k k k!k!k!k!k!k k k k k k k!k!k!k!k k!k!k!k k k k k k!k!k!k!k!k k k!k!k!k!k k k k k!k k k!k k!k!k!k!k!k k!k k k!k!k!k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k!k!k!k!k!k k k k k k k k k!k!k k k k!k!k k k!k!k!k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k!k!k!k!k!k!k!k!k!k k k!k!k!k!k!k!k!k!k!k k k!k!k!k!k!k!k k k!k!k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k k k k k!k!k!k k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k!k!k!k!k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k!k!k!k!k!k!k k k k!k!k!k!k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k k k k!k k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k k k!k!k k k k k!k!k!k!k!k!k!k!k!k!k!k!k k k k!k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k!k!k!k!k!k k k k k k k!k!k k k k!k!k!k!k!k!k!k!k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k!k k k!k!k!k!k!k!k!k!k!k k k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k!k!k!k!k!k!k k k k k k!k!k!k!k!k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k k k!k!k!k!k!k!k!k k k k!k!k!k!k!k!k k k k!k!k!k!k!k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k!k!k!k!k!k!k k k k k k k k k k k!k!k!k!k!k!k!k!k k k k k k k k k k!k!k!k!k!k!k!k!k k k k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k!k!k!k!k!k!k!k k k k!k k!k!k!k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k k k!k!k!k!k!k!k!k!k!k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k!k!k!k!k k k k k k!k!k!k!k k!k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k!k!k k k!k!k!k!k!k!k!k!k!k!k k k k k k!k!k!k!k!k!k k!k!k k!k!k!k k k k k k k k!k!k!k!k!k!k!k!k!k!k k k k k k k k!k!k k!k!k!k k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k k k!k!k!k!k!k!k!k!k!k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k!k!k!k!k!k!k!k!k!k!k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k k!k!k k k k!k!k!k k k k k k k k!k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k k k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k k!k!k!k!k k!k!k k k k k k k!k!k!k!k!k!k!k!k!k!k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k!k k k k k k!k!k!k k k k k k!k!k k k k k k k!k!k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k!k!k!k!k!k!k!k!k!k k k k k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k!k!k!k!k k k k k!k!k!k!k!k!k!k!k!k k k k k k k k!k k k k k k k k k!k!k!k!k!k k k k!k!k!k!k!k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k!k!k k k k k k k!k!k!k!k!k!k!k k k k k k k!k k k k k k!k k k k!k!k!k k k!k!k!k!k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k!k!k!k!k!k!k!k k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k!k!k!k!k!k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k k k k k k k k k k!k!k k k k k k k k k!k!k k k k k k!k!k!k!k!k!k!k!k!k k k k k k k k!k!k!k k k k!k!k!k!k!k k k k!k!k!k!k k k k k k!k!k k k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k!k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k k!k!k!k!k!k!k!k!k k k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k k k k k k!k!k!k!k!k!k!k!k!k!k k k!k!k k k k k k!k!k!k!k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k!k!k!k!k!k k k k!k!k!k!k!k k k k k k k k k!k!k!k!k!k!k k k k k k k k k!k!k!k!k k!k!k!k k k k k k k!k!k!k!k!k!k!k!k!k k k k k!k!k!k!k!k!k!k!k k k k k k k k k k k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k!k k k k
 No newline at end of file
+37 −0
Original line number Diff line number Diff line
function bl=ep_stats_bin_files(name) 
%function bl=eps_stats_bin_files(name) 
%
% Check burst length and total fer of .bin files
% format PC/Linux  signed 16 bit words,  int16_t   value 1=BAD, value 0 = GOOD 
%

if nargin <1 
 % name='FEC_burstl_1_to_20'
 % name='FEC_burstl_1_to_30'
 % name='FEC_burstl_1_to_65'
  name='./FEC_burstl_1_to_65flip'
  name= [ name, '.bin'];
  %  evaluate  
  %  or find first file in folder  
end

name2 = strrep(name,'_','\_');
[fid,  msg] = fopen(name,'r','n') ;
e=fread(fid,inf,'int16');
fclose(fid);
 
a=find(diff(e)==1);
b=find(diff(e)==-1);
bl=b-a;

fer_pct = 100*sum(e==1)/length(e);

h=histogram(bl,0.5:max(bl+.5),'normalization','probability'); 
title(sprintf("%s, Total FER=%.2f %%, frames=%d, Av. burstlen=%.2f",name2, fer_pct, length(e),mean(bl) ))
set(gca,'xtick',1:max(bl))
ylabel('probablility');
xlabel('burst length')
grid


return