diff options
author | Jesus Cea <jcea@jcea.es> | 2012-11-17 02:41:54 (GMT) |
---|---|---|
committer | Jesus Cea <jcea@jcea.es> | 2012-11-17 02:41:54 (GMT) |
commit | e4b863982c93e7661edb682b258ca104f5c5f6d6 (patch) | |
tree | eac1d534403ac092d23b05cd28aae1695d7a0e96 | |
parent | 103f17ef918188ea2f50b01bb616953082d5f4e2 (diff) | |
download | cpython-e4b863982c93e7661edb682b258ca104f5c5f6d6.zip cpython-e4b863982c93e7661edb682b258ca104f5c5f6d6.tar.gz cpython-e4b863982c93e7661edb682b258ca104f5c5f6d6.tar.bz2 |
Closes #16461: Wave library should be able to deal with 4GB wav files, and sample rate of 44100 Hz.
-rw-r--r-- | Lib/wave.py | 12 | ||||
-rw-r--r-- | Misc/NEWS | 3 |
2 files changed, 9 insertions, 6 deletions
diff --git a/Lib/wave.py b/Lib/wave.py index 2877137..54f0302 100644 --- a/Lib/wave.py +++ b/Lib/wave.py @@ -261,9 +261,9 @@ class Wave_read: # def _read_fmt_chunk(self, chunk): - wFormatTag, self._nchannels, self._framerate, dwAvgBytesPerSec, wBlockAlign = struct.unpack_from('<hhllh', chunk.read(14)) + wFormatTag, self._nchannels, self._framerate, dwAvgBytesPerSec, wBlockAlign = struct.unpack_from('<HHLLH', chunk.read(14)) if wFormatTag == WAVE_FORMAT_PCM: - sampwidth = struct.unpack_from('<h', chunk.read(2))[0] + sampwidth = struct.unpack_from('<H', chunk.read(2))[0] self._sampwidth = (sampwidth + 7) // 8 else: raise Error('unknown format: %r' % (wFormatTag,)) @@ -466,14 +466,14 @@ class Wave_write: self._nframes = initlength // (self._nchannels * self._sampwidth) self._datalength = self._nframes * self._nchannels * self._sampwidth self._form_length_pos = self._file.tell() - self._file.write(struct.pack('<l4s4slhhllhh4s', + self._file.write(struct.pack('<L4s4sLHHLLHH4s', 36 + self._datalength, b'WAVE', b'fmt ', 16, WAVE_FORMAT_PCM, self._nchannels, self._framerate, self._nchannels * self._framerate * self._sampwidth, self._nchannels * self._sampwidth, self._sampwidth * 8, b'data')) self._data_length_pos = self._file.tell() - self._file.write(struct.pack('<l', self._datalength)) + self._file.write(struct.pack('<L', self._datalength)) self._headerwritten = True def _patchheader(self): @@ -482,9 +482,9 @@ class Wave_write: return curpos = self._file.tell() self._file.seek(self._form_length_pos, 0) - self._file.write(struct.pack('<l', 36 + self._datawritten)) + self._file.write(struct.pack('<L', 36 + self._datawritten)) self._file.seek(self._data_length_pos, 0) - self._file.write(struct.pack('<l', self._datawritten)) + self._file.write(struct.pack('<L', self._datawritten)) self._file.seek(curpos, 0) self._datalength = self._datawritten @@ -222,6 +222,9 @@ Library - Issue #16270: urllib may hang when used for retrieving files via FTP by using a context manager. Patch by Giampaolo Rodola'. +- Issue #16461: Wave library should be able to deal with 4GB wav files, + and sample rate of 44100 Hz. + - Issue #16176: Properly identify Windows 8 via platform.platform() - Issue #16114: The subprocess module no longer provides a misleading |