diff options
Diffstat (limited to 'libao2/ao_alsa.c')
-rw-r--r-- | libao2/ao_alsa.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/libao2/ao_alsa.c b/libao2/ao_alsa.c index 987713e6f9..cd7b862728 100644 --- a/libao2/ao_alsa.c +++ b/libao2/ao_alsa.c @@ -192,7 +192,7 @@ static int control(int cmd, void *arg) set_vol = vol->left / f_multi + pmin + 0.5; //setting channels - if ((err = snd_mixer_selem_set_playback_volume(elem, 0, set_vol)) < 0) { + if ((err = snd_mixer_selem_set_playback_volume(elem, SND_MIXER_SCHN_FRONT_LEFT, set_vol)) < 0) { mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_ErrorSettingLeftChannel, snd_strerror(err)); return CONTROL_ERROR; @@ -201,7 +201,7 @@ static int control(int cmd, void *arg) set_vol = vol->right / f_multi + pmin + 0.5; - if ((err = snd_mixer_selem_set_playback_volume(elem, 1, set_vol)) < 0) { + if ((err = snd_mixer_selem_set_playback_volume(elem, SND_MIXER_SCHN_FRONT_RIGHT, set_vol)) < 0) { mp_msg(MSGT_AO,MSGL_ERR,MSGTR_AO_ALSA_ErrorSettingRightChannel, snd_strerror(err)); return CONTROL_ERROR; @@ -221,9 +221,9 @@ static int control(int cmd, void *arg) } } else { - snd_mixer_selem_get_playback_volume(elem, 0, &get_vol); + snd_mixer_selem_get_playback_volume(elem, SND_MIXER_SCHN_FRONT_LEFT, &get_vol); vol->left = (get_vol - pmin) * f_multi; - snd_mixer_selem_get_playback_volume(elem, 1, &get_vol); + snd_mixer_selem_get_playback_volume(elem, SND_MIXER_SCHN_FRONT_RIGHT, &get_vol); vol->right = (get_vol - pmin) * f_multi; mp_msg(MSGT_AO,MSGL_DBG2,"left=%f, right=%f\n",vol->left,vol->right); @@ -707,7 +707,7 @@ static int init(int rate_hz, int channels, int format, int flags) /* end setting sw-params */ mp_msg(MSGT_AO,MSGL_V,"alsa: %d Hz/%d channels/%d bpf/%d bytes buffer/%s\n", - ao_data.samplerate, ao_data.channels, bytes_per_sample, ao_data.buffersize, + ao_data.samplerate, ao_data.channels, (int)bytes_per_sample, ao_data.buffersize, snd_pcm_format_description(alsa_format)); } // end switch alsa_handler (spdif) @@ -765,6 +765,10 @@ static void audio_resume(void) { int err; + if (snd_pcm_state(alsa_handler) == SND_PCM_STATE_SUSPENDED) { + mp_msg(MSGT_AO,MSGL_INFO,MSGTR_AO_ALSA_PcmInSuspendModeTryingResume); + while ((err = snd_pcm_resume(alsa_handler)) == -EAGAIN) sleep(1); + } if (alsa_can_pause) { if ((err = snd_pcm_pause(alsa_handler, 0)) < 0) { |