ТехноСаратовФорумТехноСаратов → Задержки звука в DirectSound
Добавить
сообщение Список пользователей Поиск

МУХ 28 октября 2008 г. в 18:08 #
Аватар

Эксперт

Имя: Михаил
Сообщений: 997
Благодарностей: 45
Незнаю есть ли здесь кто-то разбирающийся в программировании звука, но надеюсь есть.

В общем такая проблема. Есть программа которая захватывает аудио с микрофона, пересылает на другой компухтер и воспроизводит. Все бы хорошо, но данные передаются с заметной задержкой, что в моем случае не допустимо. Протестировав все на 1Гб и 10Мб сети я сделал заключение, что задержка не зависит от сети, а только от воспроизведения и записи, что делается посредством DirectSound. К тому же при трансляции по локальному адресу 127.0.0.1 задержка такая же.

Во всех мануалах от DirectSound сказано, что возможно обеспечение задержки менее 20Мс. Но на лицо задержка примерно в 200Мс. С чем это может быть связано?

С другой стороны программа Guitar FX Box использующая WinMM.dll работает с задержкой примерно в 20Мс…

Незнаю что и думать. Может посоветуете в какую сторону смотреть?
http://blogmyxa.ru/wp-content/uploads/2010/04/blogmyxauserber.gif
Профиль
МУХ 1 ноября 2008 г. в 10:41 #
Аватар

Эксперт

Имя: Михаил
Сообщений: 997
Благодарностей: 45
Короче если кто-то столкнется с такой же проблемой, забейте нах на DirectSound и юзайте ASIO.

Главное не забыть прикупить звуковушку с поддержкой этого ASIO :)
http://blogmyxa.ru/wp-content/uploads/2010/04/blogmyxauserber.gif
Профиль
admin 3 ноября 2008 г. в 17:33 #
Аватар

Администратор

Имя: Александр
Сообщений: 1352
Благодарностей: 59
с азио насколько я знаю довольно гемморойно связываться. или нет? просто я года 4 назад писал свой плеер и там попытался реализовать вывод через него. вообщем у меня все глючило))
Профиль
МУХ 3 ноября 2008 г. в 19:38 #
Аватар

Эксперт

Имя: Михаил
Сообщений: 997
Благодарностей: 45
Звуковуха должна поддерживать азио. Если неподдерживает, то работает все через эмуляцию типа ASIO4ALL. А эти тормоза основываются, по ходу, на DirectSound. С настоящим ASIO все ништяг. Единственная проблема, что только одно приложение в каждый момент времени может его юзать. Зато задержка порядка 2мс — это норма!

Все тестил. Все работает. Правда на следующий день дрова слетели) Но пока это не связываю со своей программкой.

Дрова используются от steinberg.de. В прошлом моем посту линк на статью где иностранный товарищь восполнил ту часть кода, на MSVС++ под .NET которую разработчики по ходу зажопили.

Все предельно просто. Вот строки из экземпла:
http://blogmyxa.ru/wp-content/uploads/2010/04/blogmyxauserber.gif
Последний раз редактировалось 3 ноября 2008 г. в 19:40 пользователем МУХ
Профиль
FallenAngelx64 8 ноября 2008 г. в 23:42 #
Аватар

Гость

Имя: Макс
Сообщений: 30
Благодарностей: 0
Извиняюсь, если немного не в тему, но вопрос в следующем:
Пытаюсь написать прогу на C++, которая позволит создать что-то вроде голосового чата(кстати, МУХ мне кажеться тоже типа того строчит:))… Вроде нашёл материал по использование DirectSound на С++, и там было сказанно про подключение библиотеки dsound.lib, но чтоб использовать её, я так понимаю требуется заголовочный файл подключить… По логики, подключаю dsound.h,и вот-тут то, когда компилируешь возникает ошибка в самом файле dsound.h, там что-то с типами не нравиться. Если знаете как можно обойти это(использовать другие библиотеки, например), плиз — отпишитесь. Буду благодарен…:)
З.Ы.: Ес чё работаю в C++ Builder v6
#include
void main()
{
cout
Профиль
МУХ 9 ноября 2008 г. в 11:46 #
Аватар

Эксперт

Имя: Михаил
Сообщений: 997
Благодарностей: 45
Для билдера гдето видел специальные компоненты работающие с DSound.

В моем случае допустимы задержки до 80мс, которые с помощью DSound получить не вышло. По этому мы используем ASIO. Это линк на страницу с ASIO SDK. Хотя документации по этой библиотеке по моему нету совсем. По крайней мере на русском. Можно посмотреть еще в сторону KernelStreaming. Некоторые программы написанные с помощью кернелстриминга показывают хорошие результаты.

Для передачи данных через сеть советую посмотреть в сторону RTP (Real-time Transport Protocol), который построен на UDP и достаточно оптимизирован под передачу контента в реальном времени. Практика показывает что задержки с ним ровно такие же как и с UDP.
http://blogmyxa.ru/wp-content/uploads/2010/04/blogmyxauserber.gif
Профиль
МУХ 9 ноября 2008 г. в 12:34 #
Аватар

Эксперт

Имя: Михаил
Сообщений: 997
Благодарностей: 45
Вот какой-то DirectSound VCL for C++Builder.
http://blogmyxa.ru/wp-content/uploads/2010/04/blogmyxauserber.gif
Профиль
GenDalF 21 мая 2012 г. в 08:13 #
Аватар

Гость

Имя: Александр Егоров
Сообщений: 1
Благодарностей: 0
Вы еще занимаетесь ASIO? У меня курсовая связана со звуком. Нужно анализировать входной сигнал и сделать что-то типа распознования звука. Выявление из входного сигнала признаки механического дефекта эл. устройства на который будет направлен микрофон. Что-то типа вибродигностики, только без специализированного аппарудования.
Профиль