Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Системное программирование и WinAPI > TAPI и WaveIn/WaveOut. |
Автор: AndreySol 14.6.2007, 00:37 |
На форумах несколько раз попадалось, что люди успешно делали прослушивание линии / проигрывание в линию. Мне необходимо сделать прослушивание линии, причем желательно с момента начала набора номера (если такое возможно). Просветите, как такое сделать ? |
Автор: Romikgy 22.6.2007, 10:42 |
имхо теоретически можно , но подключаемый модем паралельно к линии будет ее садить сильно , и будет слышно что тя пишут :( |
Автор: AndreySol 28.6.2007, 12:05 |
Нет параллельное подключение не нуно, нуно через сам модем прослушивать. В принципе я разобрался как сделать прием данных с линии используя WaveIn...-функции, однако не получается затем принятые данные синхронно скармливать WaveOut..-функциям - начинается бардак, судя по всему из-за отсутствия синхронизации приема\передачи. |
Автор: black_priest 28.6.2007, 18:41 |
Я так понимаю ты "скармливаешь" данные WaveOut для того чтобы их услышать? И если можно в двух словах как ты данные с линии получаешь, тема заинтересовала, сам со звуком вожусь. Если есть данные, то WaveOut должна их проигрывать, есть только пара тонких моментов на которых сперва можно сподкнуться. |
Автор: AndreySol 29.6.2007, 00:46 | ||||
Сначала обычным способом открываю линию, получаю ID-ы для "wave/in" и "wave/out". Затем при соединении запускаю получение данных с линии в WaveIn...-функции:
затем пытаюсь полученные в WaveIn данные передать в WaveOut:
Т.е. в общем получается, что как только получена первая порция данных, в WaveInCallback копируем эти данные в буфер для WaveOut и запускаем воспроизведение. Результат следующий - в контрольный файл входные данные пишутся прекрасно, а на прослушивании идут накладки и пропуски звука. Какие есть идеи как синхронизировать WaveOut относительно WaveIn ? |
Автор: black_priest 29.6.2007, 14:15 |
Вообще, в таких случаях нужно использовать принцип двойной буферизации. Т. е. при проигрывании очередного буфера функцией waveOut, следующий буфер на проигрывание уже должен быть в очереди, тогда поток воспроизведения будет непрерывным. И с получением звука тоже нужно так поступать. Насколько я помню, если не использовать это, то в момент переключения буферов будут раздоваться щелчки. |
Автор: AndreySol 7.7.2007, 11:32 |
Да пробовал я эту двойную буферизацию, проблемы синхронизации WaveOut относительно WaveIn она не решает. Может еще какие мысли ? |
Автор: Romikgy 7.7.2007, 18:37 |
можно попробывать в цикле , читать и писать маленькими кусочками, только обезопасится от зависаний при чтении и отсутствие данных, типа таймаутов у ком порта |
Автор: AndreySol 8.7.2007, 12:09 |
Примерчик бы, а то ничего дельного в голову не приходит. Кстати, проблему вобщем-то решить можно через DirectShow - после установки Voice-модема (по крайней мере у меня) появляется два фильтра, которые могут принимать и передавать данные по нему, естественно без всяких проблем. Причем используя стандартный фильтр-расщепитель сигнала (InfTee кажись) мона сигнал подать на прослушку и на запись. Вот только знать-бы, что такие фильтры есть обязательное дело для всех Voice-модемов ? |
Автор: Romikgy 8.7.2007, 12:25 |
имхо часть и применяется к модемам , у которых есть режим, и этот фильтр притсуствует в системе в не зависимости есть ли в системе модем вообще имхо |
Автор: black_priest 8.7.2007, 14:24 |
Не знаю, у меня решает. Просто может где-то ошибаешься. Оцифровывать звук и одновременно воспроизводить его с некоторой задержкой - вполне решаемая задача с помощью waveIn/Out функций. |
Автор: AndreySol 9.7.2007, 07:04 |
black_priest Блин, дайте код - хотябы тот момент где реализована прослушка линии ! ![]() |
Автор: AndreySol 14.7.2007, 09:42 |
black_priest отзовитесь пожалуйста ! |
Автор: black_priest 6.8.2007, 08:54 | ||
Я прошу прощения за паузу, но честно говоря с кодом, который прослушивает линию не могу помочь. К сожалению, я не работал с TAPI, я работал с waveIn/Out функциями и наталкивался на проблемы синхронизации о которых ты пишешь. Не совсем понимаю, что значит
или под прослушкой линии имеется ввиду что-то другое? |
Автор: Ciminance 24.10.2022, 06:09 |
Модератор: Сообщение скрыто. |
Автор: Queuego 5.11.2022, 00:31 |
Модератор: Сообщение скрыто. |