Составители:
Рубрика:
ройством либо со стандартным системным – в последнем случае служба пере-
назначения определяет нужное устройство.
Кроме трансляции запросов к нужному устройству, Wave Mapper может
выполнять и поиск наиболее подходящего устройства, поддерживающего тре-
буемый формат звука.
В Win32 имеется подсистема сжатия звука (Audio Compression Manager,
ACM), при помощи которой возможно взаимное преобразование звуковых фор-
матов – как внутри групп, так и между ними. Наряду с простыми преобразова-
ниями (изменением частоты дискретизации, количества каналов или разрядно-
сти отсчета) ACM предоставляет широкий набор форматов сжатия – ADPCM, a-
Law, mu-Law, MSN Audio, GSM, MPEG и т. п. Подсистема сжатия реализована в
виде набора так называемых кодеков (ACM Codec) – специальных драйверов
ACM, которые непосредственно занимаются переводом звука из одного форма-
та в другой. Сам же ACM – это диспетчер, который взаимодействует с приложе-
нием и по запрошенным форматам активизирует нужные кодеки, снабжая их
необходимыми параметрами. Служба ACM может использоваться как автоном-
но – через собственный отдельный интерфейс, так и автоматически – службой
Wave Mapper.
Когда приложение открывает конкретное звуковое устройство, указывая
требуемый формат потока, звуковая подсистема пытается связаться непосред-
ственно с драйвером устройства. Однако если устройство не поддерживает
требуемый формат, а обратившейся программой разрешена работа через Wave
Mapper, то подсистема может попытаться найти подходящий кодек ACM, ко-
торый способен в реальном времени преобразовывать один из «родных» фор-
матов устройства в формат, запрошенный приложением. Если такой кодек об-
наружен, подсистема прозрачно включает его в работу между драйвером
и приложением, а приложение может считать, что выбранный формат потока
поддерживается непосредственно устройством.
Звуковая подсистема нумерует установленные устройства начиная с нуля.
При установке нового устройства или удалении существующего нумерация из-
меняется, поэтому даже во время работы программы в системе могут появиться
или исчезнуть звуковые устройства. Вместо номера звукового устройства может
использоваться ключ (handle) ранее открытого устройства; система автоматиче-
ски определяет, какое именно значение передано интерфейсной функции. Как и
в случае с файлами, при открытии каждого звукового устройства система воз-
вращает его идентификатор, или ключ (handle), по которому затем происходит
вся остальная работа с устройством. Формально идентификаторы устройств
ввода и вывода имеют различные типы – HWAVEIN
и HWAVEOUT, однако оба они эквивалентны типу HWAVE, который может ис-
пользоваться для создания универсальных функций, не зависящих от типа уст-
ройства. Ключи звуковых устройств не имеют ничего общего с ключами фай-
лов, событий, окон, задач и т. п. Системные функции DuplicateHandle(),
CloseHandle() и прочие к ним неприменимы.
Несмотря на то, что большая часть функций интерфейса одинакова либо
138
ройством либо со стандартным системным – в последнем случае служба пере- назначения определяет нужное устройство. Кроме трансляции запросов к нужному устройству, Wave Mapper может выполнять и поиск наиболее подходящего устройства, поддерживающего тре- буемый формат звука. В Win32 имеется подсистема сжатия звука (Audio Compression Manager, ACM), при помощи которой возможно взаимное преобразование звуковых фор- матов – как внутри групп, так и между ними. Наряду с простыми преобразова- ниями (изменением частоты дискретизации, количества каналов или разрядно- сти отсчета) ACM предоставляет широкий набор форматов сжатия – ADPCM, a- Law, mu-Law, MSN Audio, GSM, MPEG и т. п. Подсистема сжатия реализована в виде набора так называемых кодеков (ACM Codec) – специальных драйверов ACM, которые непосредственно занимаются переводом звука из одного форма- та в другой. Сам же ACM – это диспетчер, который взаимодействует с приложе- нием и по запрошенным форматам активизирует нужные кодеки, снабжая их необходимыми параметрами. Служба ACM может использоваться как автоном- но – через собственный отдельный интерфейс, так и автоматически – службой Wave Mapper. Когда приложение открывает конкретное звуковое устройство, указывая требуемый формат потока, звуковая подсистема пытается связаться непосред- ственно с драйвером устройства. Однако если устройство не поддерживает требуемый формат, а обратившейся программой разрешена работа через Wave Mapper, то подсистема может попытаться найти подходящий кодек ACM, ко- торый способен в реальном времени преобразовывать один из «родных» фор- матов устройства в формат, запрошенный приложением. Если такой кодек об- наружен, подсистема прозрачно включает его в работу между драйвером и приложением, а приложение может считать, что выбранный формат потока поддерживается непосредственно устройством. Звуковая подсистема нумерует установленные устройства начиная с нуля. При установке нового устройства или удалении существующего нумерация из- меняется, поэтому даже во время работы программы в системе могут появиться или исчезнуть звуковые устройства. Вместо номера звукового устройства может использоваться ключ (handle) ранее открытого устройства; система автоматиче- ски определяет, какое именно значение передано интерфейсной функции. Как и в случае с файлами, при открытии каждого звукового устройства система воз- вращает его идентификатор, или ключ (handle), по которому затем происходит вся остальная работа с устройством. Формально идентификаторы устройств ввода и вывода имеют различные типы – HWAVEIN и HWAVEOUT, однако оба они эквивалентны типу HWAVE, который может ис- пользоваться для создания универсальных функций, не зависящих от типа уст- ройства. Ключи звуковых устройств не имеют ничего общего с ключами фай- лов, событий, окон, задач и т. п. Системные функции DuplicateHandle(), CloseHandle() и прочие к ним неприменимы. Несмотря на то, что большая часть функций интерфейса одинакова либо 138
Страницы
- « первая
- ‹ предыдущая
- …
- 136
- 137
- 138
- 139
- 140
- …
- следующая ›
- последняя »