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

UptoLike

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

- 54 -
флага WAVE_ALLOWSYNC
Обычно при проигрывании WAV-файлов приложение вызывает функ-
цию
waveOutOpen дважды. Первый раз она вызывается для проверки воз-
можности проигрывания звуковых данных заданного формата
if (waveOutOpen(NULL, WAVE_MAPPER,
(WAVEFORMAT FAR *) lpwiocb->lpFmt,
NULL, 0L,
WAVE_FORMAT_QUERY | WAVE_ALLOWSYNC))
{
// сообщение о том, что воспроизведение невозможно
}
Если указанный формат поддерживается драйвером, приложение мо-
жет открыть устройство вывода, например, следующим образом
rc=waveOutOpen(&hWaveOut, WAVE_MAPERR,
(WAVEFORMAT FAR *) lpwiocb->lpFmt,
(UINT) hwnd, 0L,
CALLBACK_WINDOW | WAVE_ALLOWSYNC);
Указанная методика позволяет определить возможность работы с не-
стандартными форматами.
После открытия устройства можно приступать собственно к проигры-
ванию WAV-файла или звуковых данных; для чего необходимо подгото-
вить и передать драйверу устройства вывода блоки данных, содержащие
звуковую информацию (формат этих данных должен соответствовать ука-
занному при открытии устройства).
Блоки данных, передаваемые
драйверу, должны быть заказаны у сис-
темы как глобальные с флагами
GMEM_MOVEABLE и GMEM_SHARE.
Перед передачей блока драйверу необходимо его подготовить при по-
мощи функции
waveOutPrepareHeader
UINT
waveOutPrepareHeader(HWAVEOUT hWaveOut,
LPWAVEHDR lpWaveOutHdr,
UINT wSize);
Здесь
hWaveOut - полученный ранее от функции waveOutOpen иден-
тификатор устройства вывода,
lpWaveOutHdr - адрес описывающей пере-
даваемый блок данных заполненной структуры
WAVEHDR; описание
данной структуры приведено ниже
                                  - 54 -


                                флага WAVE_ALLOWSYNC

    Обычно при проигрывании WAV-файлов приложение вызывает функ-
цию waveOutOpen дважды. Первый раз она вызывается для проверки воз-
можности проигрывания звуковых данных заданного формата

if (waveOutOpen(NULL, WAVE_MAPPER,
                  (WAVEFORMAT FAR *) lpwiocb->lpFmt,
                  NULL, 0L,
                  WAVE_FORMAT_QUERY | WAVE_ALLOWSYNC))
{
    // сообщение о том, что воспроизведение невозможно
}

    Если указанный формат поддерживается драйвером, приложение мо-
жет открыть устройство вывода, например, следующим образом

rc=waveOutOpen(&hWaveOut, WAVE_MAPERR,
              (WAVEFORMAT FAR *) lpwiocb->lpFmt,
              (UINT) hwnd, 0L,
              CALLBACK_WINDOW | WAVE_ALLOWSYNC);

    Указанная методика позволяет определить возможность работы с не-
стандартными форматами.
    После открытия устройства можно приступать собственно к проигры-
ванию WAV-файла или звуковых данных; для чего необходимо подгото-
вить и передать драйверу устройства вывода блоки данных, содержащие
звуковую информацию (формат этих данных должен соответствовать ука-
занному при открытии устройства).
    Блоки данных, передаваемые драйверу, должны быть заказаны у сис-
темы как глобальные с флагами GMEM_MOVEABLE и GMEM_SHARE.
    Перед передачей блока драйверу необходимо его подготовить при по-
мощи функции waveOutPrepareHeader

UINT
waveOutPrepareHeader(HWAVEOUT hWaveOut,
                     LPWAVEHDR lpWaveOutHdr,
                     UINT wSize);

    Здесь hWaveOut - полученный ранее от функции waveOutOpen иден-
тификатор устройства вывода, lpWaveOutHdr - адрес описывающей пере-
даваемый блок данных заполненной структуры WAVEHDR; описание
данной структуры приведено ниже