[Python-checkins] cpython (merge 3.2 -> 3.3): MERGE: Closes #16461: Wave library should be able to deal with 4GB wav files,

jesus.cea python-checkins at python.org
Sat Nov 17 03:43:34 CET 2012


http://hg.python.org/cpython/rev/f380d749f6bd
changeset:   80457:f380d749f6bd
branch:      3.3
parent:      80453:d7558e4015a4
parent:      80456:542bf1c1f2e3
user:        Jesus Cea <jcea at jcea.es>
date:        Sat Nov 17 03:42:41 2012 +0100
summary:
  MERGE: Closes #16461: Wave library should be able to deal with 4GB wav files, and sample rate of 44100 Hz.

files:
  Lib/wave.py |  12 ++++++------
  Misc/NEWS   |   3 +++
  2 files changed, 9 insertions(+), 6 deletions(-)


diff --git a/Lib/wave.py b/Lib/wave.py
--- a/Lib/wave.py
+++ b/Lib/wave.py
@@ -261,9 +261,9 @@
     #
 
     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 @@
             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 @@
             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
 
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -158,6 +158,9 @@
 - 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 error

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


More information about the Python-checkins mailing list