Optimize code and fix bugs in existing audio library (C++)
$100-500 USD
Cancelled
Posted over 16 years ago
$100-500 USD
Paid on delivery
Optimise and fix bugs in a C++ audio library intended for Windows games which is using DirectSound, Ogg Vorbis and AES Rijndael.
## Deliverables
I have an audio library intended for games, which is about 95 % complete. It allows you to play encrypted Ogg Vorbis files using DirectSound, both streaming and static buffers. It also has support for 3d audio.
The library uses public domain components, put together to form a library which will make it easy to add advanced audio functionality into games and other applications that require small and protected audio files. It uses an optimized C++ implementation of the AES Rijndael encryption algorithm, and an excellent Ogg Vorbis decoder which also is in the public domain together with the Microsoft DirectSound API (Direct X version 8.1 or above).
Here's what needs to be done:
1. Fix a bug with static sounds which causes them to lose content after the first playback round.
As most of you reading this will know, you set a flag to tell DirectSound whether or not to loop the audio when the play function is called. I wanted to be able to set looping (true or false) at any time and not have to worry about whether the sound is playing or not. The coder implemented this by making the sound loop by default and, if the user has looping set to false, replace the beginning of the sound with silence and then stop it as soon as the timer signals that the sound has gone back to 0. This way it would be possible to stop the sound without the risk of hearing a few milliseconds from the beginning of the audio again. Currently however, the data that was silenced is never put back. This needs to be fixed, or altered in any way you see fit to give optimal performance.
2. Upgrade the Ogg Vorbis decoding.
The library uses a public domain Ogg Vorbis decoder, which avoids all the licensing issues associated with the standard implementation by the Vorbis team. The version that the coder used is now outdated, and I would like to upgrade it to the latest version. At the time of coding it was not possible to retrieve the length of the stream, so the coder modified the decoder to include a function to get this information. This has now been added into the standard distribution so the modifications are no longer necessary, and thus the code in the main library needs to be changed to reflect this. I want it set up so that whenever a new version is released of the decoder I can just copy and paste in the new files provided that the API is backward compatible. I believe that the coder made some additional changes to the decoder to make his job easier but I'm not sure exactly what.
3. Fix the 3d initialization.
All the 3d functions are added to the API, but it does not work to initialize a sound with 3d enabled. I don't know why, but this needs to be corrected.
4. Seeking in streams (optional).
Originally the coder was going to make it possible to seek in streaming sounds, and this is half working but due to a lot of errors and mysterious results we decided to leave it out for the present. However, if you think you can correct this and make it seek accurately in streams then it would be excellent. Seeking works fine for static sounds.
5. General optimizations.
It is always good to have another programmer go through the code before release. I would like you to go through the library and optimize it as much as you can, in whatever ways you see fit. Please do not change any of the public API function names, only optimize the internal functionality. Speed and accuracy are two very important factors and if you can modify anything to improve the general performance, feel free to do so.
It is absolutely imperative that you have a lot of experience with both DirectSound and audio programming in general in order to be chosen for this job. You should also have a basic understanding of how Ogg Vorbis works to enable you to go in and upgrade the decoder and make sure everything works as expected.
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):
a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.
b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).
## Platform
Windows 98 and above