lib 1400149 // java-lame static LS _stickyLibs_javaLame_wavToMP3_mono = ll(#1400149); import net.sourceforge.lame.lowlevel.*; sclass StreamingMP3Encoder implements AutoCloseable { File mp3; OutputStream out; byte[] outBuffer; /*new L sampleBuf; int sampleBufSize;*/ LameEncoder encoder; *(File *mp3, float sampleRate) ctex { encoder = new LameEncoder(javaSound_pcmSignedLittleEndianMono(sampleRate)); outBuffer = new byte[encoder.getPCMBufferSize()]; print("Buffer size: " + l(outBuffer); out = newFileOutputStream(mp3); } public void close { encoder.close(); dispose out; } void addData(short[] samples) ctex { /*sampleBuf.add(samples); sampleBufSize += l(samples); if (sampleBufSize >= l(outBuffer)) ...*/ byte[] pcm = byteArrayFromShorts_littleEndian(samples); int bytesToTransfer = min(l(outBuffer), l(pcm)), bytesWritten; int iPCM = 0; while (0 < (bytesWritten = encoder.encodeBuffer(pcm, iPCM, bytesToTransfer, outBuffer))) { iPCM += bytesToTransfer; bytesToTransfer = min(l(outBuffer), l(pcm) - iPCM); out.write(outBuffer, 0, bytesWritten); } } }