Stephane Fillod wrote: > On Sun, Mar 12, 2006 at 02:36:21PM -0500, Robert McGwier wrote: > >>That is why I put the message out. It will be good to have a working >>starting point. > > > Okay, there it is. Just checked in to gr-audio-portaudio repository. > It's somewhat working, but there's still some static in the audio > output (tested with ALSA playback, mono and stereo). Some more work > is needed. > > You will need the attached patchs: > > - against gnuradio-core: ot_gri_ringbuffer.patch > * src/lib/omnithread/omnithread.h: add omni_mutex::trylock > * src/lib/general/gri_ringbuffer.{cc,h}, > src/lib/general/Makefile.am: new lockless ringbuffer (single > reader/single writer) taken from JACK software (GPL). > > - against portaudio-V19(CVS): portaudio-pkg-config.patch > * pkg-config .pc file with proper THREAD_FLAGS > > The code should be portable. I was missing the native Win32 call for > mutex_trylock, so someone will have to find it, and define > OMNI_MUTEX_TRYLOCK_IMPLEMENTATION in src/lib/omnithread/ot_nt.h, > with appropriate semantic (return value). I think you can do this with TryEnterCriticalSection You could also use the omni_semaphore class defined in gnuradio-core/src/lib/omnithread/nt.cc This latter one uses CreateSemaphore and WaitForSingleObject with some wrapper code. (you probably have to change all defines if you change to using omni_semaphore)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/tryentercriticalsection.asp http://msdn.microsoft.com/library/en-us/dllproc/base/createsemaphore.asp?frame=true http://msdn.microsoft.com/library/en-us/dllproc/base/waitforsingleobject.asp?frame=true Another example of how it can be used (very much like our omni_semaphore class) http://users.pandora.be/robert.deblier/beecrypt/mutex_8h-source.html I don't have time to implement and test right now. (I am working hard on finishing my gnuradio presentation for wednessday in Limburg) If nobody implements it this week I will have a look next week. greetings, Martin > The gri_pa_find_device_by_name() function will have to be made more > smart, like accepting which HostApi (ALSA, JACK, ..) is to be chosen, > and which device from this API. A syntax will have to be agreed upon, > like "ALSA:hw:0" or "OSS:/dev/dsp1". > > Have fun, _______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org http://lists.gnu.org/mailman/listinfo/discuss-gnuradio