Mercurial > cpython-lru_cache-weakref
diff Lib/aifc.py @ 1205:ecfbc246eeaa legacy-trunk
CL.py, clmodule.c: Adapted to new CL library. Lots of new methods.
aifc.py: Several small improvements. Use new methods from CL module.
| author | Sjoerd Mullender <sjoerd@acm.org> |
|---|---|
| date | Thu, 04 Feb 1993 16:43:28 +0000 |
| parents | 3573ef421bf4 |
| children | 9b14a4d89207 |
line wrap: on
line diff
--- a/Lib/aifc.py Fri Jan 29 12:01:00 1993 +0000 +++ b/Lib/aifc.py Thu Feb 04 16:43:28 1993 +0000 @@ -356,6 +356,7 @@ # _ssnd_seek_needed -- 1 iff positioned correctly in audio # file for readframes() # _ssnd_chunk -- instantiation of a chunk class for the SSND chunk + # _framesize -- size of one frame in the file def initfp(self, file): self._file = file self._version = 0 @@ -497,24 +498,15 @@ if self._ssnd_seek_needed: self._ssnd_chunk.rewind() dummy = self._ssnd_chunk.read(8) - pos = self._soundpos * self._nchannels * self._sampwidth - if self._decomp: - if self._comptype in ('ULAW', 'ALAW'): - pos = pos / 2 + pos = self._soundpos * self._framesize if pos: self._ssnd_chunk.setpos(pos + 8) self._ssnd_seek_needed = 0 if nframes == 0: return '' - size = nframes * self._nchannels * self._sampwidth - if self._decomp: - if self._comptype in ('ULAW', 'ALAW'): - size = size / 2 - data = self._ssnd_chunk.read(size) + data = self._ssnd_chunk.read(nframes * self._framesize) if self._decomp and data: - params = [CL.FRAME_BUFFER_SIZE, len(data) * 2, \ - CL.COMPRESSED_BUFFER_SIZE, len(data)] - self._decomp.SetParams(params) + self._decomp.SetParam(CL.FRAME_BUFFER_SIZE, len(data) * 2) data = self._decomp.Decompress(len(data) / self._nchannels, data) self._soundpos = self._soundpos + len(data) / (self._nchannels * self._sampwidth) return data @@ -530,6 +522,7 @@ self._sampwidth = _convert1(sampwidth, _sampwidthlist) framerate = _read_float(chunk) self._framerate = _convert1(framerate, _frameratelist) + self._framesize = self._nchannels * self._sampwidth if self._aifc: #DEBUG: SGI's soundeditor produces a bad size :-( kludge = 0 @@ -555,8 +548,10 @@ raise Error, 'cannot read compressed AIFF-C files' if self._comptype == 'ULAW': scheme = CL.G711_ULAW + self._framesize = self._framesize / 2 elif self._comptype == 'ALAW': scheme = CL.G711_ALAW + self._framesize = self._framesize / 2 else: raise Error, 'unsupported compression type' self._decomp = cl.OpenDecompressor(scheme) @@ -643,6 +638,7 @@ def setnchannels(self, nchannels): if self._nframeswritten: raise Error, 'cannot change parameters after starting to write' + dummy = _convert(nchannels, _nchannelslist) self._nchannels = nchannels def getnchannels(self): @@ -653,6 +649,7 @@ def setsampwidth(self, sampwidth): if self._nframeswritten: raise Error, 'cannot change parameters after starting to write' + dummy = _convert2(sampwidth, _sampwidthlist) self._sampwidth = sampwidth def getsampwidth(self): @@ -663,6 +660,7 @@ def setframerate(self, framerate): if self._nframeswritten: raise Error, 'cannot change parameters after starting to write' + dummy = _convert2(framerate, _frameratelist) self._framerate = framerate def getframerate(self): @@ -702,6 +700,9 @@ raise Error, 'cannot change parameters after starting to write' if comptype not in ('NONE', 'ULAW', 'ALAW'): raise Error, 'unsupported compression type' + dummy = _convert2(nchannels, _nchannelslist) + dummy = _convert2(sampwidth, _sampwidthlist) + dummy = _convert2(framerate, _frameratelist) self._nchannels = nchannels self._sampwidth = sampwidth self._framerate = framerate @@ -755,9 +756,9 @@ self._write_header(len(data)) nframes = len(data) / (self._sampwidth * self._nchannels) if self._comp: - params = [CL.FRAME_BUFFER_SIZE, len(data), \ - CL.COMPRESSED_BUFFER_SIZE, len(data)] - self._comp.SetParams(params) + self._comp.SetParam(CL.FRAME_BUFFER_SIZE, len(data)) + self._comp.SetParam(CL.COMPRESSED_BUFFER_SIZE, \ + len(data)) data = self._comp.Compress(nframes, data) self._file.write(data) self._nframeswritten = self._nframeswritten + nframes @@ -803,7 +804,9 @@ self._comp = cl.OpenCompressor(scheme) params = [CL.ORIGINAL_FORMAT, 0, \ CL.BITS_PER_COMPONENT, 0, \ - CL.FRAME_RATE, self._framerate] + CL.FRAME_RATE, self._framerate, \ + CL.FRAME_BUFFER_SIZE, 100, \ + CL.COMPRESSED_BUFFER_SIZE, 100] if self._nchannels == AL.MONO: params[1] = CL.MONO else: @@ -815,6 +818,8 @@ else: params[3] = 24 self._comp.SetParams(params) + # the compressor produces a header which we ignore + dummy = self._comp.Compress(0, '') self._file.write('FORM') if not self._nframes: self._nframes = initlength / (self._nchannels * self._sampwidth) @@ -836,7 +841,7 @@ self._file.write('AIFF') self._file.write('COMM') _write_long(self._file, commlength) - _write_short(self._file, self._nchannels) + _write_short(self._file, _convert2(self._nchannels, _nchannelslist)) self._nframes_pos = self._file.tell() _write_long(self._file, self._nframes) _write_short(self._file, _convert2(self._sampwidth, _sampwidthlist))
