Date: Fri, 29 Jul 2011 01:00:19 GMT From: Test Rat <ttsestt@gmail.com> To: freebsd-multimedia@FreeBSD.org Subject: Re: kern/156433: [sound] [patch] OSS4/VPC is broken on 64-bit platforms Message-ID: <201107290100.p6T10JX4014921@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/156433; it has been noted by GNATS. From: Test Rat <ttsestt@gmail.com> To: bug-followup@FreeBSD.org Cc: Subject: Re: kern/156433: [sound] [patch] OSS4/VPC is broken on 64-bit platforms Date: Fri, 29 Jul 2011 04:25:37 +0400 --=-=-= Content-Type: text/plain Any chance the fix will be committed before 9.0-RELEASE? The ioctl is used by more apps than just mplayer2, see http://google.com/codesearch?q=SNDCTL_DSP_SETPLAYVOL (gst-plugins-good, wine, xmms2, moc, qmmp, etc) I've tried to change volume with attached test program but it stays the same. This is also reflected in /dev/sndstat, try http://people.freebsd.org/~ariff/utils/appsmixer --=-=-= Content-Type: text/plain Content-Disposition: attachment; filename=test_vol.c #include <sys/ioctl.h> #include <sys/soundcard.h> #include <err.h> #include <errno.h> #include <fcntl.h> #include <stdio.h> #include <termios.h> #include <unistd.h> int audio_fd; int lvol, rvol; void setplayvol(void) { int mask = lvol | rvol << 8; if(ioctl(audio_fd, SNDCTL_DSP_SETPLAYVOL, &mask) < 0) err(errno, "SNDCTL_DSP_SETPLAYVOL failed"); } void getplayvol(void) { int mask; if(ioctl(audio_fd, SNDCTL_DSP_GETPLAYVOL, &mask) < 0) err(errno, "SNDCTL_DSP_GETPLAYVOL failed"); lvol = mask & 0x00ff; rvol = (mask & 0xff00) >> 8; printf("\rvol is %d:%d ", lvol, rvol); } int main(void) { char ch, buf[] = "noise"; struct termios t; if((audio_fd = open("/dev/dsp", O_WRONLY, 0)) < 0) err(errno, "open failed"); printf("hit ^C to abort\n"); getplayvol(); tcgetattr(0, &t); t.c_lflag &= ~(ECHO|ICANON); tcsetattr(0, TCSANOW, &t); while ((ch = getchar()) != EOF) { switch(ch) { case '+': if(lvol < 100 && rvol < 100) { lvol++; rvol++; } break; case '-': if(lvol > 0 && rvol > 0) { lvol--; rvol--; } break; case 'L': case 'l': if(lvol < 100) lvol++; break; case 'R': case 'r': if(rvol < 100) rvol++; break; case '\014': /* ^L */ if(lvol > 0) lvol--; break; case '\022': /* ^R */ if(rvol > 0) rvol--; break; case '\007': /* ^G */ close(audio_fd); if((audio_fd = open("/dev/dsp", O_WRONLY, 0)) < 0) err(errno, "open failed"); getplayvol(); continue; default: /* any other key produces noise */ write(audio_fd, buf, sizeof(buf)); continue; } setplayvol(); getplayvol(); } close(audio_fd); return 0; } --=-=-=--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201107290100.p6T10JX4014921>