summaryrefslogtreecommitdiff
path: root/pjsip-apps
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-05-17 17:17:39 +0000
committerBenny Prijono <bennylp@teluu.com>2006-05-17 17:17:39 +0000
commit1b3863ac6dcae1a7bed7e0b0cb6a2f482c093989 (patch)
tree8ead72c61a60697246ab48fde099fb063c3fbaff /pjsip-apps
parent79e6d6ac5ae27d653d1724059f081a6be1c39b7e (diff)
Major modification in pjmedia to split stream transport into separate functionality, to allow using custom transports with streams
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@452 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip-apps')
-rw-r--r--pjsip-apps/src/samples/simpleua.c15
-rw-r--r--pjsip-apps/src/samples/siprtp.c2
-rw-r--r--pjsip-apps/src/samples/streamutil.c56
3 files changed, 26 insertions, 47 deletions
diff --git a/pjsip-apps/src/samples/simpleua.c b/pjsip-apps/src/samples/simpleua.c
index c55c3e99..2cf7de7b 100644
--- a/pjsip-apps/src/samples/simpleua.c
+++ b/pjsip-apps/src/samples/simpleua.c
@@ -73,6 +73,7 @@ static pj_caching_pool cp; /* Global pool factory. */
static pjmedia_endpt *g_med_endpt; /* Media endpoint. */
static pjmedia_sock_info g_med_skinfo; /* Socket info for media */
+static pjmedia_transport *g_med_transport;/* Media stream transport */
/* Call variables: */
static pjsip_inv_session *g_inv; /* Current invite session. */
@@ -280,6 +281,14 @@ int main(int argc, char *argv[])
g_med_skinfo.rtcp_addr_name = g_med_skinfo.rtp_addr_name;
+ /* Create media transport */
+ status = pjmedia_transport_udp_attach(g_med_endpt, NULL, &g_med_skinfo,
+ &g_med_transport);
+ if (status != PJ_SUCCESS) {
+ app_perror(THIS_FILE, "Unable to create media transport", status);
+ return 1;
+ }
+
/*
* If URL is specified, then make call immediately.
*/
@@ -611,8 +620,8 @@ static void call_on_media_update( pjsip_inv_session *inv,
/* Create session info based on the two SDPs.
* We only support one stream per session for now.
*/
- status = pjmedia_session_info_from_sdp(inv->dlg->pool, g_med_endpt, 1,
- &sess_info, &g_med_skinfo,
+ status = pjmedia_session_info_from_sdp(inv->dlg->pool, g_med_endpt,
+ 1, &sess_info,
local_sdp, remote_sdp);
if (status != PJ_SUCCESS) {
app_perror( THIS_FILE, "Unable to create media session", status);
@@ -629,7 +638,7 @@ static void call_on_media_update( pjsip_inv_session *inv,
* The media session is active immediately.
*/
status = pjmedia_session_create( g_med_endpt, &sess_info,
- NULL, &g_med_session );
+ &g_med_transport, NULL, &g_med_session );
if (status != PJ_SUCCESS) {
app_perror( THIS_FILE, "Unable to create media session", status);
return;
diff --git a/pjsip-apps/src/samples/siprtp.c b/pjsip-apps/src/samples/siprtp.c
index 8b896b27..14830640 100644
--- a/pjsip-apps/src/samples/siprtp.c
+++ b/pjsip-apps/src/samples/siprtp.c
@@ -1276,7 +1276,7 @@ static void call_on_media_update( pjsip_inv_session *inv,
pjmedia_sdp_neg_get_active_remote(inv->neg, &remote_sdp);
status = pjmedia_stream_info_from_sdp(&audio->si, inv->pool, app.med_endpt,
- NULL, local_sdp, remote_sdp, 0);
+ local_sdp, remote_sdp, 0);
if (status != PJ_SUCCESS) {
app_perror(THIS_FILE, "Error creating stream info from SDP", status);
return;
diff --git a/pjsip-apps/src/samples/streamutil.c b/pjsip-apps/src/samples/streamutil.c
index d87dae74..aea56178 100644
--- a/pjsip-apps/src/samples/streamutil.c
+++ b/pjsip-apps/src/samples/streamutil.c
@@ -110,6 +110,7 @@ static pj_status_t create_stream( pj_pool_t *pool,
pjmedia_stream **p_stream )
{
pjmedia_stream_info info;
+ pjmedia_transport *transport;
pj_status_t status;
@@ -129,58 +130,23 @@ static pj_status_t create_stream( pj_pool_t *pool,
pj_memcpy(&info.rem_addr, rem_addr, sizeof(pj_sockaddr_in));
- /* Create RTP socket */
- status = pj_sock_socket(PJ_AF_INET, PJ_SOCK_DGRAM, 0,
- &info.sock_info.rtp_sock);
- PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-
-
- /* Bind RTP socket to local port */
- info.sock_info.rtp_addr_name.sin_family = PJ_AF_INET;
- info.sock_info.rtp_addr_name.sin_port = pj_htons(local_port);
-
- status = pj_sock_bind(info.sock_info.rtp_sock,
- &info.sock_info.rtp_addr_name,
- sizeof(pj_sockaddr_in));
- if (status != PJ_SUCCESS) {
- app_perror(THIS_FILE, "Unable to bind RTP socket", status);
- pj_sock_close(info.sock_info.rtp_sock);
- return status;
- }
-
-
- /* Create RTCP socket */
- status = pj_sock_socket(PJ_AF_INET, PJ_SOCK_DGRAM, 0,
- &info.sock_info.rtcp_sock);
- PJ_ASSERT_RETURN(status == PJ_SUCCESS, status);
-
-
- /* Bind RTP socket to local port + 1 */
- ++local_port;
- info.sock_info.rtcp_addr_name.sin_family = PJ_AF_INET;
- info.sock_info.rtcp_addr_name.sin_port = pj_htons(local_port);
-
- status = pj_sock_bind(info.sock_info.rtcp_sock,
- &info.sock_info.rtcp_addr_name,
- sizeof(pj_sockaddr_in));
- if (status != PJ_SUCCESS) {
- app_perror(THIS_FILE, "Unable to bind RTCP socket", status);
- pj_sock_close(info.sock_info.rtp_sock);
- pj_sock_close(info.sock_info.rtcp_sock);
+ /* Create media transport */
+ status = pjmedia_transport_udp_create(med_endpt, NULL, local_port,
+ &transport);
+ if (status != PJ_SUCCESS)
return status;
- }
/* Now that the stream info is initialized, we can create the
* stream.
*/
- status = pjmedia_stream_create( med_endpt, pool, &info, NULL, p_stream);
+ status = pjmedia_stream_create( med_endpt, pool, &info,
+ transport, NULL, p_stream);
if (status != PJ_SUCCESS) {
app_perror(THIS_FILE, "Error creating stream", status);
- pj_sock_close(info.sock_info.rtp_sock);
- pj_sock_close(info.sock_info.rtcp_sock);
+ pjmedia_transport_udp_close(transport);
return status;
}
@@ -211,7 +177,7 @@ int main(int argc, char *argv[])
pjmedia_stream *stream = NULL;
pjmedia_port *stream_port;
char tmp[10];
- pj_status_t status;
+ pj_status_t status;
/* Default values */
@@ -513,7 +479,11 @@ on_exit:
/* Destroy stream */
if (stream) {
+ pjmedia_transport *tp;
+
+ tp = pjmedia_stream_get_transport(stream);
pjmedia_stream_destroy(stream);
+ pjmedia_transport_udp_close(tp);
}
/* Destroy file ports */