从C code将ALSA主音量 [英] Set ALSA master volume from C code

查看:2175
本文介绍了从C code将ALSA主音量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在寻找一个简单的C code例如设置ALSA混音的主音量,但无法找到任何简单的为这个所谓常见的操作。

I've been looking for a simple C code example to set the master volume of the ALSA mixer but could not find anything simple for this supposedly common operation.

我和ALSA人生地不熟,所以使我自己的小例子,需要时间。我会很高兴,如果有人可以提供一个。

I'm totally unfamiliar with ALSA, so making my own minimal example will take time. I would be happy if anyone could provide one.

推荐答案

我下面的作品。参数体积是在范围[0,100]来进行说明。当心,有没有错误处理!

The following works for me. The parameter volume is to be given in the range [0, 100]. Beware, there is no error handling!

void SetAlsaMasterVolume(long volume)
{
    long min, max;
    snd_mixer_t *handle;
    snd_mixer_selem_id_t *sid;
    const char *card = "default";
    const char *selem_name = "Master";

    snd_mixer_open(&handle, 0);
    snd_mixer_attach(handle, card);
    snd_mixer_selem_register(handle, NULL, NULL);
    snd_mixer_load(handle);

    snd_mixer_selem_id_alloca(&sid);
    snd_mixer_selem_id_set_index(sid, 0);
    snd_mixer_selem_id_set_name(sid, selem_name);
    snd_mixer_elem_t* elem = snd_mixer_find_selem(handle, sid);

    snd_mixer_selem_get_playback_volume_range(elem, &min, &max);
    snd_mixer_selem_set_playback_volume_all(elem, volume * max / 100);

    snd_mixer_close(handle);
}

这篇关于从C code将ALSA主音量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆