Changeset 1925 for branches

Show
Ignore:
Timestamp:
24/10/06 18:17:34 (2 years ago)
Author:
duncan
Message:

[ 1568261 ] MP3 header search slow as hell
Patch applied

Location:
branches/mmpython-0-4/mmpython/audio/eyeD3
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • branches/mmpython-0-4/mmpython/audio/eyeD3/mp3.py

    r323 r1925  
    123123      return 1; 
    124124 
     125   def find(self, buffer): 
     126      idx = buffer.find("\xff") 
     127      while idx != -1: 
     128         candidate = buffer[idx:idx+4] 
     129         if len(candidate) < 4: 
     130            return None 
     131 
     132         header = bin2dec(bytes2bin(candidate)) 
     133         if self.isValid(header): 
     134            return header 
     135 
     136         idx = buffer.find("\xff", idx + 1) 
     137 
    125138   # This may throw an Mp3Exception if the header is malformed. 
    126139   def decode(self, header): 
  • branches/mmpython-0-4/mmpython/audio/eyeD3/tag.py

    r323 r1925  
    13211321         raise InvalidAudioFormatException("Unable to find a valid mp3 "\ 
    13221322                                           "frame"); 
    1323       frameHead = bin2dec(bytes2bin(bString)); 
    13241323      header = eyeD3_mp3.Header(); 
     1324      frameHead = header.find(bString) 
    13251325      # Keep reading until we find a valid mp3 frame header. 
    1326       while not header.isValid(frameHead): 
    1327          frameHead <<= 8; 
    1328          bString = f.read(1); 
    1329          if len(bString) != 1: 
     1326      while not frameHead: 
     1327         bString = bString[-3:] + f.read(4096); 
     1328         if len(bString) <= 3: 
    13301329            raise InvalidAudioFormatException("Unable to find a valid mp3 "\ 
    13311330                                              "frame"); 
    1332          frameHead |= ord(bString[0]); 
     1331         frameHead = header.find(bString) 
    13331332      TRACE_MSG("mp3 header %x found at position: %d (0x%x)" % \ 
    13341333                (frameHead, f.tell() - 4, f.tell() - 4));