Port-arm archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

audio can't set params??



I have a program which, among other things, plays audio.  Works fine on
i386 (both 3.1 and my old 1.4T).  But when I tried to run it on my
shark (also 3.1), I had trouble.

First time I run it after boot, it starts up fine.  But if I exit and
then restart, it fails when trying to open /dev/sound; the open call
shows EINVAL.  Adding debugging printfs to the kernel, I find that the
call to hw->set_params inside autiosetinfo() is failing.  Resetting the
audio playback state with "sh -c '< /dev/audio'" (/dev/audio being the
reset-on-open device) brings it back into a state where it can open
/dev/sound.

It seems to me there's surely something broken if it can set a
particular state with AUDIO_SETINFO while the device is open, but it
can't set the same state on open.

In case it matters, here's a diff between audioctl -a output in the
before ("working") and after ("broken") states.

8,9c8,9
< blocksize=800
< hiwat=81
---
> blocksize=8816
> hiwat=7
13,16c13,16
< play.rate=8000
< play.channels=1
< play.precision=8
< play.encoding=mulaw
---
> play.rate=44100
> play.channels=2
> play.precision=16
> play.encoding=slinear_be

Any ideas what's wrong, and what to do about it?  (I'm going to try
making the program open /dev/audio instead, since it sets its own state
anyway and thus doesn't care whether state is reset on open.  But that
feels to me like a workaround, not a fix.)

/~\ The ASCII                             Mouse
\ / Ribbon Campaign
 X  Against HTML                mouse%rodents-montreal.org@localhost
/ \ Email!           7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B


Home | Main Index | Thread Index | Old Index