From e1b4d7ce14c3463c14a188cb86eb1e267e66c254 Mon Sep 17 00:00:00 2001 From: Jack Jansen Date: Mon, 24 Aug 1992 14:36:31 +0000 Subject: Added rms, maxpp and avgpp methods. --- Modules/audioop.c | 146 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 146 insertions(+) diff --git a/Modules/audioop.c b/Modules/audioop.c index d37ce8f..0c75a46 100644 --- a/Modules/audioop.c +++ b/Modules/audioop.c @@ -28,6 +28,8 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #define signed #endif +#include + #include "allobjects.h" #include "modsupport.h" @@ -240,6 +242,147 @@ audioop_avg(self, args) } static object * +audioop_rms(self, args) + object *self; + object *args; +{ + signed char *cp; + int len, size, val; + int i; + float sum_squares = 0.0; + + if ( !getargs(args, "(s#i)", &cp, &len, &size) ) + return 0; + if ( size != 1 && size != 2 && size != 4 ) { + err_setstr(AudioopError, "Size should be 1, 2 or 4"); + return 0; + } + for ( i=0; i max ) + max = extremediff; + } + prevextremevalid = 1; + prevextreme = prevval; + } + prevval = val; + if ( diff != 0 ) + prevdiff = diff; + } + return newintobject(max); +} + +static object * audioop_cross(self, args) object *self; object *args; @@ -869,6 +1012,9 @@ audioop_adpcm2lin(self, args) static struct methodlist audioop_methods[] = { { "max", audioop_max }, { "avg", audioop_avg }, + { "maxpp", audioop_maxpp }, + { "avgpp", audioop_avgpp }, + { "rms", audioop_rms }, { "cross", audioop_cross }, { "mul", audioop_mul }, { "add", audioop_add }, -- cgit v0.12