Ignore:
Timestamp:
Sep 4, 2018 3:12:58 PM (6 years ago)
Author:
riza
Message:

Close #2145: Don't rearrange media when sending re-INVITE with
PJSUA_CALL_REINIT_MEDIA.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_media.c

    r5871 r5878  
    13591359 */ 
    13601360static void sort_media2(const pjsua_call_media *call_med, 
     1361                        pj_bool_t check_tp, 
    13611362                        unsigned call_med_cnt, 
    13621363                        pjmedia_type type, 
     
    13871388 
    13881389        /* Is it active? */ 
    1389         if (!call_med[i].tp) { 
     1390        if (check_tp && !call_med[i].tp) { 
    13901391            score[i] -= 10; 
    13911392        } 
     
    20472048         * Otherwise, apply media count from the call setting directly. 
    20482049         */ 
    2049         if (reinit && (call->opt.flag & PJSUA_CALL_REINIT_MEDIA) == 0) { 
     2050        if (reinit) { 
     2051            pj_bool_t sort_check_tp; 
     2052 
     2053            /* Media sorting below will check transport, i.e: media without 
     2054             * transport will have lower priority. If PJSUA_CALL_REINIT_MEDIA 
     2055             * is set, we must not check transport. 
     2056             */ 
     2057            sort_check_tp = !(call->opt.flag & PJSUA_CALL_REINIT_MEDIA); 
    20502058 
    20512059            /* We are sending reoffer, check media count for each media type 
    20522060             * from the existing call media list. 
    20532061             */ 
    2054             sort_media2(call->media_prov, call->med_prov_cnt, 
     2062            sort_media2(call->media_prov, sort_check_tp, call->med_prov_cnt, 
    20552063                        PJMEDIA_TYPE_AUDIO, maudidx, &maudcnt, &mtotaudcnt); 
    20562064 
     
    20582066            //pj_assert(maudcnt > 0); 
    20592067 
    2060             sort_media2(call->media_prov, call->med_prov_cnt, 
     2068            sort_media2(call->media_prov, sort_check_tp, call->med_prov_cnt, 
    20612069                        PJMEDIA_TYPE_VIDEO, mvididx, &mvidcnt, &mtotvidcnt); 
    20622070 
     
    20882096            } 
    20892097            mvidcnt = call->opt.vid_cnt; 
     2098 
     2099            /* In case of media reinit, 'med_prov_cnt' may be decreased 
     2100             * because the new call->opt says so. As media count should 
     2101             * never decrease, we should verify 'med_prov_cnt' to be 
     2102             * at least equal to 'med_cnt' (see also #1987). 
     2103             */ 
     2104            if ((call->opt.flag & PJSUA_CALL_REINIT_MEDIA) && 
     2105                call->med_prov_cnt < call->med_cnt) 
     2106            { 
     2107                call->med_prov_cnt = call->med_cnt; 
     2108            } 
    20902109 
    20912110        } else { 
     
    21132132                } 
    21142133#endif 
    2115             } 
    2116  
    2117             /* In case of media reinit, 'med_prov_cnt' may be decreased 
    2118              * because the new call->opt says so. As media count should 
    2119              * never decrease, we should verify 'med_prov_cnt' to be 
    2120              * at least equal to 'med_cnt' (see also #1987). 
    2121              */ 
    2122             if (reinit && (call->opt.flag & PJSUA_CALL_REINIT_MEDIA) && 
    2123                 call->med_prov_cnt < call->med_cnt) 
    2124             { 
    2125                 call->med_prov_cnt = call->med_cnt; 
    21262134            } 
    21272135        } 
Note: See TracChangeset for help on using the changeset viewer.