diff options
Diffstat (limited to 'mixer.c')
-rw-r--r-- | mixer.c | 23 |
1 files changed, 9 insertions, 14 deletions
@@ -25,11 +25,6 @@ #include "mixer.h" -char *mixer_device = NULL; -char *mixer_channel = NULL; -int soft_vol = 0; -float soft_vol_max = 110.0; - void mixer_getvolume(mixer_t *mixer, float *l, float *r) { *l = 0; @@ -38,16 +33,16 @@ void mixer_getvolume(mixer_t *mixer, float *l, float *r) return; ao_control_vol_t vol; - if (soft_vol || CONTROL_OK != ao_control(mixer->ao, AOCONTROL_GET_VOLUME, - &vol)) { + if (mixer->softvol || CONTROL_OK != ao_control(mixer->ao, + AOCONTROL_GET_VOLUME, &vol)) { float db_vals[AF_NCH]; if (!af_control_any_rev(mixer->afilter, AF_CONTROL_VOLUME_LEVEL | AF_CONTROL_GET, db_vals)) db_vals[0] = db_vals[1] = 1.0; else af_from_dB(2, db_vals, db_vals, 20.0, -200.0, 60.0); - vol.left = (db_vals[0] / (soft_vol_max / 100.0)) * 100.0; - vol.right = (db_vals[1] / (soft_vol_max / 100.0)) * 100.0; + vol.left = (db_vals[0] / (mixer->softvol_max / 100.0)) * 100.0; + vol.right = (db_vals[1] / (mixer->softvol_max / 100.0)) * 100.0; } *r = vol.right; *l = vol.left; @@ -62,15 +57,15 @@ void mixer_setvolume(mixer_t *mixer, float l, float r) ao_control_vol_t vol; vol.right = r; vol.left = l; - if (soft_vol || CONTROL_OK != ao_control(mixer->ao, AOCONTROL_SET_VOLUME, - &vol)) { + if (mixer->softvol || CONTROL_OK != ao_control(mixer->ao, + AOCONTROL_SET_VOLUME, &vol)) { // af_volume uses values in dB float db_vals[AF_NCH]; int i; - db_vals[0] = (l / 100.0) * (soft_vol_max / 100.0); - db_vals[1] = (r / 100.0) * (soft_vol_max / 100.0); + db_vals[0] = (l / 100.0) * (mixer->softvol_max / 100.0); + db_vals[1] = (r / 100.0) * (mixer->softvol_max / 100.0); for (i = 2; i < AF_NCH; i++) - db_vals[i] = ((l + r) / 100.0) * (soft_vol_max / 100.0) / 2.0; + db_vals[i] = ((l + r) / 100.0) * (mixer->softvol_max / 100.0) / 2.0; af_to_dB(AF_NCH, db_vals, db_vals, 20.0); if (!af_control_any_rev(mixer->afilter, AF_CONTROL_VOLUME_LEVEL | AF_CONTROL_SET, db_vals)) { |