Новая аудио подсистема для ОСРВ QNX4 – Audio2 Олег Большаков инженер-программист «СВД Встраиваемые Системы» Санкт-Петербург.

Презентация:



Advertisements
Похожие презентации
Аппаратная экосистема QNX: поддерживаемые процессорные платы и стартовые комплекты SWD TimeMaster Эдуард Белохвостиков SWD Software Ltd. Санкт-Петербург.
Advertisements

IDE QNX – практическая работа Трофимов Александр SWD Software.
Настройка системы печати в ОС QNX 6 Cергей Зыль SWD Software.
Сеньков Андрей SWD Software Ltd. Санкт-Петербург Особенности разработки драйверов для USB устройств в ОС QNX.
Администраторы ресурсов в QNX. Администратор ресурсов в QNX является пользовательской программой, которая предоставляет стандартизированный по интерфейсу.
Системные вызовы и библиотеки Unix SVR4 Введение.
Построение систем высокой надёжности на базе ОСРВ QNX.
Иванов Сергей, ННГУ ВМК ФОТ БС Разработка мультимедийных приложений для MeeGo.
Вычисление времени запрета обработки внешних прерываний ОС с использованием ячейки МПВ-М Магистерская диссертация Студент: Севастинович Павел, 515 гр.
Содержание 1. Введение GIMP многоплатформенное программное обеспечение для работы над изображениями. Редактор GIMP пригоден для решения множества задач.
OpenGL и Direct3D сравнение стандартов Выполнил: Пенкин А. Группа И-204.
Архитектура операционной системы. Ядро и вспомогательные модули операционной системы При функциональной декомпозиции ОС модули разделяются на две группы:

Обзор операционных систем ВОУНБ им. М. Горького «Операционная система - это совокупность программ, обеспечивающих управление процессом обработки информации.
Модульное лицензирование Александр Варварик SWD Real-Time Systems Конференция QNX Россия сентября, Санкт-Петербург.
Безопасность систем на базе сертифицированной ОСРВ QNX КПДА Александр Трофимов.
Поддержка мультимедиа в QNX6. Рассматриваемые вопросы Мультимедийные средства командной строки Утилиты графической оболочки Photon Подключаемые модули.
Операционные системы, среды и оболочки Ввод-вывод. Файловая система.
Дисциплина: Организация, принципы построения и функционирования компьютерных сетей Лекция 4 Многоуровневые коммуникации в сетях.
Программное обеспечение компьютера Автор: Устецкая О. В.
Транксрипт:

Новая аудио подсистема для ОСРВ QNX4 – Audio2 Олег Большаков инженер-программист «СВД Встраиваемые Системы» Санкт-Петербург

Обзор существующих решений Аудио подсистема Audio Аудио подсистема ALSA 0.2 (Advanced Linux Sound Architecture) Недостатки существующих аудио подсистем

Обзор существующих решений : Audio Adlib Sound Blaster ProAudio Spectrum Microsoft Sound System Roland MPU-401 Audio /dev/dsp /dev/fm /dev/midi Audio поддерживает ограниченный набор звуковых плат:

Обзор существующих решений : Audio Audio /dev/dsp /dev/fm /dev/midi /dev/dsp /dev/fm (Adlib) /dev/midi (Roland MPU­401) Audio создаёт несколько устройств:

Обзор существующих решений : Audio Audio /dev/dsp /dev/fm /dev/midi Client ioctl Управление форматом аудио потока производится при помощи вызовов ioctl. Для произведения и записи звука используются функции для записи и чтения файла соответственно. read write

Обзор существующих решений : ALSA 0.2 4D Wave Ensoniq AudioPCI ESS Solo 1 Yamaha OPL3-SA OPTI 930/931 SoundBlaster 16/Pro SoundBlaster Live! VIA SuperSouth (VT686A) ALSA /dev/pcmXX /dev/mixerXX /dev/controlXX ALSA 0.2 поддерживает следующий набор звуковых плат :

Обзор существующих решений : ALSA 0.2 /dev/pcmXX /dev/mixerXX /dev/controlXX ALSA /dev/pcmXX /dev/mixerXX /dev/controlXX ALSA создаёт несколько аудио устройств:

Обзор существующих решений : ALSA 0.2 ALSA /dev/pcmXX /dev/mixerXX /dev/controlXX Client ioctl Управление форматом аудио потока производится при помощи вызовов ioctl. Для произведения и записи звука используются функции для записи и чтения файла соответственно. read write

Обзор существующих решений : Недостатки аудио подсистем Отсутствует поддержка миксера ( /dev/mixer ) Нет поддержки современных аудио контроллеров Не модульная система Невозможность разработки новых драйверов Audio обладает рядом недостатков:

Обзор существующих решений : Недостатки аудио подсистем Отсутствует поддержка современных контроллеров Старая версия портированная в QNX (текущая версия 1.0.6) Сложность разработки новых драйверов Не совместима с OSS (Open Sound System) Лицензия GPL (GNU General Public License) ALSA 0.2 обладает следующим рядом недостатков:

Обзор существующих решений : Ссылки OSS (Open Sound System) ALSA (Advanced Linux Sound Architecture) GPL (GNU General Public License) MIDI (Musical Instrument Digital Interface)

Звуковая подсистема Audio2 Описание Разработка драйверов Разработка приложений

Звуковая подсистема Audio2: Описание Аудио сервер Набор драйверов для аудио адаптеров Набор утилит: миксер, проигрыватель и звукозапись. Audio2 состоит из следующих компонент:

Звуковая подсистема Audio2: Описание Audio2 Server /dev/dspX /dev/midiX /dev/mixerX Audio2 Driver C-Media CMI-8338/8738 Dummy Device Sound Blaster Live! AC97 Audio2 на данный момент поддерживает ограниченный набор звуковых плат:

Звуковая подсистема Audio2: Описание Audio2 Server /dev/dspX /dev/midiX /dev/mixerX Audio2 Driver /dev/dspX /dev/midiX /dev/mixerX Audio2 создаёт следующие аудио устройства:

Звуковая подсистема Audio2: Описание Audio2 Server /dev/dspX /dev/midiX /dev/mixerX Audio2 Driver Client ioctl Управление форматом аудио потока производится при помощи вызовов ioctl. Для произведения и записи звука используются функции для записи и чтения файла соответственно. read write

Звуковая подсистема Audio2: Описание Audio2 Server /dev/dsp1 /dev/dsp2 /dev/mixer1 Audio2 Driver1 /dev/dsp0 /dev/midi0 /dev/mixer0 Audio2 Driver2 Audio2 – это модульная система. Модули могут быть загружены и выгружены в любой момент времени.

Звуковая подсистема Audio2: Описание С Audio2 работают приложения разработанные для Audio: CD-проигрыватель phcd MP3-проигрыватель mpg123 Игровые программы, например, doom

Звуковая подсистема Audio2: Разработка драйверов A2.Drv_name Для разработки драйверов поставляется библиотека, обеспечивающая интерфейс с Audio2 сервером. Разработка аппаратной части драйвера полностью производится системным программистом на основе каркаса dummy драйвера. a2_driver.lib hw_part.c

Звуковая подсистема Audio2: Разработка драйверов Audio2 Driver Аудио драйвер должен реализовать две функции для присоединения к Audio2 серверу: dev_connect() – подсоединение к серверу dev_disconnect() – отсоединение от сервера (опционально)

Звуковая подсистема Audio2: Разработка драйверов Audio2 Driver Драйвер должен реализовать следующий набор функций для обеспечения своей функциональности: dev_open() – открытие устройства ( dspX, mixerX ) dev_close() – закрытие устройства dev_write() – запись в устройство (опционально) dev_read() – чтение из устройства (опционально) dev_sndctl() – обработка ioctl() (опционально)

Звуковая подсистема Audio2: Разработка драйверов typedef struct { unsignedfunctions;// Набор флагов функций func_tconnect;// Соединение с сервером func_tdisconnect;// Отсоединение от сервера func_topen;// _IO_OPEN func_tclose;// _IO_CLOSE func_tread;// _IO_READ func_twrite;// _IO_WRITE func_tsndctl;// _IO_SNDCTL } a2_drv_func_t;

Звуковая подсистема Audio2: Разработка драйверов a2_derv_func_t a2_func = { A2_DRV_CONNECT | A2_DRV_OPEN | A2_DRV_CLOSE | A2_DRV_WRITE, (func_t)( dev_connect ), (func_t)( NULL ), (func_t)( dev_open ), (func_t)( dev_close ), (func_t)( NULL ), (func_t)( dev_write ), (func_t)( NULL ) };

Звуковая подсистема Audio2: Разработка драйверов int far dev_connect( … ) { // 1. Поиск устройства // 2. Определение возможностей и инициализация // устройства // 3. Заполнение структуры с информацией об // устройстве // ( характеристики PCI: VendorID, DeviceID, // PCIindex; число устройств dsp, midi, mixer ) // 4. В случае успешного завершение вернуть 0 }

Звуковая подсистема Audio2: Разработка драйверов Audio2 Server Audio2 Driver1 Client1 Client2 Audio2 Driver2 Card1 Card2

OSS (Open Sound System) Звуковая подсистема Audio2: Разработка приложений Audio2 Audio Audio2 совместима с Audio. Все ранее разработанные программы будут работать с Audio2. При этом Audio2 поддерживает стандарт OSS на уровне исходных кодов.

Звуковая подсистема Audio2: Разработка приложений a2_audio.h Для разработки аудио приложений Audio2 предоставляет заголовочный файл a2_audio.h, с командами функции ioctl() для аудиоустройств. При этом обеспечивается совместимость с OSS на уровне исходных кодов.

Стандарт OSS Описание OSS Разработка приложений для Audio2

Стандарт OSS: Описание Единый API для различного типа оборудования на различных аппаратных платформах Поддержка PCM (Pulse-Code Modulation) и MIDI устройств Управление параметрами звука производится через специальное устройство - mixer

Стандарт OSS: Описание Linux FreeBSD OpenBSD NetBSD Solaris HP-UX Стандарт OSS поддерживается большим числом широко распространённых операционных систем.

Стандарт OSS: Разработка приложений для Audio2 1. Подключить заголовочный файл Audio2: #include 2. Открыть аудио устройство для чтения: if ( ( afd = open( /dev/dsp0, O_RDONLY, 0 ) )== -1 ) { perror( open() ); exit( -EXIT_FAILURE ); }

Стандарт OSS: Разработка приложений для Audio2 3. Установить частоту дискретизации: rate = 44100; if ( ioctl( afd, SOUND_PCM_WRITE_RATE, &rate ) == -1 ) { perror( ioctl() ); exit( -EXIT_FAILURE ); } if ( rate != ) { printf( Cant set samplerate to 44100\n ); exit( -EXIT_FAILURE ); }

Стандарт OSS: Разработка приложений для Audio2 4. Установить число каналов: … if ( ioctl( afd, SOUND_PCM_WRITE_CHANNELS, &channels ) == -1 ) { … 5. Установить формат аудио потока: … if ( ioctl( afd, SOUND_PCM_WRITE_BITS, &bits ) == -1 ) { …

Стандарт OSS: Разработка приложений для Audio2 6. Прочитать из аудио устройства: if ( ( len = read( afd, buff, 4096 ) ) == -1 ) { perror( read() ); exit( -EXIT_FAILURE ); } 7. Закрыть аудио устройство: close( afd );

Выводы Поддержка аудио устройств в QNX4 существует только для устаревшего оборудования Audio2 должна решить эту проблему, поскольку обладает рядом преимуществ

Выводы: Audio2 Поддержка современного оборудования Поддержка широко распространенного аудио стандарта OSS Модульная система – упрощает процесс разработки новых драйверов

SWD Software Ltd. Официальный дистрибьютор QNX , Санкт-Петербург, пр. Юрия Гагарина 23 тел.: (812) тел.: (812) факс: (812) web: Спасибо!