From: Carmelo P. <car...@gm...> - 2010-04-06 04:24:53
|
Ring buffer solution attached. It uses spin locks to check if the buffer has sufficient data available before reading from it. There is a define called RING_BUFFER_SIZE_MULTIPLIER which defaults to 4 and sets the ring buffer size to 4 times that of what it would be if it was the original buffer fifo implementation. I found that 4x, 8x, or higher gave most smooth audio playback results. Ultimately, this define should go and the size should be set dynamically. This is just a draft, so please give me feedback if you try it! - Carmelo On Thu, Apr 1, 2010 at 5:46 PM, Tobias Doerffel <tob...@gm...> wrote: > Hi, > > Am Mittwoch, 31. März 2010 14:34:43 schrieb Carmelo Piccione: >> I reached the same solution as you with the RT safe ring buffer. Sadly I >> moronically misunderstood the implementation in AudioJack.cpp and ended up >> using the read / write ring buffer in reverse of how it was intended (I >> copy the space given by jack in the processing thread to write audio, then >> write to the copy in the ring buffer on a RT qthread. ) >> >> Instead I need to copy the audio buffer from lmms into jack using a similar >> mechanism. I'm hoping I can patch the code I wrote some time this week to >> do just that. > Please also have a look at the jack-fixes branch at > http://lmms.git.sourceforge.net/git/gitweb.cgi?p=lmms/lmms;a=shortlog;h=refs/heads/jack- > fixes - it does not work very well yet but includes some fixes for better RT > safety. > > Toby > > ------------------------------------------------------------------------------ > Download Intel® Parallel Studio Eval > Try the new software tools for yourself. Speed compiling, find bugs > proactively, and fine-tune applications for parallel performance. > See why Intel Parallel Studio got high marks during beta. > http://p.sf.net/sfu/intel-sw-dev > _______________________________________________ > LMMS-devel mailing list > LMM...@li... > https://lists.sourceforge.net/lists/listinfo/lmms-devel > > |