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