summaryrefslogtreecommitdiff
path: root/pjsip-apps
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2008-09-04 13:55:33 +0000
committerBenny Prijono <bennylp@teluu.com>2008-09-04 13:55:33 +0000
commitac1206e146b5643263054f0bcccf08261558017e (patch)
tree34a32f48911f816c9c24117f92684a7f043696fa /pjsip-apps
parent03db406b42ed903c524b0d24b092fc2bffa9855a (diff)
Ticket #610: Added sample to create a media transport adapter, similar to how SRTP media transport works
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2262 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip-apps')
-rw-r--r--pjsip-apps/src/pjsua/pjsua_app.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/pjsip-apps/src/pjsua/pjsua_app.c b/pjsip-apps/src/pjsua/pjsua_app.c
index d2c22e1e..b5157ee6 100644
--- a/pjsip-apps/src/pjsua/pjsua_app.c
+++ b/pjsip-apps/src/pjsua/pjsua_app.c
@@ -23,6 +23,7 @@
#define NO_LIMIT (int)0x7FFFFFFF
//#define STEREO_DEMO
+//#define TRANSPORT_ADAPTER_SAMPLE
/* Ringtones US UK */
#define RINGBACK_FREQ1 440 /* 400 */
@@ -132,6 +133,9 @@ static char some_buf[1024 * 3];
#ifdef STEREO_DEMO
static void stereo_demo();
#endif
+#ifdef TRANSPORT_ADAPTER_SAMPLE
+static pj_status_t transport_adapter_sample(void);
+#endif
pj_status_t app_destroy(void);
static void ringback_start(pjsua_call_id call_id);
@@ -4206,7 +4210,12 @@ pj_status_t app_init(int argc, char *argv[])
}
/* Add RTP transports */
+#ifdef TRANSPORT_ADAPTER_SAMPLE
+ status = transport_adapter_sample();
+
+#else
status = pjsua_media_transports_create(&app_config.rtp_cfg);
+#endif
if (status != PJ_SUCCESS)
goto on_error;
@@ -4391,3 +4400,44 @@ static void stereo_demo()
}
#endif
+#ifdef TRANSPORT_ADAPTER_SAMPLE
+static pj_status_t create_transport_adapter(pjmedia_endpt *med_endpt, int port,
+ pjmedia_transport **p_tp)
+{
+ pjmedia_transport *udp;
+ pj_status_t status;
+
+ /* Create the UDP media transport */
+ status = pjmedia_transport_udp_create(med_endpt, NULL, port, 0, &udp);
+ if (status != PJ_SUCCESS)
+ return status;
+
+ /* Create the adapter */
+ status = pjmedia_tp_adapter_create(med_endpt, NULL, udp, p_tp);
+ if (status != PJ_SUCCESS) {
+ pjmedia_transport_close(udp);
+ return status;
+ }
+
+ return PJ_SUCCESS;
+}
+
+static pj_status_t transport_adapter_sample(void)
+{
+ pjsua_media_transport tp[PJSUA_MAX_CALLS];
+ pj_status_t status;
+ int port = 7000;
+ unsigned i;
+
+ for (i=0; i<app_config.cfg.max_calls; ++i) {
+ status = create_transport_adapter(pjsua_get_pjmedia_endpt(),
+ port + i*10,
+ &tp[i].transport);
+ if (status != PJ_SUCCESS)
+ return status;
+ }
+
+ return pjsua_media_transports_attach(tp, i, PJ_TRUE);
+}
+#endif
+