I realize we are in softlock, but I am going to be quite dissapointed
if the general notion is that audio is broken in 4.2 when the problem
comes from this widely used audio daemon.

greke:/usr/ports$ grep esound INDEX | wc -l
     33
greke:/usr/ports$ 

-- 
[EMAIL PROTECTED]
SDF Public Access UNIX System - http://sdf.lonestar.org


On Thu, Aug 02, 2007 at 08:04:13PM +0000, Jacob Meuser wrote:
> On Thu, Jul 26, 2007 at 04:08:57AM +0200, Gareth wrote:
> > recently I updated my main desktop to -current (base and packages) from
> > -release (via snapshots) and I noticed problem with esound 0.2.38 (which I
> > need to use XMMS since my audio device is auich(4), only supporting 48khz
> > output) where it scratches and stutters a whole lot making most audio
> > unbearable.  I was wondering if anyone else has had similar problems? 
> > Also, esound 0.2.38 doesn't appear to read /etc/esd.conf any longer
> > (reading only ~/.esd.conf).  I managed in a fully-unsupported and hackish
> > way to get back to 0.2.34 and it works fine so it isn't the hardware or
> > (as I initially thought) the changes to the kernel audio code recently. 
> > I'm wondering if this is an esound problem (since they presumably don't
> > test too much on auich with bsd/sun audio over there) or an
> > openbsd-specific problem.   Open to suggestions to fix this in a better
> > way.
> 
> 
> this is at least the second report of problems with esound.
> 
> http://marc.info/?l=openbsd-ports&m=118405592003119&w=2
> 
> both these reports pretty much peg esound as the problem.
> 
> unfortunately, we have audio devices that only support 48kHz sampling
> rate, and such audio daemons are a necessary evil to be able to play
> CDs and the release songs correctly.
> 
> is this still a problem?  anyone else having problems?
> 
> I looked over esound, and the following patch is all I can see that
> could even remotely be a problem with the audio interface.
> 
> esound uses blocking writes.  none of the changes I have made to
> audio affect blocking writes.  if they did, almost every audio program
> would show symptoms.
> 
> -- 
> [EMAIL PROTECTED]
> SDF Public Access UNIX System - http://sdf.lonestar.org
> 
> 
> - open() never blocks
> - set the blocksize to the size of data chunks we will receive.
>   not necessary, but nicer.
> 
> 
> Index: Makefile
> ===================================================================
> RCS file: /home/cvs/OpenBSD/ports/audio/esound/Makefile,v
> retrieving revision 1.40
> diff -u -r1.40 Makefile
> --- Makefile  26 Jun 2007 17:10:29 -0000      1.40
> +++ Makefile  2 Aug 2007 19:42:08 -0000
> @@ -4,6 +4,7 @@
>  COMMENT=     "sound library for Enlightenment"
>  
>  DISTNAME=    esound-0.2.38
> +PKGNAME=     ${DISTNAME}p0
>  SHARED_LIBS +=       esd                  2.38     # .2.38
>  CATEGORIES=  audio
>  MASTER_SITES=        ${MASTER_SITE_GNOME:=sources/esound/0.2/}
> Index: files/audio_sun.c
> ===================================================================
> RCS file: /home/cvs/OpenBSD/ports/audio/esound/files/audio_sun.c,v
> retrieving revision 1.3
> diff -u -r1.3 audio_sun.c
> --- files/audio_sun.c 25 Jan 2004 22:07:28 -0000      1.3
> +++ files/audio_sun.c 2 Aug 2007 19:42:08 -0000
> @@ -63,8 +63,6 @@
>       info.mode = AUMODE_PLAY;
>      }
>  
> -    mode |= O_NONBLOCK;
> -
>      /* open the sound device */
>      device = esd_audio_device ? esd_audio_device : "/dev/audio";
>      if ((afd = open(device, mode, 0)) == -1) {
> @@ -72,10 +70,6 @@
>          return( -2 );
>      }
>  
> -    mode = fcntl(afd, F_GETFL);
> -    mode &= ~O_NONBLOCK;
> -    fcntl(afd, F_SETFL, mode);
> -
>      /* set the requested mode */
>      if(ioctl(afd, AUDIO_SETINFO, &info) < 0) {
>       sun_panic(afd, "AUDIO_SETINFO");
> @@ -132,6 +126,20 @@
>      if(ioctl(afd, AUDIO_SETINFO, &info) < 0 || 
>       fabs(info.play.sample_rate - esd_audio_rate) > esd_audio_rate * 0.05) {
>       fprintf(stderr, "Unsupported rate: %i Hz\n", esd_audio_rate);
> +     sun_panic(afd, "SETINFO");
> +     return(-1);
> +    }
> +
> +    /* OSS interface sets the blocksize to 256 bytes, but esound
> +     * actually uses 8192 byte blocks for 16-bit encodings and 4096
> +     * byte blocks for 8-bit encodings.
> +     */
> +    if (enc.precision == 16)
> +        info.blocksize = 8192;
> +    else
> +        info.blocksize = 4096;
> +    if(ioctl(afd, AUDIO_SETINFO, &info) == -1) {
> +     fprintf(stderr, "Unsupported blocksize: %d\n", info.blocksize);
>       sun_panic(afd, "SETINFO");
>       return(-1);
>      }
> 

Reply via email to