Changeset 388 for python/vendor/current/Lib/sunau.py
- Timestamp:
- Mar 19, 2014, 11:11:30 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
python/vendor/current/Lib/sunau.py
r2 r388 204 204 else: 205 205 self._info = '' 206 try: 207 self._data_pos = file.tell() 208 except (AttributeError, IOError): 209 self._data_pos = None 206 210 207 211 def getfp(self): … … 256 260 data = self._file.read() 257 261 else: 258 data = self._file.read(nframes * self._framesize * self._nchannels) 262 data = self._file.read(nframes * self._framesize) 263 self._soundpos += len(data) // self._framesize 259 264 if self._encoding == AUDIO_FILE_ENCODING_MULAW_8: 260 265 import audioop … … 264 269 265 270 def rewind(self): 271 if self._data_pos is None: 272 raise IOError('cannot seek') 273 self._file.seek(self._data_pos) 266 274 self._soundpos = 0 267 self._file.seek(self._hdr_size)268 275 269 276 def tell(self): … … 273 280 if pos < 0 or pos > self.getnframes(): 274 281 raise Error, 'position not in range' 275 self._file.seek(pos * self._framesize + self._hdr_size) 282 if self._data_pos is None: 283 raise IOError('cannot seek') 284 self._file.seek(self._data_pos + pos * self._framesize) 276 285 self._soundpos = pos 277 286 … … 365 374 return 'not compressed' 366 375 367 def setparams(self, (nchannels, sampwidth, framerate, nframes, comptype, compname)): 376 def setparams(self, params): 377 nchannels, sampwidth, framerate, nframes, comptype, compname = params 368 378 self.setnchannels(nchannels) 369 379 self.setsampwidth(sampwidth) … … 382 392 def writeframesraw(self, data): 383 393 self._ensure_header_written() 384 nframes = len(data) / self._framesize385 394 if self._comptype == 'ULAW': 386 395 import audioop 387 396 data = audioop.lin2ulaw(data, self._sampwidth) 397 nframes = len(data) // self._framesize 388 398 self._file.write(data) 389 399 self._nframeswritten = self._nframeswritten + nframes … … 397 407 398 408 def close(self): 399 self._ensure_header_written() 400 if self._nframeswritten != self._nframes or \ 401 self._datalength != self._datawritten: 402 self._patchheader() 403 self._file.flush() 404 self._file = None 409 if self._file: 410 try: 411 self._ensure_header_written() 412 if self._nframeswritten != self._nframes or \ 413 self._datalength != self._datawritten: 414 self._patchheader() 415 self._file.flush() 416 finally: 417 self._file = None 405 418 406 419 # … … 445 458 else: 446 459 length = self._nframes * self._framesize 460 try: 461 self._form_length_pos = self._file.tell() 462 except (AttributeError, IOError): 463 self._form_length_pos = None 447 464 _write_u32(self._file, length) 448 465 self._datalength = length … … 454 471 455 472 def _patchheader(self): 456 self._file.seek(8) 473 if self._form_length_pos is None: 474 raise IOError('cannot seek') 475 self._file.seek(self._form_length_pos) 457 476 _write_u32(self._file, self._datawritten) 458 477 self._datalength = self._datawritten
Note:
See TracChangeset
for help on using the changeset viewer.