Changeset 6106 for pjproject/trunk/pjsip/src/pjsua-lib/pjsua_media.c
- Timestamp:
- Nov 13, 2019 9:11:04 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjsip/src/pjsua-lib/pjsua_media.c
r6093 r6106 1336 1336 const pjmedia_sdp_media *m = sdp->media[i]; 1337 1337 const pjmedia_sdp_conn *c; 1338 static const pj_str_t ID_RTP_SAVP = { "RTP/SAVP", 8 };1338 pj_uint32_t proto; 1339 1339 1340 1340 /* Skip different media */ … … 1347 1347 1348 1348 /* Supported transports */ 1349 if (pj_stristr(&m->desc.transport, &ID_RTP_SAVP)) { 1349 proto = pjmedia_sdp_transport_get_proto(&m->desc.transport); 1350 if (PJMEDIA_TP_PROTO_HAS_FLAG(proto, PJMEDIA_TP_PROTO_RTP_SAVP)) 1351 { 1350 1352 switch (use_srtp) { 1351 1353 case PJMEDIA_SRTP_MANDATORY: … … 1358 1360 break; 1359 1361 } 1360 } else if (pj_stricmp2(&m->desc.transport, "RTP/AVP")==0) { 1362 } else if (PJMEDIA_TP_PROTO_HAS_FLAG(proto, PJMEDIA_TP_PROTO_RTP_AVP)) 1363 { 1361 1364 switch (use_srtp) { 1362 1365 case PJMEDIA_SRTP_MANDATORY: … … 1482 1485 pj_status_t on_media_event(pjmedia_event *event, void *user_data) 1483 1486 { 1487 char ev_name[5]; 1484 1488 pj_status_t status = PJ_SUCCESS; 1485 1489 1486 1490 PJ_UNUSED_ARG(user_data); 1491 1492 pjmedia_fourcc_name(event->type, ev_name); 1493 PJ_LOG(4,(THIS_FILE, "Received media event type=%s, src=%p, epub=%p", 1494 ev_name, event->src, event->epub)); 1487 1495 1488 1496 /* Forward the event */ … … 1500 1508 pjsua_call_media *call_med = (pjsua_call_media*)user_data; 1501 1509 pjsua_call *call = call_med? call_med->call : NULL; 1510 char ev_name[5]; 1502 1511 pj_status_t status = PJ_SUCCESS; 1503 1512 1513 pj_assert(call && call_med); 1514 pjmedia_fourcc_name(event->type, ev_name); 1515 PJ_LOG(5,(THIS_FILE, "Call %d: Media %d: Received media event, type=%s, " 1516 "src=%p, epub=%p", 1517 call->index, call_med->idx, ev_name, 1518 event->src, event->epub)); 1519 1504 1520 switch(event->type) { 1505 1521 case PJMEDIA_EVENT_KEYFRAME_MISSING: … … 2675 2691 } 2676 2692 2677 /* Add RTCP-FB info in SDP if we are offerer */ 2678 if (rem_sdp == NULL && acc->cfg.rtcp_fb_cfg.cap_count) { 2693 /* Setup RTCP-FB */ 2694 { 2695 pjmedia_rtcp_fb_setting rtcp_cfg; 2696 pjmedia_rtcp_fb_setting_default(&rtcp_cfg); 2697 2698 /* Add RTCP-FB PLI if PJSUA_VID_REQ_KEYFRAME_RTCP_PLI is set */ 2699 if (call_med->type == PJMEDIA_TYPE_VIDEO && 2700 (call->opt.req_keyframe_method & 2701 PJSUA_VID_REQ_KEYFRAME_RTCP_PLI)) 2702 { 2703 rtcp_cfg.cap_count = 1; 2704 pj_strset2(&rtcp_cfg.caps[0].codec_id, (char*)"*"); 2705 rtcp_cfg.caps[0].type = PJMEDIA_RTCP_FB_NACK; 2706 pj_strset2(&rtcp_cfg.caps[0].param, (char*)"pli"); 2707 } 2708 2709 /* Should we put "RTP/AVPF" in SDP?*/ 2710 if (rem_sdp) { 2711 /* For answer, match remote offer */ 2712 unsigned rem_proto = 0; 2713 rem_proto = pjmedia_sdp_transport_get_proto( 2714 &rem_sdp->media[mi]->desc.transport); 2715 rtcp_cfg.dont_use_avpf = 2716 !PJMEDIA_TP_PROTO_HAS_FLAG(rem_proto, 2717 PJMEDIA_TP_PROFILE_RTCP_FB); 2718 } else { 2719 /* For offer, check account setting */ 2720 rtcp_cfg.dont_use_avpf = acc->cfg.rtcp_fb_cfg.dont_use_avpf || 2721 (acc->cfg.rtcp_fb_cfg.cap_count == 0 2722 && rtcp_cfg.cap_count == 0); 2723 } 2724 2679 2725 status = pjmedia_rtcp_fb_encode_sdp(pool, pjsua_var.med_endpt, 2680 & acc->cfg.rtcp_fb_cfg, sdp,2726 &rtcp_cfg, sdp, 2681 2727 mi, rem_sdp); 2682 2728 if (status != PJ_SUCCESS) { 2683 2729 PJ_PERROR(3,(THIS_FILE, status, 2684 "Call %d media %d: Failed to encode RTCP-FB "2730 "Call %d media %d: Failed to encode RTCP-FB PLI " 2685 2731 "setting to SDP", 2686 2732 call_id, mi)); 2733 } 2734 2735 /* Add any other RTCP-FB setting configured in account setting */ 2736 if (acc->cfg.rtcp_fb_cfg.cap_count) { 2737 pj_bool_t tmp = rtcp_cfg.dont_use_avpf; 2738 rtcp_cfg = acc->cfg.rtcp_fb_cfg; 2739 rtcp_cfg.dont_use_avpf = tmp; 2740 status = pjmedia_rtcp_fb_encode_sdp(pool, pjsua_var.med_endpt, 2741 &rtcp_cfg, sdp, 2742 mi, rem_sdp); 2743 if (status != PJ_SUCCESS) { 2744 PJ_PERROR(3,(THIS_FILE, status, 2745 "Call %d media %d: Failed to encode account " 2746 "RTCP-FB setting to SDP", 2747 call_id, mi)); 2748 } 2687 2749 } 2688 2750 }
Note: See TracChangeset
for help on using the changeset viewer.