annotate Lib/sunaudio.py @ 4566:6403c94de50d legacy-trunk

Added safeguard against failure in __del__.
author Guido van Rossum <guido@python.org>
date Wed, 27 Nov 1996 19:39:58 +0000
parents f9481aa5e776
children 6f4146846337
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
103
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 # Module 'sunaudio' -- interpret sun audio headers
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3 MAGIC = '.snd'
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
4
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 error = 'sunaudio sound header conversion error'
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
6
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
7
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 # convert a 4-char value to integer
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
9
879
f9481aa5e776 Remove reference to obsolete module 'audio'
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
10 def get_long_be(s):
f9481aa5e776 Remove reference to obsolete module 'audio'
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
11 return (ord(s[0])<<24) | (ord(s[1])<<16) | (ord(s[2])<<8) | ord(s[3])
103
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
12
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
13
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 # read a sound header from an open file
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
15
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 def gethdr(fp):
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 if fp.read(4) <> MAGIC:
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 raise error, 'gethdr: bad magic word'
879
f9481aa5e776 Remove reference to obsolete module 'audio'
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
19 hdr_size = get_long_be(fp.read(4))
f9481aa5e776 Remove reference to obsolete module 'audio'
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
20 data_size = get_long_be(fp.read(4))
f9481aa5e776 Remove reference to obsolete module 'audio'
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
21 encoding = get_long_be(fp.read(4))
f9481aa5e776 Remove reference to obsolete module 'audio'
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
22 sample_rate = get_long_be(fp.read(4))
f9481aa5e776 Remove reference to obsolete module 'audio'
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
23 channels = get_long_be(fp.read(4))
103
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 excess = hdr_size - 24
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 if excess < 0:
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 raise error, 'gethdr: bad hdr_size'
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 if excess > 0:
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 info = fp.read(excess)
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 else:
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 info = ''
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 return (data_size, encoding, sample_rate, channels, info)
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
32
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 # read and print the sound header of a named file
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
35
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
36 def printhdr(file):
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 hdr = gethdr(open(file, 'r'))
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 data_size, encoding, sample_rate, channels, info = hdr
559
683edb0c4463 New == syntax
Guido van Rossum <guido@python.org>
parents: 103
diff changeset
39 while info[-1:] == '\0':
103
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 info = info[:-1]
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 print 'File name: ', file
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 print 'Data size: ', data_size
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 print 'Encoding: ', encoding
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 print 'Sample rate:', sample_rate
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 print 'Channels: ', channels
1229ba124e0b Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 print 'Info: ', `info`