[Openal] Segfault on alcCaptureOpenDevice
Garin Hiebert
garinh at cheesetoast.net
Wed Sep 27 16:05:55 PDT 2006
> As far as I can tell I’m using valid values in the
> alcCaptureOpenDevice call. I was originally using alcGetString(
> /_device, /ALC_DEFAULT_CAPTURE_DEVICE_SPECIFIER) but it was returning
> NULL, /and/ the documentation I have actually mentions that you should
> use ALC_DEFAULT_DEVICE_SPECIFIER to get the device name to pass to the
> function.
>
Using alcGetString(_device, ALC_DEFAULT_CAPTURE_DEVICE_SPECIFIER) was
correct, and the NULL value is troublesome.
Taking a guess -- Could it be that you have a native NVIDIA audio setup
on your system (check for nvopenal.dll in your Windows System
directory). If so, then here's what I think is going on:
- the router (openal32.dll) is noting that the open NVIDIA library
doesn't have capture functionality, and is returning NULL when you ask
for the default capture specifier
- when you try to open the device anyways, the NVIDIA library's
alcCaptureOpenDevice function is being called, but unfortunately that
library is a 1.0 implementation and doesn't _have_ that call, and a
crash results...
I've made some big changes in the capture part of the router recently,
and the library is in testing right now prior to distribution. It could
be that the changes will prevent this crash and allow you to get the
functionality you want. The older (current) router had to use the output
library for capture, which is impossible in the case mentioned above
where a 1.0-compliant native NVIDIA library is in use. The new router
can use one library for capture and a separate one for playback (or none
at all for playback if an AL device isn't opened). I'll send the test
version to you in a separate email for your own testing -- please don't
redistribute it yet, since it's still under test.
Garin
More information about the Openal
mailing list