Commit 68e75090 authored by Sandesh Venkatesh's avatar Sandesh Venkatesh
Browse files

Fix for 3GPP issue 1449: OMASA Complexity measurement crashes

Link #1449
parent 8611527b
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -2463,19 +2463,23 @@ static void reduce_metadata_further_fx(
        }

        /* Determine if to merge over frequency instead of time */
        meanRatio = 0;
        move32();
        W_tmp = 0;
        move64();
        FOR( sf = 0; sf < MAX_PARAM_SPATIAL_SUBFRAMES; sf++ )
        {
            FOR( band = 0; band < numCodingBands; band++ )
            {
                meanRatio = L_add( meanRatio, Mpy_32_32( hqmetadata->q_direction[0].band_data[band].energy_ratio_fx[sf], energy[sf][band] ) ); // hMasa->data.q_energy - 1
                W_tmp = W_mac_32_16( W_tmp, Mpy_32_32( hqmetadata->q_direction[0].band_data[band].energy_ratio_fx[sf], energy[sf][band] ), 1 ); // hMasa->data.q_energy
            }
        }
        shift = W_norm( W_tmp );
        meanRatio = W_extract_h( W_shl( W_tmp, shift ) ); // Q:sub( add( hMasa->data.q_energy, shift ), 32 )
        shift = sub( 31, sub( add( hMasa->data.q_energy, shift ), 32 ) );

        IF( totalEnergySum != 0 )
        {
            meanRatio = BASOP_Util_Divide3232_Scale_newton( meanRatio, totalEnergySum, &exp );
            exp = add( add( exp, 1 ), tmp2 ); // 31 - (hMasa->data.q_energy - 1) - 31 - hMasa->data.q_energy - tmp2 => 1 + tmp2
            exp = add( exp, sub( shift, sub( 31, add( hMasa->data.q_energy, tmp2 ) ) ) ); // exp + (shift - (31 - hMasa->data.q_energy - tmp2)) => 1 + tmp2
        }
        ELSE
        {