LINUX.ORG.RU

[gentoo] alsa перехватывает звук

 


0

0

Все сделал чтобы это предотвратить. Поставил pulseaudio, настроил в asoundrc:

pcm.pulse { type pulse } ctl.pulse { type pulse } pcm.!default { type pulse }

ctl.!default { type pulse }

mplayer и amarok работают одновременно, а вот игры, вайн, скайп любят друг друга и плееры перехватывать. Уже не знаю, что и делать, ибо перезапускать каждый раз приложения не гуд.

Стоит USE-флаг -oss. В вайне включен pulseaudio в настройках, но вход на вкладку настройки звука тут же все плееры вырубает.

★★★★★

Последнее исправление: vurdalak (всего исправлений: 2)

Ответ на: комментарий от megabaks

>чем альса не угодила?

Именно отсутствием микширования. Не все карты могут поддерживать одновременный вывод разных приложений. из-за этого и нужен пульс.

vurdalak ★★★★★
() автор топика

Решение этой проблемы напрямую зависит от способа, которым игры и прочие плохо себя ведущие программы перехватывают звук. Чтобы выяснить, что именно происходит, прошу выполнить такую команду:

strace -f -e open badgame 2>&1 | grep /dev

и то же самое для winecfg (а потом перейти на вкладку Аудио и проверить звук)

AEP ★★★★★
()
Ответ на: комментарий от vurdalak

> Не все карты могут поддерживать одновременный вывод разных приложений.

Где вы такие карты берете?

devl547 ★★★★★
()
Ответ на: комментарий от devl547

>Где вы такие карты берете?

Intel HD Audio

strace -f -e open badgame 2>&1 | grep /dev

И что дальше? Команда выполнилась, но ничего не запустилось

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от vurdalak

> Именно отсутствием микширования. Не все карты могут поддерживать одновременный вывод разных приложений. из-за этого и нужен пульс.

Неверно, с микшированием успешно справляется и dmix. Пульс может быть нужен для следующих целей:

* Энергосбережение * Передача звука по сети * Перенос звуковых потоков между устройствами через GUI * Независимая регулировка громкости приложений * Микширование звука 5.1 * Дублирование стереозвука на передние и задние колонки

Если ничего из списка выше не нужно - от pulseaudio только проблемы. Последние два пункта реализуются и на уровне обычных плугинов ALSA, но при этом получается длинный .asoundrc.

И кстати наиболее вероятная причина Вашей проблемы - не установлен пакет alsa-plugins.

AEP ★★★★★
()
Ответ на: комментарий от AEP

>И кстати наиболее вероятная причина Вашей проблемы - не установлен пакет alsa-plugins.

Установлен.

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от vurdalak

HDA.. не знаю, 3 ноута - ни разу проблем не было ни с чем.

devl547 ★★★★★
()
Ответ на: комментарий от megabaks

> дык для HDA звука есть 2 параметра в ядре для этого - зачем этот кривой велик-то?

Эти параметры работают, когда звук не выводится. PulseAudio экономит энергию по сравнению с dmix, когда звук используется.

PulseAudio, по замыслу, потребляет энергии меньше, чем dmix, поскольку у dmix постоянный маленький размер буфера, а у PulseAudio - переменный. Поэтому, если приложению годится большой буфер, процессор реже просыпается для его наполнения.

http://pastebin.com/WEHJnUXk - вот вывод плохой игры, которая только что перехватила звук.

Спасибо. Видно, что игра использует alsa, а не oss. Соответственно, вопросы будут такими:

1) amd64 или x86?

2) aplay -vv -f cd /dev/zero (расшифровка: играть тишину с качеством CD Audio через устройство по умолчанию) тоже съедает звук? Если да - вывод в студию.

AEP ★★★★★
()
Ответ на: комментарий от vurdalak

Вроде все правильно. nexuiz собран через emerge или откуда-то взят левый бинарник?

И еще покажи USE-флаги для SDL: emerge -pv libsdl

AEP ★★★★★
()
Ответ на: комментарий от AEP

USE=«X alsa audio joystick opengl pulseaudio video -aalib -custom-cflags -dga -directfb -esd -fbcon -ggi -libcaca -nas -oss (-svga) -tslib -xinerama -xv»

Nexuiz собран emerge'ем. Тем более что он не единственный. Вайн с версии 1.1.44, которая только недавно стала стабильной, тоже так делал. Еще изначально убивал звук kopete, но сейчас перестал (не знаю почему). В настройках кде я сменил xine на gstreamer, если это важно.

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от AEP

>Оно, кстати, умеет показывать USE-флаги, которые не используются?
для этого есть
equery u пакет
все флаги с описаниями

megabaks ★★★★
()
Ответ на: комментарий от vurdalak

Вот оно, кажется, и попалось. У тебя, похоже, не настроен автозапуск pulseaudio в начале сессии.

Вот такой тест поможет это понять:

в одной консоли:

pulseaudio -k

pulseaudio -v

(вывод в pastebin)

Пока оно висит, в другой консоли:

export SDL_AUDIODRIVER=pulse

strace -f -e open nexuiz 2>&1 | grep /dev

и вывод тоже в pastebin

AEP ★★★★★
()
Ответ на: комментарий от vurdalak

> Что-то pulseaudio не хочет убиваться кажется.

Живучий :) Так и должно быть - т.е. автозапуск работает, а я не угадал причину захвата звука.

А насчет strace nexuiz - ничего не понимаю :( Он точно не подхватывает какой-нибудь левый libSDL? ldd /usr/bin/nexuiz

Ну и на всякий случай для сравнения посмотрим на aplay:

aplay -vv -f cd /dev/zero # вывод в студию, даже если он не перехватывает звук

strace -f -e open aplay -vv -f cd /dev/zero 2>&1 | grep /dev

AEP ★★★★★
()

> вход на вкладку настройки звука тут же все плееры вырубает

Оопс. Я, кажется, неправильно понял жалобу. Верно ли следующее?

1) запускаем музыку в mplayer -ao pulse

2) пока она играет, запускаем winecfg, переходим на вкладку «Аудио»

3) в результате звук пропадает, что в выводе mplayer?

4) что происходит, если после этого закрыть winecfg?

AEP ★★★★★
()
Ответ на: комментарий от AEP

Пробовал на nexuiz, а не winecfg. Ибо вайн уже не убивает. При убийстве звука mplayer продолжает играть как ни в чем не бывало, в padevchooser микшер пульса показывает нормальное воспроизведение. После закрытия игры ничего не меняется. Даже при рестрте плеера, звука все равно нет. Обычно звук появляется через пару минут после исчезновения. Вот сейчас после 5-го по счету перезапуска mpleer'а он появился.

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от AEP

>Попробуй пересобрать nexuiz с USE-флагом sdl

Собираю мир с этим флагом. Когда соберу, проверю еще раз.

vurdalak ★★★★★
() автор топика

С какими приложениями косяки? У меня пульс прекрасно одновременно работает и со скайпом, и играми (nexuiz, etc), и мплеером. Бывают косяки с флешем (звук везде заедает/пропадает), надо иногда прибивать браузер, но я не обновлялся давно.

tensai_cirno ★★★★★
()
Ответ на: комментарий от vurdalak

Ничего не понял. Еще раз и по пунктам, начиная с момента, когда ничего не запущено. Что в каком порядке запускаем, что при этом играет (например, «запускаем mplayer, затем запускаем nexuiz пока mplayer играет»), что получается в результате, что ожидаем.

AEP ★★★★★
()
Ответ на: комментарий от tensai_cirno

>С какими приложениями косяки?

Сейчас - только игры. Изначально был еще kopete и wine, но потом перестали.

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от AEP

1. Запускаю mplayer. Играет. Не выключаю его.

2. Запускаю nexuiz. Mplayer перестает играть, nexuiz начинает издавать игровые звуки.

3. Выхожу из nexuiz.

4. Смотрю на mplayer. Он выглядит так, будто играл все это время и играет, не переставая.

5. Запускаю padevchooser - микшер pulseaudio. Он показывает скачущие уровни звука, исходящего из mplayer. Значит с его точки зрения, музыка все еще играет.

6. Пробую перезапускать mplayer. Звука все равно нет.

7. Через 5 минут после очередного перезапуска звук появляется.

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от vurdalak

Собрал с SDL. Запустил, то же самое, что и без.

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от vurdalak

А слово dmix ни о чем не говорит? Блокирую вывод звука как раз различные oss приложения. lsmod | grep oss подскажет, не затесалось ли у тебя лишнего oss в системе.

linuxfan
()
Ответ на: комментарий от linuxfan

snd_pcm_oss 26080 0

snd_mixer_oss 10648 1 snd_pcm_oss

snd_seq_oss 18560 0

snd_seq_midi_event 3576 1 snd_seq_oss

snd_seq 33184 4 snd_seq_oss,snd_seq_midi_event

snd_seq_device 3660 2 snd_seq_oss,snd_seq

snd_pcm 45520 4 snd_pcm_oss,snd_hda_intel,snd_hda_codec

snd 37064 19

snd_pcm_oss,snd_mixer_oss,snd_seq_oss,snd_seq,snd_seq_device,snd_hda_int el,snd_hda_codec,snd_hwdep,snd_pcm,snd_timer

Вот что дал lsmod. И что с ним делать?

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от vurdalak

>Вот что дал lsmod. И что с ним делать?

Вся шутка в том, что с этим нельзя сделать ничего. Отказываешься от пульсы, используешь умолчальный конфиг альсы (rm -f ~/.asoundrc), но когда на ум приходит мысль о флеше или чем-нибудь еще oss'ном, запускаешь сначала аудиоплеер на паузе, чтобы oss не захватил эксклюзивно звуковое устройство, а потом уже делаешь что хочешь.

Добро пожаловать в десктопный линакс 2010 года. :(

linuxfan
()
Ответ на: комментарий от linuxfan

Но что oss-шное я запускаю? Ведь игра использует альсу, да и флаг -oss установлен. Почему нельзя полностью выжечь oss из системы?

vurdalak ★★★★★
() автор топика
Ответ на: комментарий от vurdalak

Ну а вообще рецепт такой:

1. strace -f -e open badgame 2>&1 | grep /dev

Смотрим, что там упоминается, Если /dev/dsp, то padsp badgame. Если /dev/snd/* - см. ниже.

2. emerge ltrace ; echo 'int snd_pcm_open(addr,string,int,int);' >>/etc/ltrace.conf

3. ltrace -f -l /usr/lib/libasound.so.2 -e snd_pcm_open badgame

Смотрим на второй аргумент snd_pcm_open. Если это не «default» - пытаемся выяснить, откуда берется (вероятно, из настроек устройства вывода звука в игре - там надо выставить «default»). Если «default» - жалуемся на полтергейст.

AEP ★★★★★
()
Ответ на: комментарий от vurdalak

>Но что oss-шное я запускаю?

1. flash player

2. wine не через oss выдает дикий глючный звук (по крайней мере, года два назад так дела обстояли)

3. играйся в винде

linuxfan
()
Ответ на: комментарий от AEP

При попытке запуска через ltrace игра намертво виснет при загрузке. Приходиться убивать сначала ее, а потом ltrace по SIGKILL/ Вывод ltrace:

http://pastebin.com/3VkLj4fw

vurdalak ★★★★★
() автор топика

У меня долгое время в ALSA тоже dmix не работал, вернее может и работал, но звук шёл всё равно только в одном приложении.
А недавно запахал. После того, как я потёр PulseAudio, всякие /etc/asound.conf и ~/.asoundrc (Debian), и устройство во всех приложениях выставил на default. Звуковуха Creative SB Audigy SE.
Ибо Dmix в ALSA включается по-дефолту с 1.0.9pre2 на карточках без аппаратного смешивания, как на официальном вики написано.

Mihaly4_6572
()
Ответ на: комментарий от megabaks

> генту...пульс...ты в своём уме?

гента, пульс, все из тестинг, флеш/плееры/вайн работают параллельно (даже слышно звук)

ЧЯДНТ?

x0r ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.