Enviar el micrófono
AddTrack acepta un tipo y un códec y devuelve un TsgcRTCTrack. Los códecs de audio son cctAudioOpus, cctAudioPCMU y cctAudioPCMA, los códecs de vídeo son cctVideoVP8, cctVideoVP9, cctVideoH264 y cctVideoJPEG.
La captura es un objeto aparte, porque puede que no quieras el micrófono de la plataforma en absoluto. sgcCreateAudioCapture construye la implementación adecuada para la plataforma en la que se compiló el código, waveIn en Windows, ALSA en Linux, AudioRecord en Android, una Audio Unit VoiceProcessingIO en iOS y macOS, así que nada en tu código nombra una clase de plataforma. Devuelve nil en un objetivo sin implementación, así que comprueba el resultado.
SendPCM quiere PCM entrelazado con signo de 16 bits a la frecuencia y al número de canales del codificador, que para Opus es 48000 Hz y para G.711 es 8000 Hz. La fuente de captura publica lo que entrega realmente a través de AudioSampleRate, AudioChannels y AudioFrameDurationMs, así que puedes comprobarlo en lugar de suponerlo.
Añadir una pista cuando la sesión ya está levantada activa el flag de negociación pendiente y dispara OnNegotiationNeeded. Llama a CreateOffer otra vez para publicarla, y la nueva oferta se construye sin tocar el transporte.