Метод IAudioCaptureClient::ReleaseBuffer (audioclient.h)
Метод ReleaseBuffer освобождает буфер.
Синтаксис
HRESULT ReleaseBuffer(
[in] UINT32 NumFramesRead
);
Параметры
[in] NumFramesRead
Количество аудиокадров, которые клиент считывает из буфера записи. Этот параметр должен быть равен количеству кадров в ранее полученном пакете данных или равен 0.
Возвращаемое значение
Если метод завершается успешно, возвращает значение S_OK. В случае сбоя возможные коды возврата включают, помимо прочего, значения, показанные в следующей таблице.
Код возврата | Описание |
---|---|
|
Параметр NumFramesRead имеет значение, отличное от размера пакета данных или 0. |
|
Этому вызову не предшествовал соответствующий вызов IAudioCaptureClient::GetBuffer . |
|
Устройство конечной точки аудио отключено, звуковое оборудование или связанные аппаратные ресурсы были перенастроены, отключены, удалены или иным образом недоступны для использования. |
|
Служба звука Windows не запущена. |
Комментарии
Клиент должен вызвать этот метод, когда завершит чтение пакета данных, полученного ранее путем вызова метода IAudioCaptureClient::GetBuffer .
Данные в пакете, полученном клиентом из вызова GetBuffer , гарантированно остаются действительными до тех пор, пока клиент не вызовет ReleaseBuffer , чтобы освободить пакет.
Между каждым вызовом GetBuffer и соответствующим вызовом ReleaseBuffer клиент должен либо считывать весь пакет данных, либо ни один из них. Если клиент считывает весь пакет после вызова GetBuffer , он должен вызвать ReleaseBuffer с параметром NumFramesRead , равным общему количеству кадров в пакете данных. В этом случае следующий вызов GetBuffer создаст новый пакет данных. Если клиент не считывает данные из пакета после вызова GetBuffer, он должен вызвать ReleaseBuffer с параметром NumFramesRead , равным 0. В этом случае следующий вызов GetBuffer создаст тот же пакет данных, что и при предыдущем вызове GetBuffer .
Если клиент вызывает ReleaseBuffer с значением NumFramesRead , кроме размера пакета или 0, вызов завершается ошибкой и возвращает код ошибки AUDCLNT_E_INVALID_SIZE.
Клиентам следует избегать чрезмерных задержек между вызовом GetBuffer , который получает буфер, и вызовом ReleaseBuffer , который освобождает буфер. Реализация звукового модуля предполагает, что вызов GetBuffer и соответствующий вызов ReleaseBuffer происходят в течение одного периода обработки буфера. Клиенты, которые задерживают освобождение буфера на более чем один период, рискуют потерять образцы данных.
Пример кода, который вызывает метод ReleaseBuffer, см. в разделе Захват Stream.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2008 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | audioclient.h |