Установить громкость подключаемого модуля потока ALSA

Мне нужно иметь возможность установить громкость моего потока ALSA (snd_pcm_t из интерфейса PCM)

Я пишу публичные функции потока 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?

управление amixer -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'

person Cecylia    schedule 20.08.2014    source источник
comment
Знаете ли вы, на каком оборудовании вы работаете?   -  person CL.    schedule 20.08.2014
comment
захват с tvtuner (saa7134-alsa) и вывод на звуковую карту материнской платы   -  person Cecylia    schedule 21.08.2014
comment
Всегда ли это одна конкретная модель материнской платы?   -  person CL.    schedule 21.08.2014
comment
pdevice = default Например, я запускаю поток alsa с помощью: alsa_thread_startup(default, hw:1,0, 50, stderr, 1);   -  person Cecylia    schedule 21.08.2014
comment
Покажите вывод amixer controls.   -  person CL.    schedule 21.08.2014
comment
вставить в первый пост   -  person Cecylia    schedule 22.08.2014


Ответы (1)


Прямого соединения между устройством PCM и интерфейсом управления нет.

Наличие элемента управления, влияющего только на устройство PCM, зависит от аппаратного обеспечения. Если он существует, его часто называют «Громкость воспроизведения PCM». Найдите этот элемент управления по имени. (Обратите внимание, что на всех кодеках AC'97 и некоторых HDA этот регулятор влияет только на два фронтальных канала.)

person CL.    schedule 22.08.2014