Поделиться через


Метод IXAudio2::CreateSubmixVoice (xaudio2.h)

Создает и настраивает голос субмикса.

Синтаксис

HRESULT CreateSubmixVoice(
  [out]          IXAudio2SubmixVoice        **ppSubmixVoice,
  [in]           UINT32                     InputChannels,
  [in]           UINT32                     InputSampleRate,
  [in]           UINT32                     Flags,
  [in]           UINT32                     ProcessingStage,
  [in, optional] const XAUDIO2_VOICE_SENDS  *pSendList,
  [in, optional] const XAUDIO2_EFFECT_CHAIN *pEffectChain
);

Параметры

[out] ppSubmixVoice

При успешном выполнении возвращает указатель на новый объект IXAudio2SubmixVoice .

[in] InputChannels

Количество каналов во входных звуковых данных субмиксного голоса. Значение InputChannel должно быть меньше или равно XAUDIO2_MAX_AUDIO_CHANNELS.

[in] InputSampleRate

Частота выборки входных звуковых данных субмиксного голоса. Эта скорость должна быть кратна XAUDIO2_QUANTUM_DENOMINATOR. InputSampleRate должен находиться в диапазоне от XAUDIO2_MIN_SAMPLE_RATE до XAUDIO2_MAX_SAMPLE_RATE.

[in] Flags

Флаги, указывающие поведение голоса субмикса. Это может быть значение 0 или следующее:

Значение Описание
XAUDIO2_VOICE_USEFILTER Эффект фильтра должен быть доступен для этого голоса.

[in] ProcessingStage

Произвольное число, указывающее, когда этот голос обрабатывается относительно других голосов субмикширования, если подсистема XAudio2 выполняет другие голоса субмикширования. Голос обрабатывается после всех остальных голосов, которые содержат меньшее значение ProcessingStage , и перед всеми остальными голосами, которые содержат большее значение ProcessingStage . Голоса, включающие одно и то же значение ProcessingStage , обрабатываются в любом порядке. Голос подмиксов не может отправляться в другой голос субмикса с меньшим или равным значением ProcessingStage . Это предотвращает потерю звука из-за цикла субмикксов.

[in, optional] pSendList

Указатель на список XAUDIO2_VOICE_SENDS структур, описывающих набор целевых голосов для голоса субмикса. Если pSendList имеет значение NULL, в списке отправки по умолчанию будет использоваться один выход первого созданного голоса мастера.

[in, optional] pEffectChain

Указатель на список XAUDIO2_EFFECT_CHAIN структур, описывающих цепочку эффектов, используемую в субмикксовом голосе.

Возвращаемое значение

Возвращает S_OK в случае успешного выполнения; в противном случае — код ошибки.

Описание кодов ошибок XAudio2 см. в разделе Коды ошибок XAudio2 .

Комментарии

Голоса субмикса получают выходные данные одного или нескольких исходных или субмиксных голосов. Они обрабатывают выходные данные, а затем отправляют их в другой голос субмикса или в мастеринговый голос.

Голос субмикса выполняет преобразование частоты выборки из входной частоты выборки в частоту ввода выходных голосов в pSendList. Если указать несколько голосовых отправлений, все они должны иметь одинаковую частоту выборки.

Вы не можете создавать исходные или субмиксные голоса до тех пор, пока не будет создан мастеринговый голос, и вы не сможете уничтожить голос мастера, если какие-либо исходные или субмиксные голоса по-прежнему существуют.

При первом создании голоса субмикса находятся в запущенном состоянии.

XAudio2 использует внутренний пул памяти для голосов с тем же форматом. Это означает, что выделение памяти для голосов будет происходить реже по мере создания и последующего уничтожения дополнительных голосов. Чтобы свести к минимуму JIT-выделение, заголовок может создать ожидаемое максимальное количество голосов, необходимых заранее, а затем удалить их при необходимости. Затем голоса будут повторно использоваться из пула XAudio2. Пул памяти привязан к экземпляру обработчика XAudio2. Вы можете освободить всю память, используемую экземпляром обработчика XAudio2, уничтожив объект XAudio2 и повторно воссоздав его по мере необходимости (принудительное увеличение пула памяти за счет предварительного выделения потребуется повторно применить по мере необходимости).

Недопустимый вызов CreateSubmixVoice из обратного вызова (то есть IXAudio2EngineCallback или IXAudio2VoiceCallback). При вызове Метода CreateSubmixVoice в обратном вызове возвращается XAUDIO2_E_INVALID_CALL.

XAUDIO2_EFFECT_CHAIN, передаваемые в качестве аргумента pEffectChain, и все XAUDIO2_EFFECT_DESCRIPTOR сведения, содержащиеся в нем, больше не нужны после успешного завершения CreateSubmixVoice и могут быть удалены сразу после вызова CreateSubmixVoice.

Требования к платформе

Windows 10 (XAudio2.9); Windows 8, Windows Phone 8 (XAudio 2.8); Пакет SDK для DirectX (XAudio 2.7)

Требования

Требование Значение
Целевая платформа Windows
Header xaudio2.h

См. также раздел

IXAudio2

Преобразования частоты выборки XAudio2