LINUX.ORG.RU

apulse

 ,


23

13

Everyone! Listen up! Today... today...

$ apulse <program-name> [program parameters]

https://github.com/i-rinat/apulse — эмуляция PulseAudio. Когда приложение пытается загрузить libpulse.so, ему подсовывают её версию от apulse, в которой реализована часть функций, достаточная, чтобы запустить Skype и некоторый другой софт.

★★★★★

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

Больше стандартов, хороших и разных.

anonymous
()

очередной ненужный костыль к ненужно

timuaz_one
()

Не проще ли поменять цифорки, те которые версию показывают, в бинарнике?

anonymous
()

Идея неплохая, на фоне проприетарных поделок требующих исключительно pulseaudio. У меня даже возникло желание портануть это прямо в alsa, чтоб не геморроится и иметь эмуляцию злосчастной пульсы. А то oss есть, пусть и pulse там болтается.

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

Ну да, есть. Я её даже настроил, и её работа меня устраивает. Но раз уж я начал это писать, решил довести до состояния Proof-of-Concept. Вряд ли буду доделывать, так что кому нужно — форкайте, лицензия пермиссивная.

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

Да ладно. Мне просто хотелось этот видеофрагмент запостить, а для этого нужен хороший повод.

i-rinat ★★★★★
() автор топика

Чётко. А не хочешь составить список программ, что работает/не работает?

anonymous
()

Отлично, теперь пиши по аналогии для sysvinit эмуляцию systemd, который эмулирует sysvinit.

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

список программ

Пробовал mpv, mplayer, avconv (на запись) и skype.

что работает/не работает?

Отладочная сборка вываливает тонны трассировки в консоль, там функции помечены: F — реализована, Z — не реализована.

i-rinat ★★★★★
() автор топика

Добавил в закладки. А там уже или пульсаудио сдохнет, или эта штуковина пригодится.

xfilx ★★
()
Ответ на: комментарий от i-rinat

Я уж со скрипом на пульс перелез. Снесу и попробую :)

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

а я вот такой велосипед запилил для скайпа и OSS

Он мне очень помог. Изначально я планировал сделать прослойку потоньше и использовать буферизацию ALSA, но ничего не работало. Потом увидел у тебя отдельный буфер под семплы и добавил у себя кольцевой буфер.

i-rinat ★★★★★
() автор топика

Теперь можно пройтись по популярному софту и выпилить оттуда поддержку alsa, ссылаясь на этот костыль как на замену. Меньше кода же. Профит.

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

С mpv это сработало в обратную сторону.

i-rinat ★★★★★
() автор топика

спасибо :)

Deleted
()
Ответ на: комментарий от i-rinat

Да, я тоже пытался сделать без буфера. Но у меня оказывалось, что skype пытался выводить звук короткими кусками чуть ли не по 10-20 байт и все заикалось. У меня буфер потому и называется why_buffer, что сделал я его от досады (изначально он был вообще wtf_buffer =)

Waterlaz ★★★★★
()

[ 6%] Building C object CMakeFiles/pulse.dir/src/apulse-channel-map.c.o
[ 13%] Building C object CMakeFiles/pulse.dir/src/apulse-context.c.o
[ 20%] Building C object CMakeFiles/pulse.dir/src/apulse-mainloop.c.o
[ 26%] Building C object CMakeFiles/pulse.dir/src/apulse-misc.c.o
[ 33%] Building C object CMakeFiles/pulse.dir/src/apulse-operation.c.o
[ 40%] Building C object CMakeFiles/pulse.dir/src/apulse-proplist.c.o
[ 46%] Building C object CMakeFiles/pulse.dir/src/apulse-signal.c.o
[ 53%] Building C object CMakeFiles/pulse.dir/src/apulse-stream.c.o
[ 60%] Building C object CMakeFiles/pulse.dir/src/apulse-threaded-mainloop.c.o
[ 66%] Building C object CMakeFiles/pulse.dir/src/trace.c.o
[ 73%] Building C object CMakeFiles/pulse.dir/src/util.c.o
[ 80%] Building C object CMakeFiles/pulse.dir/src/ringbuffer.c.o
[ 86%] Building C object CMakeFiles/pulse.dir/src/notimplemented.c.o
/home/user/apulse/src/notimplemented.c:351:5: error: conflicting types for ‘pa_format_info_is_compatible’
In file included from /usr/include/pulse/pulseaudio.h:28:0,
from /home/user/apulse/src/apulse.h:31,
from /home/user/apulse/src/notimplemented.c:25:
/usr/include/pulse/format.h:102:5: note: previous declaration of ‘pa_format_info_is_compatible’ was here
/home/user/apulse/src/notimplemented.c:372:17: error: conflicting types for ‘pa_format_info_from_sample_spec’
In file included from /usr/include/pulse/pulseaudio.h:28:0,
from /home/user/apulse/src/apulse.h:31,
from /home/user/apulse/src/notimplemented.c:25:
/usr/include/pulse/format.h:119:17: note: previous declaration of ‘pa_format_info_from_sample_spec’ was here
/home/user/apulse/src/notimplemented.c:379:5: error: conflicting types for ‘pa_format_info_to_sample_spec’
In file included from /usr/include/pulse/pulseaudio.h:28:0,
from /home/user/apulse/src/apulse.h:31,
from /home/user/apulse/src/notimplemented.c:25:
/usr/include/pulse/format.h:126:5: note: previous declaration of ‘pa_format_info_to_sample_spec’ was here
/home/user/apulse/src/notimplemented.c:386:16: error: conflicting types for ‘pa_format_info_get_prop_type’
In file included from /usr/include/pulse/pulseaudio.h:28:0,
from /home/user/apulse/src/apulse.h:31,
from /home/user/apulse/src/notimplemented.c:25:
/usr/include/pulse/format.h:150:16: note: previous declaration of ‘pa_format_info_get_prop_type’ was here
/home/user/apulse/src/notimplemented.c:393:5: error: conflicting types for ‘pa_format_info_get_prop_int’
In file included from /usr/include/pulse/pulseaudio.h:28:0,
from /home/user/apulse/src/apulse.h:31,
from /home/user/apulse/src/notimplemented.c:25:
/usr/include/pulse/format.h:153:5: note: previous declaration of ‘pa_format_info_get_prop_int’ was here
/home/user/apulse/src/notimplemented.c:400:5: error: conflicting types for ‘pa_format_info_get_prop_int_range’
In file included from /usr/include/pulse/pulseaudio.h:28:0,
from /home/user/apulse/src/apulse.h:31,
from /home/user/apulse/src/notimplemented.c:25:
/usr/include/pulse/format.h:156:5: note: previous declaration of ‘pa_format_info_get_prop_int_range’ was here
/home/user/apulse/src/notimplemented.c:407:5: error: conflicting types for ‘pa_format_info_get_prop_int_array’
In file included from /usr/include/pulse/pulseaudio.h:28:0,
from /home/user/apulse/src/apulse.h:31,
from /home/user/apulse/src/notimplemented.c:25:
/usr/include/pulse/format.h:160:5: note: previous declaration of ‘pa_format_info_get_prop_int_array’ was here
/home/user/apulse/src/notimplemented.c:414:5: error: conflicting types for ‘pa_format_info_get_prop_string’
In file included from /usr/include/pulse/pulseaudio.h:28:0,
from /home/user/apulse/src/apulse.h:31,
from /home/user/apulse/src/notimplemented.c:25:
/usr/include/pulse/format.h:163:5: note: previous declaration of ‘pa_format_info_get_prop_string’ was here
/home/user/apulse/src/notimplemented.c:421:5: error: conflicting types for ‘pa_format_info_get_prop_string_array’
In file included from /usr/include/pulse/pulseaudio.h:28:0,
from /home/user/apulse/src/apulse.h:31,
from /home/user/apulse/src/notimplemented.c:25:
/usr/include/pulse/format.h:167:5: note: previous declaration of ‘pa_format_info_get_prop_string_array’ was here
/home/user/apulse/src/notimplemented.c:488:55: error: unknown type name ‘pa_operation_notify_cb_t’
make[2]: *** [CMakeFiles/pulse.dir/src/notimplemented.c.o] Error 1
make[1]: *** [CMakeFiles/pulse.dir/all] Error 2
make: *** [all] Error 2

==============

Что не так? :(

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

Пульсаудио, наверное, старая. У меня пятая. Видимо, API менялось.

Из notimplemented.c можно функции удалять без особых последствий. Может так соберётся.

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

Я просто не программер. Поудаляю не то... Ладно, жаль, что ты не пилишь эту штуку. Может кто форкнет...

Gonzo ★★★★★
()
Ответ на: комментарий от i-rinat

Сорри, разобрался. У меня заработал звук в скайпе. Связь пока не тестил в плане микрофона и наушников ибо дома нет такой возможности, на работе проверю.

Gonzo ★★★★★
()
Последнее исправление: Gonzo (всего исправлений: 2)
Ответ на: комментарий от Darth_Revan

Видел этот трэд?

Нет, не видел.

Говорят, не работает.

То они неправильно запускают.

Waterlaz ★★★★★
()
Последнее исправление: Waterlaz (всего исправлений: 1)

респект автору!

anonymous
()

ТС продолжает наступление на косые приложения, теперь и на звуковом фронте! Хайл!

bj
()

Что-то обламывается

![apulse] [error] do_connect_pcm, snd_pcm_open, Input/output error
[apulse] [error] do_connect_pcm, snd_pcm_open, Input/output error
ALSA lib pcm_pulse.c:743:(pulse_prepare) PulseAudio: Unable to create stream: Oops.

[apulse] [error] do_connect_pcm, snd_pcm_open, Input/output error
[apulse] [error] do_connect_pcm, snd_pcm_open, Input/output error
ALSA lib pcm_pulse.c:743:(pulse_prepare) PulseAudio: Unable to create stream: Oops.

!!

Skype-4.3.0.37.

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

Всё, заработало. Это alsa пытлась играть через плагин pulseaudio.

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

Есть же пульса.

да, вот чтобы это уг эмулировать создан данный проект

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

Нет, но нужны заголовки для сборки.

i-rinat ★★★★★
() автор топика

Freshplayer, apulse - линукс теперь готов для десктопа!

Кроме шуток, спасибо, бро. Вот так вот, по мелочам, все работает и приятно.

Gonzo ★★★★★
()

Спасибо тебе!

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

Да там пришёл какой-то специалист с заскоками по поводу защитного программирования. Я подумал, что он поймёт намёк в сообщении про установку CTest в «/Program Files», но это не сработало.

Тем не менее, какие-то из его слов разумны. Почему бы не поправить несложные баги?

i-rinat ★★★★★
() автор топика

в очередной раз удалил пульсу.

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

If you want 32-bit binaries on 64-bit machine, use...

ах, блин, не прочел до конца! наверное в этом зарыта причина...

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

ошибка, такая же как у анонима в этой теме

Там дело было в плагине для ALSA. Например, в Debian, когда ставишь pulseaudio, принудительно ставится плагин для ALSA, который всё заворачивает в PulseAudio. Его можно выключить, удалив файл настройки /usr/share/alsa/alsa.conf.d/pulse.conf

i-rinat ★★★★★
() автор топика

Больше врапперов богу врапперов!

Хе-хе, спасибо! Крутой проект!

EXL ★★★★★
()

Добавил в избранное! На досуге попробую самостоятельно написать ебилд, может, таким образом научусь это делать.

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