diff --git a/decoder/drc_src/impd_drc_gain_dec.c b/decoder/drc_src/impd_drc_gain_dec.c index 0d03b16..c8c5545 100644 --- a/decoder/drc_src/impd_drc_gain_dec.c +++ b/decoder/drc_src/impd_drc_gain_dec.c @@ -443,14 +443,14 @@ WORD32 impd_interpolate_drc_gain(ia_interp_params_struct* interp_params_str, return (UNEXPECTED_ERROR); } - err = impd_conv_to_linear_domain (interp_params_str, drc_band, gain0, slope0, &gain_t1, &slope_t1); - if (err) - return (err); - err = impd_conv_to_linear_domain (interp_params_str, drc_band, gain1, slope1, &gain_t2, &slope_t2); - if (err) - return (err); - if (interp_params_str->gain_interpolation_type == GAIN_INTERPOLATION_TYPE_SPLINE) { + err = impd_conv_to_linear_domain(interp_params_str, drc_band, gain0, slope0, &gain_t1, &slope_t1); + if (err) + return (err); + err = impd_conv_to_linear_domain (interp_params_str, drc_band, gain1, slope1, &gain_t2, &slope_t2); + if (err) + return (err); + slope_t1 = slope_t1/(FLOAT32) interp_params_str->delta_tmin; slope_t2 = slope_t2/(FLOAT32) interp_params_str->delta_tmin; if ((FLOAT32)fabs((FLOAT64)slope_t1) > (FLOAT32)fabs((FLOAT64)slope_t2)) { @@ -530,11 +530,16 @@ WORD32 impd_interpolate_drc_gain(ia_interp_params_struct* interp_params_str, } } } - else { - a = (gain_t2 - gain_t1) / (FLOAT32)gain_step_tdomain; - b = gain_t1; + else{ - result[0] = gain_t1; + err = impd_conv_to_linear_domain(interp_params_str, drc_band, gain1, slope1, &gain_t2, &slope_t2); + if (err) + return (err); + + a = 0; + b = gain_t2; + + result[0] = gain_t2; result[gain_step_tdomain] = gain_t2; for (n=1; n