summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRiza Sulistyo <riza@teluu.com>2016-11-04 14:57:20 +0000
committerRiza Sulistyo <riza@teluu.com>2016-11-04 14:57:20 +0000
commit2477680edbe9c035befb4dfe3615723de1aee05e (patch)
treef95a8c4a8bb480504b5c199a472f464128c0e4e4
parentaaa1f42f8420d8c2ae6b74b93553432038c6abc6 (diff)
Closed #1978: Add function to get RTP session from stream/video stream.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5479 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjmedia/include/pjmedia/stream.h20
-rw-r--r--pjmedia/include/pjmedia/stream_common.h26
-rw-r--r--pjmedia/include/pjmedia/vid_stream.h18
-rw-r--r--pjmedia/src/pjmedia/stream.c15
-rw-r--r--pjmedia/src/pjmedia/vid_stream.c15
5 files changed, 92 insertions, 2 deletions
diff --git a/pjmedia/include/pjmedia/stream.h b/pjmedia/include/pjmedia/stream.h
index d0594246..807c56c9 100644
--- a/pjmedia/include/pjmedia/stream.h
+++ b/pjmedia/include/pjmedia/stream.h
@@ -33,6 +33,7 @@
#include <pjmedia/rtcp.h>
#include <pjmedia/transport.h>
#include <pjmedia/vid_codec.h>
+#include <pjmedia/stream_common.h>
#include <pj/sock.h>
PJ_BEGIN_DECL
@@ -430,6 +431,25 @@ pjmedia_stream_send_rtcp_sdes( pjmedia_stream *stream );
PJ_DECL(pj_status_t)
pjmedia_stream_send_rtcp_bye( pjmedia_stream *stream );
+
+/**
+ * Get the RTP session information of the media stream. This function can be
+ * useful for app with custom media transport to inject/filter some
+ * outgoing/incoming proprietary packets into normal audio RTP traffics.
+ * This will return the original pointer to the internal states of the stream,
+ * and generally it is not advisable for app to modify them.
+ *
+ * @param stream The media stream.
+ *
+ * @param session_info The stream session info.
+ *
+ * @return PJ_SUCCESS on success.
+ */
+PJ_DECL(pj_status_t)
+pjmedia_stream_get_rtp_session_info(pjmedia_stream *stream,
+ pjmedia_stream_rtp_sess_info *session_info);
+
+
/**
* @}
*/
diff --git a/pjmedia/include/pjmedia/stream_common.h b/pjmedia/include/pjmedia/stream_common.h
index 1c8b168d..10ddefda 100644
--- a/pjmedia/include/pjmedia/stream_common.h
+++ b/pjmedia/include/pjmedia/stream_common.h
@@ -27,11 +27,37 @@
#include <pjmedia/codec.h>
#include <pjmedia/sdp.h>
+#include <pjmedia/rtp.h>
+#include <pjmedia/rtcp.h>
PJ_BEGIN_DECL
/**
+ * This structure describes rtp/rtcp session information of the media stream.
+ */
+typedef struct pjmedia_stream_rtp_sess_info
+{
+ /**
+ * The decode RTP session.
+ */
+ const pjmedia_rtp_session *rx_rtp;
+
+ /**
+ * The encode RTP session.
+ */
+ const pjmedia_rtp_session *tx_rtp;
+
+ /**
+ * The decode RTCP session.
+ */
+ const pjmedia_rtcp_session *rtcp;
+
+} pjmedia_stream_rtp_sess_info;
+
+
+
+/**
* This is internal function for parsing SDP format parameter of specific
* format or payload type, used by stream in generating stream info from SDP.
*
diff --git a/pjmedia/include/pjmedia/vid_stream.h b/pjmedia/include/pjmedia/vid_stream.h
index cd756f1e..68da4c59 100644
--- a/pjmedia/include/pjmedia/vid_stream.h
+++ b/pjmedia/include/pjmedia/vid_stream.h
@@ -31,6 +31,7 @@
#include <pjmedia/rtcp.h>
#include <pjmedia/transport.h>
#include <pjmedia/vid_codec.h>
+#include <pjmedia/stream_common.h>
#include <pj/sock.h>
PJ_BEGIN_DECL
@@ -445,6 +446,23 @@ PJ_DECL(pj_status_t) pjmedia_vid_stream_send_rtcp_sdes(
PJ_DECL(pj_status_t) pjmedia_vid_stream_send_rtcp_bye(
pjmedia_vid_stream *stream);
+/**
+ * Get the RTP session information of the video media stream. This function
+ * can be useful for app with custom media transport to inject/filter some
+ * outgoing/incoming proprietary packets into normal video RTP traffics.
+ * This will return the original pointer to the internal states of the stream,
+ * and generally it is not advisable for app to modify them.
+ *
+ * @param stream The video media stream.
+ *
+ * @param session_info The stream session info.
+ *
+ * @return PJ_SUCCESS on success.
+ */
+PJ_DECL(pj_status_t)
+pjmedia_vid_stream_get_rtp_session_info(pjmedia_vid_stream *stream,
+ pjmedia_stream_rtp_sess_info *session_info);
+
/**
* @}
diff --git a/pjmedia/src/pjmedia/stream.c b/pjmedia/src/pjmedia/stream.c
index 5b67792d..34067ae1 100644
--- a/pjmedia/src/pjmedia/stream.c
+++ b/pjmedia/src/pjmedia/stream.c
@@ -22,7 +22,6 @@
#include <pjmedia/rtp.h>
#include <pjmedia/rtcp.h>
#include <pjmedia/jbuf.h>
-#include <pjmedia/stream_common.h>
#include <pj/array.h>
#include <pj/assert.h>
#include <pj/ctype.h>
@@ -2923,3 +2922,17 @@ pjmedia_stream_send_rtcp_bye( pjmedia_stream *stream )
return PJ_SUCCESS;
}
+
+
+/**
+ * Get RTP session information from stream.
+ */
+PJ_DEF(pj_status_t)
+pjmedia_stream_get_rtp_session_info(pjmedia_stream *stream,
+ pjmedia_stream_rtp_sess_info *session_info)
+{
+ session_info->rx_rtp = &stream->dec->rtp;
+ session_info->tx_rtp = &stream->enc->rtp;
+ session_info->rtcp = &stream->rtcp;
+ return PJ_SUCCESS;
+}
diff --git a/pjmedia/src/pjmedia/vid_stream.c b/pjmedia/src/pjmedia/vid_stream.c
index 6f383ed1..5d69629d 100644
--- a/pjmedia/src/pjmedia/vid_stream.c
+++ b/pjmedia/src/pjmedia/vid_stream.c
@@ -22,7 +22,6 @@
#include <pjmedia/rtp.h>
#include <pjmedia/rtcp.h>
#include <pjmedia/jbuf.h>
-#include <pjmedia/stream_common.h>
#include <pj/array.h>
#include <pj/assert.h>
#include <pj/compat/socket.h>
@@ -2063,4 +2062,18 @@ pjmedia_vid_stream_sk_config_default(pjmedia_vid_stream_sk_config *cfg)
}
+/**
+ * Get RTP session information from video stream.
+ */
+PJ_DEF(pj_status_t)
+pjmedia_vid_stream_get_rtp_session_info(pjmedia_vid_stream *stream,
+ pjmedia_stream_rtp_sess_info *session_info)
+{
+ session_info->rx_rtp = &stream->dec->rtp;
+ session_info->tx_rtp = &stream->enc->rtp;
+ session_info->rtcp = &stream->rtcp;
+ return PJ_SUCCESS;
+}
+
+
#endif /* PJMEDIA_HAS_VIDEO */