Составители:
Рубрика:
симметрична для устройств ввода и вывода, разработчики Microsoft по непо-
нятной причине разделили названия функций для устройств ввода
и вывода: каждая функция имеет префикс, состоящий из типа и «ориентации»
устройства: midiIn, waveOut и т. п. С одной стороны, это способствует защите
от ошибок, но с другой – усложняет создание универсальных функций и клас-
сов, в которых направление передачи задается параметром.
Главным недостатком звуковой подсистемы MME, реализованной
в Windows 9x, является то, что подсистема и ее драйверы так и остались
16-разрядными, как и в Windows 3.x. Из-за этого каждое обращение к звуковому
драйверу из Win32-приложения сопровождается двойной сменой режима испол-
нения (thunking), что приводит к дополнительным временным расходам, которые
могут доходить до единиц миллисекунд. Кроме того, многие драйверы ограничи-
вают частоту обновления кольцевого буфера, через который идет обмен между
компьютером и адаптером, до нескольких десятков раз в секунду, отчего в процес-
се передачи звука возникает отставание (latency). У драйверов для адаптеров ISA
это отставание может достигать десятков миллисекунд, у драйверов для адаптеров
PCI оно обычно ограничивается единицами миллисекунд.
Для более оперативного вывода звука, особенно с модификацией его
в реальном времени, в Microsoft разработан более новый интерфейс –
DirectSound. Этот интерфейс призван «приблизить» аппаратуру адаптера
к прикладной программе и позволяет ей практически напрямую записывать
звук в системный кольцевой буфер, сводя максимальные задержки к единицам
миллисекунд для любого адаптера. При работе с DirectSound программа обра-
щается непосредственно к 32-разрядному системному драйверу адаптера
(VxD), минуя переключения между 32- и 16-разрядным режимом исполнения.
В целях эффективной работы интерфейс DirectSound должен поддерживаться
системным драйвером адаптера. Для устройств, драйверы которых не поддер-
живают DirectSound, Windows эмулирует новый интерфейс «поверх» обычного
MME-драйвера, но в этом случае все задержки даже возрастают из-за наклад-
ных расходов на эмуляцию.
К сожалению, Microsoft разработала спецификацию расширения Direct-
Sound для звуковых VxD только в части воспроизведения звука, действуя пре-
жде всего в интересах производителей игр. Запись звука через DirectSound до
сих пор ведется путем эмуляции поверх MME.
Следует отметить, что звуковая подсистема Windows 3.x. и 9x, равно как
и подсистема удаленного доступа к сети (RAS), обладает низкой устойчиво-
стью к ошибкам. Это чаще всего проявляется в том, что при аварийном завер-
шении программы, открывшей звуковые устройства и работающей с ними,
система не выполняет корректного закрытия (cleanup) используемых уст-
ройств. В результате этого в ряде случаев после такого аварийного завершения
может потребоваться перезагрузка, а до тех пор незакрытые устройства будут
недоступны другим приложениям. Кроме того, 16-разрядные подсистемы за-
щищены от ошибок гораздо меньше 32-разрядных, так что серьезные ошибки
в звуковых программах могут приводить к сбоям и «зависаниям» всей системы
139
симметрична для устройств ввода и вывода, разработчики Microsoft по непо- нятной причине разделили названия функций для устройств ввода и вывода: каждая функция имеет префикс, состоящий из типа и «ориентации» устройства: midiIn, waveOut и т. п. С одной стороны, это способствует защите от ошибок, но с другой – усложняет создание универсальных функций и клас- сов, в которых направление передачи задается параметром. Главным недостатком звуковой подсистемы MME, реализованной в Windows 9x, является то, что подсистема и ее драйверы так и остались 16-разрядными, как и в Windows 3.x. Из-за этого каждое обращение к звуковому драйверу из Win32-приложения сопровождается двойной сменой режима испол- нения (thunking), что приводит к дополнительным временным расходам, которые могут доходить до единиц миллисекунд. Кроме того, многие драйверы ограничи- вают частоту обновления кольцевого буфера, через который идет обмен между компьютером и адаптером, до нескольких десятков раз в секунду, отчего в процес- се передачи звука возникает отставание (latency). У драйверов для адаптеров ISA это отставание может достигать десятков миллисекунд, у драйверов для адаптеров PCI оно обычно ограничивается единицами миллисекунд. Для более оперативного вывода звука, особенно с модификацией его в реальном времени, в Microsoft разработан более новый интерфейс – DirectSound. Этот интерфейс призван «приблизить» аппаратуру адаптера к прикладной программе и позволяет ей практически напрямую записывать звук в системный кольцевой буфер, сводя максимальные задержки к единицам миллисекунд для любого адаптера. При работе с DirectSound программа обра- щается непосредственно к 32-разрядному системному драйверу адаптера (VxD), минуя переключения между 32- и 16-разрядным режимом исполнения. В целях эффективной работы интерфейс DirectSound должен поддерживаться системным драйвером адаптера. Для устройств, драйверы которых не поддер- живают DirectSound, Windows эмулирует новый интерфейс «поверх» обычного MME-драйвера, но в этом случае все задержки даже возрастают из-за наклад- ных расходов на эмуляцию. К сожалению, Microsoft разработала спецификацию расширения Direct- Sound для звуковых VxD только в части воспроизведения звука, действуя пре- жде всего в интересах производителей игр. Запись звука через DirectSound до сих пор ведется путем эмуляции поверх MME. Следует отметить, что звуковая подсистема Windows 3.x. и 9x, равно как и подсистема удаленного доступа к сети (RAS), обладает низкой устойчиво- стью к ошибкам. Это чаще всего проявляется в том, что при аварийном завер- шении программы, открывшей звуковые устройства и работающей с ними, система не выполняет корректного закрытия (cleanup) используемых уст- ройств. В результате этого в ряде случаев после такого аварийного завершения может потребоваться перезагрузка, а до тех пор незакрытые устройства будут недоступны другим приложениям. Кроме того, 16-разрядные подсистемы за- щищены от ошибок гораздо меньше 32-разрядных, так что серьезные ошибки в звуковых программах могут приводить к сбоям и «зависаниям» всей системы 139
Страницы
- « первая
- ‹ предыдущая
- …
- 137
- 138
- 139
- 140
- 141
- …
- следующая ›
- последняя »