]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Added minmax function:
authorSjoerd Mullender <sjoerd@acm.org>
Mon, 13 Dec 1993 12:06:27 +0000 (12:06 +0000)
committerSjoerd Mullender <sjoerd@acm.org>
Mon, 13 Dec 1993 12:06:27 +0000 (12:06 +0000)
-- function of module audioop: minmax (FRAGMENT, WIDTH)
    Minmax returns a tuple consisting of the minimum and maximum
    values of all samples in the sound fragment.

Modules/audioop.c

index bfc6fda28be36503f4cb0335cb1d89db743e043e..8bd833ad48f2adb4026d2ab38057f24ab8c37d5b 100644 (file)
@@ -212,6 +212,32 @@ audioop_max(self, args)
     return newintobject(max);
 }
 
+static object *
+audioop_minmax(self, args)
+       object *self;
+       object *args;
+{
+       signed char *cp;
+       int len, size, val;
+       int i;
+       int min = 0x7fffffff, max = -0x7fffffff;
+
+       if (!getargs(args, "(s#i)", &cp, &len, &size))
+               return NULL;
+       if (size != 1 && size != 2 && size != 4) {
+               err_setstr(AudioopError, "Size should be 1, 2 or 4");
+               return NULL;
+       }
+       for (i = 0; i < len; i += size) {
+               if (size == 1) val = (int) *CHARP(cp, i);
+               else if (size == 2) val = (int) *SHORTP(cp, i);
+               else if (size == 4) val = (int) *LONGP(cp, i);
+               if (val > max) max = val;
+               if (val < min) min = val;
+       }
+       return mkvalue("(ii)", min, max);
+}
+
 static object *
 audioop_avg(self, args)
     object *self;
@@ -1304,6 +1330,7 @@ audioop_adpcm2lin(self, args)
 
 static struct methodlist audioop_methods[] = {
     { "max", audioop_max },
+    { "minmax", audioop_minmax },
     { "avg", audioop_avg },
     { "maxpp", audioop_maxpp },
     { "avgpp", audioop_avgpp },