Метод IAudioClient::GetBufferSize (audioclient.h)
Метод GetBufferSize извлекает размер (максимальную емкость) буфера конечной точки.
Синтаксис
HRESULT GetBufferSize(
[out] UINT32 *pNumBufferFrames
);
Параметры
[out] pNumBufferFrames
Указатель на переменную UINT32 , в которую метод записывает количество аудиокадров, которые может хранить буфер.
Возвращаемое значение
Если метод завершается успешно, возвращает значение S_OK. В случае сбоя возможные коды возврата включают, но не ограничиваются ими, значения, показанные в следующей таблице.
Код возврата | Описание |
---|---|
|
Аудиопоток не инициализирован. |
|
Устройство конечной точки звука было отключено, или звуковое оборудование или связанные аппаратные ресурсы были перенастроены, отключены, удалены или иным образом стали недоступными для использования. |
|
Аудиослужба Windows не запущена. |
|
Параметр 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 |