LINUX.ORG.RU

[PATCH] Исправление arts версий 1.1.4 и 1.2.2 для работы через ALSA

 


0

0

Исправил поддержку ALSA 0.98 и выше в arts версии 1.1.4 и 1.2.2,
патчи можно взять здесь:
http://mcmcc.bat.ru/mypatches/arts-1.1.4-alsa.patch
http://mcmcc.bat.ru/mypatches/arts-1.2.2-alsa.patch
Правда есть большой гемор при сборке arts с ALSA, упорно не хочет
configure подцепить ее, если это происходит, то нужно вручную,
после запуска configure с ключем --with-alsa проделать следущее:
добавить в config.h строчку
#define HAVE_LIBASOUND2 1
и в flow/Makefile найти 
LIBASOUND =
и в добавить -lasound,
LIBASOUND = -lasound
потом можно запускать make....

P.S. Теперь в KDE приятно стало работать, потому как ALSA у меня
настроена с поддержкой софтверного микширования, причем устройство default тоже является виртуальным, поэтому artsd не мешает другим
программам использующим ALSA нативно работать через default,
мой конфиг для ALSA можно взять тут:
http://mcmcc.bat.ru/mypatches/asound.conf
просто копируем его в /etc и наслаждаемся:)
P.P.S Завтра выложу rpm'ки, правда только arts версии 1.1.4...

★★★

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

с 1.0.4?И именно arts 1.1.4 и 1.2.2? Не верится что-то.... Там типы поменялись, у ALSA, поэтому arts собраться с поддержкой ALSA не должен:),
проверь, что выдает artsd -A

$ artsd -A
possible choices for the audio i/o method:

oss Open Sound System
alsa Advanced Linux Sound Architecture
null No Audio Input/Output
toss Threaded Open Sound System



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

audioioalsa9.cc: In member function `int
Arts::AudioIOALSA::setPcmParams(snd_pcm_t*)':
audioioalsa9.cc:398: error: invalid conversion from `int' to `unsigned int*'
audioioalsa9.cc:420: error: invalid conversion from `int' to `
snd_pcm_uframes_t*'
audioioalsa9.cc:425: error: invalid conversion from `int' to `
snd_pcm_uframes_t*'

А вот ошибки, которые вылезают при сборке, но это еще не все,
в самом коде в audioioalsa9.cc есть лажа, которая не позволяет работать
с dmix и требует фулдуплекса...

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

Вот кусок лажи из кода
unsigned int rate = snd_pcm_hw_params_set_rate_near(pcm, hw, _samplingRate, 0);

Они думают, что эта функция возвращает значение rate:))))), в alsa
1.0.0 как минимум не так, потому что эта функция возращает 0, если
установка _samplingRate прошла успешно, и отрицательное значение,
если не успешно, а они пытаются еще манипулировать с rate, который
не должен быть 0:)))... Так что незнаю, уважаемый, как у вас все нормально
работает!?.....

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

Кстати, хочу предупредить, кто собирается пересобрать arts версии 1.2.2
с моим патчем, нужно еще добавить в audioioalsa9.cc следущие строчки:

#ifdef ALSA_PCM_OLD_SW_PARAMS_API
#undef ALSA_PCM_OLD_SW_PARAMS_API
#endif
#ifdef ALSA_PCM_OLD_HW_PARAMS_API
#undef ALSA_PCM_OLD_HW_PARAMS_API
#endif

Иначе будет конфлит с новым API ALSA, потому как configure из arts
устанавливает эти параметры, что бы собрать arts со старой версией
API ALSA. Я пробовал собирать, как предлагают разработчики arts, но почему-то нифига не работает, поэтому лучше все же пропатчить и собрать
по нормальному под свежую ALSA....

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

>Да, 1.2.2 и 1.0.4.

Я так и понял.... Но всеравно, если подставить устройство не default,
а например dmix, то тишина, да и сборка в 1.2.2 через костыли с
вызовом старого API ALSA, вообщем в топку... В arts 1.1.4 все иначе,
там править нужно сильно...


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

Нифига, никаких костылей, см. Slackware-9.1, Slackware-current. Давно устанавливается и без всяких проблем. Slackware нерабочие версии, в том числе и для сборки, не предлагает.

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

Чёт не прокатили у меня эти патчи. arts 1.2.2.
audioioalsa9.cc: In member function `int Arts::AudioIOALSA::setPcmParams(snd_pcm_t*)':
audioioalsa9.cc:494: error: invalid conversion from `unsigned int*' to `unsigned int'
audioioalsa9.cc:494: warning: comparison of unsigned expression < 0 is always false
audioioalsa9.cc:505: error: invalid conversion from `snd_pcm_uframes_t*' to `long unsigned int'
audioioalsa9.cc:505: warning: comparison of unsigned expression < 0 is always false
audioioalsa9.cc:511: error: invalid conversion from `unsigned int*' to `unsigned int'
audioioalsa9.cc:511: warning: comparison of unsigned expression < 0 is always false

подрихтовал типы. собралось. правда с варнингами на этих строках - чтото типа "unsigned всё равно даст true"

алса в артсе так и не заработала :( Короче, продолжаем юзать esd.

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

Не надо там ничего рихтовать, я же сказал, что нужно отключить
ALSA_PCM_OLD_SW_PARAMS_API
ALSA_PCM_OLD_HW_PARAMS_API
сделай их undef в самом коде....

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

тьфу чёрт, не туда мышой ткнул.

#ifdef ALSA_PCM_OLD_SW_PARAMS_API
#undef ALSA_PCM_OLD_SW_PARAMS_API
#endif
#ifdef ALSA_PCM_OLD_HW_PARAMS_API
#undef ALSA_PCM_OLD_HW_PARAMS_API
#endif

сделал distclean, configure, make и теже самые ерроры.
Мож у меня артс не такой.

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