Función SDL_DequeueAudio
Sintaxis
Uint32 SDL_DequeueAudio(SDL_AudioDeviceID dev, void *data, Uint32 len);
Descripción
Recupera de la cola más audio en dispositivos no-callback.
Parámetros
- dev
- El ID del dispositivo desde el que se descargará el audio.
- data
- Un puntero a donde se copiarán los datos de audio.
- len
- El número de bytes (¡no muestras!) a los que apuntan (los datos).
Valor de retorno
Devuelve 0 si tiene éxito o un código de error negativo si falla. Ver SDL_GetError.
Observaciones
Si lo que se busca es poner audio en cola para su salida en un dispositivo de reproducción sin retrollamada, lo que se necesita es SDL_QueueAudio(). SDL_DequeueAudio() siempre devolverá 0 si lo usa con dispositivos de reproducción.
SDL ofrece dos maneras de recuperar audio de un dispositivo de captura: se puede suministrar un callback que SDL dispare con cierta frecuencia a medida que el dispositivo graba más datos de audio, (método push), o se puede no suministrar ningún callback, y entonces SDL esperará que se recuperen datos a intervalos regulares (método pull) con esta función.
No hay límites en la cantidad de datos que se pueden poner en cola, salvo que se agote el espacio de direcciones. Los datos del dispositivo se mantendrán en cola según sea necesario sin más intervención. Esto significa que eventualmente se quedará sin memoria si no se ponen los datos en cola de forma rutinaria.
Los dispositivos de captura no pondrán datos en cola cuando estén en pausa; si se espera no necesitar el audio capturado durante algún tiempo, utilizar SDL_PauseAudioDevice() para evitar que el dispositivo de captura ponga más datos en cola. Esto puede ser útil durante, por ejemplo, tiempos de carga de niveles. Cuando no se pausa, los dispositivos de captura comenzarán a poner datos en cola a partir de ese punto, habiendo vaciado cualquier dato capturable disponible mientras estaba pausado.
Esta función es segura para los hilos, pero si se pone en cola desde el mismo dispositivo desde dos hilos a la vez, no se garantiza qué hilo pondrá en cola los datos primero.
No se puede retirar audio de un dispositivo que esté utilizando una retrollamada proporcionada por la aplicación; si se hace, se producirá un error. Se debe utilizar la retrollamada de audio, o leer el audio con esta función, pero no ambos.
No se debe llamar a SDL_LockAudio() en el dispositivo antes de retirar el audio de la cola; SDL maneja el bloqueo internamente para esta función.