I have 3 things to do on gr-audio-osx (enumerated below), but those can be "ToDo's" or whatever; I would really like to get this code available for others to try, as feedback on compiling and other issues would make it installation robust. The blocks seems to work just fine for everyone who's gotten them to compile ... they say that the FM audio on a good station is amazingly crisp! But compiling has been an issue since it -seems- like gnu's libtool somewhere between 1.5.10 and 1.5.20 has been updated to better handle Darwin stuff and thus there -seems- like a need for the later version (or even more recent, but I haven't tried 1.5.22 yet since 1.5.20 works for me). I can't be 100% sure that this was the issue. Here are the 3 things to do: 1) Fix a bug in the way an omni_semaphore is being used (actually, make it an omni_mutex I think). 2) Fix the transfer buffer between the various threads; I wrote my own version which is thread-safe, but I think GR has one available - which would be better for me to use. It's just a simple circular ("ring") buffer with thread protection using omni_semaphore's and omni_mutex'es. Is GR's circular buffer thread-safe? 3) Add in the code in "source" to "watch" for the user changing the input device in the OS, and handling this change so that there is at worst a quick blip during the switch over (but at least the program doesn't crash).
on 2006-04-05 02:51
on 2006-04-05 03:00
On Tue, Apr 04, 2006 at 08:47:51PM -0500, Michael Dickens wrote: > (or even more recent, but I haven't tried 1.5.22 yet since 1.5.20 works > Is GR's circular buffer thread-safe? You can just use a gr_buffer and gr_buffer_reader. See the gr-audio-portaudio code for an example. Since you've got a singler reader and writer there are no mutex required for access control. We use a semaphore to signal the reader/writer about space available. > 3) Add in the code in "source" to "watch" for the user changing the > input device in the OS, and handling this change so that there is at > worst a quick blip during the switch over (but at least the program > doesn't crash). OK. I guess the other thing to do is to see if gr-audio-portaudio "just works" ;) Eric