пятница, 13 января 2012 г.

OSS proxy

На домашнем компьютере я использую suspend-to-disk вместо выключения системы. Все работает замечательно, кроме звуковой системы. До начала работы с засыпанием на диск в качестве звуковой платы я использовал Aureal Vortex 2 и был весьма ей доволен. Vortex имел много приятных фишек вроде аппаратного эквалайзера и микшера. Последний весьма полезен, когда параллельно используется несколько потоков ALSA и OSS.

Т.к. поддержка управления питанием для Vortex 2 в linux оставляет желать лучшего, то пришлось отказаться от aureal в пользу встроенной в материнскую плату карточки. Микширование потоков в последних версиях ALSA происходит программно, но для этого нужно следить чтобы устройством вывода звука был default, а не hw:0,0. А вот с эмуляцией OSS все гораздо сложнее. Во-первых звук в некоторых играх с искажениями, а во-вторых ошибка "устройство занято", если запущен микшер в трее, выводит из себя.

Чтобы пробежаться в UnrealTournament или Heroes III, приходится закрывать все приложения, использующие alsa и после игры восстанавливать все обратно.

Так продолжалось бы бесконечно долго, если бы в какой-то рассылке не упомянули OSS proxy. Если кратко, то OSS proxy - реализация OSS через CUSE (Character device in USErspace). В changelog даже упомяналась поддержка MMAP для /dev/dsp - фича, которую хотят многие игрушки (к слову сейчас поддержка MMAP отключена из-за проблем с ее реализацией).

Быстренько накидал пакет для debian, который можно забрать у меня в репозитории.

deb http://www.tataranovich.com/debian squeeze main

Для остальных есть вариант с пересборкой пакета под свою систему.

deb-src http://www.tataranovich.com/debian squeeze main

В итоге нормально заработали игры, которые не работают через AOSS. Причем сейчас не нужно выгружать другие проигрыватели или микшеры.

Комментариев нет:

Отправить комментарий