diff --git a/include/re_rtmp.h b/include/re_rtmp.h
new file mode 100644
index 0000000..4def1d1
--- /dev/null
+++ b/include/re_rtmp.h
@@ -0,0 +1,139 @@
+/**
+ * @file re_rtmp.h  Interface to Real Time Messaging Protocol (RTMP)
+ *
+ * Copyright (C) 2010 Creytiv.com
+ */
+
+
+/** RTMP Protocol values */
+enum {
+	RTMP_PORT = 1935,
+};
+
+/** RTMP Stream IDs */
+enum {
+
+	/* User Control messages SHOULD use message stream ID 0
+	   (known as the control stream) */
+	RTMP_CONTROL_STREAM_ID = 0
+};
+
+/** RTMP Packet types */
+enum rtmp_packet_type {
+	RTMP_TYPE_SET_CHUNK_SIZE     = 1,  /**< Set Chunk Size               */
+	RTMP_TYPE_ACKNOWLEDGEMENT    = 3,  /**< Acknowledgement              */
+	RTMP_TYPE_USER_CONTROL_MSG   = 4,  /**< User Control Messages        */
+	RTMP_TYPE_WINDOW_ACK_SIZE    = 5,  /**< Window Acknowledgement Size  */
+	RTMP_TYPE_SET_PEER_BANDWIDTH = 6,  /**< Set Peer Bandwidth           */
+	RTMP_TYPE_AUDIO              = 8,  /**< Audio Message                */
+	RTMP_TYPE_VIDEO              = 9,  /**< Video Message                */
+	RTMP_TYPE_DATA               = 18, /**< Data Message                 */
+	RTMP_TYPE_AMF0               = 20, /**< Action Message Format (AMF)  */
+};
+
+/** RTMP AMF types */
+enum rtmp_amf_type {
+	RTMP_AMF_TYPE_ROOT         = -1,    /**< Special internal type      */
+	RTMP_AMF_TYPE_NUMBER       = 0x00,  /**< Number Type                */
+	RTMP_AMF_TYPE_BOOLEAN      = 0x01,  /**< Boolean Type               */
+	RTMP_AMF_TYPE_STRING       = 0x02,  /**< String Type                */
+	RTMP_AMF_TYPE_OBJECT       = 0x03,  /**< Object Type                */
+	RTMP_AMF_TYPE_NULL         = 0x05,  /**< Null type                  */
+	RTMP_AMF_TYPE_ECMA_ARRAY   = 0x08,  /**< ECMA 'associative' Array   */
+	RTMP_AMF_TYPE_OBJECT_END   = 0x09,  /**< Object End Type            */
+	RTMP_AMF_TYPE_STRICT_ARRAY = 0x0a,  /**< Array with ordinal indices */
+};
+
+/** RTMP Event types */
+enum rtmp_event_type {
+	RTMP_EVENT_STREAM_BEGIN       = 0,  /**< Stream begin               */
+	RTMP_EVENT_STREAM_EOF         = 1,  /**< Stream End-Of-File         */
+	RTMP_EVENT_STREAM_DRY         = 2,  /**< No more data on the stream */
+	RTMP_EVENT_SET_BUFFER_LENGTH  = 3,  /**< Set buffer size in [ms]    */
+	RTMP_EVENT_STREAM_IS_RECORDED = 4,  /**< Stream is recorded         */
+	RTMP_EVENT_PING_REQUEST       = 6,  /**< Ping Request from server   */
+	RTMP_EVENT_PING_RESPONSE      = 7,  /**< Ping Response to server    */
+};
+
+
+/* forward declarations */
+struct dnsc;
+struct odict;
+struct tcp_sock;
+
+
+/*
+ * RTMP High-level API (connection, stream)
+ */
+
+
+/* conn */
+struct rtmp_conn;
+
+typedef void (rtmp_estab_h)(void *arg);
+typedef void (rtmp_command_h)(const struct odict *msg, void *arg);
+typedef void (rtmp_close_h)(int err, void *arg);
+
+int rtmp_connect(struct rtmp_conn **connp, struct dnsc *dnsc, const char *uri,
+		 rtmp_estab_h *estabh, rtmp_command_h *cmdh,
+		 rtmp_close_h *closeh, void *arg);
+int rtmp_accept(struct rtmp_conn **connp, struct tcp_sock *ts,
+		rtmp_command_h *cmdh, rtmp_close_h *closeh, void *arg);
+int rtmp_control(const struct rtmp_conn *conn,
+		 enum rtmp_packet_type type, ...);
+void rtmp_set_handlers(struct rtmp_conn *conn, rtmp_command_h *cmdh,
+		       rtmp_close_h *closeh, void *arg);
+struct tcp_conn *rtmp_conn_tcpconn(const struct rtmp_conn *conn);
+const char *rtmp_conn_stream(const struct rtmp_conn *conn);
+int  rtmp_conn_debug(struct re_printf *pf, const struct rtmp_conn *conn);
+
+
+typedef void (rtmp_resp_h)(bool success, const struct odict *msg,
+			   void *arg);
+
+/* amf */
+int rtmp_amf_command(const struct rtmp_conn *conn, uint32_t stream_id,
+		     const char *command,
+		     unsigned body_propc, ...);
+int rtmp_amf_request(struct rtmp_conn *conn, uint32_t stream_id,
+		     const char *command,
+		     rtmp_resp_h *resph, void *arg, unsigned body_propc, ...);
+int rtmp_amf_reply(struct rtmp_conn *conn, uint32_t stream_id, bool success,
+		   const struct odict *req,
+		   unsigned body_propc, ...);
+int rtmp_amf_data(const struct rtmp_conn *conn, uint32_t stream_id,
+		  const char *command, unsigned body_propc, ...);
+
+
+/* stream */
+struct rtmp_stream;
+
+typedef void (rtmp_control_h)(enum rtmp_event_type event, struct mbuf *mb,
+			      void *arg);
+typedef void (rtmp_audio_h)(uint32_t timestamp,
+			    const uint8_t *pld, size_t len, void *arg);
+typedef void (rtmp_video_h)(uint32_t timestamp,
+			    const uint8_t *pld, size_t len, void *arg);
+
+int rtmp_stream_alloc(struct rtmp_stream **strmp, struct rtmp_conn *conn,
+		      uint32_t stream_id, rtmp_command_h *cmdh,
+		      rtmp_control_h *ctrlh, rtmp_audio_h *auh,
+		      rtmp_video_h *vidh, rtmp_command_h *datah,
+		      void *arg);
+int rtmp_stream_create(struct rtmp_stream **strmp, struct rtmp_conn *conn,
+		       rtmp_resp_h *resph, rtmp_command_h *cmdh,
+		       rtmp_control_h *ctrlh, rtmp_audio_h *auh,
+		       rtmp_video_h *vidh, rtmp_command_h *datah,
+		       void *arg);
+int rtmp_play(struct rtmp_stream *strm, const char *name);
+int rtmp_publish(struct rtmp_stream *strm, const char *name);
+int rtmp_meta(struct rtmp_stream *strm);
+int rtmp_send_audio(struct rtmp_stream *strm, uint32_t timestamp,
+		    const uint8_t *pld, size_t len);
+int rtmp_send_video(struct rtmp_stream *strm, uint32_t timestamp,
+		    const uint8_t *pld, size_t len);
+struct rtmp_stream *rtmp_stream_find(const struct rtmp_conn *conn,
+				     uint32_t stream_id);
+
+
+const char *rtmp_event_name(enum rtmp_event_type event);
