diff --git a/src/org/jitsi/impl/neomedia/recording/RecorderImpl.java b/src/org/jitsi/impl/neomedia/recording/RecorderImpl.java
index b677ee9cecb1d1663177995728deccddeba4456d..b39076f72b4e38ce0729047a30f95b48e5a45a93 100644
--- a/src/org/jitsi/impl/neomedia/recording/RecorderImpl.java
+++ b/src/org/jitsi/impl/neomedia/recording/RecorderImpl.java
@@ -386,4 +386,26 @@ public void setEventHandler(RecorderEventHandler eventHandler)
     {
         this.eventHandler = eventHandler;
     }
+
+
+    /**
+     * {@inheritDoc}
+     *
+     * This <tt>Recorder</tt> implementation does not use a
+     * <tt>Synchronizer</tt>.
+     */
+    public Synchronizer getSynchronizer()
+    {
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     *
+     * This <tt>Recorder</tt> implementation does not use a
+     * <tt>Synchronizer</tt>.
+     */
+    public void setSynchronizer(Synchronizer synchronizer)
+    {
+    }
 }
diff --git a/src/org/jitsi/service/neomedia/recording/Recorder.java b/src/org/jitsi/service/neomedia/recording/Recorder.java
index f298b7df457e5984ad52058e63c80d35fc2b6ae0..23ae0fb9d835fea3b3b05f10908ef1d16693e5fc 100644
--- a/src/org/jitsi/service/neomedia/recording/Recorder.java
+++ b/src/org/jitsi/service/neomedia/recording/Recorder.java
@@ -129,4 +129,16 @@ public interface Listener
      * @param eventHandler the <tt>RecorderEventHandler</tt> to set.
      */
     public void setEventHandler(RecorderEventHandler eventHandler);
+
+    /**
+     * Gets the <tt>Synchronizer</tt> of this <tt>Recorder</tt>.
+     * @return  the <tt>Synchronizer</tt> of this <tt>Recorder</tt>.
+     */
+    public Synchronizer getSynchronizer();
+
+    /**
+     * Sets the <tt>Synchronizer</tt> that this instance should use.
+     * @param synchronizer the <tt>Synchronizer</tt> to set.
+     */
+    public void setSynchronizer(Synchronizer synchronizer);
 }
diff --git a/src/org/jitsi/service/neomedia/recording/Synchronizer.java b/src/org/jitsi/service/neomedia/recording/Synchronizer.java
new file mode 100644
index 0000000000000000000000000000000000000000..defc64ca8f66e29595f8b777b2bd732824254906
--- /dev/null
+++ b/src/org/jitsi/service/neomedia/recording/Synchronizer.java
@@ -0,0 +1,65 @@
+/*
+ * Jitsi, the OpenSource Java VoIP and Instant Messaging client.
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jitsi.service.neomedia.recording;
+
+/**
+ * @author Boris Grozev
+ */
+public interface Synchronizer
+{
+    /**
+     * Sets the clock rate of the RTP clock for a specific SSRC.
+     * @param ssrc the SSRC for which to set the RTP clock rate.
+     * @param clockRate the clock rate.
+     */
+    public void setRtpClockRate(long ssrc, long clockRate);
+
+    /**
+     * Sets the endpoint identifier for a specific SSRC.
+     * @param ssrc the SSRC for which to set the endpoint identifier.
+     * @param endpointId the endpoint identifier to set.
+     */
+    public void setEndpoint(long ssrc, String endpointId);
+
+    /**
+     * Notifies this <tt>Synchronizer</tt> that the RTP timestamp
+     * <tt>rtpTime</tt> (for SSRC <tt>ssrc</tt>) corresponds to the
+     * NTP timestamp <tt>ntpTime</tt>.
+     * @param ssrc the SSRC.
+     * @param rtpTime the RTP timestamp which corresponds to <tt>ntpTime</tt>.
+     * @param ntpTime the NTP timestamp which corresponds to <tt>rtpTime</tt>.
+     */
+    public void mapRtpToNtp(long ssrc, long rtpTime, double ntpTime);
+
+    /**
+     * Notifies this <tt>Synchronizer</tt> that the local timestamp
+     * <tt>localTime</tt> corresponds to the NTP timestamp <tt>ntpTime</tt>
+     * (for SSRC <tt>ssrc</tt>).
+     * @param ssrc the SSRC.
+     * @param localTime the local timestamp which corresponds to <tt>ntpTime</tt>.
+     * @param ntpTime the NTP timestamp which corresponds to <tt>localTime</tt>.
+     */
+    public void mapLocalToNtp(long ssrc, long localTime, double ntpTime);
+
+    /**
+     * Tries to find the local time (as returned by
+     * <tt>System.currentTimeMillis()</tt>) that corresponds to the RTP
+     * timestamp <tt>rtpTime</tt> for the SSRC <tt>ssrc</tt>.
+     *
+     * Returns -1 if the local time cannot be found (for example because not
+     * enough information for the SSRC has been previously provided to the
+     * <tt>Synchronizer</tt>).
+     *
+     * @param ssrc the SSRC with which <tt>rtpTime</tt> is associated.
+     * @param rtpTime the RTP timestamp
+     * @return the local time corresponding to <tt>rtpTime</tt> for SSRC
+     * <tt>ssrc</tt> if it can be calculated, and -1 otherwise.
+     */
+    public long getLocalTime(long ssrc, long rtpTime);
+}
+
+