Новая аудио подсистема для ОСРВ QNX4 – Audio2 презентация

Содержание

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

Слайд 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 поддерживает ограниченный

набор звуковых плат:

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


Слайд 5Обзор существующих решений : Audio
Audio
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 0.2 поддерживает следующий набор звуковых плат :


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


Слайд 8Обзор существующих решений : ALSA 0.2
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) http://www.opensound.com/pguide/index.html
ALSA (Advanced Linux

Sound Architecture) http://www.alsa-project.org
GPL (GNU General Public License) http://www.gnu.org/licenses/gpl.html
MIDI (Musical Instrument Digital Interface) http://www.midi.org/about-midi/specshome.shtml

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


Слайд 13Звуковая подсистема Audio2: Описание
Аудио сервер
Набор драйверов для аудио адаптеров
Набор утилит: миксер,

проигрыватель и звукозапись.

Audio2 состоит из следующих компонент:


Слайд 14Звуковая подсистема Audio2: Описание
C-Media CMI-8338/8738
Dummy Device
Sound Blaster Live!
AC’97
Audio2 на данный момент

поддерживает ограниченный набор звуковых плат:

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


Слайд 16Звуковая подсистема Audio2: Описание
Client
ioctl
Управление форматом аудио потока производится при помощи вызовов

ioctl. Для произведения и записи звука используются функции для записи и чтения файла соответственно.

read

write


Слайд 17Звуковая подсистема Audio2: Описание
Audio2
Server
/dev/dsp1
/dev/dsp2
/dev/mixer1
Audio2
Driver1
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
{
unsigned functions; // Набор флагов функций


func_t connect; // Соединение с сервером
func_t disconnect; // Отсоединение от сервера
func_t open; // _IO_OPEN
func_t close; // _IO_CLOSE
func_t read; // _IO_READ
func_t write; // _IO_WRITE
func_t sndctl; // _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


Слайд 26OSS
(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 != 44100 )
{
printf( “Can’t 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
Модульная система –

упрощает процесс разработки новых драйверов

Слайд 37SWD Software Ltd.
Официальный дистрибьютор QNX

196135, Санкт-Петербург, пр. Юрия Гагарина 23
тел.: (812)

102-0833
тел.: (812) 373-0260
факс: (812) 373-0497
web: http://www.swd.ru/
e-mail: qnx@swd.ru 

Спасибо!


Обратная связь

Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

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


Для правообладателей

Яндекс.Метрика