Open Sound System (OSS) — это интерфейс для создания и записи звука в Unix и Unix-подобных операционных системах. Он основан на стандартных системных вызовах устройств Unix (например, POSIX read , write , ioctl и т. д.). Этот термин также иногда относится к программному обеспечению в ядре Unix, которое обеспечивает интерфейс OSS; его можно рассматривать как драйвер устройства (или набор драйверов устройств) для оборудования звукового контроллера . Цель OSS — позволить писать звуковые приложения, не зависящие от основного звукового оборудования.
OSS была создана Ханну Саволайненом и распространяется по четырем вариантам лицензий , три из которых являются лицензиями на свободное программное обеспечение , что делает программное обеспечение OSS свободным . [3]
API предназначен для использования традиционной инфраструктуры Unix open(), read(), write() и ioctl() через файлы устройств . Например, устройством по умолчанию для ввода и вывода звука является /dev/dsp . Примеры использования оболочки:
cat /dev/random > /dev/dsp # воспроизводит белый шум через динамикcat /dev/dsp > aa # считывает данные с микрофона и копирует их в файл aa
OSS реализует интерфейс /dev/audio . Подробный доступ к отдельным звуковым устройствам предоставляется через каталог /dev/oss . OSS также имеет поддержку MIDI в /dev/sequencer , /dev/music (оба устаревшие) и /dev/mini . [4] [5]
В Linux OSS4 также может эмулировать ALSA , его замену с открытым исходным кодом. [6]
OSS изначально назывался VoxWare, звуковым драйвером ядра Linux, созданным Ханну Саволайненом. Саволайнен сделал код доступным по лицензиям свободного программного обеспечения : GPL для Linux и BSD для дистрибутивов BSD. В период с 1993 по 1997 год OSS была единственной звуковой системой во FreeBSD и Linux. Ситуация изменилась, когда Луиджи Риццо написал новый драйвер «pcm» для FreeBSD в 1997 году и когда Ярослав Кисела запустил Advanced Linux Sound Architecture в 1998 году. [7]
В 2002 году Саволайнен заключил контракт с компанией 4Front Technologies и создал будущую OSS 4, которая включает поддержку новых звуковых устройств и улучшения, проприетарные . В ответ сообщество Linux отказалось от реализации OSS/free, включенной в ядро, и усилия по разработке переключились на замену Advanced Linux Sound Architecture (ALSA). FreeBSD к этому времени перешла на проект «newpcm», начатый в 1999 году, и это не повлияло. [7]
В июле 2007 года 4Front Technologies выпустила исходные коды OSS под CDDL-1.0 для OpenSolaris и GPL-2.0 только для Linux . Драйверы для некоторых звуковых карт остались с закрытым исходным кодом и не были включены в выпуск. [3] В январе 2008 года компания 4Front Technologies выпустила OSS для FreeBSD (и других систем BSD ) в соответствии с BSD-2-Clause . [8]
OSS4 сейчас существует в основном как отдельная часть программного обеспечения, не интегрированная в исходный код ядра. Исключением являются Solaris и OpenSolaris , которые используют форк OSS4 под названием Boomer. Он сочетает в себе структуру OSS4 (аудио и микшер) с более ранним API Sun SADA ( /dev/audio ). [9]
Хотя дистрибутивы Linux, такие как Ubuntu, сделали OSS4 доступным в виде пакета программного обеспечения после того, как он стал свободным программным обеспечением, они решили игнорировать любые ошибки, обнаруженные в этих пакетах. [10]
OSS API остался влиятельным, несмотря на малоизвестность исходной библиотеки. В документации NetBSD он описан как «предпочтительный API во FreeBSD и Solaris». [11]
FreeBSD содержит независимо разработанную реализацию OSS API, которая включает, среди прочего, внутреннюю передискретизацию, микширование (vchans), эквалайзер, объемный звук и независимую регулировку громкости для каждого приложения. Он также поддерживает побитовый режим. [12] Он постепенно развился из замены «newpcm», написанной в 1999 году, и примерно в 2005 году догнал OSS4 API. [7]
NetBSD поддерживает режим совместимости для OSS API, предоставляя soundcard.h
заголовочный файл и libossaudio
библиотеку, которые внутри работают с использованием собственного аудиоинтерфейса, подобного Sun. Замена впервые была замечена в NetBSD 1.3 1998 года. [11]
Как уже упоминалось, Linux перешел на Advanced Linux Sound Architecture с 2003 года (ядро 2.6). ALSA предоставляет дополнительный встроенный в ядро режим эмуляции OSS, который для программ выглядит так, как если бы это был OSS. [13] У ALSA также есть программа пользовательского пространства aoss , которая перехватывает системные вызовы, направленные к файлам устройств OSS. [14]
OSS/3D — это плагин для музыкальных проигрывателей, который действует как механизм постобработки звука. Поддерживаемые проигрыватели включают Winamp , Windows Media Player (9 или более позднюю версию), musicmatch, Sonique , Foobar2000 , JetAudio , XMMS . Он портирован на платформы Windows и Linux. В отличие от OSS, это условно-бесплатная версия .
4Front OSS3D позже был переименован в Joesoft Hear. [15]
OSS и как API, и как программное обеспечение подверглись критике со стороны некоторых разработчиков, таких как Пол Дэвис (из JACK Audio Connection Kit ) и Леннарт Поеттеринг (из конкурирующей компании PulseAudio ). [16] [17] Большая часть этой критики относилась либо к реализации Linux, а не к самому OSS API, либо была рассмотрена в OSS версии 4. [ нужна ссылка ]