From 458120dd40db6b4df55a4e96b650e16798ef06a0 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Tue, 3 May 2011 11:25:13 +0000 Subject: add hg and python --- sys/lib/python/sunaudio.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 sys/lib/python/sunaudio.py (limited to 'sys/lib/python/sunaudio.py') diff --git a/sys/lib/python/sunaudio.py b/sys/lib/python/sunaudio.py new file mode 100644 index 000000000..3b0ee2793 --- /dev/null +++ b/sys/lib/python/sunaudio.py @@ -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) -- cgit v1.2.3