summaryrefslogtreecommitdiffstats
path: root/Lib/aifc.py
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2013-10-12 15:23:21 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2013-10-12 15:23:21 (GMT)
commit4ae423ded4741b303b7006dcdcd360bec5549fff (patch)
tree8bdcca607395df8b0f6d61f6dd0469d70b98f053 /Lib/aifc.py
parent34808e2237a77d88c3f21444e57c3ae68f4d19ca (diff)
parent4b5325963bd249479cb6b1abe8ffaa75ac5bb80a (diff)
downloadcpython-4ae423ded4741b303b7006dcdcd360bec5549fff.zip
cpython-4ae423ded4741b303b7006dcdcd360bec5549fff.tar.gz
cpython-4ae423ded4741b303b7006dcdcd360bec5549fff.tar.bz2
Issue #19131: The aifc module now correctly reads and writes sampwidth of
compressed streams.
Diffstat (limited to 'Lib/aifc.py')
-rw-r--r--Lib/aifc.py9
1 files changed, 5 insertions, 4 deletions
diff --git a/Lib/aifc.py b/Lib/aifc.py
index b087754..18f236d 100644
--- a/Lib/aifc.py
+++ b/Lib/aifc.py
@@ -468,15 +468,13 @@ class Aifc_read:
if self._comptype != b'NONE':
if self._comptype == b'G722':
self._convert = self._adpcm2lin
- self._framesize = self._framesize // 4
elif self._comptype in (b'ulaw', b'ULAW'):
self._convert = self._ulaw2lin
- self._framesize = self._framesize // 2
elif self._comptype in (b'alaw', b'ALAW'):
self._convert = self._alaw2lin
- self._framesize = self._framesize // 2
else:
raise Error('unsupported compression type')
+ self._sampwidth = 2
else:
self._comptype = b'NONE'
self._compname = b'not compressed'
@@ -804,7 +802,10 @@ class Aifc_write:
_write_short(self._file, self._nchannels)
self._nframes_pos = self._file.tell()
_write_ulong(self._file, self._nframes)
- _write_short(self._file, self._sampwidth * 8)
+ if self._comptype in (b'ULAW', b'ulaw', b'ALAW', b'alaw', b'G722'):
+ _write_short(self._file, 8)
+ else:
+ _write_short(self._file, self._sampwidth * 8)
_write_float(self._file, self._framerate)
if self._aifc:
self._file.write(self._comptype)