Commit a779a4b6 authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Merge branch '1735-strange-use-of-w_shl_sat_l-error-in-stl2024-specification' into 'main'

Resolve "Strange use of W_shl_sat_l - error in STL2024 specification"

Closes #1735

See merge request !1838
parents c51d0cad 0cba62a9
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -104,4 +104,6 @@
#define ISSUE_1751_replace_shl_ro               /*FhG: replace shl_ro by overflow-free alternatives*/
#define ISSUE_1770_replace_shr_ro               /* FhG: replace by non-overflow-alternative - BE */

#define FIX_1735_W_SHL_SAT_L                    /* FhG: Usage of W_shl_sat_l() */

#endif
+4 −0
Original line number Diff line number Diff line
@@ -2009,7 +2009,11 @@ void ivas_dirac_dec_set_md_map(
                tmp_fx = W_add_nosat( tmp_fx, W_deposit32_l( L_deposit_l( hSpatParamRendCom->render_to_md_map[slot_idx_abs] ) ) );
                slot_idx_abs = add( slot_idx_abs, 1 );
            }
#ifdef FIX_1735_W_SHL_SAT_L
            iDiv_and_mod_32( W_shl_sat_l( tmp_fx, 16 ), hSpatParamRendCom->subframe_nbslots[sf_idx], &quo, &rem, 0 );
#else
            iDiv_and_mod_32( W_extract_l( W_shl_nosat( tmp_fx, 16 ) ), hSpatParamRendCom->subframe_nbslots[sf_idx], &quo, &rem, 0 );
#endif
            hSpatParamRendCom->render_to_md_map[sf_idx] = add( round_fx( quo ), hSpatParamRendCom->dirac_read_idx ) % hSpatParamRendCom->dirac_md_buffer_length;
            move16();
        }
+5 −1
Original line number Diff line number Diff line
@@ -321,7 +321,11 @@ static void find_enr_dft_ivas_fx(
        }

        /* normalization per frequency bin */
#ifdef FIX_1735_W_SHL_SAT_L
        band_fx[i] = W_shl_sat_l( band_ener, sub( Q16 - 32, shift ) ); // *q_band
#else
        band_fx[i] = W_extract_h( W_shl( band_ener, sub( Q16, shift ) ) );                                                                                                            // *q_band
#endif
        move32();

        /* per band energy without E_MIN   */
+5 −1
Original line number Diff line number Diff line
@@ -224,7 +224,11 @@ static Word16 ivas_spar_get_activeW_flag_fx(
        q_shift = Q31;
        move16();
        q_shift = W_norm( bb_var_64bit[ch] );
#ifdef FIX_1735_W_SHL_SAT_L
        bb_var[ch] = W_shl_sat_l( bb_var_64bit[ch], sub( q_shift, 32 ) ); /* q_bb_var[ch] + sub( q_shift, 32 ) */
#else
        bb_var[ch] = W_extract_l( W_shl_nosat( bb_var_64bit[ch], sub( q_shift, 32 ) ) ); /* q_bb_var[ch] + sub( q_shift, 32 ) */
#endif
        move32();
        q_bb_var[ch] = add( q_bb_var[ch], sub( q_shift, 32 ) );
        move16();