]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Issue #24326: Fixed audioop.ratecv() with non-default weightB argument.
authorSerhiy Storchaka <storchaka@gmail.com>
Fri, 29 May 2015 21:53:26 +0000 (00:53 +0300)
committerSerhiy Storchaka <storchaka@gmail.com>
Fri, 29 May 2015 21:53:26 +0000 (00:53 +0300)
Original patch by David Moore.

Lib/test/test_audioop.py
Misc/NEWS
Modules/audioop.c

index e5a51593fa4d99f5bb27385d7d4bfafcb80dc694..739de238bf11dbd87acc96a82c54623ab6886471 100644 (file)
@@ -280,6 +280,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)
@@ -295,6 +298,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, 4:
             self.assertEqual(audioop.reverse(b'', w), b'')
index 7e36ee6c8bf889fa1c4cbe9dc016bc0d2e009cd6..731999b28aa02b9de68b9230abec54ad30d688d4 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -22,6 +22,9 @@ Core and Builtins
 Library
 -------
 
+- Issue #24326: Fixed audioop.ratecv() with non-default weightB argument.
+  Original patch by David Moore.
+
 - Issue #22095: Fixed HTTPConnection.set_tunnel with default port.  The port
   value in the host header was set to "None".  Patch by Demian Brecht.
 
index 8a3a27596313c0d0c9d2dd4c8d2af1ffea8683c9..0282c7e94113bb6a24d0dee41b130007ae91d617 100644 (file)
@@ -1130,7 +1130,7 @@ audioop_ratecv(PyObject *self, PyObject *args)
     /* 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,