diff --git a/include/asterisk/rtp_engine.h b/include/asterisk/rtp_engine.h
index d87feb9f4994848c061f3d55f907a7e2ee0721d9..605cc17a77b02fde69c23e2156e5eeb6395329f0 100644
--- a/include/asterisk/rtp_engine.h
+++ b/include/asterisk/rtp_engine.h
@@ -1639,6 +1639,25 @@ int ast_rtp_instance_get_timeout(struct ast_rtp_instance *instance);
  */
 int ast_rtp_instance_get_hold_timeout(struct ast_rtp_instance *instance);
 
+/*!
+ * \brief Get the RTP engine in use on an RTP instance
+ *
+ * \param instance The RTP instance
+ *
+ * \retval pointer to the engine
+ *
+ * Example usage:
+ *
+ * \code
+ * struct ast_rtp_engine *engine = ast_rtp_instance_get_engine(instance);
+ * \endcode
+ *
+ * This gets the RTP engine currently in use on the RTP instance pointed to by 'instance'.
+ *
+ * \since 1.6.3
+ */
+struct ast_rtp_engine *ast_rtp_instance_get_engine(struct ast_rtp_instance *instance);
+
 #if defined(__cplusplus) || defined(c_plusplus)
 }
 #endif
diff --git a/main/rtp_engine.c b/main/rtp_engine.c
index 573502811c58b81a7e817ddb19f5889d35ab427a..5d4bdac106347233fac68d68c1abe40e6acc7324 100644
--- a/main/rtp_engine.c
+++ b/main/rtp_engine.c
@@ -1615,3 +1615,8 @@ int ast_rtp_instance_get_hold_timeout(struct ast_rtp_instance *instance)
 {
 	return instance->holdtimeout;
 }
+
+struct ast_rtp_engine *ast_rtp_instance_get_engine(struct ast_rtp_instance *instance)
+{
+	return instance->engine;
+}