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