Jump to content
Posted 26 June 2013 - 08:34 AM
Posted 26 June 2013 - 09:26 AM
OpenAL wanted to be the OpenGL of audio. It was created by Loki Software in 2000, and it was much inspired by OpenGL. The way the API works and the way the specification (was supposed to be) defined was all modeled after OpenGL and the OpenGL ARB (the board the reviews the OpenGL architecture and decides stuff about the OpenGL API).
However, no ARB was ever created for OpenAL, and it never really took off like OpenGL did. It continued to be developed by Loki Software and is now largely developed by Creative Labs (with support from Apple and some other companies).
So what's the difference between the two? There are two aspects of OpenAL, which often get welded together as if they were one (because there isn't a proper ARB, so the API implementors were also the ones who defined the API/specification):
The API/Specification: This is the part that says what functions there are and what they do. For example, the specifications says there will be a function named alBufferf, another one named alDeleteSources, etc. It also says what these functions will do.
The Implementation of the API/Specification: This is the part that actually implements what the functions do. The implementation is where all the logic actually takes place.
So where do OpenAL (by Creative Labs) and OpenAL Soft differ? In the implementation part, primarily. They each implement their own version of the OpenAL API. Back in the day, the original OpenAL (by Creative Labs) was open source, but then in version 1.1 that changed and it became closed source and proprietary. Some people didn't like that, so they "forked" the code, and took the previous open source version (version 1.0) and made OpenAL Soft.
They're now two independent libraries that try to provide the same functionality. They are both continuing to be developed (so OpenAL Soft isn't stuck forever at version 1.0; it's still an active project, as is OpenAL (by Creative Labs)). The major difference between them is that they each implement the OpenAL API/Specification (so from a user's perspective, like yours, they more or less look the same; it's the internal guts of the implementation that they differ). And, of course, the license they're distributed under is also different.