Source code that's Free as in Freedom
Michael David Crawford
michael@geometricvisions.com
To avoid the possibility that novice users might get buggy builds of the software from shareware download sites, I won't release even a test version of Ogg Frog until I feel it's completely ready for production use.
I hope to reach that point soon. You can monitor my progress by reading my weblog.
But to demonstrate my seriousness in this endeavour, and to seek the advice of more experienced software engineers, I will be releasing portions of Ogg Frog's source code from time to time.
The first source drop is the code for ZPCMQueue, a C++ class that implements a two-ended circular buffer. The input decoder thread writes into one and, and the speaker output thread reads from the other.
The input will block on a semaphore if it fills up, but the output never blocks; instead it will send silence - zero-valued samples - to the speaker if there is no audio available. This is because the Mac OS X kernel will crash if you block on a semaphore when Core Audio wants its audio samples. I found this out the hard way...
I'll be writing up a detailed Ogg Frog Programmer's Manual towards the time of the 1.0 release, but for now you'll just have the source code and its comments as an explanation.
The code in Ogg Frog's zoolib-contrib directory is under the MIT License and will be contributed to the ZooLib cross-platform application framework before Ogg Frog's 1.0 release. I'm a commiter on ZooLib, and plan to work with ZooLib's other developers to issue an official release of it shortly before Ogg Frog's release, so that Ogg Frog can be built from release ZooLib code, rather than a CVS snapshot as has been the case during development.
Copyright © 2006 Michael D. Crawford.
Ogg Frog, Rippit, Rippit the Ogg Frog, the Frog logo and the Circle Flowers logo are trademarks of Michael D. Crawford. All other trademarks are the property of their respective owners.
So there.