Programming

XAudio2

9 июл 2010 16:04
+7
(Текст записи скрыт. Показать...)
Это где-нибудь используется?
В MSDN все так замечательно - "долгожданная замена DirectSound".
Я если честно не ждал, базовый ds нормально работал :)

А вот с xaudio2 столкнулся с фундаментальной проблемой:
он по определению работает в user mode и при некоторых интенсивных операциях не способен вообще выводить звук.
Такая интенсивная операция к примеру создание хендла DirectInput для клавиатуры. Она оказывается может занимать до 300мс и все это время аудио хрипит глюками.

Самое интересное что гуглем на тему не могу найти вообще ничего, как будто этот интерфейс никого не интересует :/
Отправлено 10.07.2010 в 01:16
Отвечает на сообщение 350225
0
Если это только с DI бывает не проще ли просто выкинуть DI?
Отправлено 11.07.2010 в 19:59
Отвечает на сообщение 350226
0
Иван Ващаев пишет:
>
> Если это только с DI бывает не проще ли просто выкинуть
> DI?


Это я написал для примера, насколько легко возникает проблема где никак не ожидаешь.
Гораздо хуже происходит во время открытия/закрытия потоков с IWMSyncReader (но эта вещь и правда бешеная).
К сожалению я не могу провести исчерпывающее тестирование чтобы составить полный список что юзеру нужно выкинуть чтобы саунд просто работал нормально.

Цитата из msdn:
Causes of Incorrect Audio Output (Glitches)
...
The system as a whole is overloaded, which means other threads running at the same or higher priority than XAudio2 are doing too much work, and are competing with the audio thread for CPU time.

Но эти условия естественны и ожидаемы.
Отправлено 12.07.2010 в 12:52
Отвечает на сообщение 350249
0
Мы в таких местах просто звук на ноль убирали.
Антон Шеховцов  13.07.2010 18:06
Отправлено 11.07.2010 в 19:40
Отвечает на сообщение 350233
0
Алексей Меньшиков пишет:
>
> fmod уже не устраивает?)


Да мне все как-то комфортнее с более низким уровнем :)
Отправлено 13.07.2010 в 17:54
Отвечает на сообщение 350225
0
> Это где-нибудь используется?
На X360 есть сетевая библиотека QNet. Хорошо подходит для простеньких сетевых взаимодействий, отвечает всем TCR. Голос по сети в QNet передается с помощью XAudio2. Мы юзаем и QNet, и XAudio2.

> Такая интенсивная операция к примеру создание
> хендла DirectInput для клавиатуры. Она оказывается
> может занимать до 300мс и все это время аудио
> хрипит глюками.

Раньше из-за неровности рук у нас были задержки на 1-2 секунды в геймплее. Проблем не было ни с короткими игровыми звуками, ни с длинными фоновыми. Правда, фоновые звуки не стримились, а были в памяти. Это все на Х360.

> Самое интересное что гуглем на тему не могу найти
> вообще ничего, как будто этот интерфейс никого не
> интересует :/

Я не очень много знаю по этому поводу, но ты спрашивай, если что - может, помогу.
Отправлено 13.07.2010 в 18:30
Отвечает на сообщение 350286
0
Артем Курявченко пишет:
> ...


Думаю моя проблема актуальна только для pc.
Задержки геймплея роли не играют, т.к. все буферы длиной 1с и никогда не исчерпываются (это я могу проверить).
Система их должна смешивать и заливать в саундкарту, но вот иногда не может.
Подозреваю уже что это осознанная оптимизация и с ней нужно жить как есть.
Т.е. directSound смешивает довольно большой буфер и его какие-то системные критические секции не обрывают, но зато на большой буфер и процессинга больше (т.к. его нужно целиком пересчитывать при любом изменении параметров).
Это мои догадки не помню на чем основанные.

Вообще что-то аналогичное читал и про fmod (кажется называется advanced mixing mode) - тоже с компромиссами.
Списки доступа
  • Подписчики [675]
  • Белый список [19]
  • Черный список [3]
Права доступа
Вы можете читать группу, но не можете отвечать на сообщения и создавать новые темы.
Доступ для остальных:
анонимы : могут читать
новые : могут читать
постоянные : полный доступ

Copyright © 2021 ООО "ДТФ.РУ". Все права защищены.

Воспроизведение материалов или их частей в любом виде и форме без письменного согласия запрещено.

Замечания и предложения отправляйте через форму обратной связи.

Пользовательское соглашение