Datos de audio de streaming de XAudio2

La transmisión en streaming es el proceso de mantener en memoria solo una pequeña parte de un archivo de audio en reproducción. Esto permite reproducir archivos de audio grandes, como la música de fondo, y no ocupar una gran cantidad de memoria.

Tip

Ajuste de tamaño del búfer para una latencia baja: Use al menos 3 búferes en el anillo de streaming para evitar bloqueos y mantener la duración de cada búfer entre 20 y 100 ms. Los búferes más cortos (de 20 a 40 ms) reducen la latencia percibida para efectos de sonido interactivos, pero exigen lecturas de disco más rápidas y programación de subprocesos más estricta. En el caso del streaming de música en segundo plano, los búferes de 80–100 ms proporcionan un margen cómodo mientras permanecen inaudibles para los usuarios.

Warning

El hilo de streaming debe ejecutarse con prioridad elevada mediante MMCSS (por ejemplo, registrándose en la tarea "Pro Audio" o "Games") para evitar subdesbordamientos del búfer provocados por hilos de menor prioridad que dejan sin recursos la canalización de audio. Los underruns provocan chasquidos audibles o silencios que interrumpen el audio del juego.

Cuando se transmite un archivo de audio, sus datos se leen desde el disco en fragmentos en lugar de cargar todo el archivo a la vez. La transmisión se logra leyendo de manera asincrónica los datos de audio en una cola de búferes de disco. Cada búfer se llena y luego se envía a una voz fuente. Después de que la voz termine de reproducir un búfer, el búfer vuelve a estar disponible para su lectura. Recorrer en bucle los búferes de disco de esta manera permite reproducir un archivo de audio grande mientras solo se carga una parte de sus datos. El código de transmisión debe colocarse en un hilo separado, donde pueda dormir mientras espera que finalicen las operaciones prolongadas de disco y audio. Se utiliza una clase de devolución de llamada para despertar el hilo activando eventos cuando las operaciones de audio han finalizado.

Para obtener un ejemplo de cómo se puede lograr el streaming con XAudio2, vea Cómo: Transmitir un sonido desde disco.

Transmisión de datos de audio

Guía de programación de XAudio2