Lines Matching refs:self
162 def __init__(self, f):
166 self._opened = True
168 self._opened = False
169 self.initfp(f)
171 def __del__(self):
172 if self._file:
173 self.close()
175 def __enter__(self):
176 return self
178 def __exit__(self, *args):
179 self.close()
181 def initfp(self, file):
182 self._file = file
183 self._soundpos = 0
187 self._hdr_size = int(_read_u32(file))
188 if self._hdr_size < 24:
190 if self._hdr_size > 100:
192 self._data_size = _read_u32(file)
193 if self._data_size != AUDIO_UNKNOWN_SIZE:
194 self._data_size = int(self._data_size)
195 self._encoding = int(_read_u32(file))
196 if self._encoding not in _simple_encodings:
198 if self._encoding in (AUDIO_FILE_ENCODING_MULAW_8,
200 self._sampwidth = 2
201 self._framesize = 1
202 elif self._encoding == AUDIO_FILE_ENCODING_LINEAR_8:
203 self._framesize = self._sampwidth = 1
204 elif self._encoding == AUDIO_FILE_ENCODING_LINEAR_16:
205 self._framesize = self._sampwidth = 2
206 elif self._encoding == AUDIO_FILE_ENCODING_LINEAR_24:
207 self._framesize = self._sampwidth = 3
208 elif self._encoding == AUDIO_FILE_ENCODING_LINEAR_32:
209 self._framesize = self._sampwidth = 4
212 self._framerate = int(_read_u32(file))
213 self._nchannels = int(_read_u32(file))
214 if not self._nchannels:
216 self._framesize = self._framesize * self._nchannels
217 if self._hdr_size > 24:
218 self._info = file.read(self._hdr_size - 24)
219 self._info, _, _ = self._info.partition(b'\0')
221 self._info = b''
223 self._data_pos = file.tell()
225 self._data_pos = None
227 def getfp(self):
228 return self._file
230 def getnchannels(self):
231 return self._nchannels
233 def getsampwidth(self):
234 return self._sampwidth
236 def getframerate(self):
237 return self._framerate
239 def getnframes(self):
240 if self._data_size == AUDIO_UNKNOWN_SIZE:
242 if self._encoding in _simple_encodings:
243 return self._data_size // self._framesize
246 def getcomptype(self):
247 if self._encoding == AUDIO_FILE_ENCODING_MULAW_8:
249 elif self._encoding == AUDIO_FILE_ENCODING_ALAW_8:
254 def getcompname(self):
255 if self._encoding == AUDIO_FILE_ENCODING_MULAW_8:
257 elif self._encoding == AUDIO_FILE_ENCODING_ALAW_8:
262 def getparams(self):
263 return _sunau_params(self.getnchannels(), self.getsampwidth(),
264 self.getframerate(), self.getnframes(),
265 self.getcomptype(), self.getcompname())
267 def getmarkers(self):
270 def getmark(self, id):
273 def readframes(self, nframes):
274 if self._encoding in _simple_encodings:
276 data = self._file.read()
278 data = self._file.read(nframes * self._framesize)
279 self._soundpos += len(data) // self._framesize
280 if self._encoding == AUDIO_FILE_ENCODING_MULAW_8:
284 data = audioop.ulaw2lin(data, self._sampwidth)
288 def rewind(self):
289 if self._data_pos is None:
291 self._file.seek(self._data_pos)
292 self._soundpos = 0
294 def tell(self):
295 return self._soundpos
297 def setpos(self, pos):
298 if pos < 0 or pos > self.getnframes():
300 if self._data_pos is None:
302 self._file.seek(self._data_pos + pos * self._framesize)
303 self._soundpos = pos
305 def close(self):
306 file = self._file
308 self._file = None
309 if self._opened:
314 def __init__(self, f):
318 self._opened = True
320 self._opened = False
321 self.initfp(f)
323 def __del__(self):
324 if self._file:
325 self.close()
326 self._file = None
328 def __enter__(self):
329 return self
331 def __exit__(self, *args):
332 self.close()
334 def initfp(self, file):
335 self._file = file
336 self._framerate = 0
337 self._nchannels = 0
338 self._sampwidth = 0
339 self._framesize = 0
340 self._nframes = AUDIO_UNKNOWN_SIZE
341 self._nframeswritten = 0
342 self._datawritten = 0
343 self._datalength = 0
344 self._info = b''
345 self._comptype = 'ULAW' # default is U-law
347 def setnchannels(self, nchannels):
348 if self._nframeswritten:
352 self._nchannels = nchannels
354 def getnchannels(self):
355 if not self._nchannels:
357 return self._nchannels
359 def setsampwidth(self, sampwidth):
360 if self._nframeswritten:
364 self._sampwidth = sampwidth
366 def getsampwidth(self):
367 if not self._framerate:
369 return self._sampwidth
371 def setframerate(self, framerate):
372 if self._nframeswritten:
374 self._framerate = framerate
376 def getframerate(self):
377 if not self._framerate:
379 return self._framerate
381 def setnframes(self, nframes):
382 if self._nframeswritten:
386 self._nframes = nframes
388 def getnframes(self):
389 return self._nframeswritten
391 def setcomptype(self, type, name):
393 self._comptype = type
397 def getcomptype(self):
398 return self._comptype
400 def getcompname(self):
401 if self._comptype == 'ULAW':
403 elif self._comptype == 'ALAW':
408 def setparams(self, params):
410 self.setnchannels(nchannels)
411 self.setsampwidth(sampwidth)
412 self.setframerate(framerate)
413 self.setnframes(nframes)
414 self.setcomptype(comptype, compname)
416 def getparams(self):
417 return _sunau_params(self.getnchannels(), self.getsampwidth(),
418 self.getframerate(), self.getnframes(),
419 self.getcomptype(), self.getcompname())
421 def tell(self):
422 return self._nframeswritten
424 def writeframesraw(self, data):
427 self._ensure_header_written()
428 if self._comptype == 'ULAW':
432 data = audioop.lin2ulaw(data, self._sampwidth)
433 nframes = len(data) // self._framesize
434 self._file.write(data)
435 self._nframeswritten = self._nframeswritten + nframes
436 self._datawritten = self._datawritten + len(data)
438 def writeframes(self, data):
439 self.writeframesraw(data)
440 if self._nframeswritten != self._nframes or \
441 self._datalength != self._datawritten:
442 self._patchheader()
444 def close(self):
445 if self._file:
447 self._ensure_header_written()
448 if self._nframeswritten != self._nframes or \
449 self._datalength != self._datawritten:
450 self._patchheader()
451 self._file.flush()
453 file = self._file
454 self._file = None
455 if self._opened:
462 def _ensure_header_written(self):
463 if not self._nframeswritten:
464 if not self._nchannels:
466 if not self._sampwidth:
468 if not self._framerate:
470 self._write_header()
472 def _write_header(self):
473 if self._comptype == 'NONE':
474 if self._sampwidth == 1:
476 self._framesize = 1
477 elif self._sampwidth == 2:
479 self._framesize = 2
480 elif self._sampwidth == 3:
482 self._framesize = 3
483 elif self._sampwidth == 4:
485 self._framesize = 4
488 elif self._comptype == 'ULAW':
490 self._framesize = 1
493 self._framesize = self._framesize * self._nchannels
494 _write_u32(self._file, AUDIO_FILE_MAGIC)
495 header_size = 25 + len(self._info)
497 _write_u32(self._file, header_size)
498 if self._nframes == AUDIO_UNKNOWN_SIZE:
501 length = self._nframes * self._framesize
503 self._form_length_pos = self._file.tell()
505 self._form_length_pos = None
506 _write_u32(self._file, length)
507 self._datalength = length
508 _write_u32(self._file, encoding)
509 _write_u32(self._file, self._framerate)
510 _write_u32(self._file, self._nchannels)
511 self._file.write(self._info)
512 self._file.write(b'\0'*(header_size - len(self._info) - 24))
514 def _patchheader(self):
515 if self._form_length_pos is None:
517 self._file.seek(self._form_length_pos)
518 _write_u32(self._file, self._datawritten)
519 self._datalength = self._datawritten
520 self._file.seek(0, 2)