Поделиться через


Метод IAudioClient::GetBufferSize (audioclient.h)

Метод GetBufferSize извлекает размер (максимальную емкость) буфера конечной точки.

Синтаксис

HRESULT GetBufferSize(
  [out] UINT32 *pNumBufferFrames
);

Параметры

[out] pNumBufferFrames

Указатель на переменную UINT32 , в которую метод записывает количество аудиокадров, которые может хранить буфер.

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

Если метод завершается успешно, возвращает значение S_OK. В случае сбоя возможные коды возврата включают, но не ограничиваются ими, значения, показанные в следующей таблице.

Код возврата Описание
AUDCLNT_E_NOT_INITIALIZED
Аудиопоток не инициализирован.
AUDCLNT_E_DEVICE_INVALIDATED
Устройство конечной точки звука было отключено, или звуковое оборудование или связанные аппаратные ресурсы были перенастроены, отключены, удалены или иным образом стали недоступными для использования.
AUDCLNT_E_SERVICE_NOT_RUNNING
Аудиослужба Windows не запущена.
E_POINTER
Параметр pNumBufferFrames имеет значение NULL.

Комментарии

Этот метод требует предварительной инициализации интерфейса IAudioClient . Все вызовы этого метода завершаются ошибкой AUDCLNT_E_NOT_INITIALIZED до тех пор, пока клиент не инициализирует аудиопоток, вызвав метод IAudioClient::Initialize .

Этот метод извлекает длину буфера конечной точки, совместно используемого клиентским приложением и обработчиком звука. Длина выражается в виде количества аудиокадров, которые могут храниться в буфере. Размер звукового кадра в байтах вычисляется как количество каналов в потоке, умноженное на размер выборки на канал. Например, размер кадра составляет четыре байта для стерео (2-канального) потока с 16-разрядными выборками.

Метод IAudioClient::Initialize выделяет буфер. Клиент указывает длину буфера в значении параметра hnsBufferDuration , который передается методу Initialize . Для клиентов отрисовки длина буфера определяет максимальный объем данных отрисовки, которые приложение может записать в буфер конечной точки в течение одного прохода обработки. Для клиентов записи длина буфера определяет максимальный объем данных записи, который звуковой модуль может считывать из буфера конечных точек в течение одного прохода обработки. Клиент всегда должен вызывать GetBufferSize после вызова Initialize , чтобы определить фактический размер выделенного буфера, который может отличаться от запрошенного размера.

Клиенты отрисовки могут использовать это значение для вычисления максимального размера буфера отрисовки, который можно запросить из IAudioRenderClient::GetBuffer во время каждого прохода обработки.

Примеры кода, вызывающие метод GetBufferSize , см. в следующих разделах:

Требования

Требование Значение
Минимальная версия клиента Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header audioclient.h

См. также раздел

Интерфейс IAudioClient

IAudioClient::Initialize

IAudioRenderClient::GetBuffer