Audio

Este documento describe la arquitectura de la función de audio. Basado en el patrón del observador, garantiza flexibilidad para agregar o eliminar dinámicamente conexiones de audio entre participantes reales y ficticios, al tiempo que mantiene un manejo claro para los escenarios de moderación.

Participantes reales

audio_simple_view

Cada participante real tiene:

  • Un circular buffer (búfer de anillo) para almacenar el audio entrante.

  • Una list of incoming bindings, que representa a los participantes cuyo audio perciben.

El audio saliente de un participante es la suma de los flujos de audio de sus enlaces entrantes.

Por ejemplo, si los enlaces entrantes de un usuario incluyen “participante1” y “participante2”, el audio que percibe es la suma de las transmisiones de audio de esos dos participantes.

Participantes ficticios

audio_simple_view_with_specials

Se trata de entidades especializadas que pueden interactuar con la convocatoria sin representar a personas reales:

  • CallRecorder: Graba el audio de la llamada en un archivo.

  • AudioInput: Reproduce audio de un archivo o comparte audio de una fuente externa (por ejemplo, durante el uso compartido de la pantalla).

Interconexión global

audio_complex_view

Todos los participantes (reales y ficticios) están interconectados, lo que permite la transmisión y recepción de audio en función de sus configuraciones vinculantes.

Moderación: Silenciar a un participante

audio_complex_view_participant2_muted

Cuando se emite una acción de moderación para silenciar a un participante:

  1. Se desvincula a ese participante de todos los demás (ver enlaces rojos).

  2. El audio del participante silenciado ya no transmite ni se percibe por nadie.