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;
                }
            }
        }
Esempio n. 2
0
 public void OnClockSynchronization(RtpMidiClockSynchronization clockSynchronization, model.RtpMidiServer rtpMidiServer)
 {
     Log.Debug("RtpMidi", "MIDI clock synchronization: clockSynchronization: {}, appleMidiServer: {}", clockSynchronization, rtpMidiServer);
 }
Esempio n. 3
0
 public void OnClockSynchronization(RtpMidiClockSynchronization clockSynchronization, model.RtpMidiServer rtpMidiServer)
 {
 }