annotate mixer.c @ 556:3d1e8b618594

using /dev/mixer as default
author arpi_esp
date Sat, 21 Apr 2001 00:15:19 +0000
parents 5cc44d8c20f2
children abd7391a31e3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
441
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
1
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
2 #include <string.h>
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
3 #include <sys/ioctl.h>
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
4 #include <sys/soundcard.h>
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
5 #include <fcntl.h>
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
6 #include <stdio.h>
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
7
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
8 #include "mixer.h"
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
9
556
3d1e8b618594 using /dev/mixer as default
arpi_esp
parents: 512
diff changeset
10 char * mixer_device="/dev/mixer";
441
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
11 int mixer_usemaster=0;
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
12
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
13 void mixer_getvolume( int *l,int *r )
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
14 {
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
15 int fd,v,cmd,devs;
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
16
512
5cc44d8c20f2 some code cleanup
pontscho
parents: 461
diff changeset
17 fd=open( mixer_device,O_RDONLY );
441
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
18 if ( fd != -1 )
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
19 {
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
20 ioctl( fd,SOUND_MIXER_READ_DEVMASK,&devs );
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
21 if ( ( devs & SOUND_MASK_PCM ) && ( mixer_usemaster==0 ) ) cmd=SOUND_MIXER_READ_PCM;
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
22 else
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
23 if ( ( devs & SOUND_MASK_VOLUME ) && ( mixer_usemaster==1 ) ) cmd=SOUND_MIXER_READ_VOLUME;
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
24 else
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
25 {
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
26 close( fd );
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
27 return;
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
28 }
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
29 ioctl( fd,cmd,&v );
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
30 *r=( v & 0xFF00 ) >> 8;
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
31 *l=( v & 0x00FF );
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
32 close( fd );
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
33 }
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
34 }
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
35
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
36 void mixer_setvolume( int l,int r )
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
37 {
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
38 int fd,v,cmd,devs;
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
39
512
5cc44d8c20f2 some code cleanup
pontscho
parents: 461
diff changeset
40 fd=open( mixer_device,O_RDONLY );
441
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
41 if ( fd != -1 )
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
42 {
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
43 ioctl( fd,SOUND_MIXER_READ_DEVMASK,&devs );
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
44 if ( ( devs & SOUND_MASK_PCM ) && ( mixer_usemaster==0 ) ) cmd=SOUND_MIXER_WRITE_PCM;
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
45 else
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
46 if ( ( devs & SOUND_MASK_VOLUME ) && ( mixer_usemaster==1 ) ) cmd=SOUND_MIXER_WRITE_VOLUME;
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
47 else
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
48 {
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
49 close( fd );
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
50 return;
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
51 }
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
52 v=( r << 8 ) | l;
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
53 ioctl( fd,cmd,&v );
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
54 close( fd );
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
55 }
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
56 }
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
57
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
58 int mixer_l=0; int mixer_r=0;
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
59
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
60 void mixer_incvolume( void )
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
61 {
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
62 mixer_getvolume( &mixer_l,&mixer_r );
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
63 if ( mixer_l < 100 ) mixer_l++;
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
64 if ( mixer_r < 100 ) mixer_r++;
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
65 mixer_setvolume( mixer_l,mixer_r );
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
66 }
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
67
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
68 void mixer_decvolume( void )
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
69 {
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
70 mixer_getvolume( &mixer_l,&mixer_r );
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
71 if ( mixer_l > 0 ) mixer_l--;
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
72 if ( mixer_r > 0 ) mixer_r--;
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
73 mixer_setvolume( mixer_l,mixer_r );
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
74 }
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
75
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
76 int mixer_getbothvolume( void )
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
77 {
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
78 mixer_getvolume( &mixer_l,&mixer_r );
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
79 return ( mixer_l + mixer_r ) / 2;
c4b4e2aac9de ups, I missed'em..
gabucino
parents:
diff changeset
80 }