3 read audio stream from audio file
22 self.
f =
file(filename)
23 ext = os.path.splitext(filename)[1].lower()
28 elif ext ==
'.flac':
pass
29 elif ext ==
'.ape':
pass
30 elif ext ==
'.wav':
pass
42 return self.
f.
read(len)
48 if len(buf) < 3
or self.
f.tell() > 50000:
56 tl = struct.unpack(
'4b', self.
f.
read(4))
57 taglen = (tl[0]<<21)|(tl[1]<<14)|(tl[2]<<7)|tl[3]
64 if len(buf) < 1
or self.
f.seek(0,1) > 1000000:
67 rbit = struct.unpack(
'B',self.
f.
read(1))[0] >> 5
77 if len(buf) < 27
or self.
f.tell() > 50000:
80 if buf[0:4] !=
'OggS':
83 numseg = struct.unpack(
'B', buf[26])[0]
86 segtbl = struct.unpack(
'%dB'%numseg, self.
f.
read(numseg))
90 if buf ==
"\x05vorbis":
94 self.
f.seek(seglen-7,1)
100 if len(buf) < 16
or self.
f.tell() > 50000:
102 guid = buf.encode(
"hex");
103 if guid ==
"3626b2758e66cf11a6d900aa0062ce6c":
109 objlen = struct.unpack(
'<Q', self.
f.
read(8))[0]
110 self.
f.seek(objlen-24,1)
113 if self.
f.
read(4) !=
'fLaC':
118 if len(buf) < 16
or self.
f.tell() > 50000:
121 metalen = buf[1] | (buf[2]<<8) | (buf[3]<<16);
122 self.
f.seek(metalen,1)