protected internal virtual void HandleCollision(TransportContext transportContext) { if (transportContext == null) throw new ArgumentNullException("transportContext"); if (transportContext.IsDisposed) throw new ObjectDisposedException("transportContext"); Media.Common.ILoggingExtensions.Log(Logger, InternalId + "HandleCollision - Ssrc=" + transportContext.SynchronizationSourceIdentifier + " - RSsrc=" + transportContext.RemoteSynchronizationSourceIdentifier); //Send a goodbye and indicate why. SendGoodbye(transportContext, System.Text.Encoding.UTF8.GetBytes("ssrc")); //Assign a new random ssrc which is not equal to the remote parties. //Noting that you could use the same ssrc +/-N here also or a base from the number of parties etc. //This may deserve an event, 'OnCollision' do transportContext.SynchronizationSourceIdentifier = RFC3550.Random32(transportContext.SynchronizationSourceIdentifier); while (transportContext.SynchronizationSourceIdentifier == transportContext.RemoteSynchronizationSourceIdentifier); //Reset counters from this point forward transportContext.ResetState(); }