LINUX.ORG.RU

[ALSA] dmix работает только с default device

 


0

2

Собственно сабж.

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC880 Analog [ALC880 Analog]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 1: ALC880 Digital [ALC880 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0


Вот так работает:

1:
$ aplay --device=default /usr/share/sounds/startup3.wav
Playing WAVE '/usr/share/sounds/startup3.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

2:
$ aplay --device=default /usr/share/sounds/startup3.wav
Playing WAVE '/usr/share/sounds/startup3.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo


А вот так уже не работает:

1:
$ aplay --device=hw:0,0 /usr/share/sounds/startup3.wav
Playing WAVE '/usr/share/sounds/startup3.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

2:
$ aplay --device=hw:0,0 /usr/share/sounds/startup3.wav
aplay: main:660: audio open error: Device or resource busy


Проблема в том, что в некотором софте нельзя выбрать ALSA default device, а требуется указать карту.

/etc/asound.conf и ~/.asoundrc пустые, ибо «For ALSA 1.0.9rc2 and higher you don't need to setup dmix for analogue output.»

Очень не хочется использовать костыли типа pulseaudio...

★★★★★

> А вот так уже не работает: --device=hw:0,0

Тем самым ты сказал «дай мне голую карту без dmix». dmix находится внутри определения default.

Проблема в том, что в некотором софте нельзя выбрать ALSA default device, а требуется указать карту.

Это либо профессиональный софт типа jack (который сам микширует в обход dmix и несовместим с ним), либо такое фуфло, которое пора снести.

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

И вдогонку: pulseaudio этому софту не поможет, т.к. будет точно такая же драка за карту между pulseaudio и этим приложением.

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

> либо такое фуфло, которое пора снести.
Угу, но снести нельзя. :( Это SIP телефон. И заменить другим тоже нельзя.

И вдогонку: pulseaudio этому софту не поможет

Поможет, он умеет работать через pulseaudio. Но очень не хочется...

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

А переопределить ALC880 Analog (hw0,0) в dmix никак нельзя?
Или создать «виртуальную карту» ALC880 DMix, чтобы затем выбрать ее в кривом софте?

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

Как это нельзя телефон заменить? Скорее всего можно, только чтобы никто не заметил ;)

Ну и pulseaudio - это вовсе не костыль, а наоборот, попытка удаления костыля, которым является dmix. Вот сами посмотрите:

http://git.alsa-project.org/?p=alsa-lib.git;a=blob;f=src/pcm/pcm_dmix.c;h=434...

т.е. он работает только поверх аппаратных устройств. Т.е., скажем, поверх bluetooth не работает, поверх AC3-кодера для SPDIF (или моего DTS-кодера, см. http://aepatrakov.narod.ru/dcaenc/ ) не работает, а для поддержки микширования звука 5.1 на карте ca0106 (X-fi xtreme audio) надо делать сложный конфиг с тремя dmix'ами, т.к. она состоит не из одного, а из трех аппаратных устройств.

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

Переопределить можно. Надо только понять, что именно переопределять, т.к. вариантов масса: «hw», «hw:0», «hw:0,0», «hw:CARD=Intel», «hw:CARD=Intel,DEV=0». Какое именно из этих (эквивалентных) устройств открывается, можно (но не факт, что сработает) понять с помощью ltrace:

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

ltrace -e snd_pcm_open phone

В результате в консоли при попытке телефоном вывести звук будет строчка типа такой:

snd_pcm_open(0xffaf69dc, «default», 0, 0) = 0

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

Вот так можешь перебить все устройства plughw. Но это может сломать другие приложения:

pcm.!plughw {
    @args [ DUMMY1 DUMMY2 DUMMY3 ]
    @args.DUMMY1 { type string; default "" }
    @args.DUMMY2 { type string; default "" }
    @args.DUMMY3 { type string; default "" }

    type hooks
    slave.pcm "default"
}
AEP ★★★★★
()
Ответ на: комментарий от AEP

aplay --device=plughw:0,0 работает, а в телефоне звук пропал полностью...
Видимо не судьба и придется юзать пульс. :(

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