Título: OpenAL no me abre el dispositivo elegido Publicado por: Desiresportal en 8 Marzo 2019, 05:23 am Muy buenas a todos.
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:
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. Título: Re: OpenAL no me abre el dispositivo elegido Publicado por: BloodSharp en 8 Marzo 2019, 07:59 am Código
¿Que hago mal? ¿Tengo que incluir alguna DLL para que el programa funcione correctamente? Cita de: msdn MMRESULT waveOutGetDevCaps( UINT_PTR uDeviceID, LPWAVEOUTCAPS pwoc, UINT cbwoc ); uDeviceID Identifier of the waveform-audio output device. It can be either a device identifier or a handle of an open waveform-audio output device. Calculo que necesitás primero un Id o handler válido aunque según la documentación permita cero, te recomendaría mejor buscar un handler distinto de cero... B# Título: Re: OpenAL no me abre el dispositivo elegido Publicado por: Desiresportal en 8 Marzo 2019, 17:32 pm ¿Un handler valido? ¿Como obtengo eso?
¿Un poco de codigo de ayuda para entenderlo mejor? En realidad uso el siguiente codigo para obtener la cantidad de dispositivos disponibles y uso un bucle por el cual obtengo los nombres de cada dispositivo. Código:
Tambien puedo sacar las caracteristicas de cada dispositivo, pero me lo ahorro porque no me sirve de mucho para mis propositos. (Todo el codigo que estoy poniendo es a modo de ejemplo y mantiene el orden de las operaciones realizadas. Mi codigo es mas extenso y por eso no me pongo a copiarlo a mano.) Gracias. |