|
|
@@ -862,15 +862,20 @@ static float find_hb_gain(AMRWBContext *ctx, const float *synth, |
|
|
|
{ |
|
|
|
int wsp = (vad > 0); |
|
|
|
float tilt; |
|
|
|
float tmp; |
|
|
|
|
|
|
|
if (ctx->fr_cur_mode == MODE_23k85) |
|
|
|
return qua_hb_gain[hb_idx] * (1.0f / (1 << 14)); |
|
|
|
|
|
|
|
tilt = ctx->celpm_ctx.dot_productf(synth, synth + 1, AMRWB_SFR_SIZE - 1) / |
|
|
|
ctx->celpm_ctx.dot_productf(synth, synth, AMRWB_SFR_SIZE); |
|
|
|
tmp = ctx->celpm_ctx.dot_productf(synth, synth + 1, AMRWB_SFR_SIZE - 1); |
|
|
|
|
|
|
|
if (tmp > 0) { |
|
|
|
tilt = tmp / ctx->celpm_ctx.dot_productf(synth, synth, AMRWB_SFR_SIZE); |
|
|
|
} else |
|
|
|
tilt = 0; |
|
|
|
|
|
|
|
/* return gain bounded by [0.1, 1.0] */ |
|
|
|
return av_clipf((1.0 - FFMAX(0.0, tilt)) * (1.25 - 0.25 * wsp), 0.1, 1.0); |
|
|
|
return av_clipf((1.0 - tilt) * (1.25 - 0.25 * wsp), 0.1, 1.0); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|