diff --git a/src/audio/sdlAudio.cpp b/src/audio/sdlAudio.cpp index feb99657c..bcf7f9212 100644 --- a/src/audio/sdlAudio.cpp +++ b/src/audio/sdlAudio.cpp @@ -27,16 +27,36 @@ void taSDLProcess(void* inst, unsigned char* buf, int nframes) { } void TAAudioSDL::onProcess(unsigned char* buf, int nframes) { + unsigned int unframes=nframes/(sizeof(float)*desc.outChans); + if (nframes<0) { + logE("nframes is negative! (%d)",nframes); + return; + } + for (int i=0; idesc.bufsize) { + delete[] inBufs[i]; + inBufs[i]=new float[unframes]; + } + } + for (int i=0; idesc.bufsize) { + delete[] outBufs[i]; + outBufs[i]=new float[unframes]; + } + } if (audioProcCallback!=NULL) { if (midiIn!=NULL) midiIn->gather(); - audioProcCallback(audioProcCallbackUser,inBufs,outBufs,desc.inChans,desc.outChans,desc.bufsize); + audioProcCallback(audioProcCallbackUser,inBufs,outBufs,desc.inChans,desc.outChans,unframes); } float* fbuf=(float*)buf; - for (size_t j=0; j