Changeset 4740:f3abf82e2ead in roaraudio for libroar/vs.c
- Timestamp:
- 01/31/11 02:21:19 (13 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libroar/vs.c
r4719 r4740 829 829 int oldchannels; 830 830 int handled; 831 int mode = ROAR_SET_VOL_ALL; 831 832 832 833 _ckvss(-1); … … 864 865 mixer.scale = 65535; 865 866 866 if ( channels != oldchannels ) { 867 handled = 0; 868 switch (oldchannels) { 869 case 1: 870 if ( channels == 2 ) { 871 mixer.mixer[0] = (mixer.mixer[0] + mixer.mixer[1]) / 2; 872 handled = 1; 873 } 874 break; 875 case 2: 876 if ( channels == 1 ) { 877 mixer.mixer[1] = mixer.mixer[0]; 878 handled = 1; 879 } 880 break; 881 case 4: 882 if ( channels == 1 ) { 883 mixer.mixer[1] = mixer.mixer[0]; 884 mixer.mixer[2] = mixer.mixer[0]; 885 mixer.mixer[3] = mixer.mixer[0]; 886 handled = 1; 887 } else if ( channels == 2 ) { 888 mixer.mixer[2] = mixer.mixer[0]; 889 mixer.mixer[3] = mixer.mixer[1]; 890 handled = 1; 891 } 892 break; 893 } 894 if ( handled ) { 895 channels = oldchannels; 896 } else { 897 _seterr(ROAR_ERROR_INVAL); 898 return -1; 899 } 900 } 901 902 if ( roar_set_vol(vss->con, roar_stream_get_id(&(vss->stream)), &mixer, channels) == -1 ) { 867 if ( channels != oldchannels ) 868 mode = ROAR_SET_VOL_UNMAPPED; 869 870 if ( roar_set_vol2(vss->con, roar_stream_get_id(&(vss->stream)), &mixer, channels, mode) == 0 ) 871 return 0; 872 873 if ( mode == ROAR_SET_VOL_ALL ) { 874 _seterrre(); 875 return -1; 876 } 877 878 if ( roar_conv_volume(&mixer, &mixer, oldchannels, channels) == -1 ) { 879 _seterrre(); 880 return -1; 881 } 882 883 channels = oldchannels; 884 mode = ROAR_SET_VOL_ALL; 885 886 if ( roar_set_vol2(vss->con, roar_stream_get_id(&(vss->stream)), &mixer, channels, mode) == -1 ) { 903 887 _seterrre(); 904 888 return -1;
Note: See TracChangeset
for help on using the changeset viewer.