Ignore:
Timestamp:
Mar 19, 2014, 11:11:30 AM (11 years ago)
Author:
dmik
Message:

python: Update vendor to 2.7.6.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • python/vendor/current/Lib/sunau.py

    r2 r388  
    204204        else:
    205205            self._info = ''
     206        try:
     207            self._data_pos = file.tell()
     208        except (AttributeError, IOError):
     209            self._data_pos = None
    206210
    207211    def getfp(self):
     
    256260                data = self._file.read()
    257261            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
    259264            if self._encoding == AUDIO_FILE_ENCODING_MULAW_8:
    260265                import audioop
     
    264269
    265270    def rewind(self):
     271        if self._data_pos is None:
     272            raise IOError('cannot seek')
     273        self._file.seek(self._data_pos)
    266274        self._soundpos = 0
    267         self._file.seek(self._hdr_size)
    268275
    269276    def tell(self):
     
    273280        if pos < 0 or pos > self.getnframes():
    274281            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)
    276285        self._soundpos = pos
    277286
     
    365374            return 'not compressed'
    366375
    367     def setparams(self, (nchannels, sampwidth, framerate, nframes, comptype, compname)):
     376    def setparams(self, params):
     377        nchannels, sampwidth, framerate, nframes, comptype, compname = params
    368378        self.setnchannels(nchannels)
    369379        self.setsampwidth(sampwidth)
     
    382392    def writeframesraw(self, data):
    383393        self._ensure_header_written()
    384         nframes = len(data) / self._framesize
    385394        if self._comptype == 'ULAW':
    386395            import audioop
    387396            data = audioop.lin2ulaw(data, self._sampwidth)
     397        nframes = len(data) // self._framesize
    388398        self._file.write(data)
    389399        self._nframeswritten = self._nframeswritten + nframes
     
    397407
    398408    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
    405418
    406419    #
     
    445458        else:
    446459            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
    447464        _write_u32(self._file, length)
    448465        self._datalength = length
     
    454471
    455472    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)
    457476        _write_u32(self._file, self._datawritten)
    458477        self._datalength = self._datawritten
Note: See TracChangeset for help on using the changeset viewer.