]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Issue #13680: add lowecase compression type to write header; patch by Oleg Plakhotnyuk
authorSandro Tosi <sandro.tosi@gmail.com>
Sun, 1 Jan 2012 17:04:37 +0000 (18:04 +0100)
committerSandro Tosi <sandro.tosi@gmail.com>
Sun, 1 Jan 2012 17:04:37 +0000 (18:04 +0100)
Lib/aifc.py
Lib/test/test_aifc.py

index 015d3985d6bfbca2afb45cf590ad06a4c23df430..4646285143d721e29827727ff1dbd9412cf658e3 100644 (file)
@@ -716,18 +716,12 @@ class Aifc_write:
 
     def _ensure_header_written(self, datasize):
         if not self._nframeswritten:
-            if self._comptype in (b'ULAW', b'ALAW'):
+            if self._comptype in (b'ULAW', b'ulaw', b'ALAW', b'alaw', b'G722'):
                 if not self._sampwidth:
                     self._sampwidth = 2
                 if self._sampwidth != 2:
                     raise Error('sample width must be 2 when compressing '
-                                'with ulaw/ULAW or alaw/ALAW')
-            if self._comptype == b'G722':
-                if not self._sampwidth:
-                    self._sampwidth = 2
-                if self._sampwidth != 2:
-                    raise Error('sample width must be 2 when compressing '
-                                'with G7.22 (ADPCM)')
+                                'with ulaw/ULAW, alaw/ALAW or G7.22 (ADPCM)')
             if not self._nchannels:
                 raise Error('# channels not specified')
             if not self._sampwidth:
@@ -743,8 +737,6 @@ class Aifc_write:
             self._convert = self._lin2ulaw
         elif self._comptype in (b'alaw', b'ALAW'):
             self._convert = self._lin2alaw
-        else:
-            raise Error('unsupported compression type')
 
     def _write_header(self, initlength):
         if self._aifc and self._comptype != b'NONE':
index 4869bf3cc4bf566ee57a9e2ec3f6a7f9f1cd9323..af2305fd9787ddd052456bce170d22e11cb60ee8 100644 (file)
@@ -1,6 +1,7 @@
 from test.support import findfile, run_unittest, TESTFN
 import unittest
 import os
+import io
 
 import aifc
 
@@ -109,6 +110,16 @@ class AIFCTest(unittest.TestCase):
         f.close()
         self.assertEqual(testfile.closed, True)
 
+    def test_write_header_comptype_sampwidth(self):
+        for comptype in (b'ULAW', b'ulaw', b'ALAW', b'alaw', b'G722'):
+            fout = self.fout = aifc.open(io.BytesIO(), 'wb')
+            fout.setnchannels(1)
+            fout.setframerate(1)
+            fout.setcomptype(comptype, b'')
+            fout.close()
+            self.assertEqual(fout.getsampwidth(), 2)
+            fout.initfp(None)
+
 
 def test_main():
     run_unittest(AIFCTest)