[Mplayer-cvslog] CVS: main/libao2 pl_eq.c,1.3,1.4
Zoltan Ponekker
pontscho at mplayerhq.hu
Tue Jul 30 13:48:21 CEST 2002
Update of /cvsroot/mplayer/main/libao2
In directory mail:/var/tmp.root/cvs-serv8242
Modified Files:
pl_eq.c
Log Message:
fix (?) equalizer distortion problem
Index: pl_eq.c
===================================================================
RCS file: /cvsroot/mplayer/main/libao2/pl_eq.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- pl_eq.c 16 Jun 2002 01:44:33 -0000 1.3
+++ pl_eq.c 30 Jul 2002 11:48:18 -0000 1.4
@@ -146,10 +146,12 @@
// Reset buffers
reset();
+#if 0
// Reset gain factors
for(c=0;c<pl_eq.channels;c++)
for(k=0;k<pl_eq.K;k++)
pl_eq.g[c][k]=0;
+#endif
// Tell ao_plugin how much this plugin adds to the overall time delay
ao_plugin_data.delay_fix-=2/((float)pl_eq.channels*(float)ao_plugin_data.rate);
@@ -185,6 +187,7 @@
for(;k<pl_eq.K;k++){
// Pointer to circular buffer wq
register int16_t* wq = pl_eq.wq[ci][k];
+#if 0
// Calculate output from AR part of current filter
register int32_t xt = (x*pl_eq.b[k][0]) >> 4;
register int32_t w = xt + wq[0]*pl_eq.a[k][0] + wq[1]*pl_eq.a[k][1];
@@ -196,6 +199,19 @@
// Calculate output
*out=(int16_t)(yt+x);
+#else
+ // Calculate output from AR part of current filter
+ register int32_t xt = (x*pl_eq.b[k][0]) / 48;
+ register int32_t w = xt + wq[0]*pl_eq.a[k][0] + wq[1]*pl_eq.a[k][1];
+ // Calculate output form MA part of current filter
+ yt+=(((w + wq[1]*pl_eq.b[k][1]) >> 10)*g[k]) >> 12;
+ // Update circular buffer
+ wq[1] = wq[0]; wq[0] = w / 24576;
+ }
+
+ // Calculate output
+ *out=(int16_t)(yt * 0.25 + x * 0.5);
+#endif
out+=nch;
}
}
More information about the MPlayer-cvslog
mailing list