Программирование мультимедиа-систем - 36 стр.

UptoLike

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

- 36 -
В работе [6] приведен полный С-код приложения MCIWAVER, де-
монстрирующего использование интерфейса управляющих сообщений
MCI для воспроизведения звуковых WAV-файлов; использование этого
интерфейса для управления CD ROM и проигрывания MIDI-файлов при-
ведено также в подразделах 3.7.2 и 3.8.2 данной работы.
3.6.
Интерфейс низкого уровня
Программным интерфейсом низкого уровня удобно пользоваться в
случае необходимости иметь непосредственный д
оступ к буферам, содер-
жащим мультимедиа-данные; для случая работы со звуковыми файлами
интерфейс обеспечивается несколькими функциями, имеющими префикс
wave (например, waveInOpen, waveOutOpen, waveOutWrite, waveAdd-
Buffer
и т.д., причем функции экспортируются из файла mmsystem.dll).
Общая последовательность использования интерфейса низкого уровня
заключается в чтении и проверке формата заголовка WAV-файла, откры-
тия устройства вывода с указанием конкретного формата звуковых дан-
ных, блочного чтения данных WAV-файла, подготовки специальной
функцией для вывода и передаче данных драйверу устройства вывода
(драйвер выводит их на звуковой адаптер). При этом приложение должно
самостоятельно подготовит блоки данных в оперативной памяти.
Запись звуковых данных осуществляется аналогично. В первую оче-
редь открывается устройство ввода (ему указывается формат звуковых
данных), далее заказывается один или несколько блоков памяти (они под-
готавливаются для ввода путем вызова специальной функции), подготов-
ленные таким образом блоки по мере необходимости передаются драйверу
устройства ввода (драйвер заполняет их записанными звуковыми данны-
ми). С целью сохранения записанных данных в WAV-файле приложение
должно сформировать и записать в файл заголовок WAV-файла и звуковые
данные из подготовленных и заполненных драйвером устройства ввода
блоков памяти.
Программный интерфейс низкого уровня требует внимательного уче-
та всех деталей процесса записи и воспроизведения
(в отличие от интер-
фейса MCI, где многие параметры принимаются по умолчанию). Как все-
гда, б
ольшая трудоемкость программирования интерфейса низкого уровня
компенсируется повышенной гибкостью и возможностью работы со звуко-
выми данными в реальном времени.
3.6.1.
Формат wav-файла, информация о RIFF-структуре файлов
Имеющие отношение к мультимедиа данные (звук, видео и др.) хра-
нятся в файлах т.н.
RIFF-формата (Resource Interchange File Format -
                                  - 36 -


    В работе [6] приведен полный С-код приложения MCIWAVER, де-
монстрирующего использование интерфейса управляющих сообщений
MCI для воспроизведения звуковых WAV-файлов; использование этого
интерфейса для управления CD ROM и проигрывания MIDI-файлов при-
ведено также в подразделах 3.7.2 и 3.8.2 данной работы.

  3.6. Интерфейс низкого уровня

     Программным интерфейсом низкого уровня удобно пользоваться в
случае необходимости иметь непосредственный доступ к буферам, содер-
жащим мультимедиа-данные; для случая работы со звуковыми файлами
интерфейс обеспечивается несколькими функциями, имеющими префикс
wave (например, waveInOpen, waveOutOpen, waveOutWrite, waveAdd-
Buffer и т.д., причем функции экспортируются из файла mmsystem.dll).
     Общая последовательность использования интерфейса низкого уровня
заключается в чтении и проверке формата заголовка WAV-файла, откры-
тия устройства вывода с указанием конкретного формата звуковых дан-
ных, блочного чтения данных WAV-файла, подготовки специальной
функцией для вывода и передаче данных драйверу устройства вывода
(драйвер выводит их на звуковой адаптер). При этом приложение должно
самостоятельно подготовит блоки данных в оперативной памяти.
     Запись звуковых данных осуществляется аналогично. В первую оче-
редь открывается устройство ввода (ему указывается формат звуковых
данных), далее заказывается один или несколько блоков памяти (они под-
готавливаются для ввода путем вызова специальной функции), подготов-
ленные таким образом блоки по мере необходимости передаются драйверу
устройства ввода (драйвер заполняет их записанными звуковыми данны-
ми). С целью сохранения записанных данных в WAV-файле приложение
должно сформировать и записать в файл заголовок WAV-файла и звуковые
данные из подготовленных и заполненных драйвером устройства ввода
блоков памяти.
     Программный интерфейс низкого уровня требует внимательного уче-
та всех деталей процесса записи и воспроизведения (в отличие от интер-
фейса MCI, где многие параметры принимаются по умолчанию). Как все-
гда, большая трудоемкость программирования интерфейса низкого уровня
компенсируется повышенной гибкостью и возможностью работы со звуко-
выми данными в реальном времени.

  3.6.1. Формат wav-файла, информация о RIFF-структуре файлов

    Имеющие отношение к мультимедиа данные (звук, видео и др.) хра-
нятся в файлах т.н. RIFF-формата (Resource Interchange File Format -