Changeset 5417
- Timestamp:
- Aug 12, 2016 3:47:26 AM (8 years ago)
- Location:
- pjproject/trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjsip-apps/src/swig/symbols.i
r5273 r5417 42 42 43 43 typedef enum pjmedia_srtp_use {PJMEDIA_SRTP_DISABLED, PJMEDIA_SRTP_OPTIONAL, PJMEDIA_SRTP_MANDATORY} pjmedia_srtp_use; 44 45 typedef enum pjmedia_srtp_crypto_option {PJMEDIA_SRTP_NO_ENCRYPTION = 1, PJMEDIA_SRTP_NO_AUTHENTICATION = 2} pjmedia_srtp_crypto_option; 44 46 45 47 typedef enum pjmedia_vid_stream_rc_method {PJMEDIA_VID_STREAM_RC_NONE = 0, PJMEDIA_VID_STREAM_RC_SIMPLE_BLOCKING = 1} pjmedia_vid_stream_rc_method; -
pjproject/trunk/pjsip-apps/src/swig/symbols.lst
r5273 r5417 9 9 10 10 pjmedia/event.h pjmedia_event_type 11 pjmedia/transport_srtp.h pjmedia_srtp_use 11 pjmedia/transport_srtp.h pjmedia_srtp_use pjmedia_srtp_crypto_option 12 12 pjmedia/vid_stream.h pjmedia_vid_stream_rc_method 13 13 pjmedia-videodev/videodev.h pjmedia_vid_dev_index pjmedia_vid_dev_std_index pjmedia_vid_dev_cap -
pjproject/trunk/pjsip/include/pjsua-lib/pjsua.h
r5410 r5417 1367 1367 1368 1368 /** 1369 * This callback is called when SRTP media transport is created. 1370 * Application can modify the SRTP setting \a srtp_opt to specify 1371 * the cryptos and keys which are going to be used. Note that 1372 * application should not modify the field 1373 * \a pjmedia_srtp_setting.close_member_tp and can only modify 1374 * the field \a pjmedia_srtp_setting.use for initial INVITE. 1375 * 1376 * @param call_id Call ID 1377 * @param media_idx The media index in the SDP for which this SRTP 1378 * media transport will be used. 1379 * @param srtp_opt The SRTP setting. Application can modify this. 1380 */ 1381 void (*on_create_media_transport_srtp)(pjsua_call_id call_id, 1382 unsigned media_idx, 1383 pjmedia_srtp_setting *srtp_opt); 1384 1385 /** 1369 1386 * This callback can be used by application to override the account 1370 1387 * to be used to handle an incoming message. Initially, the account to -
pjproject/trunk/pjsip/include/pjsua2/call.hpp
r5185 r5417 950 950 */ 951 951 unsigned flags; 952 }; 953 954 /** 955 * SRTP crypto. 956 */ 957 struct SrtpCrypto 958 { 959 /** 960 * Optional key. If empty, a random key will be autogenerated. 961 */ 962 string key; 963 964 /** 965 * Crypto name. 966 */ 967 string name; 968 969 /** 970 * Flags, bitmask from #pjmedia_srtp_crypto_option 971 */ 972 unsigned flags; 973 }; 974 975 /** 976 * This structure contains parameters for Call::onCreateMediaTransportSrtp() 977 * callback. 978 */ 979 struct OnCreateMediaTransportSrtpParam 980 { 981 /** 982 * The media index in the SDP for which the SRTP media transport 983 * will be used. 984 */ 985 unsigned mediaIdx; 986 987 /** 988 * Specify whether secure media transport should be used. Application 989 * can modify this only for initial INVITE. 990 * Valid values are PJMEDIA_SRTP_DISABLED, PJMEDIA_SRTP_OPTIONAL, and 991 * PJMEDIA_SRTP_MANDATORY. 992 */ 993 pjmedia_srtp_use srtpUse; 994 995 /** 996 * Application can modify this to specify the cryptos and keys 997 * which are going to be used. 998 */ 999 vector<SrtpCrypto> cryptos; 952 1000 }; 953 1001 … … 1744 1792 { PJ_UNUSED_ARG(prm); } 1745 1793 1794 /** 1795 * This callback is called when SRTP media transport is created. 1796 * Application can modify the SRTP setting \a srtpOpt to specify 1797 * the cryptos and keys which are going to be used. Note that 1798 * application should not modify the field 1799 * \a pjmedia_srtp_setting.close_member_tp and can only modify 1800 * the field \a pjmedia_srtp_setting.use for initial INVITE. 1801 * 1802 * @param prm Callback parameter. 1803 */ 1804 virtual void 1805 onCreateMediaTransportSrtp(OnCreateMediaTransportSrtpParam &prm) 1806 { PJ_UNUSED_ARG(prm); } 1807 1746 1808 private: 1747 1809 Account &acc; -
pjproject/trunk/pjsip/include/pjsua2/endpoint.hpp
r5297 r5417 1403 1403 pjmedia_transport *base_tp, 1404 1404 unsigned flags); 1405 static void 1406 on_create_media_transport_srtp(pjsua_call_id call_id, 1407 unsigned media_idx, 1408 pjmedia_srtp_setting *srtp_opt); 1405 1409 1406 1410 private: -
pjproject/trunk/pjsip/src/pjsua-lib/pjsua_media.c
r5384 r5417 1481 1481 else 1482 1482 srtp_opt.use = acc->cfg.use_srtp; 1483 1484 if (pjsua_var.ua_cfg.cb.on_create_media_transport_srtp) { 1485 pjsua_call *call = call_med->call; 1486 pjmedia_srtp_use srtp_use = srtp_opt.use; 1487 1488 (*pjsua_var.ua_cfg.cb.on_create_media_transport_srtp) 1489 (call->index, call_med->idx, &srtp_opt); 1490 1491 /* Close_member_tp must not be overwritten by app */ 1492 srtp_opt.close_member_tp = PJ_TRUE; 1493 1494 /* Revert SRTP usage policy if media is reinitialized */ 1495 if (call->inv && call->inv->state == PJSIP_INV_STATE_CONFIRMED) { 1496 srtp_opt.use = srtp_use; 1497 } 1498 } 1483 1499 1484 1500 status = pjmedia_transport_srtp_create(pjsua_var.med_endpt, -
pjproject/trunk/pjsip/src/pjsua2/endpoint.cpp
r5297 r5417 1267 1267 } 1268 1268 1269 void Endpoint::on_create_media_transport_srtp(pjsua_call_id call_id, 1270 unsigned media_idx, 1271 pjmedia_srtp_setting *srtp_opt) 1272 { 1273 Call *call = Call::lookup(call_id); 1274 if (!call) { 1275 pjsua_call *in_call = &pjsua_var.calls[call_id]; 1276 if (in_call->incoming_data) { 1277 /* This can happen when there is an incoming call but the 1278 * on_incoming_call() callback hasn't been called. So we need to 1279 * call the callback here. 1280 */ 1281 on_incoming_call(in_call->acc_id, call_id, in_call->incoming_data); 1282 1283 /* New call should already be created by app. */ 1284 call = Call::lookup(call_id); 1285 if (!call) { 1286 return; 1287 } 1288 } else { 1289 return; 1290 } 1291 } 1292 1293 OnCreateMediaTransportSrtpParam prm; 1294 prm.mediaIdx = media_idx; 1295 prm.srtpUse = srtp_opt->use; 1296 for (int i = 0; i < srtp_opt->crypto_count; i++) { 1297 SrtpCrypto crypto; 1298 1299 crypto.key = pj2Str(srtp_opt->crypto[i].key); 1300 crypto.name = pj2Str(srtp_opt->crypto[i].name); 1301 crypto.flags = srtp_opt->crypto[i].flags; 1302 prm.cryptos.push_back(crypto); 1303 } 1304 1305 call->onCreateMediaTransportSrtp(prm); 1306 1307 srtp_opt->use = prm.srtpUse; 1308 srtp_opt->crypto_count = prm.cryptos.size(); 1309 for (int i = 0; i < srtp_opt->crypto_count; i++) { 1310 srtp_opt->crypto[i].key = str2Pj(prm.cryptos[i].key); 1311 srtp_opt->crypto[i].name = str2Pj(prm.cryptos[i].name); 1312 srtp_opt->crypto[i].flags = prm.cryptos[i].flags; 1313 } 1314 } 1315 1269 1316 /////////////////////////////////////////////////////////////////////////////// 1270 1317 /*
Note: See TracChangeset
for help on using the changeset viewer.