Ignore:
Timestamp:
Oct 24, 2017 7:31:39 AM (7 years ago)
Author:
ming
Message:

Fixed #2052: Add option for pjsua callback on_stream_created to destroy application's supplied media port

File:
1 edited

Legend:

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

    r5651 r5676  
    532532        } 
    533533 
     534        if (call_med->strm.a.media_port) { 
     535            if (call_med->strm.a.destroy_port) 
     536                pjmedia_port_destroy(call_med->strm.a.media_port); 
     537            call_med->strm.a.media_port = NULL; 
     538        } 
     539 
    534540        pjmedia_stream_destroy(strm); 
    535541        call_med->strm.a.stream = NULL; 
     
    576582{ 
    577583    pjsua_call *call = call_med->call; 
    578     pjmedia_port *media_port; 
    579584    unsigned strm_idx = call_med->idx; 
    580585    pj_status_t status = PJ_SUCCESS; 
     
    646651         * We need the port interface to add to the conference bridge. 
    647652         */ 
    648         pjmedia_stream_get_port(call_med->strm.a.stream, &media_port); 
     653        pjmedia_stream_get_port(call_med->strm.a.stream, 
     654                                &call_med->strm.a.media_port); 
    649655 
    650656        /* Notify application about stream creation. 
     
    652658         * media port 
    653659         */ 
    654         if (pjsua_var.ua_cfg.cb.on_stream_created) { 
    655             pjsua_var.ua_cfg.cb.on_stream_created(call->index, 
     660        if (pjsua_var.ua_cfg.cb.on_stream_created2) { 
     661            pjsua_on_stream_created_param prm; 
     662             
     663            prm.stream = call_med->strm.a.stream; 
     664            prm.stream_idx = strm_idx; 
     665            prm.destroy_port = PJ_FALSE; 
     666            prm.port = call_med->strm.a.media_port; 
     667            (*pjsua_var.ua_cfg.cb.on_stream_created2)(call->index, &prm); 
     668             
     669            call_med->strm.a.destroy_port = prm.destroy_port; 
     670            call_med->strm.a.media_port = prm.port; 
     671 
     672        } else if (pjsua_var.ua_cfg.cb.on_stream_created) { 
     673            (*pjsua_var.ua_cfg.cb.on_stream_created)(call->index, 
    656674                                                  call_med->strm.a.stream, 
    657                                                   strm_idx, &media_port); 
     675                                                  strm_idx, 
     676                                                  &call_med->strm.a.media_port); 
    658677        } 
    659678 
     
    672691                port_name = pj_str("call"); 
    673692            } 
    674             status = pjmedia_conf_add_port( pjsua_var.mconf, 
    675                                             call->inv->pool, 
    676                                             media_port, 
    677                                             &port_name, 
    678                                             (unsigned*) 
    679                                             &call_med->strm.a.conf_slot); 
     693            status = pjmedia_conf_add_port(pjsua_var.mconf, 
     694                                           call->inv->pool, 
     695                                           call_med->strm.a.media_port, 
     696                                           &port_name, 
     697                                           (unsigned*) 
     698                                           &call_med->strm.a.conf_slot); 
    680699            if (status != PJ_SUCCESS) { 
    681700                goto on_return; 
Note: See TracChangeset for help on using the changeset viewer.