diff options
author | Sjoerd Mullender <sjoerd@acm.org> | 1993-12-13 12:06:27 (GMT) |
---|---|---|
committer | Sjoerd Mullender <sjoerd@acm.org> | 1993-12-13 12:06:27 (GMT) |
commit | c4801ed5139ac860dece357af59d3fb522084e1c (patch) | |
tree | 78e664dac2fa5da31a7ba26394e7008b6353dc8c | |
parent | 43bf0bc85782bb97a7026b5cd03a79d3adf7b568 (diff) | |
download | cpython-c4801ed5139ac860dece357af59d3fb522084e1c.zip cpython-c4801ed5139ac860dece357af59d3fb522084e1c.tar.gz cpython-c4801ed5139ac860dece357af59d3fb522084e1c.tar.bz2 |
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.
-rw-r--r-- | Modules/audioop.c | 27 |
1 files changed, 27 insertions, 0 deletions
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 }, |