Hi, I tried to use fmod in QT to obtain the PCM data transmitted from TCP and draw it.
However, difficulties were encountered in the real-time transmission of PCM .The PCM data retrieved from the network is stored in QByteArray &buffer,but I have no idea about how to get the buffer into fmod’s system with as little memory footprint as possible.
I have tried as follow, FMOD_SYSTEM and FMOD_CREATESOUNDEXINFO has been declared before.every time the net recieves data, the function will be called.
void AudioPlot::recvData(const QString &ip, const QByteArray &buffer)
result = FMOD_System_CreateSound(system,buffer.data(), FMOD_OPENMEMORY, &exinfo, &sound);
uint bytes, len1, len2;
void *ptr1, *ptr2;
FMOD_Sound_GetLength(sound, &bytes, FMOD_TIMEUNIT_PCMBYTES);
FMOD_Sound_Lock(sound, 0, bytes, &ptr1, &ptr2, &len1, &len2);
bytes /= 2; int step = 1, len = bytes; QVector<float>wavAll(len); short* ps = (short*)ptr1; for (int i = 0, n = 0; n< len; i += step, n++) wavAll[n] = ps[i]; FMOD_Sound_Unlock(sound, ptr1, ptr2, len1, len2); FMOD_Sound_Release(sound); ui->widPCMplot->outPut(wavAll);
but didn’t show anything.