python-2.5.2/win32/Lib/sunaudio.py
changeset 0 ae805ac0140d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/python-2.5.2/win32/Lib/sunaudio.py	Fri Apr 03 17:19:34 2009 +0100
@@ -0,0 +1,44 @@
+"""Interpret sun audio headers."""
+
+MAGIC = '.snd'
+
+class error(Exception):
+    pass
+
+
+def get_long_be(s):
+    """Convert a 4-char value to integer."""
+    return (ord(s[0])<<24) | (ord(s[1])<<16) | (ord(s[2])<<8) | ord(s[3])
+
+
+def gethdr(fp):
+    """Read a sound header from an open file."""
+    if fp.read(4) != MAGIC:
+        raise error, 'gethdr: bad magic word'
+    hdr_size = get_long_be(fp.read(4))
+    data_size = get_long_be(fp.read(4))
+    encoding = get_long_be(fp.read(4))
+    sample_rate = get_long_be(fp.read(4))
+    channels = get_long_be(fp.read(4))
+    excess = hdr_size - 24
+    if excess < 0:
+        raise error, 'gethdr: bad hdr_size'
+    if excess > 0:
+        info = fp.read(excess)
+    else:
+        info = ''
+    return (data_size, encoding, sample_rate, channels, info)
+
+
+def printhdr(file):
+    """Read and print the sound header of a named file."""
+    hdr = gethdr(open(file, 'r'))
+    data_size, encoding, sample_rate, channels, info = hdr
+    while info[-1:] == '\0':
+        info = info[:-1]
+    print 'File name:  ', file
+    print 'Data size:  ', data_size
+    print 'Encoding:   ', encoding
+    print 'Sample rate:', sample_rate
+    print 'Channels:   ', channels
+    print 'Info:       ', repr(info)