Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c4801ed

Browse files
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.
1 parent 43bf0bc commit c4801ed

1 file changed

Lines changed: 27 additions & 0 deletions

File tree

Modules/audioop.c

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,32 @@ audioop_max(self, args)
212212
return newintobject(max);
213213
}
214214

215+
static object *
216+
audioop_minmax(self, args)
217+
object *self;
218+
object *args;
219+
{
220+
signed char *cp;
221+
int len, size, val;
222+
int i;
223+
int min = 0x7fffffff, max = -0x7fffffff;
224+
225+
if (!getargs(args, "(s#i)", &cp, &len, &size))
226+
return NULL;
227+
if (size != 1 && size != 2 && size != 4) {
228+
err_setstr(AudioopError, "Size should be 1, 2 or 4");
229+
return NULL;
230+
}
231+
for (i = 0; i < len; i += size) {
232+
if (size == 1) val = (int) *CHARP(cp, i);
233+
else if (size == 2) val = (int) *SHORTP(cp, i);
234+
else if (size == 4) val = (int) *LONGP(cp, i);
235+
if (val > max) max = val;
236+
if (val < min) min = val;
237+
}
238+
return mkvalue("(ii)", min, max);
239+
}
240+
215241
static object *
216242
audioop_avg(self, args)
217243
object *self;
@@ -1304,6 +1330,7 @@ audioop_adpcm2lin(self, args)
13041330

13051331
static struct methodlist audioop_methods[] = {
13061332
{ "max", audioop_max },
1333+
{ "minmax", audioop_minmax },
13071334
{ "avg", audioop_avg },
13081335
{ "maxpp", audioop_maxpp },
13091336
{ "avgpp", audioop_avgpp },

0 commit comments

Comments
 (0)