diff --git a/src/org/jitsi/impl/neomedia/MediaServiceImpl.java b/src/org/jitsi/impl/neomedia/MediaServiceImpl.java
old mode 100644
new mode 100755
index 8ea44913a5f393ff74544d260d990a67d6e0a811..5053cb30427585303d4de639a3b8eccce46f781e
--- a/src/org/jitsi/impl/neomedia/MediaServiceImpl.java
+++ b/src/org/jitsi/impl/neomedia/MediaServiceImpl.java
@@ -863,6 +863,15 @@ public Recorder createRecorder(MediaDevice device)
             return null;
     }
 
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Recorder createRecorder(RTPTranslator translator)
+    {
+        return new RecorderRtpImpl(translator);
+    }
+
     /**
      * Returns a {@link Map} that binds indicates whatever preferences this
      * media service implementation may have for the RTP payload type numbers
@@ -1782,4 +1791,15 @@ public void windowClosing(WindowEvent event)
             }
         }
     }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public RecorderEventHandler createRecorderEventHandlerJson(String filename)
+            throws IOException
+    {
+        return new RecorderEventHandlerJSONImpl(filename);
+    }
+
 }
diff --git a/src/org/jitsi/service/neomedia/MediaService.java b/src/org/jitsi/service/neomedia/MediaService.java
index 4337bd40f2aa3f1ba5542fdb8aefcdc600fe0448..d41ad218b57f0ed30cfb2017bd06852efa8064cc 100644
--- a/src/org/jitsi/service/neomedia/MediaService.java
+++ b/src/org/jitsi/service/neomedia/MediaService.java
@@ -7,6 +7,7 @@
 package org.jitsi.service.neomedia;
 
 import java.beans.*;
+import java.io.*;
 import java.util.*;
 
 import org.jitsi.service.neomedia.codec.*;
@@ -199,6 +200,16 @@ public MediaStream createMediaStream(
      */
     public Recorder createRecorder(MediaDevice device);
 
+    /**
+     * Creates a new <tt>Recorder</tt> instance that can be used to record media
+     * from a specific <tt>RTPTranslator</tt>.
+     * @param translator the <tt>RTPTranslator</tt> for which to create a
+     * <tt>Recorder</tt>
+     * @return a new <tt>Recorder</tt> instance that can be used to record media
+     * from a specific <tt>RTPTranslator</tt>.
+     */
+    public Recorder createRecorder(RTPTranslator translator);
+
     /**
      * Initializes a new <tt>RTPTranslator</tt> which is to forward RTP and RTCP
      * traffic between multiple <tt>MediaStream</tt>s.
@@ -391,4 +402,17 @@ public Object getVideoPreviewComponent(
      * libjitsi.
      */
     public String getRtpCname();
+
+    /**
+     * Creates a <tt>RecorderEventHandler</tt> instance that saves received
+     * events in JSON format.
+     * @param filename the filename into which the created
+     * <tt>RecorderEventHandler</tt> will save received events.
+     * @return a <tt>RecorderEventHandler</tt> instance that saves received
+     * events in JSON format.
+     * @throws IOException if a <tt>RecorderEventHandler</tt> could not be
+     * created for <tt>filename</tt>.
+     */
+    public RecorderEventHandler createRecorderEventHandlerJson(String filename)
+            throws IOException;
 }