Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Метод IsFormatSupported указывает, поддерживает ли устройство аудиоконечную точку определенного формата потока.
Синтаксис
HRESULT IsFormatSupported(
[in] AUDCLNT_SHAREMODE ShareMode,
[in] const WAVEFORMATEX *pFormat,
[out] WAVEFORMATEX **ppClosestMatch
);
Параметры
[in] ShareMode
Режим общего доступа для формата потока. С помощью этого параметра клиент указывает, следует ли использовать указанный формат в монопольном режиме или общем режиме. Клиент должен задать для этого параметра одно из следующих значений перечисления AUDCLNT_SHAREMODE:
AUDCLNT_SHAREMODE_EXCLUSIVE
AUDCLNT_SHAREMODE_SHARED
[in] pFormat
Указатель на указанный формат потока. Этот параметр указывает на дескриптор формата, выделенный вызывающим объектом типа WAVEFORMATEX или WAVEFORMATEXTENSIBLE. Клиент записывает описание формата в эту структуру перед вызовом этого метода. Сведения о WAVEFORMATEX и WAVEFORMATEXTENSIBLE см. в документации по Windows DDK.
[out] ppClosestMatch
Указатель на переменную указателя, в которую метод записывает адрес структуры WAVEFORMATEX или WAVEFORMATEXTENSIBLE . Эта структура указывает поддерживаемый формат, который ближе всего к формату, указанному клиентом с помощью параметра pFormat . Для общего режима (т. е. если параметр ShareMode AUDCLNT_SHAREMODE_SHARED), задайте для ppClosestMatch допустимой переменной указателя, отличной от NULL . Для монопольного режима задайте для ppClosestMatchзначение NULL. Метод выделяет хранилище для структуры. Вызывающий объект отвечает за освобождение хранилища, если он больше не нужен, вызвав функцию CoTaskMemFree . Если вызов IsFormatSupported завершается ошибкой, и ppClosestMatch не равно NULL, метод задает значение *ppClosestMatch значение NULL. Сведения о CoTaskMemFree см. в документации по пакету SDK для Windows.
Возвращаемое значение
| Код возврата | Description |
|---|---|
|
Выполнено успешно, а устройство аудио конечной точки поддерживает указанный формат потока. |
|
Успешно выполнено с ближайшим совпадением с указанным форматом. |
|
Выполнено успешно, но указанный формат не поддерживается в монопольном режиме. |
Если операция завершается ошибкой, возможные коды возврата включаются, но не ограничиваются значениями, приведенными в следующей таблице.
| Код возврата | Description |
|---|---|
|
Параметр pFormat имеет значение NULL или ppClosestMatch имеет значение NULL, а ShareMode — AUDCLNT_SHAREMODE_SHARED. |
|
Параметр ShareMode — это значение, отличное от AUDCLNT_SHAREMODE_SHARED или AUDCLNT_SHAREMODE_EXCLUSIVE. |
|
Устройство конечной точки звука было отключено, или звуковое оборудование или связанные аппаратные ресурсы были перенастроены, отключены, удалены или недоступны для использования. |
|
Ресурсы потока были недействительны. Эта ошибка может возникать по следующим причинам: — поток приостановлен. — Поток эксклюзивной или разгрузки отключен. — Упаковаемое приложение с монопольным режимом или потоком разгрузки. — Поток "защищенных выходных данных" закрыт. |
|
Звуковая служба Windows не запущена. |
Замечания
Этот метод позволяет клиенту определить, прежде чем вызывать IAudioClient::Initialize, поддерживает ли звуковой модуль определенный формат потока.
В монопольном режиме IsFormatSupported возвращает S_OK, если устройство аудио конечной точки поддерживает указанный вызывающий формат или возвращает AUDCLNT_E_UNSUPPORTED_FORMAT, если устройство не поддерживает формат. Параметр ppClosestMatch может иметь значение NULL. Если значение не равно NULL, метод записывает значение NULL в *ppClosestMatch.
Для общего режима, если звуковой механизм поддерживает указанный вызывающим форматом, IsFormatSupported задает *ppClosestMatch значение NULL и возвращает S_OK. Если звуковой модуль не поддерживает указанный вызывающий формат, но поддерживает аналогичный формат, метод получает аналогичный формат с помощью параметра ppClosestMatch и возвращает S_FALSE. Если звуковой механизм не поддерживает указанный вызывающий формат или любой аналогичный формат, метод задает значение *ppClosestMatch значение NULL и возвращает AUDCLNT_E_UNSUPPORTED_FORMAT.
В общем режиме звуковой механизм всегда поддерживает формат смешивания, который клиент может получить, вызвав метод IAudioClient::GetMixFormat . Кроме того, звуковой модуль может поддерживать аналогичные форматы, имеющие ту же частоту выборки и количество каналов, что и формат смешивания, но отличаются в представлении значений образца звука. Звуковой механизм представляет образец значений внутри как числа с плавающей запятой, но если указанный вызывающим форматом представляет примеры значений в виде целых чисел, звуковой механизм обычно может преобразоваться между целыми значениями и внутренним представлением с плавающей запятой.
Звуковой модуль может поддерживать еще более широкий диапазон форматов общего режима, если пакет установки для звукового устройства включает локальный объект обработки звука (APO), который может обрабатывать преобразования формата. APO LFX — это программный модуль, который выполняет обработку аудиопотока для конкретного устройства. Построитель звуковых графов в звуковой службе Windows вставляет APO LFX в поток между каждым клиентом и подсистемой звука. Когда клиент вызывает метод IsFormatSupported и метод определяет, что LFX APO устанавливается для использования с устройством, метод направляет запрос в LFX APO, который указывает, поддерживает ли он указанный вызывающим формат.
Например, определенный объект APO LFX может принимать 6-каналный поток окружает звук от клиента и преобразовывать поток в стереоформат, который можно воспроизводить с помощью наушников. Как правило, APO LFX поддерживает только клиентские форматы с примерами, которые соответствуют частоте выборки формата смеси.
Дополнительные сведения об API см. в разделе "Объекты обработки звука Windows". Дополнительные сведения о методе IsFormatSupported см. в разделе "Форматы устройств".
Требования
| Требование | Ценность |
|---|---|
| Минимальный поддерживаемый клиент | Windows Vista [классические приложения | Приложения UWP] |
| минимальный поддерживаемый сервер | Windows Server 2008 [классические приложения | Приложения UWP] |
| целевая платформа | Windows |
| Header | audioclient.h |