Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×
👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
И в OSS и в ALSA аудио драйвер предоставляет интерфейсы для доступа к 1) mixer — регулирование громкости каналов, выбор канала для оцифровки, различные эффекты над каналами (если поддерживается аудио-контроллером аппаратно); 2) playback (dsp) — интерфейс для проигрывания сэмплов; 3) capture (dsp) — интерфейс для оцифровки сэмлов; 4) options — различные опции которые управляют аудио-контроллером.
1) С миксером (mixer), я думаю, понятно. Громкость каналов в OSS диапазон унифицирован, в ALSA необходимо запрашивать доступный диапазон. Выбор канала для оцифровки — типичный набор: mixer/stereo mix (захват сразу после выхода DAC), CD In, Line In, Mic In, возможна оцифровка сразу с нескольких источников. Пример эффектов: HP-Out Enable — включить выход на наушники, 6ch/8ch Downmix — при проигрывании многоканального звука складывать его в обычное стерео.
2) playback. Сэмпл может быть 8/16/24/32 bit signed/unsigned integer, может быть 32 bit float, stereo/mono/quad/6/8/10/12/... Сэмплы собираются во фраги (frag/fragment — фрагмент), у фрагментов есть частота дискретизации сэмплов 32000Hz/44100Hz/48000Hz/192000Hz/etc. Фраги собираются в буфера. Фраг является логической единицей при проигрывании буфера сэмплов. Как правило, после проигрывания одного фрага аудио контроллер останавливает проигрывание буфера по DMA и вызывает прерывание для того, чтобы только что отыгранный фраг был заменён новыми данными верхним уровнем. После проигрывания последнего фрага начинаем с начала — кольцевой буфер. При открытии playback канала, конфигурируют параметры сэмплов. Каналов может быть неограниченное количество (аппаратных или программных). Данные опять же как правило поступают порциями, кратными размеру фрага. Либо собираются верхним уровнем, либо требуют такого условия от приложений. Если данные не поступили во-время, наступает состояние underrun, playback канал останавливается, звук хрюкает:) Например, виндовые драйвера любят при underrun состоянии пускать последний фраг по кругу неограниченное количество раз, пока не поступят новые данные. По поводу состояния playback канала, он может быть либо остановлен, либо запущен (идёт постоянная выборка из буфера по DMA), либо стоять на паузе (просто приостановлена посылка по DMA). Есть ещё понятие latency при воспроизведении фрагов, можно расписать отдельно.
3) capture. Те же свойства, что и у playback. То же есть возможность работать с многоканальными платами захвата. При неуспевании вычитки фрагов наступает overrun состояние: когда вновь оцифрованный сэмпл переписал/собирается переписать ещё невычитанный из буфера.
4) options. Управление всем, что напрямую не относится к обработке звука. Например, задействовать второй/третий кодек на плате, etc.
И OSS и ALSA унифицируют доступ к такой аппаратуре, поэтому внутренняя архитектура практически идентична. OSS не поддерживает многопоточность и реентерабельность, ALSA поддерживает. Из-за того, что ALSA гибкая и лучше подходит для всякой новой аппаратуры её API раздулось до > 300 вызовов.

Про взаимодействие с другуми частями системы — что имелось в виду?

В принципе интересует внутренняя архитектура, конфигурирование и взаимодействие с другими частями системы. С прикладными аспектами как-н разберусь если буду понимть суть.

Спрашивай, что интересно про OSS и ALSA, я отвечу. Оба API знаю изнутри. Что почитать? Если по API — у ALSA полная документация, у OSS всё скупо, очень много зависит от драйвера. Как tutorial использования API я бы взял исходники SDL и для OSS и для ALSA — код выточен годами для работы под нагрузкой без глитчей. Если вопрос по документации по драйверам, то у ALSA скупая документация, у OSS лучше: developer.opensound.com — это 4front technologies, которая делала коммерческие OSS драйвера под различные операционки, сейчас открыла исходники своих DDK, там же документация и туториалы. OSS по большому счёту мёртв.

Начни с
www.alsa-project.org/...x.php/Main_Page

ps Английский, думаю, не проблема (?)

Сподіваюсь, це вам допоможе зорієнтуавтись: www.rozrobka.com/...opment/188.html

ALSA/OSS вобщем-то. Остальное, как я понимаю этажом выше.

Ну взаимодействие примерно такое rudd-o.com/...ulseaudio-works . А что надо ? драйвер подправить , микшер прикрутить или просто использовать ? Для использования есть , например, qt классы.

ну и www.alsa-project.org/...p/Documentation

Своевременность ответа — наше всё.

гы блин, на дату не посмотрел ...

которой из?;) ALSA, esd, OSS, pulsaudio, SDL, openAL?

Підписатись на коментарі