Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Func.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.58 Mб
Скачать

IDirectSoundBuffer

Интерфейс IDirectSoundBuffer используется приложением для создания объекта DirectSoundBuffer и его настройки. Для его создания используется метод IDirectSound::DirectSoundBufferCreate. Как и все другие интерфейсы COM, IDirectSoundBuffer наследует методы интерфейса IUnknown.

В качестве указателя на интерфейс IDirectSoundBuffer определён тип LPDIRECTSOUNDBUFFER:

typedef struct IDirectSoundBuffer *LPDIRECTSOUNDBUFFER;

Описание данного интерфейса содержится в файле заголовка dsound.h.. При работе с данным интерфейсом следует включить в проект библиотеку dsound.lib.

IDirectSoundBuffer::GetCaps

HRESULT GetCaps( LPDSBCAPS lpDSBufferCaps );

Возвращаемое значение

В случае успешного завершения возвращает значение DS_OK. В противном случае функция возвращает значение DSERR_INVALIDPARAM, указывающее на то, что один или несколько аргументов метода имеют недопустимые значения.

Аргументы

  1. lpDSBufferCaps — указатель на объект структуры DSBCAPS, содержащей параметры данного аудио буфера.

Примечание

Метод IDirectSoundBuffer::GetCaps позволяет определить возможности объекта DirectSoundBuffer.

Объект структуры DSBCAPS содержит информацию, аналогичную информации, содержащейся в объекте структуры DSBUFFERDESC, передаваемом методу IDirectSound::CreateSoundBuffer, а также некоторую дополнительную информацию. Эта дополнительная информация касается размещения буфера (в оперативной памяти компьютера или на звуковой карте) и некоторых параметров, характеризующих работу с ним. К этим параметрам относятся время загрузки аппаратно реализованного буфера и процент загрузки центрального процессора при программном микшировании и воспроизведении буфера, расположенного в оперативной памяти компьютера.

В переменной dwFlags объекта структуры DSBCAPS могут быть установлены те же флаги, что и в одноимённой переменной объекта структуры DSBUFFERDESC. Единственным различием является то, что в переменной структуры DSBCAPS обязательно будет установлен один из флагов DSBCAPS_LOCHARDWARE или DSBCAPS_LOCSOFTWARE, указывая на физическое расположение данного буфера, а в структуре DSBUFFERDESC эти флаги не являются обязательными и ни один из них может быть не установлен.

IDirectSoundBuffer::GetCurrentPosition

HRESULT GetCurrentPosition( LPDWORD lpdwCurrentPlayCursor, LPDWORD lpdwCurrentWriteCursor );

Возвращаемое значение

В случае успешного завершения возвращает значение DS_OK. В противном случае возвращаемое значение может принимать одно из следующих значений:

  • DSERR_INVALIDPARAM — один или несколько аргументов метода имеют недопустимые значения.

  • DSERR_PRIOLEVELNEEDED — вызывающее приложение имеет недостаточно высокий уровень приоритета для вызова данной функции.

Аргументы

  1. lpdwCurrentPlayCursor — указатель на переменную, в которую будет записана текущая позиция воспроизведения объекта DirectSoundBuffer. Эта позиция представляет собой смещение в пределах аудио буфера, измеряемое в байтах. Этот аргумент может быть установлен в ноль, если текущую позицию воспроизведения не следует определять.

  2. lpdwCurrentWriteCursor — указатель на переменную, в которую будет записана текущая позиция записи объекта DirectSoundBuffer. Эта позиция представляет собой смещение в пределах аудио буфера, измеряемое в байтах. Этот аргумент может быть установлен в ноль, если текущую позицию воспроизведения не следует определять.

Примечание

Метод IDirectSoundBuffer::GetCurrentPosition позволяет получить текущие позиции воспроизведения и записи аудио буфера.

Текущая позиция записи отмечает позицию, до которой безопасно записывать в буфер новые данные. Она всегда предшествует текущей позиции воспроизведения и отстоит от неё приблизительно на 15 миллисекунд.

Данные, расположенные за позицией, указанной в аргументе lpdwCurrentPlayCursor всегда могут быть безопасно изменены.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]