![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Миша52 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 19.9.2014 Репутация: нет Всего: нет |
Здравствуйте. Очень стараюсь найти решение моей проблемы с bass.dll.
Моя программа считывает звук с микрофона и обрабатывает его. Загвоздка в том, что до длина буфера, которым оперирует коллбек, не статична. Параметр length меняется: 5512, 11024, 8268, 8268, 8268, 11024, 8268... Долго изучал справку, но так и не нашел как зафиксировать длину буфера. Вот так происходит захват звука:
коллбек:
Организация не самая лучшая. Буду исправлять многое в коллбеке. Но главное для меня сейчас - закрепить длину буфера. Среди вас есть те, кто имел дело с подобной проблемой? |
||||
|
|||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
Она и не должна быть одинаковой. Да и зачем Вам одинаковая? Какой выйгрыш от этого Вы хотите получить? -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
| Миша52 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 19.9.2014 Репутация: нет Всего: нет |
Мне необходимо осуществить захват, обработку и вывод данных в реальном времени (БПФ, автокорреляция, фильтрация). Мне посоветовали очень хороший алгоритм, но в нем буфер должен быть обязательно статичным. ![]() ![]() Необходимо выиграть время. Получил данные, сразу же обработал, сохранил и отправил на вывод. А как Вы видите реализацию подобной задачи? Это сообщение отредактировал(а) Миша52 - 9.2.2015, 09:03 |
|||
|
||||
| feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 11 Всего: 45 |
В смысле? Передаваемые данные этому алгоритму должны быть одного размера? Заведите в callback'е буфер нужного размера, и докладывайте туда данные, пока он не заполнится, затем передавайте его в алгоритм. Избытки данных потом сохраняйте в нём же, но с его начала. Однопоточное решение, избегающее лишнего копирования видится мне таким:
Правда, после всего-всего в буфере recvBuf могут остаться данные (то есть по окончании всех вызовов DuffRecording значение recvLength может отличаться от нуля). Как Вы будете утилизировать эти остатки при таком алгоритме, который фиксирует размер передаваемых ему данных, мне представить себе сложно. Это сообщение отредактировал(а) feodorv - 10.2.2015, 03:07 -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |