|
Yep,
I'm running PlayStaticWin32.exe from the Samples\Bin\Win32 folder. It runs
alright using other OpenAL drivers - I think the problem is that it's trying to
load the soundfile using EFX extensions. (?)
Any
suggestions on recent PC games that might be suitable test
hosts?
I'm
not sure calling CoInitialize() separately will help - the code that initialises
ASIO is already within the DLL and seems sensible enough (Steinberg provide some
sample code that u can just bolt into your application - it's not a separate
library). I guess it's just that the code assumes that it's running from a
top-level executable rather than from within a DLL. I could remove CoInitialize
and CoUninitialize entirely in case they're already called by the host - but
isn't that a bit of a lottery?
Cheers,
--Richard
Hi, > If I copy the
DLL into WINDOWS\system32\ and provide an MN script that > writes audio
to file (and does *NOT* use ASIO) then the library loads > successfully
into EFXEnumerateWin32.exe and is listed (without EFX > features as
you'd expect). So things are working this far!
Sounds good so far. Although EnumerateWin32 would be a better
test application to use because it doesn't involve EFX
calls. > 1. First problem: I'm
struggling to find a test host. The binary > PlayStaticWin32.exe fails
to load footsteps.wav - I think because it > needs EFX extensions to
store the file - although the script does run > and I then end up with a
file on disk full of silence.
Are you
running the PlayStaticWin32.exe from the SDK's \Samples\Bin\win32 folder?
The footsteps.wav file is expected to be found in ..\..\media relative
to where the exectuable is (this is the layout of the
SDK).
> EFX10ShowWin.exe > fails
with an uninformative error message "Error initializing audio >
engine:", but then it's probably just requiring EFX.
You are probably right about
that.
> Battlefield 2142 >
doesn't seem to offer an option to specify the OpenAL driver (?) and >
when I run EFXEnumerateWin32.exe my SoundMax card is the default. Is >
there a way to specify the default OpenAL driver? Is there another
test > host that folk would recommend?
BF2142 (and BF2) may not be the best games to test out because they use
a local (renamed) wrap_oal.dll and only use the 'default' OpenAL device when
an X-Fi is detected (they are using some advanced features that are only
available on that card).
The 'default'
OpenAL Audio Device (as determined by the OpenAL32.dll router) searches in
this order ...
- An OpenAL device that
matches the name of the preferred audio playback device according to
Windows - An OpenAL device called "Generic
Hardware" - An OpenAL device called "Generic
Software" - The first AL device
cound!
So, you can make your DLL the
default device by making it return the name of the preferred audio device in
Windows.
Some better games for testing are
the ones that use the Device Enumeration extension *and* expose the names of
all the OpenAL devices on the system for the user to select from.
For testing ONLY ... you might find it
easier to simply rename your DLL to OpenAL32.dll and allowing it to work
regardless of the device name requested in the alcOpenDevice function
call.
> 2. Second problem: if the
MN script does use ASIO then at the point that > the ASIO MOTU driver
initialises, an error is reported by the ASIO code > I'm using that
Steinberg provide. Digging into this, the error comes > from a call to
CoCreateInstance(), which is claiming that CoInitialize > has not been
called.
Have you tried calling
CoInitialize in your DLL before initializing
ASIO?
Dan
_______________________________________________
Openal-devel mailing list
Openal-devel@xxxxxxxxxxxxxxxxxxxxxxx
http://opensource.creative.com/mailman/listinfo/openal-devel
|
|