Commit 520a5d33 authored by Ganesh Ajjanagadde's avatar Ganesh Ajjanagadde

lavfi/af_aemphasis: remove unnecessary complex number usage

complex is not available on all platforms. Furthermore, it is trivial to
rewrite complex number expressions to real arithmetic, and in fact
sometimes advantageous for performance reasons: by wrapping as a complex,
one forces a particular Cartesian representation that is not necessarily optimal for the purpose.

Configure dependencies also removed, and aemphasis is now available across
all platforms.
Reviewed-by: 's avatarPaul B Mahol <onemda@gmail.com>
Signed-off-by: 's avatarGanesh Ajjanagadde <gajjanagadde@gmail.com>
parent a0ec4aeb
......@@ -2836,7 +2836,6 @@ unix_protocol_deps="sys_un_h"
unix_protocol_select="network"
# filters
aemphasis_filter_deps="cabs cexp"
amovie_filter_deps="avcodec avformat"
aresample_filter_deps="swresample"
ass_filter_deps="libass"
......
......@@ -18,8 +18,6 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <complex.h>
#include "libavutil/opt.h"
#include "avfilter.h"
#include "internal.h"
......@@ -189,14 +187,15 @@ static inline void set_lp_rbj(BiquadD2 *bq, double fc, double q, double sr, doub
static double freq_gain(BiquadCoeffs *c, double freq, double sr)
{
double complex z, w;
double zr, zi;
freq *= 2.0 * M_PI / sr;
w = 0 + I * freq;
z = 1.0 / cexp(w);
zr = cos(freq);
zi = -sin(freq);
return cabs(((double complex)c->a0 + c->a1 * z + c->a2 * z*z) /
((double complex)1.0 + c->b1 * z + c->b2 * z*z));
/* |(a0 + a1*z + a2*z^2)/(1 + b1*z + b2*z^2)| */
return hypot(c->a0 + c->a1*zr + c->a2*(zr*zr-zi*zi), c->a1*zi + 2*c->a2*zr*zi) /
hypot(1 + c->b1*zr + c->b2*(zr*zr-zi*zi), c->b1*zi + 2*c->b2*zr*zi);
}
static int config_input(AVFilterLink *inlink)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment