[Python-checkins] cpython: Issue #19261: Added support for writing 24-bit samples in the sunau module.

serhiy.storchaka python-checkins at python.org
Sun Nov 10 20:06:12 CET 2013


http://hg.python.org/cpython/rev/d2cc6254d399
changeset:   87038:d2cc6254d399
parent:      87033:fa2581bbef44
user:        Serhiy Storchaka <storchaka at gmail.com>
date:        Sun Nov 10 21:02:53 2013 +0200
summary:
  Issue #19261: Added support for writing 24-bit samples in the sunau module.

files:
  Doc/library/sunau.rst             |    3 +
  Lib/sunau.py                      |    5 ++-
  Lib/test/audiodata/pluck-pcm24.au |  Bin 
  Lib/test/test_sunau.py            |   28 ++++++++++++++++++
  Misc/NEWS                         |    2 +
  5 files changed, 37 insertions(+), 1 deletions(-)


diff --git a/Doc/library/sunau.rst b/Doc/library/sunau.rst
--- a/Doc/library/sunau.rst
+++ b/Doc/library/sunau.rst
@@ -212,6 +212,9 @@
 
    Set the sample width (in bytes.)
 
+   .. versionchanged:: 3.4
+      Added support for 24-bit samples.
+
 
 .. method:: AU_write.setframerate(n)
 
diff --git a/Lib/sunau.py b/Lib/sunau.py
--- a/Lib/sunau.py
+++ b/Lib/sunau.py
@@ -352,7 +352,7 @@
     def setsampwidth(self, sampwidth):
         if self._nframeswritten:
             raise Error('cannot change parameters after starting to write')
-        if sampwidth not in (1, 2, 4):
+        if sampwidth not in (1, 2, 3, 4):
             raise Error('bad sample width')
         self._sampwidth = sampwidth
 
@@ -465,6 +465,9 @@
             elif self._sampwidth == 2:
                 encoding = AUDIO_FILE_ENCODING_LINEAR_16
                 self._framesize = 2
+            elif self._sampwidth == 3:
+                encoding = AUDIO_FILE_ENCODING_LINEAR_24
+                self._framesize = 3
             elif self._sampwidth == 4:
                 encoding = AUDIO_FILE_ENCODING_LINEAR_32
                 self._framesize = 4
diff --git a/Lib/test/audiodata/pluck-pcm24.au b/Lib/test/audiodata/pluck-pcm24.au
new file mode 100644
index 0000000000000000000000000000000000000000..0bb230418a3844b81637c7b4b1ea3f18f3bfe2d6
GIT binary patch
[stripped]
diff --git a/Lib/test/test_sunau.py b/Lib/test/test_sunau.py
--- a/Lib/test/test_sunau.py
+++ b/Lib/test/test_sunau.py
@@ -47,6 +47,34 @@
       """)
 
 
+class SunauPCM24Test(audiotests.AudioWriteTests,
+        audiotests.AudioTestsWithSourceFile,
+        unittest.TestCase):
+    module = sunau
+    sndfilename = 'pluck-pcm24.au'
+    sndfilenframes = 3307
+    nchannels = 2
+    sampwidth = 3
+    framerate = 11025
+    nframes = 48
+    comptype = 'NONE'
+    compname = 'not compressed'
+    frames = bytes.fromhex("""\
+      022D65FFEB9D 4B5A0F00FA54 3113C304EE2B 80DCD6084303 \
+      CBDEC006B261 48A99803F2F8 BFE82401B07D 036BFBFE7B5D \
+      B85756FA3EC9 B4B055F3502B 299830EBCB62 1A5CA7E6D99A \
+      EDFA3EE491BD C625EBE27884 0E05A9E0B6CF EF2929E02922 \
+      5758D8E27067 FB3557E83E16 1377BFEF8402 D82C5BF7272A \
+      978F16FB7745 F5F865FC1013 086635FB9C4E DF30FCFB40EE \
+      117FE0FA3438 3EE6B8FB5AC3 BC77A3FCB2F4 66D6DAFF5F32 \
+      CF13B9041275 431D69097A8C C1BB600EC74E 5120B912A2BA \
+      EEDF641754C0 8207001664B7 7FFFFF14453F 8000001294E6 \
+      499C1B0EB3B2 52B73E0DBCA0 EFB2B20F5FD8 CE3CDB0FBE12 \
+      E4B49C0CEA2D 6344A80A5A7C 08C8FE0A1FFE 2BB9860B0A0E \
+      51486F0E44E1 8BCC64113B05 B6F4EC0EEB36 4413170A5B48 \
+      """)
+
+
 class SunauPCM32Test(audiotests.AudioWriteTests,
         audiotests.AudioTestsWithSourceFile,
         unittest.TestCase):
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -34,6 +34,8 @@
 Library
 -------
 
+- Issue #19261: Added support for writing 24-bit samples in the sunau module.
+
 - Issue #1097797: Added CP273 encoding, used on IBM mainframes in
   Germany and Austria.  Mapping provided by Michael Bierenfeld.
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list