1 from test
import test_support
2 test_support
.requires('audio')
4 from test
.test_support
import verbose
, findfile
, TestFailed
, TestSkipped
16 SND_FORMAT_MULAW_8
= 1
18 def read_sound_file(path
):
20 size
, enc
, rate
, nchannels
, extra
= sunaudio
.gethdr(fp
)
24 if enc
!= SND_FORMAT_MULAW_8
:
25 print "Expect .au file with 8-bit mu-law samples"
28 # Convert the data to 16-bit signed.
29 data
= audioop
.ulaw2lin(data
, 2)
30 return (data
, rate
, 16, nchannels
)
33 def play_sound_file(data
, rate
, ssize
, nchannels
):
35 a
= ossaudiodev
.open('w')
37 if msg
[0] in (errno
.EACCES
, errno
.ENODEV
, errno
.EBUSY
):
38 raise TestSkipped
, msg
42 if sys
.byteorder
== 'little':
43 fmt
= ossaudiodev
.AFMT_S16_LE
45 fmt
= ossaudiodev
.AFMT_S16_BE
47 # at least check that these methods can be invoked
54 # set parameters based on .au file headers
55 a
.setparameters(rate
, 16, nchannels
, fmt
)
61 a
= ossaudiodev
.open("w")
63 fmt
= ossaudiodev
.AFMT_U8
67 a
.setparameters(-1, size
, nchannels
, fmt
)
68 except ValueError, msg
:
71 a
.setparameters(rate
, -2, nchannels
, fmt
)
72 except ValueError, msg
:
75 a
.setparameters(rate
, size
, 3, fmt
)
76 except ValueError, msg
:
79 a
.setparameters(rate
, size
, nchannels
, 177)
80 except ValueError, msg
:
83 a
.setparameters(rate
, size
, nchannels
, ossaudiodev
.AFMT_U16_LE
)
84 except ValueError, msg
:
87 a
.setparameters(rate
, 16, nchannels
, fmt
)
88 except ValueError, msg
:
92 (data
, rate
, ssize
, nchannels
) = read_sound_file(findfile('audiotest.au'))
93 play_sound_file(data
, rate
, ssize
, nchannels
)