Метод IAudioClient3::InitializeSharedAudioStream (audioclient.h)
Инициализирует общий поток с указанной периодичностью.
Синтаксис
HRESULT InitializeSharedAudioStream(
[in] DWORD StreamFlags,
[in] UINT32 PeriodInFrames,
[in] const WAVEFORMATEX *pFormat,
[in, optional] LPCGUID AudioSessionGuid
);
Параметры
[in] StreamFlags
Тип: DWORD
Флаги для управления созданием потока. Клиент должен задать этому параметру значение 0 или побитовое значение ИЛИ одной или нескольких поддерживаемых констант AUDCLNT_STREAMFLAGS_XXX или констант AUDCLNT_SESSIONFLAGS_XXX. Поддерживаемые константы AUDCLNT_STREAMFLAGS_XXX для этого параметра при использовании этого метода:
- AUDCLNT_STREAMFLAGS_EVENTCALLBACK
[in] PeriodInFrames
Тип: UINT32
Периодичность, запрашиваемая клиентом. Это значение должно быть целочисленным, кратным значению, возвращаемого в параметре pFundamentalPeriodInFramesдля IAudioClient3::GetSharedModeEnginePeriod. PeriodInFrames также должен быть больше или равен значению, возвращаемого в pMinPeriodInFrames , и меньше или равно значению, возвращаемого в pMaxPeriodInFrames.
[in] pFormat
Тип: const WAVEFORMATEX*
Указатель на дескриптор формата. Этот параметр должен указывать на допустимый дескриптор формата типа WAVEFORMATEX или WAVEFORMATEXTENSIBLE. Дополнительные сведения см. в разделе Примечания для IAudioClient::Initialize.
[in, optional] AudioSessionGuid
Тип: LPCGUID
Указатель на GUID сеанса. Этот параметр указывает на значение GUID, определяющее звуковой сеанс, к которому принадлежит поток. Если GUID идентифицирует ранее открытый сеанс, метод добавляет поток в этот сеанс. Если GUID не идентифицирует существующий сеанс, метод открывает новый сеанс и добавляет поток в этот сеанс. Поток остается членом одного и того же сеанса на протяжении всего времени его существования. Присвоение этому параметру значения NULL эквивалентно передаче указателя на значение GUID_NULL.
Возвращаемое значение
Тип: HRESULT
Если метод завершается успешно, возвращает значение S_OK. В случае сбоя возможные коды возврата включают, но не ограничиваются ими, значения, показанные в следующей таблице.
Код возврата | Описание |
---|---|
|
Объект IAudioClient уже инициализирован . |
|
Флаг AUDCLNT_STREAMFLAGS_LOOPBACK установлен, но устройство конечной точки является устройством захвата, а не устройством отрисовки. |
|
Указывает, что длительность прохода процесса превысила максимальную загрузку ЦП. Звуковой модуль отслеживает загрузку ЦП, сохраняя количество раз, когда длительность прохода процесса превышает максимальную загрузку ЦП. Максимальная загрузка ЦП рассчитывается в процентах от периодичности ядра. Процентное значение — это значение регулирования ЦП системы (в диапазоне от 10 % до 90 %). Если это значение не найдено, то для вычисления максимальной загрузки ЦП используется значение по умолчанию 40 %. |
|
Устройство конечной точки звука было отключено, или звуковое оборудование или связанные аппаратные ресурсы были перенастроены, отключены, удалены или иным образом стали недоступными для использования. |
|
Устройство конечной точки уже используется. Либо устройство используется в монопольном режиме, либо устройство используется в общем режиме, и вызывающий запрос на использование устройства в монопольном режиме. |
|
Указанный клиент AUDCLNT_STREAMOPTIONS_MATCH_FORMAT при вызове IAudioClient2::SetClientProperties, но формат звукового модуля был заблокирован другим клиентом. В этом случае можно вызвать IAudioClient2::SetClientProperties без указания параметра формата соответствия, а затем использовать текущий формат обработчика аудио. |
|
Указанный клиент AUDCLNT_STREAMOPTIONS_MATCH_FORMAT при вызове IAudioClient2::SetClientProperties, но периодичность звукового обработчика была заблокирована другим клиентом. В этом случае можно вызвать IAudioClient2::SetClientProperties без указания параметра формата соответствия, а затем использовать текущую периодичность обработчика звука. |
|
Методу не удалось создать конечную точку звука для отрисовки или устройства захвата. Это может произойти, если устройство конечной точки звука было отключено или звуковое оборудование или связанные аппаратные ресурсы были перенастроены, отключены, удалены или иным образом стали недоступными для использования. |
|
Указывает, что запрошенный период устройства, указанный с помощью PeriodInFrames , не является целочисленным кратным основной периодичности звукового модуля, короче минимального периода подсистемы или длиннее максимального периода обработчика. Получите поддерживаемые значения периодичности подсистемы, вызвав IAudioClient3::GetSharedModeEnginePeriod. |
|
Звуковой модуль (общий режим) или устройство конечной точки аудио (монопольный режим) не поддерживают указанный формат. |
|
Аудиослужба Windows не запущена. |
|
Параметр pFormat имеет значение NULL. |
|
Параметр pFormat указывает на недопустимое описание формата; или флаг AUDCLNT_STREAMFLAGS_LOOPBACK установлен, но ShareMode не равен AUDCLNT_SHAREMODE_SHARED; или флаг AUDCLNT_STREAMFLAGS_CROSSPROCESS установлен, но ShareMode равен AUDCLNT_SHAREMODE_EXCLUSIVE.
Предыдущий вызов SetClientProperties был выполнен с недопустимой категорией для аудио-потоков или потоков отрисовки. |
|
Недостаточно памяти. |
Комментарии
В отличие от IAudioClient::Initialize, этот метод не позволяет указать размер буфера. Размер буфера вычисляется на основе периодичности, запрошенной с помощью параметра PeriodInFrames . Клиентское приложение отвечает за своевременную передачу звуковых примеров в буфер и из него.
Звуковые клиенты должны проверка допустимых значений для параметра PeriodInFrames, вызвав IAudioClient3::GetSharedModeEnginePeriod. Значение PeriodInFrames должно быть целочисленным, кратным значению, возвращаемого в параметре pFundamentalPeriodInFrames . PeriodInFrames также должен быть больше или равен значению, возвращаемого в pMinPeriodInFrames , и меньше или равно значению pMaxPeriodInFrames.
Например, для формата 44100 кГц GetSharedModeEnginePeriod может возвращать следующее:
pDefaultPeriodInFrames = 448 кадров (около 10,16 миллисекунда)
pFundamentalPeriodInFrames = 4 кадра (около 0,09 миллисекунд)
pMinPeriodInFrames = 48 кадров (около 1,09 миллисекунда)
pMaxPeriodInFrames = 448 кадров (аналогично значению по умолчанию)
Допустимые значения параметра PeriodInFramesдля InitializeSharedAudioStream будут включать 48 и 448. Они также будут включать такие вещи, как 96 и 128.
Они не будут включать 4 (которое меньше минимально допустимого значения) или 98 (что не кратно основному) или 1000 (что больше максимально допустимого значения).
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10 [только классические приложения] |
Минимальная версия сервера | Windows Server 2016 [только классические приложения] |
Целевая платформа | Windows |
Header | audioclient.h |