summaryrefslogtreecommitdiffstats
path: root/Lib/wave.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1999-02-05 22:28:17 (GMT)
committerGuido van Rossum <guido@python.org>1999-02-05 22:28:17 (GMT)
commitebb9c922cb1f1b72fe929cfba223e42df7492a1c (patch)
tree31601368e369dcef203d7bcb7c1245741548868c /Lib/wave.py
parent2aaeb52665fb297b3d65006b8b22eee290f17e7f (diff)
downloadcpython-ebb9c922cb1f1b72fe929cfba223e42df7492a1c.zip
cpython-ebb9c922cb1f1b72fe929cfba223e42df7492a1c.tar.gz
cpython-ebb9c922cb1f1b72fe929cfba223e42df7492a1c.tar.bz2
Two important fixes:
(1) on a little-endian platform, don't byteswap; (2) in _patchheader(), there was a missing self._file argument to a _write_long() call.
Diffstat (limited to 'Lib/wave.py')
-rw-r--r--Lib/wave.py15
1 files changed, 12 insertions, 3 deletions
diff --git a/Lib/wave.py b/Lib/wave.py
index 35e3b6b..c34830a 100644
--- a/Lib/wave.py
+++ b/Lib/wave.py
@@ -78,6 +78,13 @@ WAVE_FORMAT_PCM = 0x0001
_array_fmts = None, 'b', 'h', None, 'l'
+# Determine endian-ness
+import struct
+if struct.pack("h", 1) == "\000\001":
+ big_endian = 1
+else:
+ big_endian = 0
+
def _read_long(file):
x = 0L
for i in range(4):
@@ -309,7 +316,8 @@ class Wave_read:
nitems = (self._data_chunk.chunksize - self._data_chunk.size_read) / self._sampwidth
data.fromfile(self._data_chunk.file, nitems)
self._data_chunk.size_read = self._data_chunk.size_read + nitems * self._sampwidth
- data.byteswap()
+ if big_endian:
+ data.byteswap()
data = data.tostring()
else:
data = self._data_chunk.read(nframes * self._framesize)
@@ -482,7 +490,8 @@ class Wave_write:
if self._sampwidth > 1:
import array
data = array.array(_array_fmts[self._sampwidth], data)
- data.byteswap()
+ if big_endian:
+ data.byteswap()
data.tofile(self._file)
self._datawritten = self._datawritten + len(data) * self._sampwidth
else:
@@ -542,7 +551,7 @@ class Wave_write:
return
curpos = self._file.tell()
self._file.seek(self._form_length_pos, 0)
- _write_long(36 + self._datawritten)
+ _write_long(self._file, 36 + self._datawritten)
self._file.seek(self._data_length_pos, 0)
_write_long(self._file, self._datawritten)
self._file.seek(curpos, 0)