Требуется несколько экземпляров XAudio2 для AUDIO_STREAM_CATEGORY?

В более новых API XAudio2 для Windows 8 и 10 AUDIO_STREAM_CATEGORYпередаетсяIXAudio2::CreateMasteringVoice,

Далее в документации говорится, как их следует использовать для разных типов аудио. ОднакоIXAudio2разрешен только один главный голос. Для этого совершенно отдельноIXAudio2экземпляры вместе со всеми необходимыми связанными интерфейсами, или можно каким-то образом указывать категории в другом месте звукового графа?

Игры должны классифицировать свои музыкальные потоки какAudioCategory_GameMedia, чтобы игровая музыка автоматически отключалась, если другое приложение воспроизводит музыку в фоновом режиме. Музыкальные или видео приложения должны классифицировать свои потоки как AudioCategory_Media или AudioCategory_Movie, чтобы они имели приоритет над потоками AudioCategory_GameMedia. Игровой звук для внутриигровых кинематографических или кат-сцен, когда звук предварительно смешан или по творческим соображениям должен иметь приоритет над фоновым звуком, также должен быть отнесен к категории " Медиа" или " Фильм".

1 ответ

Решение

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

Как правило, вы можете сойти с рук только с одним и всегда использовать AudioCategory_GameMedia,

Я знаю, что этот дизайн является чем-то вроде клочья, но эта категория установлена ​​для выходного голоса WASAPI, куда XAudio2 отправляет свои голосовые материалы для мастеринга. Любой другой дизайн потребовал бы аннотирования данных категории во внутреннем звуковом графике XAudio, что было бы довольно сложно реализовать из-за небольшой ценности. Вместо этого мы решили позволить приложениям одновременно активировать более одного аудио-графа, каждый со своим собственным голосом мастеринга и, следовательно, своей собственной категорией.

Как вы решите, поддерживать ли вам функцию аудио-категории WASAPI, зависит от вас, и, конечно же, лучший пользовательский опыт зависит от того, что именно делает ваше приложение.

Другие вопросы по тегам