Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / amd64 / lib / python2.4 / test / test_linuxaudiodev.py
CommitLineData
920dae64
AT
1from test import test_support
2test_support.requires('audio')
3
4from test.test_support import verbose, findfile, TestFailed, TestSkipped
5
6import errno
7import fcntl
8import linuxaudiodev
9import os
10import sys
11import select
12import sunaudio
13import time
14import audioop
15
16SND_FORMAT_MULAW_8 = 1
17
18def play_sound_file(path):
19 fp = open(path, 'r')
20 size, enc, rate, nchannels, extra = sunaudio.gethdr(fp)
21 data = fp.read()
22 fp.close()
23
24 if enc != SND_FORMAT_MULAW_8:
25 print "Expect .au file with 8-bit mu-law samples"
26 return
27
28 try:
29 a = linuxaudiodev.open('w')
30 except linuxaudiodev.error, msg:
31 if msg[0] in (errno.EACCES, errno.ENODEV, errno.EBUSY):
32 raise TestSkipped, msg
33 raise TestFailed, msg
34
35 # convert the data to 16-bit signed
36 data = audioop.ulaw2lin(data, 2)
37
38 # set the data format
39 if sys.byteorder == 'little':
40 fmt = linuxaudiodev.AFMT_S16_LE
41 else:
42 fmt = linuxaudiodev.AFMT_S16_BE
43
44 # at least check that these methods can be invoked
45 a.bufsize()
46 a.obufcount()
47 a.obuffree()
48 a.getptr()
49 a.fileno()
50
51 # set parameters based on .au file headers
52 a.setparameters(rate, 16, nchannels, fmt)
53 a.write(data)
54 a.flush()
55 a.close()
56
57def test_errors():
58 a = linuxaudiodev.open("w")
59 size = 8
60 fmt = linuxaudiodev.AFMT_U8
61 rate = 8000
62 nchannels = 1
63 try:
64 a.setparameters(-1, size, nchannels, fmt)
65 except ValueError, msg:
66 print msg
67 try:
68 a.setparameters(rate, -2, nchannels, fmt)
69 except ValueError, msg:
70 print msg
71 try:
72 a.setparameters(rate, size, 3, fmt)
73 except ValueError, msg:
74 print msg
75 try:
76 a.setparameters(rate, size, nchannels, 177)
77 except ValueError, msg:
78 print msg
79 try:
80 a.setparameters(rate, size, nchannels, linuxaudiodev.AFMT_U16_LE)
81 except ValueError, msg:
82 print msg
83 try:
84 a.setparameters(rate, 16, nchannels, fmt)
85 except ValueError, msg:
86 print msg
87
88def test():
89 play_sound_file(findfile('audiotest.au'))
90 test_errors()
91
92test()