public void OnClockSynchronization(RtpMidiClockSynchronization clockSynchronization, model.RtpMidiServer rtpMidiServer) { if (clockSynchronization.Count == (byte)0) { RtpMidiSessionConnection sessionTuple = currentSessions.GetValueOrDefault(clockSynchronization.Ssrc); long currentTimestamp; if (sessionTuple != null) { long sessionTimestamp = sessionTuple.RtpMidiSession.GetCurrentTimestamp(); if (sessionTimestamp != -1) { currentTimestamp = sessionTimestamp; } else { currentTimestamp = GetFallbackTimestamp(); } } else { currentTimestamp = GetFallbackTimestamp(); } Log.Debug("RtpMidi", "Answering with timestamp: {}", currentTimestamp); RtpMidiClockSynchronization clockSynchronizationAnswer = new RtpMidiClockSynchronization(Ssrc, (byte)1, clockSynchronization.Timestamp1, currentTimestamp, 0L); try { Send(clockSynchronizationAnswer, rtpMidiServer); } catch (IOException e) { Log.Error("RtpMidi", "IOException while sending clock synchronization", e); } } else if (clockSynchronization.Count == (byte)2) { long offsetEstimate = (clockSynchronization.Timestamp3 + clockSynchronization.Timestamp1) / 2 - clockSynchronization.Timestamp2; RtpMidiSessionConnection midiServer = currentSessions.GetValueOrDefault(clockSynchronization.Ssrc); if (midiServer != null) { midiServer.RtpMidiSession.OffsetEstimate = offsetEstimate; } } }
public void OnClockSynchronization(RtpMidiClockSynchronization clockSynchronization, model.RtpMidiServer rtpMidiServer) { Log.Debug("RtpMidi", "MIDI clock synchronization: clockSynchronization: {}, appleMidiServer: {}", clockSynchronization, rtpMidiServer); }
public void OnClockSynchronization(RtpMidiClockSynchronization clockSynchronization, model.RtpMidiServer rtpMidiServer) { }