【问题标题】:Set volume of ALSA stream plug-in设置 ALSA 流插件的音量
【发布时间】:2014-10-13 18:49:19
【问题描述】:

我需要能够设置我的 ALSA 流的音量(来自 PCM 接口的 snd_pcm_t)

我写 ALSA 流公共函数:

int alsa_thread_startup(const char *pdevice, const char *cdevice, int latency,
                FILE *__error_fp,
                int verbose);

void alsa_thread_stop(void);

pdevice 是播放设备,cdevice 是捕获设备。

我发现 snd_pcm_t 和控制接口之间没有任何联系。我是否使用了错误的 API?

混音器控制-c0(主板):

numid=9,iface=MIXER,name='Master Mono Playback Switch'
numid=10,iface=MIXER,name='Master Mono Playback Volume'
numid=1,iface=MIXER,name='Master Playback Switch'
numid=2,iface=MIXER,name='Master Playback Volume'
numid=24,iface=MIXER,name='PCM Playback Switch'
numid=25,iface=MIXER,name='PCM Playback Volume'
numid=38,iface=MIXER,name='Surround Jack Mode'
numid=7,iface=MIXER,name='Surround Playback Switch'
numid=8,iface=MIXER,name='Surround Playback Volume'
numid=3,iface=MIXER,name='Center Playback Switch'
numid=4,iface=MIXER,name='Center Playback Volume'
numid=5,iface=MIXER,name='LFE Playback Switch'
numid=6,iface=MIXER,name='LFE Playback Volume'
numid=18,iface=MIXER,name='Line Playback Switch'
numid=19,iface=MIXER,name='Line Playback Volume'
numid=20,iface=MIXER,name='CD Playback Switch'
numid=21,iface=MIXER,name='CD Playback Volume'
numid=17,iface=MIXER,name='Mic Boost (+20dB)'
numid=37,iface=MIXER,name='Mic Front Input Switch'
numid=30,iface=MIXER,name='Mic Select'
numid=15,iface=MIXER,name='Mic Playback Switch'
numid=16,iface=MIXER,name='Mic Playback Volume'
numid=13,iface=MIXER,name='Phone Playback Switch'
numid=14,iface=MIXER,name='Phone Playback Volume'
numid=22,iface=MIXER,name='Aux Playback Switch'
numid=23,iface=MIXER,name='Aux Playback Volume'
numid=29,iface=MIXER,name='Mono Output Select'
numid=26,iface=MIXER,name='Capture Source'
numid=27,iface=MIXER,name='Capture Switch'
numid=28,iface=MIXER,name='Capture Volume'
numid=31,iface=MIXER,name='IEC958 Playback Con Mask'
numid=32,iface=MIXER,name='IEC958 Playback Pro Mask'
numid=35,iface=MIXER,name='IEC958 Playback AC97-SPSA'
numid=33,iface=MIXER,name='IEC958 Playback Default'
numid=41,iface=MIXER,name='IEC958 Playback Source'
numid=34,iface=MIXER,name='IEC958 Playback Switch'
numid=40,iface=MIXER,name='IEC958 Capture Switch'
numid=11,iface=MIXER,name='Beep Playback Switch'
numid=12,iface=MIXER,name='Beep Playback Volume'
numid=39,iface=MIXER,name='Channel Mode'
numid=36,iface=MIXER,name='Duplicate Front'
numid=42,iface=MIXER,name='External Amplifier'
numid=43,iface=PCM,name='Playback Channel Map'

混合器控制 -c1 (saa7134):

numid=2,iface=MIXER,name='Line Volume',index=1
numid=3,iface=MIXER,name='Line Volume',index=2
numid=5,iface=MIXER,name='Line Capture Switch',index=1
numid=6,iface=MIXER,name='Line Capture Switch',index=2
numid=1,iface=MIXER,name='Video Volume'
numid=4,iface=MIXER,name='Video Capture Switch'

【问题讨论】:

  • 你知道你在哪个硬件上运行吗?
  • 从tvtuner(saa7134-alsa)采集并输出到主板声卡
  • 总是一个特定的主板型号吗?
  • pdevice = "default" 例如我启动 alsa 线程: alsa_thread_startup("default", "hw:1,0", 50, stderr, 1);
  • 显示amixer controls的输出。

标签: c alsa


【解决方案1】:

PCM 设备和控制接口之间没有直接连接。

是否存在仅影响 PCM 设备的控件取决于硬件。 如果存在,则通常称为“PCM 播放音量”。按名称搜索此控件。 (请注意,在所有 AC'97 的任何一些 HDA 编解​​码器上,此控件仅影响两个前置通道。)

【讨论】:

    猜你喜欢
    • 2011-05-04
    • 2012-09-04
    • 2015-06-26
    • 2011-10-10
    • 2012-09-14
    • 2013-10-29
    • 2013-01-23
    • 2014-04-13
    • 2013-08-25
    相关资源
    最近更新 更多