Sabayon и звук

Автор beelzebubbie, 18 Июня 2010, 00:40

« предыдущая тема - следующая тема »

0 Пользователей и 9 Гостей просматривают эту тему.

beelzebubbie

Сразу оговорюсь, мне трудно правильно сформулировать вопрос - насколько, оказывается, поддержка звука в Sabayon отличается от поддержки звука в Win. Попытаюсь тогда привести побольше вводных данных:

HTPC собран на GA-E7AUM-DS2H. там 2 звуковых контроллера - один интегрирован в чипсет GeForce 9400 (выход через HDMI) а другой Realtek ALC 889A с выходом SPDIF (есть и другие аудиовыходы, но я ими не пользуюсь). SPDIF подключен к 5,1 ресиверу. В Win все было просто - основным устройством вывода был назначен Realtek, включен SPDIF выход и выбрано 5.1 ну и мелочи типа частоты дискретизации итд. В основном я использовал XBMC, там настройка тоже была проста. В результате на ресивере был звук такой же канальности как и в источнике, громкость управлялась XBMC. То есть все было правильно и логично.

Теперь о том, как выглядят звуковые дела в Sabayon: lspci показывает 1 устройство звука - nvidia HDA (сразу возник вопрос #1- почему?) , kcmshell4 sound показывает Card Config: HDA nvidia, Audio Devices: ALC 889A, Mixer: ALC 889A если в биосе выключено HDMI Audio и HDA nvidia если HDMI Audio включено. (Вопрос #2 - почему эти контроллеры логически объединены под эгидой Nvidia?). В KMix дела понятнее не обстоят - там можно вытащить в конфигурации каналов IEC958 и IEC958 Default PCM. После перезагрузки они иногда пропадают и их надо снова вытаскивать и включать. В VLC плеере звук есть (если Mixer ALC 889A, то в KMix звук регулируется каналом PCM, если Mixer NVIDIA, то звук в KMix не регулируется - тоже совсем непонятно). 

Перейдем к XBMC. Там из аудионастроек основной является Analog либо Digital sound. Если включаем Digital и passthru устройство стоит iec958 - все нормально, вот только громкость не регулируется потому что passthru. если ставим Analog то получаем регулируемый по громкости только стерео звук, устройство default или вручную написанное iec958 - без разницы. Я вас уже достаточно запутал?   http://linuxforum.kz/public/style_emoticons/<#EMO_DIR#>/blush.gif\' class=\'bbc_emoticon\' alt=\':blush:\' />

Тогда главный вопрос встает сам собой - как получить регулируемый звук на SPDIF с правильными каналами, как настраивать выходную частоту дискретизации и прочие нюансы и главное - ЧЕМ все это делать?

Спасибо всем, кто дочитал  http://linuxforum.kz/public/style_emoticons/<#EMO_DIR#>/wacko.gif\' class=\'bbc_emoticon\' alt=\':wacko:\' />

hedgeven

18 Июня 2010, 08:29 #1 Последнее редактирование: 18 Июня 2010, 08:42 от hedgeven
ппц, я запутался.... http://linuxforum.kz/public/style_emoticons/<#EMO_DIR#>/wacko.gif\' class=\'bbc_emoticon\' alt=\':wacko:\' />
надо подумать, со звуком глубоко не заморачивался в linux.
но для начала покажите:
lspci -k(про аудио устройства)
aplay -L
aplay -l
eix pulse
Jah will give us everything...

hedgeven

18 Июня 2010, 08:48 #2 Последнее редактирование: 18 Июня 2010, 08:48 от hedgeven
вот совет из документации

ЦитироватьНесколько звуковых карт

Вы можете использовать больше одной звуковой карты, при условии что вы собрали ALSA как модули ядра (или из пакета alsa-driver). Сначала в файле /etc/modules.d/alsa вам следует лишь указать, какая из карт должна быть запущена первой. В этом файле карты идентифицируются по именам своих драйверов. 0 означает первую карту, 1 -- вторую, и так далее. Вот пример для системы, в которой присутствуют две звуковые карты.

Листинг 4.8: Две карты в файле /etc/modules.d/alsa
options snd-emu10k1 index=0
options snd-via82xx index=1
Или если у вас две карты, использующие один и тот же драйвер, то их следует указать на одной строке, разделяя цифры запятой. Ниже приведён пример системы, в которой установлено три звуковые карты, две из которых являются картами Intel High Definition Audio.

Листинг 4.9: Несколько звуковых карт в /etc/modules.d/alsa
options snd-ymfpci index=0
options snd-hda-intel index=1,2
Jah will give us everything...

beelzebubbie

Чтобы упростить задачу, я выключил в биосе HDMI audio

lspci -k:
00:08.0 Audio device: nVidia Corporation MCP79 High Definition Audio (rev b1)
    Subsystem: Giga-byte Technology Device a102
    Kernel driver in use: HDA Intel
     Kernel modules: snd-hda-intel

aplay -L:
pulse
    Playback/recording through the PulseAudio sound server
front:CARD=NVidia,DEV=0
    HDA NVidia, ALC889A Analog
    Front speakers
surround40:CARD=NVidia,DEV=0
    HDA NVidia, ALC889A Analog
    4.0 Surround output to Front and Rear speakers
surround41:CARD=NVidia,DEV=0
    HDA NVidia, ALC889A Analog
    4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=NVidia,DEV=0
    HDA NVidia, ALC889A Analog
    5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=NVidia,DEV=0
    HDA NVidia, ALC889A Analog
    5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=NVidia,DEV=0
    HDA NVidia, ALC889A Analog
    7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=NVidia,DEV=0
    HDA NVidia, ALC889A Digital
     IEC958 (S/PDIF) Digital Audio Output

aplay -l:
**** List of PLAYBACK Hardware Devices ****
card 0: NVidia [HDA NVidia], device 0: ALC889A Analog [ALC889A Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 1: ALC889A Digital [ALC889A Digital]
  Subdevices: 1/1
Subdevice #0: subdevice #0
 
eix у меня в системе отсутствует. Из выводов команд я так понял, что теперь в системе 2 устройства вывода - ALC889A аналог и цифра. Опять везде NVidia (наверное Realtek теперь ей принадлежит   http://linuxforum.kz/public/style_emoticons/<#EMO_DIR#>/tongue.gif\' class=\'bbc_emoticon\' alt=\':P\' /> )

hedgeven

18 Июня 2010, 14:17 #4 Последнее редактирование: 18 Июня 2010, 14:39 от hedgeven
как раз наткнулся на подобную темку.
а можно еще вывод
cat /etc/asound.conf
cat ~/.asoundrc
настройка выходной частоты и пр. настраивается в них, вроде бы...)


add: так как у вас уже настроен в системе pulseaudio, мне кажется не стоит ковырять alsa
вот сайт с документацией

ЦитироватьI have a surround sound card, but PulseAudio uses just the front speakers!

    Many people have a surround card, but have speakers for just two channels, so PulseAudio can't really default to a surround setup. To enable all the channels, edit /etc/pulse/daemon.conf: uncomment the default-sample-channels line (i.e. remove the semicolon from the beginning of the line) and set the value to 6 if you have a 5.1 setup, or 8 if you have 7.1 setup etc. After doing the edit, restart pulseaudio.
Jah will give us everything...

beelzebubbie

ЦитироватьIf the PulseAudio plugin for alsalibs is installed all applications with support for the ALSA API should be able to access a PulseAudio server. You need version 1.0.12 or newer of the ALSA packages for the PulseAudio plugin to be included.
To activate the driver edit /etc/asound.conf or ~/.asoundrc and add:
Этих файлов у меня нет. If the PulseAudio plugin for alsalibs is installed - а как это узнать и установить если не установлено?

hedgeven

18 Июня 2010, 16:50 #6 Последнее редактирование: 18 Июня 2010, 16:51 от hedgeven
хммм... завтра отвечу)
Jah will give us everything...

beelzebubbie

Цитата: hedgeven от 18 Июня 2010, 16:50хммм... завтра отвечу)

Проблему самостоятельно решить не удалось - так что падавану придется обращаться к Учителю   http://linuxforum.kz/public/style_emoticons/<#EMO_DIR#>/rolleyes.gif\' class=\'bbc_emoticon\' alt=\':rolleyes:\' /> Откуда и куда копать, я так и не знаю...

hedgeven

мне не хватит опыта, чтобы сказать как сделать. чтобы приобрести опыт нужно такое оборудование под рукой(тоже нету). хотя жутко интересно в этом разобраться.
пробовали писать на gentoo.ru?
Jah will give us everything...

beelzebubbie

25 Июня 2010, 01:17 #9 Последнее редактирование: 25 Июня 2010, 19:28 от beelzebubbie
Цитата: hedgeven от 24 Июня 2010, 10:05мне не хватит опыта, чтобы сказать как сделать. чтобы приобрести опыт нужно такое оборудование под рукой(тоже нету). хотя жутко интересно в этом разобраться.
пробовали писать на gentoo.ru?
если есть время, давайте попробуем разобраться вместе. в конце концов могу и к терминалу доступ пробросить. на gentoo.ru попробую написать - на sabayon.org ответа не дождался.

beelzebubbie

 Вот, наконец-таки стронулось с мертвой точки: http://www.gentoo.ru...nastroyke-zvuka

beelzebubbie

26 Июня 2010, 00:47 #11 Последнее редактирование: 26 Июня 2010, 04:48 от beelzebubbie
### Кое что нашел - http://sonosaurus.com/ac3jack/ Сможет ли Оби помочь в установке и тестировании этого?   http://linuxforum.kz/public/style_emoticons/<#EMO_DIR#>/cool.gif\' class=\'bbc_emoticon\' alt=\'B)\' />

оставить на потом если не выйдет с ALSA A52_plugin

beelzebubbie

вот http://www.alsa-proj....php/A52_plugin вроде бы то что нужно.

1. Я затрудняюсь определить, установлен ли он у меня. Как это сделать?
2. нужно сконфигурировать ALSA для использования плагина. Нужна помощь. Вот инструкция:
[size="1"]A52 OUTPUT PLUGIN
=================

This plugin converts S16 linear format to A52 compressed stream and
send to an SPDIF output.  It requires libavcodec for encoding the
audio stream.

A PCM using this plugin can be defined like below:

    pcm.myout {
        type a52
    }

In addition, the following options are available:

- The "card" option specifies the card ID or number of the SPDIF.
  The output PCM becomes "iec958:{CARD=$CARD}" with extra AESx
  settings.  When omitted, the default card is used.

- The "slavepcm" option specifies a string of the slave PCM
  explicitly.  This is useful if a device has no proper SPDIF
  configuration (e.g. usb-audio), or if you want to pass your own PCM
  definition.  This option is exclusive with "card" option.

- The "rate" option specifies the input/output sample rate in HZ.
  The accepted rate is either 44100 or 48000.
  When omitted, 48000 is used.

- The "channels" option specifies the number of _input_ channels.
  It must be either 2, 4 or 6.  The default value is 6.

- The "bitrate" option specifies the bit-rate of the compressed
  stream in kbps.  Too small or too big value may not be accepted by
  the encoder.  When omitted, 448 is used.

- The "format" option specifies the output format type.  It's either
  S16_LE or S16_BE.  As default, S16_LE is used.

An example using the secondary card, 44.1kHz, 4 channels, output
bitrate 256kbps and output format S16_BE looks like below:

    pcm.myout {
        type a52
        card 1
        rate 44100
        channels 4
        bitrate 256
        format S16_BE
    }

For using slavepcm option,

    pcm.mypcm {
        card 1
        device 2
    }

    pcm.myout {
        type a52
        slavepcm "mypcm"
    }


The plugin reads always S16 format (i.e. native-endian) as input, so
you'd need plug layer appropriately to covert it.
[/size]

hedgeven

26 Июня 2010, 07:29 #13 Последнее редактирование: 26 Июня 2010, 07:47 от hedgeven
Цитата: beelzebubbie от 26 Июня 2010, 00:47### Кое что нашел - http://sonosaurus.com/ac3jack/
а для этого плагина придется настраивать звуковой сервер jack вместо pulseaudio, хотя может оно и решит проблемы
тут все есть в портэжах.

eix aften
* media-libs/aften
     Available versions:  0.0.8 **9999[1] {cxx}
     Homepage:            http://aften.sourceforge.net/
     Description:         An A/52 (AC-3) audio encoder

[1] "proaudio" layman/pro-audio

eix ac3jack
* media-sound/ac3jack [1]
     Available versions:  (~)0.1.2 (~)2.0.3
     Homepage:            http://essej.net/ac3jack/
     Description:         Tool for creating an AC-3 (Dolby Digital) multichannel stream from its JACK input ports

[1] "proaudio" layman/pro-audio


Цитата: beelzebubbie от 26 Июня 2010, 04:46вот http://www.alsa-proj....php/A52_plugin вроде бы то что нужно.

1. Я затрудняюсь определить, установлен ли он у меня. Как это сделать?
вам нужно установить пакетным менеджером alsa-plugins, a52 туда  входит

  usr/lib64/alsa-lib/libasound_module_pcm_a52.so
   usr/lib64/alsa-lib/libasound_module_pcm_vdownmix.so
   usr/lib64/alsa-lib/libasound_module_pcm_oss.so
   usr/lib64/alsa-lib/libasound_module_ctl_oss.so
   usr/lib64/alsa-lib/libasound_module_pcm_upmix.so
   usr/lib64/alsa-lib/libasound_module_pcm_usb_stream.so
   usr/lib64/alsa-lib/libasound_module_ctl_arcam_av.so
   usr/lib64/alsa-lib/libasound_module_rate_lavcrate.so

так же a52 может быть включен глобально для приложений в make.conf. информация о нем.
Jah will give us everything...

beelzebubbie

26 Июня 2010, 13:35 #14 Последнее редактирование: 26 Июня 2010, 22:36 от beelzebubbie
Цитата: hedgeven от 26 Июня 2010, 07:29вам нужно установить пакетным менеджером alsa-plugins, a52 туда  входит

   usr/lib64/alsa-lib/libasound_module_pcm_a52.so
   usr/lib64/alsa-lib/libasound_module_pcm_vdownmix.so
   usr/lib64/alsa-lib/libasound_module_pcm_oss.so
   usr/lib64/alsa-lib/libasound_module_ctl_oss.so
   usr/lib64/alsa-lib/libasound_module_pcm_upmix.so
   usr/lib64/alsa-lib/libasound_module_pcm_usb_stream.so
   usr/lib64/alsa-lib/libasound_module_ctl_arcam_av.so
   usr/lib64/alsa-lib/libasound_module_rate_lavcrate.so
так же a52 может быть включен глобально для приложений в make.conf.


что пишет emerge: 

media-plugins/alsa-plugins-1.0.23-r1 was built with the following:
USE="ffmpeg jack libsamplerate pulseaudio speex -debug"

a52 есть в make.conf, я пробовал и USE="a52" emerge.... все равно не вижу что он сработал)) как это вообще узнать?

Мне пишут, что
ЦитироватьUSE index подсказывает, что есть одноимённый USE-флаг a52.
Я бы начал с глобального выставления этого флага (и пересборки мира с опцией --newuse).
что есть пересборка мира?



а по поводу таких конструкций:     pcm.myout {
        type a52
        card 1
        rate 44100
        channels 4
        bitrate 256
        format S16_BE
    }

это что такое и где про это почитать?