Регистрация | Войти
Lisp — программируемый язык программирования
RSS
проигрывание звука и COmmon Lisp
den73 - 27.07.2016 20:42, Сообщений - 6
"Если мы обидели кого-то зря, календарь закроет этот лист". Вот такая песенка из сатанинского двадцатого века. 

А я вот помню, как я некстати обидел Shamaz.mazun, когда пренебрежительно отозвался об mp3 плеере. 

Вопрос у меня теперь такой: как совмещается мультимедиа (которое есть рилтайм) и задержки на сборку мусора.

Я вспомнил, что когда-то я хотел написать компрессор (такая железячка из музыкального оборудования). И даже написал прототип. Работа с мультимедиа сводится
к тому, что нужно успевать поочерёдно заполнять не менее чем два буфера данных и отправлять сообщение о заполннености. Т.е., пока задержки на сборку мусора меньше, 
чем время исчерпания запасённых данных, никаких проблем не возникнет.

А как оно выглядит на практике в наше время. 

Или, иными словами, реально ли написать на коммон-лиспе что-то типа скайпа?
[#]
Учитывая, как скайп иногда подтормаживает - вполне реально. На современном железе minor GC (для не совсем дубовых сборщиков с поколениями) занимают ну десятки миллисекунд на нескольких гигах хипа при правильной организации работы с памятью, так что человеку это не заметно. Если не бороться за ресурсы, то можно пойти серверным путём - задублировать обработчики в разных процессах, тогда шансы затормозиться из-за сборки мусора околонулевые (иногда один чистится, другой работает, в бОльшую часть времени готовы оба). Ещё можно руками поработать с выделением памяти и избежать consing. В общем реально, но не нужно, так как уже есть всякое готовое и проще интегрироваться, чем велосипедить.
EO - 28.07.2016 10:53
[#]
Попрактикуем некропостинг на этом форуме.

> Вопрос у меня теперь такой: как совмещается мультимедиа (которое есть рилтайм) и задержки на сборку мусора.

Да по-моему мультимедия нифига не риалтайм. Касательно буфферов, звуковая подсистема FreeBSD сама решает эту проблему. То есть блокирующий вызов write на dsp устройство сначала будет возвращать управление сразу, пока внутренние буфферы пусты, а потом будет блокировать, пока часть данных из буффера не попадет на звуковуху. То есть плеер написать тривиально, а вот что-то, где нужна интерактивность, может быть сложнее. А может и нет.

Для OSS-подобных звуковых драйверов у меня есть на гитхабе библиотека cl-oss
shamaz.mazum - 19.08.2016 19:43
[#] Ответ на комментарий от shamaz.mazum 19.08.2016 19:43
Вот я что нашёл:
https://github.com/filonenko-mikhail/cl-portaudio

den73 - 06.10.2016 23:22
[#] Ответ на комментарий от den73 06.10.2016 23:22
Кстати, только у меня сайт гитхаба последние 2 дня ужасно глючит?
shamaz.mazum - 08.10.2016 06:45
[#] Ответ на комментарий от den73 06.10.2016 23:22
Честно говоря, первый раз такое слышу. Никогда не видел, что где-то используется. Ещё был сервер NAS, гоняющий аудио по сети. Но я не знаю, вероятно он умер. Только mplayer умел им пользоваться. ИМХО, у OSS самый удобный интерфейс, какой только может быть. Ввод/вывод просто посредством read/write в дескриптор и всё. Никакого пердолинга с библиотеками, никаких колбэков, ничего такого
shamaz.mazum - 08.10.2016 06:51
[#] Ответ на комментарий от shamaz.mazum 08.10.2016 06:51
Да и я тоже. OSS вроде только под линуксы, а cl-portaudio ещё и под винду и под макось, в этом профит.
den73 - 08.10.2016 10:43
@2009-2013 lisper.ru