Операционные системы. Учебное пособие. Марапулец Ю.В. - 221 стр.

UptoLike

Составители: 

Взаимодействие приложения с драйвером организуется в виде взаимного обмена
потоками звуковых данных в реальном времени. От устройства ввода к приложению
идет непрерывный поток записанного звука, от приложения к устройству вывода - не-
прерывный поток воспроизводимого. Приложение должно успевать принимать записы-
ваемый поток и формировать воспроизводимый, иначе в звуковых потоках возникают
выпадения и помехи.
Звуковой буфер служит для переноса потоков между приложением и звуковым
драйвером. Он представляет собой область памяти, в которой хранится небольшой
фрагмент потока длительностью в десятки-сотни миллисекунд. Звуковые буферы соз-
даются приложением и затем передаются драйверу: пустые - для устройств ввода, за-
полненные звуковыми данными - для устройств вывода. Драйвер ставит полученные
буферы в очередь в порядке поступления; воспроизведение или запись данных ведется с
начала очереди.
После завершения обработки каждого очередного буфера драйвер возвращает его
приложению. С этого момента буфер доступен для повторного использования: он может
быть заполнен новыми данными и снова передан этому же или другому звуковому уст-
ройству для постановки в очередь. Таким образом, между драйвером и приложением
происходит циклическое «вращение» буферов, в которых переносятся звуковые потоки.
Для каждого звукового буфера приложением также создается заголовок (header) –
дескриптор, в который куда заносятся параметры буфера и режимы его обработки. Об-
мен буферами между приложением и драйвером происходит в виде обмена их дескрип-
торами. Если к моменту завершения обработки буфера устройства вывода в очереди не
имеется следующего буфера, то в выходном звуковом сигнале возникает пауза, но вывод
потока не прерывается. Если программа не успевает передать драйверу очередной буфер
для устройства записи, то фрагмент сигнала теряется.
Звуковые устройства делятся на синхронные и асинхронные. Синхронному уст-
ройству для выполнения операций записи/воспроизведения требуются все ресурсы цен-
трального процессора. Драйвер такого устройства, получив очередной буфер, не воз-
вращает управления до тех пор, пока буфер не будет заполнен или проигран. В очереди
драйвера синхронного устройства может находиться только один звуковой буфер. Асин-
хронное устройство работает независимо от центрального процессора, обрабатывая дан-
ные в выделенной области памяти и лишь изредка (один раз в несколько десятков мил-
лисекунд) сообщая драйверу о завершении обработки очередного фрагмента потока.
Драйвер асинхронного устройства возвращает управление сразу же после получения
очередного буфера, и в его очереди может находиться сколь угодно большое количество
буферов.
Звуковые адаптеры, способные одновременно записывать и воспроизводить раз-
личные звуковые потоки, называются полнодуплексными (full duplex). Соответствую-
щие устройства ввода и вывода в Windows могут быть открыты и использованы одно-
временно, и при этом встречные потоки никак не влияют друг на друга.
Адаптеры, способные в каждый момент времени работать только в одном режиме
(либо на запись, либо на воспроизведение), называются полудуплексными (half duplex).
Из соответствующей пары устройств в Windows одновременно может быть открыто
только одно - либо устройство ввода, либо устройство вывода. При попытке открытия
второго устройства возвращается ошибка «устройство занято».
Некоторые адаптеры обладают возможностью ограниченной полнодуплексной ра-
боты, например: только в монофоническом режиме (ряд адаптеров на микросхемах
ESS), только в восьмиразрядном режиме (большинство моделей Sound Blaster 16,
AWE32, SB 32, AWE64) и т.п. В остальных режимах такие адаптеры работают только в
полудуплексе.
223
     Взаимодействие приложения с драйвером организуется в виде взаимного обмена
потоками звуковых данных в реальном времени. От устройства ввода к приложению
идет непрерывный поток записанного звука, от приложения к устройству вывода - не-
прерывный поток воспроизводимого. Приложение должно успевать принимать записы-
ваемый поток и формировать воспроизводимый, иначе в звуковых потоках возникают
выпадения и помехи.
     Звуковой буфер служит для переноса потоков между приложением и звуковым
драйвером. Он представляет собой область памяти, в которой хранится небольшой
фрагмент потока длительностью в десятки-сотни миллисекунд. Звуковые буферы соз-
даются приложением и затем передаются драйверу: пустые - для устройств ввода, за-
полненные звуковыми данными - для устройств вывода. Драйвер ставит полученные
буферы в очередь в порядке поступления; воспроизведение или запись данных ведется с
начала очереди.
     После завершения обработки каждого очередного буфера драйвер возвращает его
приложению. С этого момента буфер доступен для повторного использования: он может
быть заполнен новыми данными и снова передан этому же или другому звуковому уст-
ройству для постановки в очередь. Таким образом, между драйвером и приложением
происходит циклическое «вращение» буферов, в которых переносятся звуковые потоки.
     Для каждого звукового буфера приложением также создается заголовок (header) –
дескриптор, в который куда заносятся параметры буфера и режимы его обработки. Об-
мен буферами между приложением и драйвером происходит в виде обмена их дескрип-
торами. Если к моменту завершения обработки буфера устройства вывода в очереди не
имеется следующего буфера, то в выходном звуковом сигнале возникает пауза, но вывод
потока не прерывается. Если программа не успевает передать драйверу очередной буфер
для устройства записи, то фрагмент сигнала теряется.
     Звуковые устройства делятся на синхронные и асинхронные. Синхронному уст-
ройству для выполнения операций записи/воспроизведения требуются все ресурсы цен-
трального процессора. Драйвер такого устройства, получив очередной буфер, не воз-
вращает управления до тех пор, пока буфер не будет заполнен или проигран. В очереди
драйвера синхронного устройства может находиться только один звуковой буфер. Асин-
хронное устройство работает независимо от центрального процессора, обрабатывая дан-
ные в выделенной области памяти и лишь изредка (один раз в несколько десятков мил-
лисекунд) сообщая драйверу о завершении обработки очередного фрагмента потока.
Драйвер асинхронного устройства возвращает управление сразу же после получения
очередного буфера, и в его очереди может находиться сколь угодно большое количество
буферов.
     Звуковые адаптеры, способные одновременно записывать и воспроизводить раз-
личные звуковые потоки, называются полнодуплексными (full duplex). Соответствую-
щие устройства ввода и вывода в Windows могут быть открыты и использованы одно-
временно, и при этом встречные потоки никак не влияют друг на друга.
     Адаптеры, способные в каждый момент времени работать только в одном режиме
(либо на запись, либо на воспроизведение), называются полудуплексными (half duplex).
Из соответствующей пары устройств в Windows одновременно может быть открыто
только одно - либо устройство ввода, либо устройство вывода. При попытке открытия
второго устройства возвращается ошибка «устройство занято».
     Некоторые адаптеры обладают возможностью ограниченной полнодуплексной ра-
боты, например: только в монофоническом режиме (ряд адаптеров на микросхемах
ESS), только в восьмиразрядном режиме (большинство моделей Sound Blaster 16,
AWE32, SB 32, AWE64) и т.п. В остальных режимах такие адаптеры работают только в
полудуплексе.



                                        223