Система UNIX і звук в мережі

Запускаючи програму на настільному компютері, зазвичай можна бути впевненим у тому, що дисплей і динаміки підключено до нього Для систем UNIX це не завжди так Широко поширена ситуація, коли монітор компютера, що виконує задачу, знаходиться в сусідній кімнаті або навіть в іншій країні B системі X window відмінно реалізована підтримка подібних підключень При будь-якому запуску Х-програми спочатку встановлюється мережеве підключення до машини, яка використовуватиметься як терміналу Подібний підхід виявився особливо корисний для роботи дослідників, яким необхідно проводити складні розрахунки на віддалених високошвидкісних суперкомпютерах, а зображення результатів обчислень отримувати на встановленій у них на столі графічної робочої станції

Якщо робота вашої програми виробляє звуки, то вам, очевидно, треба зробити так, щоб звуки відтворювалися через гучномовці, підключені до дисплея, а не до компютера, де запущена програма K жаль, X window не підтримує роботу зі звуком Щоб доповнити X window, створивши аналогічну мережеву модель для аудіосервер, корпорацією NCD була розроблена Network Audio System (NAS, система роботи зі звуком в мережі)

NAS дозволяє мати на різних компютерах що працює зі звуком програму і гучномовці Ця програма встановлює звязок з аудіосервер, після чого може посилати запити на проведення різних операцій Передачі звукових даних по мережі для виконання багатьох операцій не потрібно: сервер може зберігати звуки локально і відтворювати їх, або відтворювати звуки, користуючись іншими джерелами Ha практиці сервер NAS часто встановлюється на один компютер з клієнтом C сервера ftpxorg можна завантажити модулі підтримки NAS для багатьох поширених систем (у тому числі Solaris, Linux і FreeBSD)

Еслй ви не дуже добре знайомі з моделлю X window, вам може здатися, що термінисерверіклієнтмають значення, протилежні звичним, B розглянутому випадку сервер працює на вашому настільному компютері, а клієнтська частина може працювати в мережі будь-де Зазвичай і сервер, і клієнт запускаються на одному компютері Можливо, ситуація стане зрозумілішою, якщо згадати, що термін «сервер» просто позначає «програму, яка надає деякий сервіс» Сервер NAS забезпечує сервіс управління фізичними гучномовцями

Розглянутий тут клас програвача для NAS аналогічний відповідним класам для Mac OS і Windows Відрізняє їх, по-перше, те, що пропонований мною цикл подій обробляє події, джерелом яких є аудіосервер (в Х-програмі ці події оброблялися б за допомогою

Х-обробника подій) Інша відмінність полягає в тому, що моя програм-

ма необовязково повинна бути многопотоковой

Вся підтримка подвійний буферизації здійснюється аудіосервер, мені при-

ходиться тільки передавати відповіді на запити додаткових порцій даних

Лістинг 81 Програма nasplayrh

/ * Клас програвача для мережевих аудіосистем * /

#ifndef NASPLAYER_H_INCLUDED

#define NASPLAYER_H_INCLUDED

#include &quotaudioh&quot

#include &quotaplayerh&quot

extern C {/ * Оголошення NAS * /

#include &ltaudio/audiolibh&gt

}

class NasPlayer : public AbstractPlayer {

private:

bool _finished / / Істина, якщо всі дані відтворені

public:

NasPlayer(AudioAbstract *a):AbstractPlayer(a) {

_finished = false

}

~NasPlayer() {}

void Play () / / Власне відтворення

}

#endif

Лістинг 82 Програма nasplayrcpp

#include &lttypeinfo&gt

#include &ltiostream&gt

#include &ltfstream&gt

#include &quotaudioh&quot

#include &quotaplayerh&quot

#include &quotnasplayrh&quot

Джерело: Кінтцель Т Керівництво програміста по роботі зі звуком = A Programmers Guide to Sound: Пер з англ М: ДМК Пресс, 2000 432 с, іл (Серія «Для програмістів»)

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*