summaryrefslogtreecommitdiffstats
path: root/Lib/wave.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1999-02-05 22:32:11 (GMT)
committerGuido van Rossum <guido@python.org>1999-02-05 22:32:11 (GMT)
commitd42e46ead5d5f069a4fd11a24ee328d75ea31fb9 (patch)
tree178fd40ffe79b5c0dde9dcec3a93d5f9b4b4bfe7 /Lib/wave.py
parentebb9c922cb1f1b72fe929cfba223e42df7492a1c (diff)
downloadcpython-d42e46ead5d5f069a4fd11a24ee328d75ea31fb9.zip
cpython-d42e46ead5d5f069a4fd11a24ee328d75ea31fb9.tar.gz
cpython-d42e46ead5d5f069a4fd11a24ee328d75ea31fb9.tar.bz2
Ehm, when we don't need to byteswap the data, don't go through an
array object at all.
Diffstat (limited to 'Lib/wave.py')
-rw-r--r--Lib/wave.py10
1 files changed, 4 insertions, 6 deletions
diff --git a/Lib/wave.py b/Lib/wave.py
index c34830a..1353b51 100644
--- a/Lib/wave.py
+++ b/Lib/wave.py
@@ -305,7 +305,7 @@ class Wave_read:
self._data_seek_needed = 0
if nframes == 0:
return ''
- if self._sampwidth > 1:
+ if self._sampwidth > 1 and big_endian:
# unfortunately the fromfile() method does not take
# something that only looks like a file object, so
# we have to reach into the innards of the chunk object
@@ -316,8 +316,7 @@ 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
- if big_endian:
- data.byteswap()
+ data.byteswap()
data = data.tostring()
else:
data = self._data_chunk.read(nframes * self._framesize)
@@ -487,11 +486,10 @@ class Wave_write:
nframes = len(data) / (self._sampwidth * self._nchannels)
if self._convert:
data = self._convert(data)
- if self._sampwidth > 1:
+ if self._sampwidth > 1 and big_endian:
import array
data = array.array(_array_fmts[self._sampwidth], data)
- if big_endian:
- data.byteswap()
+ data.byteswap()
data.tofile(self._file)
self._datawritten = self._datawritten + len(data) * self._sampwidth
else: