![]() |
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]() ![]() ![]() |
|
uvsoft |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 4.2.2003 Репутация: нет Всего: нет |
Привет,
вопрос по DirectSound. необходимо записывать звук и одновременно записаное воспроизводить... как правильно реализовать такой алгоритм? Спасибо. --------------------
Старый глюк лучше новых двух. |
|||
|
||||
AndreySol |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: нет Всего: 1 |
На DirectSound не знаю, могу на DirectShow пример дать.
|
|||
|
||||
uvsoft |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 4.2.2003 Репутация: нет Всего: нет |
спасибо. давай, может по аналогии получится...)
--------------------
Старый глюк лучше новых двух. |
|||
|
||||
AndreySol |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: нет Всего: 1 |
||||
|
||||
uvsoft |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 4.2.2003 Репутация: нет Всего: нет |
я делал следующим образом, есть два буфера - записи и воспроизведения. в буфере записи ставим некоторое число (с заданным шагом) точек извещения о достижения данной позиции. начинаем записывать.... буфер воспроизведения не работает. при достижении каждой точки пишем в соответствующую позицию буфера воспроизведения, буфер воспроизведения запускаем, например, для полной увененности о неналожении со второй точки... и так далее... проблема в том что задержку нужно свести к минимуму, пробовал уменьшать шаг... но с некоторого предела при воспроизведении появляются странные шумы и всякая гадость, хотя задержа до сих пор прилично ощутима... так вот вопрос может существуют какие-нибудь алгоритмы борьбы с этими задержками... может есть какие-нибудь фондумантальные доки на эту тему?...
--------------------
Старый глюк лучше новых двух. |
|||
|
||||
AndreySol |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: нет Всего: 1 |
Насчет доки не подскажу, а вообще работая с подобной темой в DirectShow заметил - встроенные аудиокарты видно не сильно дружат с полным дуплексом, поэтому такие вещи как одновременная запись с воспроизведением записываемого частенько сопровождаются всеякими задержками, заиканиями и т.п.
|
|||
|
||||
uvsoft |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 4.2.2003 Репутация: нет Всего: нет |
да, я тоже заметил... но ведь все зависит от алгоритма перемещения звука между буферами, можно добиться почти идеального звучания (без задержек и без помех), должен быть всеми признанный алгоритм оптимального выполнения данной операции... самое интересное, что в примере из DXSDK FullDuplex, демонстрируещем как это должно быть, задержка порядка секунды... да и логика там перегонки информации из одного бефера в другой по-моему оставляет желать лучшего...
еще нашел один интересный пример на VB, так там тикает таймер и по каждому тику создает новый буфер (если нет свободных) для вновь прибывших данных в буфер захвата и сразу начинает его проигрывать (не зациклено ессно), как только буфер проигрывается полностью - считается свободным и может принимать новые порции звука. --------------------
Старый глюк лучше новых двух. |
|||
|
||||
![]() ![]() ![]() |
Вы можете найти полезным что... | |
|
|
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |