Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемДиана Тихомирова
1 Новая аудио подсистема для ОСРВ QNX4 – Audio2 Олег Большаков инженер-программист «СВД Встраиваемые Системы» Санкт-Петербург
2 Обзор существующих решений Аудио подсистема Audio Аудио подсистема ALSA 0.2 (Advanced Linux Sound Architecture) Недостатки существующих аудио подсистем
3 Обзор существующих решений : Audio Adlib Sound Blaster ProAudio Spectrum Microsoft Sound System Roland MPU-401 Audio /dev/dsp /dev/fm /dev/midi Audio поддерживает ограниченный набор звуковых плат:
4 Обзор существующих решений : Audio Audio /dev/dsp /dev/fm /dev/midi /dev/dsp /dev/fm (Adlib) /dev/midi (Roland MPU401) Audio создаёт несколько устройств:
5 Обзор существующих решений : Audio Audio /dev/dsp /dev/fm /dev/midi Client ioctl Управление форматом аудио потока производится при помощи вызовов ioctl. Для произведения и записи звука используются функции для записи и чтения файла соответственно. read write
6 Обзор существующих решений : 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 поддерживает следующий набор звуковых плат :
7 Обзор существующих решений : ALSA 0.2 /dev/pcmXX /dev/mixerXX /dev/controlXX ALSA /dev/pcmXX /dev/mixerXX /dev/controlXX ALSA создаёт несколько аудио устройств:
8 Обзор существующих решений : ALSA 0.2 ALSA /dev/pcmXX /dev/mixerXX /dev/controlXX Client ioctl Управление форматом аудио потока производится при помощи вызовов ioctl. Для произведения и записи звука используются функции для записи и чтения файла соответственно. read write
9 Обзор существующих решений : Недостатки аудио подсистем Отсутствует поддержка миксера ( /dev/mixer ) Нет поддержки современных аудио контроллеров Не модульная система Невозможность разработки новых драйверов Audio обладает рядом недостатков:
10 Обзор существующих решений : Недостатки аудио подсистем Отсутствует поддержка современных контроллеров Старая версия портированная в QNX (текущая версия 1.0.6) Сложность разработки новых драйверов Не совместима с OSS (Open Sound System) Лицензия GPL (GNU General Public License) ALSA 0.2 обладает следующим рядом недостатков:
11 Обзор существующих решений : Ссылки OSS (Open Sound System) ALSA (Advanced Linux Sound Architecture) GPL (GNU General Public License) MIDI (Musical Instrument Digital Interface)
12 Звуковая подсистема Audio2 Описание Разработка драйверов Разработка приложений
13 Звуковая подсистема Audio2: Описание Аудио сервер Набор драйверов для аудио адаптеров Набор утилит: миксер, проигрыватель и звукозапись. Audio2 состоит из следующих компонент:
14 Звуковая подсистема Audio2: Описание Audio2 Server /dev/dspX /dev/midiX /dev/mixerX Audio2 Driver C-Media CMI-8338/8738 Dummy Device Sound Blaster Live! AC97 Audio2 на данный момент поддерживает ограниченный набор звуковых плат:
15 Звуковая подсистема Audio2: Описание Audio2 Server /dev/dspX /dev/midiX /dev/mixerX Audio2 Driver /dev/dspX /dev/midiX /dev/mixerX Audio2 создаёт следующие аудио устройства:
16 Звуковая подсистема Audio2: Описание Audio2 Server /dev/dspX /dev/midiX /dev/mixerX Audio2 Driver Client ioctl Управление форматом аудио потока производится при помощи вызовов ioctl. Для произведения и записи звука используются функции для записи и чтения файла соответственно. read write
17 Звуковая подсистема Audio2: Описание Audio2 Server /dev/dsp1 /dev/dsp2 /dev/mixer1 Audio2 Driver1 /dev/dsp0 /dev/midi0 /dev/mixer0 Audio2 Driver2 Audio2 – это модульная система. Модули могут быть загружены и выгружены в любой момент времени.
18 Звуковая подсистема Audio2: Описание С Audio2 работают приложения разработанные для Audio: CD-проигрыватель phcd MP3-проигрыватель mpg123 Игровые программы, например, doom
19 Звуковая подсистема Audio2: Разработка драйверов A2.Drv_name Для разработки драйверов поставляется библиотека, обеспечивающая интерфейс с Audio2 сервером. Разработка аппаратной части драйвера полностью производится системным программистом на основе каркаса dummy драйвера. a2_driver.lib hw_part.c
20 Звуковая подсистема Audio2: Разработка драйверов Audio2 Driver Аудио драйвер должен реализовать две функции для присоединения к Audio2 серверу: dev_connect() – подсоединение к серверу dev_disconnect() – отсоединение от сервера (опционально)
21 Звуковая подсистема Audio2: Разработка драйверов Audio2 Driver Драйвер должен реализовать следующий набор функций для обеспечения своей функциональности: dev_open() – открытие устройства ( dspX, mixerX ) dev_close() – закрытие устройства dev_write() – запись в устройство (опционально) dev_read() – чтение из устройства (опционально) dev_sndctl() – обработка ioctl() (опционально)
22 Звуковая подсистема 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;
23 Звуковая подсистема 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 ) };
24 Звуковая подсистема Audio2: Разработка драйверов int far dev_connect( … ) { // 1. Поиск устройства // 2. Определение возможностей и инициализация // устройства // 3. Заполнение структуры с информацией об // устройстве // ( характеристики PCI: VendorID, DeviceID, // PCIindex; число устройств dsp, midi, mixer ) // 4. В случае успешного завершение вернуть 0 }
25 Звуковая подсистема Audio2: Разработка драйверов Audio2 Server Audio2 Driver1 Client1 Client2 Audio2 Driver2 Card1 Card2
26 OSS (Open Sound System) Звуковая подсистема Audio2: Разработка приложений Audio2 Audio Audio2 совместима с Audio. Все ранее разработанные программы будут работать с Audio2. При этом Audio2 поддерживает стандарт OSS на уровне исходных кодов.
27 Звуковая подсистема Audio2: Разработка приложений a2_audio.h Для разработки аудио приложений Audio2 предоставляет заголовочный файл a2_audio.h, с командами функции ioctl() для аудиоустройств. При этом обеспечивается совместимость с OSS на уровне исходных кодов.
28 Стандарт OSS Описание OSS Разработка приложений для Audio2
29 Стандарт OSS: Описание Единый API для различного типа оборудования на различных аппаратных платформах Поддержка PCM (Pulse-Code Modulation) и MIDI устройств Управление параметрами звука производится через специальное устройство - mixer
30 Стандарт OSS: Описание Linux FreeBSD OpenBSD NetBSD Solaris HP-UX Стандарт OSS поддерживается большим числом широко распространённых операционных систем.
31 Стандарт OSS: Разработка приложений для Audio2 1. Подключить заголовочный файл Audio2: #include 2. Открыть аудио устройство для чтения: if ( ( afd = open( /dev/dsp0, O_RDONLY, 0 ) )== -1 ) { perror( open() ); exit( -EXIT_FAILURE ); }
32 Стандарт 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 ); }
33 Стандарт OSS: Разработка приложений для Audio2 4. Установить число каналов: … if ( ioctl( afd, SOUND_PCM_WRITE_CHANNELS, &channels ) == -1 ) { … 5. Установить формат аудио потока: … if ( ioctl( afd, SOUND_PCM_WRITE_BITS, &bits ) == -1 ) { …
34 Стандарт OSS: Разработка приложений для Audio2 6. Прочитать из аудио устройства: if ( ( len = read( afd, buff, 4096 ) ) == -1 ) { perror( read() ); exit( -EXIT_FAILURE ); } 7. Закрыть аудио устройство: close( afd );
35 Выводы Поддержка аудио устройств в QNX4 существует только для устаревшего оборудования Audio2 должна решить эту проблему, поскольку обладает рядом преимуществ
36 Выводы: Audio2 Поддержка современного оборудования Поддержка широко распространенного аудио стандарта OSS Модульная система – упрощает процесс разработки новых драйверов
37 SWD Software Ltd. Официальный дистрибьютор QNX , Санкт-Петербург, пр. Юрия Гагарина 23 тел.: (812) тел.: (812) факс: (812) web: Спасибо!
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.