Здравствуйте. Очень стараюсь найти решение моей проблемы с
bass.dll.
Моя программа считывает звук с микрофона и обрабатывает его. Загвоздка в том, что до длина буфера, которым оперирует коллбек, не статична. Параметр
length меняется:
5512, 11024, 8268, 8268, 8268, 11024, 8268...
Долго изучал справку, но так и не нашел как зафиксировать длину буфера.
Вот так происходит захват звука:
rchan = BASS_RecordStart(FREQ,CHANS,0,&DuffRecording,0); // rchan - канал записи
коллбек:
BOOL CALLBACK DuffRecording(HRECORD hangle, const void *buffer, DWORD lenght, void *user)
{
if((reclen % BUFSTEP) + lenght >= BUFSTEP) // динамическое выделение памяти под поток
recbuf = (char *)realloc(recbuf,((reclen + lenght) / BUFSTEP + 1) * BUFSTEP);
memcpy(recbuf+reclen,buffer,lenght); // recbuf - массив данных
reclen+=lenght; // reclen - длина массива recbuf
return TRUE;
}
Организация не самая лучшая. Буду исправлять многое в коллбеке. Но главное для меня сейчас -
закрепить длину буфера. Вы имели дело с подобной проблемой?