Commit 4d55014a authored by Arash Azizi's avatar Arash Azizi
Browse files

issue 2586: Static arrays, continue loop when mantissa is zero since exponent...

issue 2586: Static arrays, continue loop when mantissa is zero since exponent will saturate variable max_exponent
parent d05a8379
Loading
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -424,19 +424,23 @@ ivas_error stereo_memory_dec_fx(
            }
        }
#else
        Word16 *exponent_array = NULL;
        Word32 *L_output_buffer = NULL;
        Word16 exponent_array[STEREO_DFT32MS_OVL_MAX];
        Word32 L_output_buffer[STEREO_DFT32MS_OVL_MAX];
        Word16 max_exponent;
        /* redressing of the DFT OLA part */
        FOR( n = 0; n < CPE_CHANNELS; n++ )
        {
            max_exponent = 0xffe1; // Q0
            max_exponent = -31; 
            move16();
            FOR( i = delay_comp_DFT; i < hCPE->hStereoDft->dft32ms_ovl; i++ )
            {
                div_m = BASOP_Util_Divide3216_Scale( hCPE->output_mem_fx[n][i - delay_comp_DFT], hCPE->hStereoDft->win32ms_fx[STEREO_DFT32MS_STEP * ( hCPE->hStereoDft->dft32ms_ovl - 1 + delay_comp_DFT - i )], &div_e ); // div_e <--> Q(15-div_e)
                L_output_buffer[i - delay_comp_DFT] = L_deposit_h( div_m );                                                                                                                                                // Q(31-div_e)
                exponent_array[i - delay_comp_DFT] = div_e;
                move16();
                IF(div_m == 0) {
                    continue;
                }
                max_exponent = s_max( max_exponent, div_e );
                // hCPE->output_mem_fx[n][sub(i, delay_comp_DFT)] = hCPE->hStereoDft->win32ms_fx[i_mult(STEREO_DFT32MS_STEP, ( sub(add(sub(hCPE->hStereoDft->dft32ms_ovl, 1), delay_comp_DFT), i) ))];
            }
@@ -446,7 +450,7 @@ ivas_error stereo_memory_dec_fx(
                hCPE->output_mem_fx[n][i - delay_comp_DFT] = L_shr( L_output_buffer[i - delay_comp_DFT], sub( max_exponent, exponent_array[i - delay_comp_DFT] ) );
                move32();
            }
            hCPE->q_output_mem_fx[n] = sub( 0x001f, max_exponent );
            hCPE->q_output_mem_fx[n] = sub( 31, max_exponent );
        }
#endif // !FIX_ISSUE_2586_Q_VALUE