Звукова підсистема Linux. СПК

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук

Покращена Архітектура Звуку Linux, Advanced Linux Sound Architecture (ALSA) є звуковий підсистемою, обраної для ядра версії 2.6. Відкрита Звукова Система, Open Sound System (OSS), звуковий рівень в ядрі версії 2.4, в даний час застарів і не рекомендується до використання. Для переходу від OSS до ALSA остання надає емуляцію OSS, яка дозволяє додаткам, що використовують API OSS, запускатися без змін на ALSA. Звукові ядра Linux, такі як ALSA і OSS, роблять аудіо додатки незалежними від базового устаткування, тоді як стандарти кодеків, такі як AC'97 і I2S, позбавляють від необхідності написання окремих звукових драйверів для кожної звукової карти.   Щоб зрозуміти архітектуру звукової підсистеми Linux подивіться на Малюнок 13.3. Основними частинами підсистеми є:   • Звуковий ядро, яке є базовим кодом, що складається з процедур і структур, доступних іншим компонентам звукового рівня Linux. Як і рівні ядра, що належать іншим драйверного підсистемам, звукове ядро забезпечує рівень побічно, що робить кожен компонент в звуковий підсистемі не залежних від інших. Ядро грає важливу роль в експорті API ALSA вищерозміщеним додаткам. Вузлами / dev / snd / *, показаними на рисунку 13.3, які створюються і управляються з ядром ALSA, є: / dev / snd / controlC0 - вузол управління (використовуваний в додатках для управління рівнем гучності і тому подібному), / dev / snd / pcmC0D0p - пристрій відтворення (p в кінці імені пристрою означає playback, відтворення), та / dev / snd / pcmC0D0c - записуючий пристрій (c наприкінці імені пристрою означає capture, захват). У цих іменах пристроїв ціле число після C є номером карти, а після D - номером пристрою. ALSA драйвер для карти, яка має голосовий кодек для телефонії та стерео кодек для музики, може експортувати / dev / snd / pcmC0D0p для читання аудіо потоків, призначений для першого, і / dev / snd / pcmC0D1p для якісного музичного каналу для останнього.

• Драйвери аудіо контролера залежать від устаткування контролера. Наприклад, для управління аудіо контролером, які у Південному мості Intel ICH, використовується драйвер snd_intel8x0.   • Інтерфейси аудіокодеків, які допомагають взаємодії між контролерами і кодеками. Для кодеків AC'97 використовуйте snd_ac97_codec і модулі ac97_bus.

• Рівень емуляції OSS, який виступає в якості посередника між додатками, що використовують OSS, і ядром з підтримує ALSA. Цей рівень експортує вузли / dev, що зображують підтримку рівня OSS в ядрі версії 2.4. Ці вузли, такі як / dev / dsp, / dev / adsp та / dev / mixer, дозволяють додаткам OSS працювати поверх ALSA без змін. Вузол OSS / dev / dsp пов'язаний з вузлами ALSA / dev / snd / pcmC0D0 *, / dev / adsp відповідає / dev / snd / pcmC0D1 *, а / dev / mixer пов'язаний с / dev / snd / controlC0.

• Інтерфейс procfs and sysfs для доступу до інформації через / proc / asound / та / sys / class / sound /.

• Бібліотека ALSA користувальницького простору, alsa-lib, яка надає об'єкт libasound.so. Ця бібліотека спрощує роботу програміста програми ALSA, пропонуючи кілька готових процедур для доступу до драйверів ALSA.

• Пакет alsa-utils, який включає в себе такі утиліти, як alsamixer, amixer, alsactl і aplay. alsamixer або mixer використовуються для зміни гучності звукових сигналів, таких як лінійний вхід, лінійний вихід або мікрофон, а alsactl - для управління параметрами драйверів ALSA. aplay використовується для відтворення звуку через ALSA.

Bb.PNG