From c4801ed5139ac860dece357af59d3fb522084e1c Mon Sep 17 00:00:00 2001 From: Sjoerd Mullender Date: Mon, 13 Dec 1993 12:06:27 +0000 Subject: Added minmax function: -- 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 | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/Modules/audioop.c b/Modules/audioop.c index bfc6fda..8bd833a 100644 --- a/Modules/audioop.c +++ b/Modules/audioop.c @@ -213,6 +213,32 @@ audioop_max(self, args) } 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; object *args; @@ -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 }, -- cgit v0.12