Issue #24326: Fixed audioop.ratecv() with non-default weightB argument.
Original patch by David Moore.
This commit is contained in:
commit
07739f3555
|
@ -363,6 +363,9 @@ class TestAudioop(unittest.TestCase):
|
||||||
(b'', (-2, ((0, 0),))))
|
(b'', (-2, ((0, 0),))))
|
||||||
self.assertEqual(audioop.ratecv(datas[w], w, 1, 8000, 8000, None)[0],
|
self.assertEqual(audioop.ratecv(datas[w], w, 1, 8000, 8000, None)[0],
|
||||||
datas[w])
|
datas[w])
|
||||||
|
self.assertEqual(audioop.ratecv(datas[w], w, 1, 8000, 8000, None, 1, 0)[0],
|
||||||
|
datas[w])
|
||||||
|
|
||||||
state = None
|
state = None
|
||||||
d1, state = audioop.ratecv(b'\x00\x01\x02', 1, 1, 8000, 16000, state)
|
d1, state = audioop.ratecv(b'\x00\x01\x02', 1, 1, 8000, 16000, state)
|
||||||
d2, state = audioop.ratecv(b'\x00\x01\x02', 1, 1, 8000, 16000, state)
|
d2, state = audioop.ratecv(b'\x00\x01\x02', 1, 1, 8000, 16000, state)
|
||||||
|
@ -378,6 +381,20 @@ class TestAudioop(unittest.TestCase):
|
||||||
self.assertEqual(d, d0)
|
self.assertEqual(d, d0)
|
||||||
self.assertEqual(state, state0)
|
self.assertEqual(state, state0)
|
||||||
|
|
||||||
|
expected = {
|
||||||
|
1: packs[1](0, 0x0d, 0x37, -0x26, 0x55, -0x4b, -0x14),
|
||||||
|
2: packs[2](0, 0x0da7, 0x3777, -0x2630, 0x5673, -0x4a64, -0x129a),
|
||||||
|
3: packs[3](0, 0x0da740, 0x377776, -0x262fca,
|
||||||
|
0x56740c, -0x4a62fd, -0x1298c0),
|
||||||
|
4: packs[4](0, 0x0da740da, 0x37777776, -0x262fc962,
|
||||||
|
0x56740da6, -0x4a62fc96, -0x1298bf26),
|
||||||
|
}
|
||||||
|
for w in 1, 2, 3, 4:
|
||||||
|
self.assertEqual(audioop.ratecv(datas[w], w, 1, 8000, 8000, None, 3, 1)[0],
|
||||||
|
expected[w])
|
||||||
|
self.assertEqual(audioop.ratecv(datas[w], w, 1, 8000, 8000, None, 30, 10)[0],
|
||||||
|
expected[w])
|
||||||
|
|
||||||
def test_reverse(self):
|
def test_reverse(self):
|
||||||
for w in 1, 2, 3, 4:
|
for w in 1, 2, 3, 4:
|
||||||
self.assertEqual(audioop.reverse(b'', w), b'')
|
self.assertEqual(audioop.reverse(b'', w), b'')
|
||||||
|
|
|
@ -30,6 +30,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #24326: Fixed audioop.ratecv() with non-default weightB argument.
|
||||||
|
Original patch by David Moore.
|
||||||
|
|
||||||
|
|
||||||
What's New in Python 3.5.0 beta 1?
|
What's New in Python 3.5.0 beta 1?
|
||||||
==================================
|
==================================
|
||||||
|
|
|
@ -1331,7 +1331,7 @@ audioop_ratecv_impl(PyModuleDef *module, Py_buffer *fragment, int width,
|
||||||
/* divide weightA and weightB by their greatest common divisor */
|
/* divide weightA and weightB by their greatest common divisor */
|
||||||
d = gcd(weightA, weightB);
|
d = gcd(weightA, weightB);
|
||||||
weightA /= d;
|
weightA /= d;
|
||||||
weightA /= d;
|
weightB /= d;
|
||||||
|
|
||||||
if ((size_t)nchannels > PY_SIZE_MAX/sizeof(int)) {
|
if ((size_t)nchannels > PY_SIZE_MAX/sizeof(int)) {
|
||||||
PyErr_SetString(PyExc_MemoryError,
|
PyErr_SetString(PyExc_MemoryError,
|
||||||
|
|
Loading…
Reference in New Issue