diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn
index 30012bc..080684a 100644
--- a/sdk/android/BUILD.gn
+++ b/sdk/android/BUILD.gn
@@ -282,6 +282,8 @@
       "api/org/webrtc/DataChannel.java",
       "api/org/webrtc/DtmfSender.java",
       "api/org/webrtc/FecControllerFactoryFactoryInterface.java",
+      "api/org/webrtc/FrameDecryptor.java",
+      "api/org/webrtc/FrameEncryptor.java",
       "api/org/webrtc/IceCandidate.java",
       "api/org/webrtc/MediaCodecVideoDecoder.java",
       "api/org/webrtc/MediaCodecVideoEncoder.java",
diff --git a/sdk/android/api/org/webrtc/FrameDecryptor.java b/sdk/android/api/org/webrtc/FrameDecryptor.java
new file mode 100644
index 0000000..2932f3d
--- /dev/null
+++ b/sdk/android/api/org/webrtc/FrameDecryptor.java
@@ -0,0 +1,26 @@
+/*
+ *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+package org.webrtc;
+
+/**
+ * The FrameDecryptor interface allows Java API users to provide a
+ * pointer to their native implementation of the FrameDecryptorInterface.
+ * FrameDecryptors are extremely performance sensitive as they must process all
+ * incoming video and audio frames. Due to this reason they should always be
+ * backed by a native implementation
+ * @note Not ready for production use.
+ */
+public interface FrameDecryptor {
+  /**
+   * @return A FrameDecryptorInterface pointer.
+   */
+  long getNativeFrameDecryptor();
+}
diff --git a/sdk/android/api/org/webrtc/FrameEncryptor.java b/sdk/android/api/org/webrtc/FrameEncryptor.java
new file mode 100644
index 0000000..bc81223
--- /dev/null
+++ b/sdk/android/api/org/webrtc/FrameEncryptor.java
@@ -0,0 +1,26 @@
+/*
+ *  Copyright 2018 The WebRTC project authors. All Rights Reserved.
+ *
+ *  Use of this source code is governed by a BSD-style license
+ *  that can be found in the LICENSE file in the root of the source
+ *  tree. An additional intellectual property rights grant can be found
+ *  in the file PATENTS.  All contributing project authors may
+ *  be found in the AUTHORS file in the root of the source tree.
+ */
+
+package org.webrtc;
+
+/**
+ * The FrameEncryptor interface allows Java API users to provide a pointer to
+ * their native implementation of the FrameEncryptorInterface.
+ * FrameEncyptors are extremely performance sensitive as they must process all
+ * outgoing video and audio frames. Due to this reason they should always be
+ * backed by a native implementation.
+ * @note Not ready for production use.
+ */
+public interface FrameEncryptor {
+  /**
+   * @return A FrameEncryptorInterface pointer.
+   */
+  long getNativeFrameEncryptor();
+}
diff --git a/sdk/android/api/org/webrtc/RtpReceiver.java b/sdk/android/api/org/webrtc/RtpReceiver.java
index 193820b..4da7537 100644
--- a/sdk/android/api/org/webrtc/RtpReceiver.java
+++ b/sdk/android/api/org/webrtc/RtpReceiver.java
@@ -69,6 +69,10 @@
     nativeObserver = nativeSetObserver(nativeRtpReceiver, observer);
   }
 
+  public void setFrameDecryptor(FrameDecryptor frameDecryptor) {
+    nativeSetFrameDecryptor(nativeRtpReceiver, frameDecryptor.getNativeFrameDecryptor());
+  }
+
   // This should increment the reference count of the track.
   // Will be released in dispose().
   private static native long nativeGetTrack(long rtpReceiver);
@@ -77,4 +81,5 @@
   private static native String nativeGetId(long rtpReceiver);
   private static native long nativeSetObserver(long rtpReceiver, Observer observer);
   private static native void nativeUnsetObserver(long rtpReceiver, long nativeObserver);
+  private static native void nativeSetFrameDecryptor(long rtpReceiver, long nativeFrameDecryptor);
 };
diff --git a/sdk/android/api/org/webrtc/RtpSender.java b/sdk/android/api/org/webrtc/RtpSender.java
index 4e268f3..e2a9932 100644
--- a/sdk/android/api/org/webrtc/RtpSender.java
+++ b/sdk/android/api/org/webrtc/RtpSender.java
@@ -18,7 +18,6 @@
 
   @Nullable private MediaStreamTrack cachedTrack;
   private boolean ownsTrack = true;
-
   private final @Nullable DtmfSender dtmfSender;
 
   @CalledByNative
@@ -79,6 +78,10 @@
     return dtmfSender;
   }
 
+  public void setFrameEncryptor(FrameEncryptor frameEncryptor) {
+    nativeSetFrameEncryptor(nativeRtpSender, frameEncryptor.getNativeFrameEncryptor());
+  }
+
   public void dispose() {
     if (dtmfSender != null) {
       dtmfSender.dispose();
@@ -104,4 +107,6 @@
   private static native RtpParameters nativeGetParameters(long rtpSender);
 
   private static native String nativeGetId(long rtpSender);
+
+  private static native void nativeSetFrameEncryptor(long rtpSender, long nativeFrameEncryptor);
 };
diff --git a/sdk/android/src/jni/pc/rtpreceiver.cc b/sdk/android/src/jni/pc/rtpreceiver.cc
index 049df49..5ba79b0 100644
--- a/sdk/android/src/jni/pc/rtpreceiver.cc
+++ b/sdk/android/src/jni/pc/rtpreceiver.cc
@@ -129,5 +129,14 @@
   }
 }
 
+static void JNI_RtpReceiver_SetFrameDecryptor(JNIEnv* jni,
+                                              const JavaParamRef<jclass>&,
+                                              jlong j_rtp_sender_pointer,
+                                              jlong j_frame_decryptor_pointer) {
+  reinterpret_cast<RtpReceiverInterface*>(j_rtp_sender_pointer)
+      ->SetFrameDecryptor(reinterpret_cast<FrameDecryptorInterface*>(
+          j_frame_decryptor_pointer));
+}
+
 }  // namespace jni
 }  // namespace webrtc
diff --git a/sdk/android/src/jni/pc/rtpsender.cc b/sdk/android/src/jni/pc/rtpsender.cc
index 772dbcd..89e6ef0 100644
--- a/sdk/android/src/jni/pc/rtpsender.cc
+++ b/sdk/android/src/jni/pc/rtpsender.cc
@@ -87,5 +87,14 @@
       jni, reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)->id());
 }
 
+static void JNI_RtpSender_SetFrameEncryptor(JNIEnv* jni,
+                                            const JavaParamRef<jclass>&,
+                                            jlong j_rtp_sender_pointer,
+                                            jlong j_frame_encryptor_pointer) {
+  reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)
+      ->SetFrameEncryptor(reinterpret_cast<FrameEncryptorInterface*>(
+          j_frame_encryptor_pointer));
+}
+
 }  // namespace jni
 }  // namespace webrtc
