3.1.3 Основные функции, необходимые для воспроизведения звука.
Для воспроизведения звуковой информации первая функция waveOutOpen. Она открывает устройство вывода для звукового потока. В модуле она объявлена следующим образом:
MMRESULT waveOutOpen (LPHWAVEIN phwi,
UINT_PTR uDeviceID, LPWAVEFORMATEX pwfx, DWORD_PTR dwCallback, DWORD_PTR dwCallbacklnstance, DWORD fdwOpen);
В функции определен ряд параметров. Рассмотрим их основное назначение
phwi - адрес, по которому будет записан указатель на устройство воспроизведения;
UDeviceID - идентификатор устройства, которое необходимо открыть, если поставить сюда константу WAVE_MAPPER, то откроется устройство по умолчанию.
lpFormat - указатель на структуру типа WAVEFORMATEX, в которой описан формат воспроизводимых звуковых данных.
dwCallback - указатель на функцию «семафор». Эта функция вызывается для сообщения о текущих событиях.
dwFlags - параметры открываемого устройства. Может принимать следующие значения, совпадающие со значениями fdwOpen для функции wavelnOpen
Структура WAVEFORMATEX для воспроизведения звуковой информации имеет такой же вид, как и для записи. Однако при воспроизведении звука, она заполняется автоматически при выборе воспроизводимого файла.
Теперь предстоит подготовить заголовки, которые будут отправляться драйверу. Для этого есть функция waveOutPrepareHeader
MMRESULT waveOutPrepareHeader(HWAVEOUT hwo,
LPWAVEHDR pwh,
UINT cbwh);
Возвращаемые параметры те же. Внутренняя структура:
hwo - идентификатор устройства воспроизведения (полученный
после вызова функции waveOutOpen).
pwh - указатель на структуру wavehdr_tag; cbwh - размер структуры wavehdr_tag.
Теперь структура wavehdr_tag. Она выглядит так же, как и в случае записи.
После окончания работы с этим заголовком нужно освободить его с помощью функции waveOutUnprepareHeader.
Теперь нужно отправить подготовленный заголовок драйверу. Для этого используется функция waveOutWrite, которая выглядит следующим образом:
MMRESULT waveOutWrite (HWAVEOUT hwo,
LPWAVEHDR pwh,
UINT cbwh);
В ней:
hwo - идентификатор устройства воспроизведения;
pwh - это указатель на структуру, сформированную с помощью waveOutPrepareHeader;
cbwh - размер структуры wavehdr. Возвращаемые значения те же, что и при открытии звуковой карты.
После вывода звука нужно вызвать waveOutUnprepareHeader, чтобы очистить заголовки и закрыть устройство. Теперь необходимо закрыть устройство с помощью функции waveOutClose. Она имеет следующий вид:
MMRESULT waveOutClose (HWAVEOUT hwo);
Параметр hwo указывает на устройство вывода. Если функция завершается успешно, дескриптор не больше действителен после этого вызова. Функция возвращает MMSYSERR_NOERROR, если всё проходит успешно, если есть ошибки, возвращается одно из значений, приведенных в табл. 3.7.
Если устройство ещё воспроизводит звуковой файл, функция его не закрывает. Необходимо использовать функцию waveOutReset, чтобы закончить воспроизведение перед запросом waveOutClose.
Таблица 3.7 - Возвращаемые значения
Ошибка | Значение |
MMSYSERR_INVALHANDLE | указанный дескриптор устройства недействителен |
MMSYSERR_NODRIVER | нет драйвера для устройства |
MMSYSERR_NOMEM | невозможно использовать память |
WAVERR_STILLPLAYING | буфер, указанный pwh, занят |
waveOutReset останавливает воспроизведение на указанном вывода и сбрасывает текущую координату в нолю. Воспроизведение из буферов отмечается как выполнено и управление передаётся приложению. Функция имеет следующий вид:
MMRESULT waveOutReset (HWAVEOUT hwo);
Параметр hwo указывает на устройство вывода.
Функция возвращает MMSYSERR_NOERROR, если всё проходит успешно, если есть ошибки, возвращается одно из значений, приведенных в табл. 3.8 [14,15].
Таблица 3.8 - Возвращаемые значения
Ошибка | Значение |
MMSYSERR_INVALHANDLE | указанный дескриптор устройства недействителен |
MMSYSERR_NODRIVER | нет драйвера для устройства |
MMSYSERR_NOMEM | невозможно использовать память |
MMSYSERR_NOTSUPPORTED | указанное устройство является синхронным и не поддерживает приостановку |
... и менеджмента Санкт-Петербургского Государственного технического университета соответствовал поставленной цели. Его результаты позволили автору разработать оптимальную методику преподавания темы: «Использование электронных таблиц для финансовых и других расчетов». Выполненная Соловьевым Е.А. дипломная работа, в частности разработанная теоретическая часть и план-конспект урока представляет ...
... разработки программ, но и разработку пакетов прикладных программ. Эти разработки должны обеспечивать высокое качество и вестись примерно так же, как и выпуск промышленной продукции. Достижения компьютерной техники 1. Универсальные настольные ПК Что такое настольный компьютер, объяснять никому не надо — это любимое молодежью устройство, чтобы красиво набирать тексты рефератов, а ...
... информация должна поступать в декодер при восстановлении звукового сигнала. Декодер преобразует серию сжатых мгновенных спектров сигнала в обычную цифровую волновую форму. Audio MPEG - группа методов сжатия звука, стандартизованная MPEG (Moving Pictures Experts Group - экспертной группой по обработке движущихся изображений). Методы Audio MPEG существуют в виде нескольких типов - MPEG-1, MPEG-2 и ...
... с применением полиграфических компьютерных технологий? 10. Охарактеризуйте преступные деяния, предусмотренные главой 28 УК РФ «Преступления в сфере компьютерной информации». РАЗДЕЛ 2. БОРЬБА С ПРЕСТУПЛЕНИЯМИ В СФЕРЕ КОМПЬЮТЕРНОЙ ИНФОРМАЦИИ ГЛАВА 5. КОНТРОЛЬ НАД ПРЕСТУПНОСТЬЮВ СФЕРЕ ВЫСОКИХ ТЕХНОЛОГИЙ 5.1 Контроль над компьютерной преступностью в России Меры контроля над ...
0 комментариев