diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2015-05-29 21:58:09 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2015-05-29 21:58:09 (GMT) |
commit | 07739f3555fc1a4691defa5b339633689c9d926c (patch) | |
tree | 03f86f62e205db1af5895b1f9a6609ef977c8a50 | |
parent | 38bc0a7f9710b8776a4eafe6849640d950371fc9 (diff) | |
parent | a663121e10265bb4d05b715a262cb4c1d79da082 (diff) | |
download | cpython-07739f3555fc1a4691defa5b339633689c9d926c.zip cpython-07739f3555fc1a4691defa5b339633689c9d926c.tar.gz cpython-07739f3555fc1a4691defa5b339633689c9d926c.tar.bz2 |
Issue #24326: Fixed audioop.ratecv() with non-default weightB argument.
Original patch by David Moore.
-rw-r--r-- | Lib/test/test_audioop.py | 17 | ||||
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Modules/audioop.c | 2 |
3 files changed, 21 insertions, 1 deletions
diff --git a/Lib/test/test_audioop.py b/Lib/test/test_audioop.py index 879adea..01ed18d 100644 --- a/Lib/test/test_audioop.py +++ b/Lib/test/test_audioop.py @@ -363,6 +363,9 @@ class TestAudioop(unittest.TestCase): (b'', (-2, ((0, 0),)))) self.assertEqual(audioop.ratecv(datas[w], w, 1, 8000, 8000, None)[0], datas[w]) + self.assertEqual(audioop.ratecv(datas[w], w, 1, 8000, 8000, None, 1, 0)[0], + datas[w]) + state = None 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) @@ -378,6 +381,20 @@ class TestAudioop(unittest.TestCase): self.assertEqual(d, d0) 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): for w in 1, 2, 3, 4: self.assertEqual(audioop.reverse(b'', w), b'') @@ -30,6 +30,9 @@ Core and Builtins 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? ================================== diff --git a/Modules/audioop.c b/Modules/audioop.c index d49596f..27220b2 100644 --- a/Modules/audioop.c +++ b/Modules/audioop.c @@ -1331,7 +1331,7 @@ audioop_ratecv_impl(PyModuleDef *module, Py_buffer *fragment, int width, /* divide weightA and weightB by their greatest common divisor */ d = gcd(weightA, weightB); weightA /= d; - weightA /= d; + weightB /= d; if ((size_t)nchannels > PY_SIZE_MAX/sizeof(int)) { PyErr_SetString(PyExc_MemoryError, |