Mercurial > mplayer.hg
comparison libao2/ao_alsa.c @ 12811:d5f8efddac6c
volume calc fixes for mixer, by reimar dffinger, 10l reverse by me
author | joyping |
---|---|
date | Wed, 14 Jul 2004 00:48:26 +0000 |
parents | 0b154063a3ca |
children | e28849cfac27 |
comparison
equal
deleted
inserted
replaced
12810:f4711a685291 | 12811:d5f8efddac6c |
---|---|
150 snd_mixer_close(handle); | 150 snd_mixer_close(handle); |
151 return CONTROL_ERROR; | 151 return CONTROL_ERROR; |
152 } | 152 } |
153 | 153 |
154 snd_mixer_selem_get_playback_volume_range(elem,&pmin,&pmax); | 154 snd_mixer_selem_get_playback_volume_range(elem,&pmin,&pmax); |
155 f_multi = (100 / (float)pmax - pmin); | 155 f_multi = (100 / (float)(pmax - pmin)); |
156 | 156 |
157 if (cmd == AOCONTROL_SET_VOLUME) { | 157 if (cmd == AOCONTROL_SET_VOLUME) { |
158 | 158 |
159 set_vol = (vol->left + pmin) / f_multi + 0.5; | 159 set_vol = vol->left / f_multi + pmin + 0.5; |
160 | 160 |
161 //setting channels | 161 //setting channels |
162 if ((err = snd_mixer_selem_set_playback_volume(elem, 0, set_vol)) < 0) { | 162 if ((err = snd_mixer_selem_set_playback_volume(elem, 0, set_vol)) < 0) { |
163 mp_msg(MSGT_AO,MSGL_ERR,"alsa-control: error setting left channel, %s\n", | 163 mp_msg(MSGT_AO,MSGL_ERR,"alsa-control: error setting left channel, %s\n", |
164 snd_strerror(err)); | 164 snd_strerror(err)); |
165 return CONTROL_ERROR; | 165 return CONTROL_ERROR; |
166 } | 166 } |
167 mp_msg(MSGT_AO,MSGL_DBG2,"left=%li, ", set_vol); | 167 mp_msg(MSGT_AO,MSGL_DBG2,"left=%li, ", set_vol); |
168 | 168 |
169 set_vol = (vol->right + pmin) / f_multi + 0.5; | 169 set_vol = vol->right / f_multi + pmin + 0.5; |
170 | 170 |
171 if ((err = snd_mixer_selem_set_playback_volume(elem, 1, set_vol)) < 0) { | 171 if ((err = snd_mixer_selem_set_playback_volume(elem, 1, set_vol)) < 0) { |
172 mp_msg(MSGT_AO,MSGL_ERR,"alsa-control: error setting right channel, %s\n", | 172 mp_msg(MSGT_AO,MSGL_ERR,"alsa-control: error setting right channel, %s\n", |
173 snd_strerror(err)); | 173 snd_strerror(err)); |
174 return CONTROL_ERROR; | 174 return CONTROL_ERROR; |
176 mp_msg(MSGT_AO,MSGL_DBG2,"right=%li, pmin=%li, pmax=%li, mult=%f\n", | 176 mp_msg(MSGT_AO,MSGL_DBG2,"right=%li, pmin=%li, pmax=%li, mult=%f\n", |
177 set_vol, pmin, pmax, f_multi); | 177 set_vol, pmin, pmax, f_multi); |
178 } | 178 } |
179 else { | 179 else { |
180 snd_mixer_selem_get_playback_volume(elem, 0, &get_vol); | 180 snd_mixer_selem_get_playback_volume(elem, 0, &get_vol); |
181 vol->left = (get_vol * f_multi) - pmin; | 181 vol->left = (get_vol - pmin) * f_multi; |
182 snd_mixer_selem_get_playback_volume(elem, 1, &get_vol); | 182 snd_mixer_selem_get_playback_volume(elem, 1, &get_vol); |
183 vol->right = (get_vol * f_multi) - pmin; | 183 vol->right = (get_vol - pmin) * f_multi; |
184 | 184 |
185 mp_msg(MSGT_AO,MSGL_DBG2,"left=%f, right=%f\n",vol->left,vol->right); | 185 mp_msg(MSGT_AO,MSGL_DBG2,"left=%f, right=%f\n",vol->left,vol->right); |
186 } | 186 } |
187 snd_mixer_close(handle); | 187 snd_mixer_close(handle); |
188 return CONTROL_OK; | 188 return CONTROL_OK; |
1101 if (ret <= 0) { | 1101 if (ret <= 0) { |
1102 xrun("space"); | 1102 xrun("space"); |
1103 } | 1103 } |
1104 } | 1104 } |
1105 | 1105 |
1106 if (snd_pcm_status_get_state(status) == SND_PCM_STATE_RUNNING) | 1106 if (snd_pcm_status_get_state(status) != SND_PCM_STATE_RUNNING) |
1107 mp_msg(MSGT_AO,MSGL_V,"alsa-space: free space = %i, status=%i, %s --\n", ret, status, str_status); | 1107 mp_msg(MSGT_AO,MSGL_V,"alsa-space: free space = %i, status=%i, %s --\n", ret, status, str_status); |
1108 | 1108 |
1109 if (ret < 0) { | 1109 if (ret < 0) { |
1110 mp_msg(MSGT_AO,MSGL_ERR,"negative value!!\n"); | 1110 mp_msg(MSGT_AO,MSGL_ERR,"negative value!!\n"); |
1111 ret = 0; | 1111 ret = 0; |