我一直在寻找一个简单的C代码示例来设置ALSA混音器的主音量,但是对于这个所谓的常见操作却找不到任何简单的东西.
我对ALSA完全不熟悉,所以制作我自己的最小例子需要时间.如果有人能提供,我会很高兴.
我似乎无法在我的机器上以 dB 为单位设置音量。
我在 VirtualBox 中运行 Ubuntu 13.04 系统(用于开发)。
但是当我尝试使用此功能将其设置为 dB 时
snd_mixer_selem_set_playback_dB_all(元素,音量,0)
或使用该功能
snd_mixer_selem_set_playback_dB(elem, chn, volume, 0)
它总是失败并显示错误代码-22(无效参数)
在您提问之前:我已经尝试了多种要设置的音量级别(从 -20000 到 20000),并且我还将最后一个参数更改为三个定义的值 [-1, 0, 1]
这是我现在用于测试的完整代码:
#include <alsa/asoundlib.h>
#include <stdbool.h>
#include <stdlib.h>
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";
int x, mute_state;
long i;
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* …Run Code Online (Sandbox Code Playgroud)