forked from FFmpeg/FFmpeg
avfilter/af_aiir: normalize biquads only if divisor is big enough
This commit is contained in:
parent
f46b04c4c3
commit
89aa1342b1
1 changed files with 14 additions and 10 deletions
|
@ -601,18 +601,22 @@ static int decompose_zp2biquads(AVFilterContext *ctx, int channels)
|
|||
iir->biquads[current_biquad].b[1] = b[2] / a[4];
|
||||
iir->biquads[current_biquad].b[2] = b[0] / a[4];
|
||||
|
||||
factor = (iir->biquads[current_biquad].a[0] +
|
||||
iir->biquads[current_biquad].a[1] +
|
||||
iir->biquads[current_biquad].a[2]) /
|
||||
(iir->biquads[current_biquad].b[0] +
|
||||
iir->biquads[current_biquad].b[1] +
|
||||
iir->biquads[current_biquad].b[2]);
|
||||
if (fabs(iir->biquads[current_biquad].b[0] +
|
||||
iir->biquads[current_biquad].b[1] +
|
||||
iir->biquads[current_biquad].b[2]) > 1e-6) {
|
||||
factor = (iir->biquads[current_biquad].a[0] +
|
||||
iir->biquads[current_biquad].a[1] +
|
||||
iir->biquads[current_biquad].a[2]) /
|
||||
(iir->biquads[current_biquad].b[0] +
|
||||
iir->biquads[current_biquad].b[1] +
|
||||
iir->biquads[current_biquad].b[2]);
|
||||
|
||||
av_log(ctx, AV_LOG_VERBOSE, "factor=%f\n", factor);
|
||||
av_log(ctx, AV_LOG_VERBOSE, "factor=%f\n", factor);
|
||||
|
||||
iir->biquads[current_biquad].b[0] *= factor;
|
||||
iir->biquads[current_biquad].b[1] *= factor;
|
||||
iir->biquads[current_biquad].b[2] *= factor;
|
||||
iir->biquads[current_biquad].b[0] *= factor;
|
||||
iir->biquads[current_biquad].b[1] *= factor;
|
||||
iir->biquads[current_biquad].b[2] *= factor;
|
||||
}
|
||||
|
||||
iir->biquads[current_biquad].b[0] *= (current_biquad ? 1.0 : iir->g);
|
||||
iir->biquads[current_biquad].b[1] *= (current_biquad ? 1.0 : iir->g);
|
||||
|
|
Loading…
Add table
Reference in a new issue