|
|
|
@@ -164,6 +164,7 @@ av_cold struct FFIIRFilterCoeffs* ff_iir_filter_init_coeffs(void *avc, |
|
|
|
float stopband, float ripple) |
|
|
|
{ |
|
|
|
FFIIRFilterCoeffs *c; |
|
|
|
int ret = 0; |
|
|
|
|
|
|
|
if (order <= 0 || order > MAXORDER || cutoff_ratio >= 1.0) |
|
|
|
return NULL; |
|
|
|
@@ -176,22 +177,22 @@ av_cold struct FFIIRFilterCoeffs* ff_iir_filter_init_coeffs(void *avc, |
|
|
|
init_fail); |
|
|
|
c->order = order; |
|
|
|
|
|
|
|
if (filt_type == FF_FILTER_TYPE_BUTTERWORTH) { |
|
|
|
if (butterworth_init_coeffs(avc, c, filt_mode, order, cutoff_ratio, |
|
|
|
stopband)) { |
|
|
|
goto init_fail; |
|
|
|
} |
|
|
|
} else if (filt_type == FF_FILTER_TYPE_BIQUAD) { |
|
|
|
if (biquad_init_coeffs(avc, c, filt_mode, order, cutoff_ratio, |
|
|
|
stopband)) { |
|
|
|
goto init_fail; |
|
|
|
} |
|
|
|
} else { |
|
|
|
switch (filt_type) { |
|
|
|
case FF_FILTER_TYPE_BUTTERWORTH: |
|
|
|
ret = butterworth_init_coeffs(avc, c, filt_mode, order, cutoff_ratio, |
|
|
|
stopband); |
|
|
|
break; |
|
|
|
case FF_FILTER_TYPE_BIQUAD: |
|
|
|
ret = biquad_init_coeffs(avc, c, filt_mode, order, cutoff_ratio, |
|
|
|
stopband); |
|
|
|
break; |
|
|
|
default: |
|
|
|
av_log(avc, AV_LOG_ERROR, "filter type is not currently implemented\n"); |
|
|
|
goto init_fail; |
|
|
|
} |
|
|
|
|
|
|
|
return c; |
|
|
|
if (!ret) |
|
|
|
return c; |
|
|
|
|
|
|
|
init_fail: |
|
|
|
ff_iir_filter_free_coeffs(c); |
|
|
|
|