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