summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2013-11-10 19:02:53 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2013-11-10 19:02:53 (GMT)
commit81895f8ee327474b5a07a12e957b786510227b29 (patch)
tree7b2e5049c97e2f9f2521fce809b071f0a7980bc8
parenta49ccb205fa2f25bf3d09d8f99476942ec3d66fd (diff)
downloadcpython-81895f8ee327474b5a07a12e957b786510227b29.zip
cpython-81895f8ee327474b5a07a12e957b786510227b29.tar.gz
cpython-81895f8ee327474b5a07a12e957b786510227b29.tar.bz2
Issue #19261: Added support for writing 24-bit samples in the sunau module.
-rw-r--r--Doc/library/sunau.rst3
-rw-r--r--Lib/sunau.py5
-rw-r--r--Lib/test/audiodata/pluck-pcm24.aubin0 -> 19866 bytes
-rw-r--r--Lib/test/test_sunau.py28
-rw-r--r--Misc/NEWS2
5 files changed, 37 insertions, 1 deletions
diff --git a/Doc/library/sunau.rst b/Doc/library/sunau.rst
index eae710d..6455ed9 100644
--- a/Doc/library/sunau.rst
+++ b/Doc/library/sunau.rst
@@ -212,6 +212,9 @@ AU_write objects, as returned by :func:`.open` above, have the following methods
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
index 5761390..1880a01 100644
--- a/Lib/sunau.py
+++ b/Lib/sunau.py
@@ -352,7 +352,7 @@ class Au_write:
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 @@ class Au_write:
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 0000000..0bb2304
--- /dev/null
+++ b/Lib/test/audiodata/pluck-pcm24.au
Binary files differ
diff --git a/Lib/test/test_sunau.py b/Lib/test/test_sunau.py
index 767314f..81acd96 100644
--- a/Lib/test/test_sunau.py
+++ b/Lib/test/test_sunau.py
@@ -47,6 +47,34 @@ class SunauPCM16Test(audiotests.AudioWriteTests,
""")
+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
index b4cb1e0..421e097 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -34,6 +34,8 @@ Core and Builtins
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.