Estoy teniendo un problemilla tecnico con un programa (mas bien libreria) que estoy haciendo. Intento poder elegir los altavoces (o auriculares) por los que emito los sonidos.
OpenAL puede abrir el dispositivo de salida por defecto cuando se lo pido a él usando "alcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER)". Sin embargo, cuando obtengo el nombre del dispositivo con WinAPI y se lo paso a OpenAL para que abra ese, no lo hace.
¿Porque? No lo sé. Solo sé que el dispositivo por defecto OpenAL dice llamarlo como "Generic Hardware".
Os pongo un codigo de ejemplo para que veais el proceso que sigo y me digais como hacer que OpenAL me saque el sonido por el dispositivo de salida que elija yo.
Código:
#include <windows.h>
#include <AL/al.h>
#include <AL/alc.h>
#include <iostream>
using namespace std;
int main() {
int speakerID = 0;
WAVEOUTCAPSA outCaps;
waveOutGetDevCaps(speakerID, &outCaps, sizeof(WAVEOUTCAPSA));
ALCdevice speaker = alcOpenDevice(outCaps.szPname);
if (speaker == NULL) {
cout << "No se ha podido abrir el dispositivo de salida indicado." << endl;
}
return 0;
}
Sé que la funcion "waveOutGetDevCaps()" me devuelve un nombre supuestamente valido porque es el mismo que me da un programa de karaoke.
Ademas, ya tengo desarrollada la parte del uso del microfono y funciona correctamente usando el mismo procedimiento pero con sus respectivas funciones.
¿Que hago mal? ¿Tengo que incluir alguna DLL para que el programa funcione correctamente? (Por ahora solo uso "OpenAL.dll" y "wrap_oal.dll".) ¿Estar usando un ordenador portatil puede ser un problema? (Lo digo por el uso de altavoces u auriculares.)
Un saludo y gracias de antemano.