Kaydet (Commit) b24c9ea5 authored tarafından Guido van Rossum's avatar Guido van Rossum

fixed ratecv to continue working if product of rates is bigger than 32 bits

(Sjoerd)
üst 511f1635
......@@ -945,6 +945,18 @@ audioop_lin2lin(self, args)
return rv;
}
static int
gcd(a, b)
int a, b;
{
while (b > 0) {
int tmp = a % b;
a = b;
b = tmp;
}
return a;
}
static PyObject *
audioop_ratecv(self, args)
PyObject *self;
......@@ -977,6 +989,15 @@ audioop_ratecv(self, args)
PyErr_SetString(AudioopError, "not a whole number of frames");
return NULL;
}
if (inrate <= 0 || outrate <= 0) {
PyErr_SetString(AudioopError, "sampling rate not > 0");
return NULL;
}
/* divide inrate and outrate by their greatest common divisor */
d = gcd(inrate, outrate);
inrate /= d;
outrate /= d;
prev_i = malloc(nchannels * sizeof(int));
cur_i = malloc(nchannels * sizeof(int));
len /= size * nchannels; /* # of frames */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment