Subject: Re: auich and mpg123 (was Re: uaudio success)
To: enami tsugutomo <enami@but-b.or.jp>
From: Mihai Chelaru <mihai@romtelenet.org>
List: current-users
Date: 01/12/2002 21:17:34
Yes, thanks all. It works now. I compiled the new kernel and it worked.

Thanks,
Mihai

enami tsugutomo wrote:

> > bash-2.04# ls -l audio
> > lrwx------  1 root  wheel  6 Aug 19 00:32 audio -> audio0
> > bash-2.04# rm audio
> > bash-2.04# ln -s sound0 audio
> > bash-2.04# audioctl -w play=44100,2,16,slinear_le
> > audioctl: set failed: Invalid argument
>
> As someone noted, you can't set auich's sampling rate other than 48000
> (and default isn't).  So, the above audioctl failed.
>
> The reason that you need to use /dev/sound instead of /dev/audio is
> the latter trys to reset parameters to default value (8000 for
> sampling rate) on device open.
>
> Also, you need to set record sampling rate since MI open routine trys
> to set both play and record sampling rate even the device is opend
> only for write.
>
> Finally, there was a bug in auich.c rev. 1.5 or former that inhibits
> encoding query which mpg123 does.
>
> So, first make sure your kenrel have auich.c of rev. 1.6 (or, apply
> attached patch).  Then, do
>
> % audioctl -w play=48000,2,16,slinear_le
> % audioctl -w record=48000,2,16,slinear_le
> % mpg123 -a /dev/sound0 -r 48000 your-mp3-file.mp3
>
> enami.
>
> Index: auich.c
> ===================================================================
> RCS file: /cvsroot/syssrc/sys/dev/pci/auich.c,v
> retrieving revision 1.5
> retrieving revision 1.6
> diff -u -r1.5 -r1.6
> --- auich.c     2001/11/13 07:48:41     1.5
> +++ auich.c     2002/01/12 00:13:42     1.6
> @@ -467,14 +467,17 @@
>  int
>  auich_query_encoding(void *v, struct audio_encoding *aep)
>  {
> -       switch (aep->index) {
> +
>  #if 0 /* XXX Not until we emulate it. */
> +       switch (aep->index) {
>         case 0:
>                 strcpy(aep->name, AudioEulinear);
>                 aep->encoding = AUDIO_ENCODING_ULINEAR;
>                 aep->precision = 8;
>                 aep->flags = AUDIO_ENCODINGFLAG_EMULATED;
>                 return (0);
> +#else
> +       switch (aep->index + 1) {
>  #endif
>         case 1:
>                 strcpy(aep->name, AudioEmulaw);