[Openal-devel] ALURE update 2

Chris Robinson chris.kcat at gmail.com
Sat Dec 20 02:10:54 PST 2008


I uploaded another update to ALURE. I modified alureGetDeviceNames so that it 
takes an extra parameter (a pointer to ALCsizei) in which the number of 
returned device names is stored. The returned list is no longer ended with a 
NULL. It also adds three new functions:

alureCreateStreamFromStaticMemory, which is used with persistant memory so 
ALURE doesn't have to make its own copy (this could be beneficial for things 
such as an mmap'd file, or where the file data is persistant in some memory).

alureRewindStream, to simply enough rewind a stream. This helps simplify 
looping scenarios.

alureInstallDecodeCallbacks, for adding custom decoding routines. This enables 
ALURE's API to load additional file types. For example, if you have a project 
that uses ffmpeg, you can set up some callbacks and alureCreate*From* will be 
able to load whatever files ffmpeg can.

The comments in alure.h were updated to explain the new functions, and some 
clarifications of the existing ones. Comments on the new functions are 
welcome; particularly if there's anything you'd like to see changed, or a 
better way to go about providing the functionality.

http://kcat.strangesoft.net/alure.html


I'm also having some issues now with supporting libmpg123. A recent update to 
it broke binary compatibility for certain configurations, and it didn't 
update the .so's ABI version. The main issue, though, is that some of its 
functions were given *_64 variants, which only exist if the library was 
compiled with large file support. And when large file support is enabled, 
the non-_64 variants don't exist.

It's installed header file, mpg123.h, is also tailored to whether it was 
compiled with large file support. So if someone makes a binary version of 
ALURE against large-file-enabled mpg123.h, then it will fail to load versions 
of libmpg123.so.0 that aren't large-file-enabled.. and vice-versa. Plus, 
because of the macro magic it uses to select between the normal functions and 
their _64 variants, it breaks ALURE's own macros used to load the functions. 
As a temporary resolution, ALURE currently requires large-file-enabled 
mpg123, where mpg123_open_64 and mpg123_seek_64 exist.

If anyone has any ideas about how to properly fix this issue, I'd be grateful 
for any help. Unfortunately I'm not sure there is a way to reasonably fix the 
problem, short of getting the cooperation of libmpg123's author and making 
more changes that could cause it another binary break.

Thanks!
- Chris


More information about the Openal-devel mailing list