Changeset 4740:f3abf82e2ead in roaraudio for libroar
- Timestamp:
- 01/31/11 02:21:19 (13 years ago)
- Branch:
- default
- Phase:
- public
- Location:
- libroar
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
libroar/ctl.c
r4708 r4740 228 228 229 229 int roar_set_vol (struct roar_connection * con, int id, struct roar_mixer_settings * mixer, int channels) { 230 return roar_set_vol2(con, id, mixer, channels, ROAR_SET_VOL_ALL); 231 } 232 233 int roar_set_vol2 (struct roar_connection * con, int id, struct roar_mixer_settings * mixer, int channels, int mode) { 230 234 struct roar_message m; 231 235 uint16_t * info = (uint16_t *) m.data; … … 239 243 info[0] = ROAR_HOST2NET16(1); 240 244 info[1] = ROAR_HOST2NET16(mixer->scale); 241 info[2] = ROAR_HOST2NET16( ROAR_SET_VOL_ALL);245 info[2] = ROAR_HOST2NET16(mode); 242 246 243 247 for (i = 0; i < channels; i++) -
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.