Changeset 4024


Ignore:
Timestamp:
Apr 5, 2012 4:41:24 AM (12 years ago)
Author:
nanang
Message:

More re #1478: AVI cleanup steps in pjsua app.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip-apps/src/pjsua/pjsua_app.c

    r4023 r4024  
    140140    /* AVI to play */ 
    141141    unsigned                avi_cnt; 
    142     pj_str_t                avi[MAX_AVI]; 
     142    struct { 
     143        pj_str_t                path; 
     144        pjmedia_vid_dev_index   dev_id; 
     145        pjsua_conf_port_id      slot; 
     146    } avi[MAX_AVI]; 
    143147    pj_bool_t               avi_auto_play; 
    144     pjmedia_vid_dev_index   avi_dev_id; 
    145     pjsua_conf_port_id      avi_slot; 
     148    int                     avi_def_idx; 
     149 
    146150} app_config; 
    147151 
     
    411415    cfg->ring_slot = PJSUA_INVALID_ID; 
    412416 
    413     cfg->avi_dev_id = PJMEDIA_VID_INVALID_DEV; 
    414     cfg->avi_slot = PJSUA_INVALID_ID; 
    415  
    416417    for (i=0; i<PJ_ARRAY_SIZE(cfg->acc_cfg); ++i) 
    417418        pjsua_acc_config_default(&cfg->acc_cfg[i]); 
     
    423424    cfg->vid.vrender_dev = PJMEDIA_VID_DEFAULT_RENDER_DEV; 
    424425    cfg->aud_cnt = 1; 
     426 
     427    cfg->avi_def_idx = PJSUA_INVALID_ID; 
    425428} 
    426429 
     
    15181521                return -1; 
    15191522            } 
    1520             app_config.avi[app_config.avi_cnt++] = pj_str(pj_optarg); 
     1523            app_config.avi[app_config.avi_cnt++].path = pj_str(pj_optarg); 
    15211524            break; 
    15221525 
     
    21122115    } 
    21132116    for (i=0; i<config->avi_cnt; ++i) { 
    2114         pj_ansi_sprintf(line, "--play-avi %s\n", config->avi[i].ptr); 
     2117        pj_ansi_sprintf(line, "--play-avi %s\n", config->avi[i].path.ptr); 
    21152118        pj_strcat2(&cfg, line); 
    21162119    } 
     
    28282831        /* Stream AVI, if desired */ 
    28292832        if (app_config.avi_auto_play && 
    2830             app_config.avi_slot != PJSUA_INVALID_ID) 
     2833            app_config.avi_def_idx != PJSUA_INVALID_ID && 
     2834            app_config.avi[app_config.avi_def_idx].slot != PJSUA_INVALID_ID) 
    28312835        { 
    2832             pjsua_conf_connect(app_config.avi_slot, call_conf_slot); 
     2836            pjsua_conf_connect(app_config.avi[app_config.avi_def_idx].slot, 
     2837                               call_conf_slot); 
    28332838            disconnect_mic = PJ_TRUE; 
    28342839        } 
     
    40234028 
    40244029    if (app_config.avi_auto_play && 
    4025         app_config.avi_dev_id != PJMEDIA_VID_INVALID_DEV) 
     4030        app_config.avi_def_idx != PJSUA_INVALID_ID && 
     4031        app_config.avi[app_config.avi_def_idx].dev_id != PJMEDIA_VID_INVALID_DEV) 
    40264032    { 
    4027         acc_cfg->vid_cap_dev = app_config.avi_dev_id; 
     4033        acc_cfg->vid_cap_dev = app_config.avi[app_config.avi_def_idx].dev_id; 
    40284034    } 
    40294035} 
     
    57055711            unsigned strm_idx, strm_cnt; 
    57065712 
     5713            app_config.avi[i].dev_id = PJMEDIA_VID_INVALID_DEV; 
     5714            app_config.avi[i].slot = PJSUA_INVALID_ID; 
     5715 
    57075716            pjmedia_avi_dev_param_default(&avdp); 
    5708             avdp.path = app_config.avi[i]; 
     5717            avdp.path = app_config.avi[i].path; 
    57095718 
    57105719            status =  pjmedia_avi_dev_alloc(avi_factory, &avdp, &avid); 
     
    57185727            PJ_LOG(4,(THIS_FILE, "AVI player %.*s created, dev_id=%d", 
    57195728                      (int)avdp.title.slen, avdp.title.ptr, avid)); 
    5720             app_config.avi_dev_id = avid; 
     5729 
     5730            app_config.avi[i].dev_id = avid; 
     5731            if (app_config.avi_def_idx == PJSUA_INVALID_ID) 
     5732                app_config.avi_def_idx = i; 
    57215733 
    57225734            strm_cnt = pjmedia_avi_streams_get_num_streams(avdp.avi_streams); 
     
    57415753                                  (int)avdp.title.slen, avdp.title.ptr, 
    57425754                                  slot)); 
    5743                         app_config.avi_slot = slot; 
     5755                        app_config.avi[i].slot = slot; 
    57445756                    } 
    57455757                } else { 
     
    60376049    } 
    60386050#endif 
     6051 
     6052    /* Close avi devs and ports */ 
     6053    for (i=0; i<app_config.avi_cnt; ++i) { 
     6054        if (app_config.avi[i].slot != PJSUA_INVALID_ID) 
     6055            pjsua_conf_remove_port(app_config.avi[i].slot); 
     6056        if (app_config.avi[i].dev_id != PJMEDIA_VID_INVALID_DEV) 
     6057            pjmedia_avi_dev_free(app_config.avi[i].dev_id); 
     6058    } 
    60396059 
    60406060    /* Close ringback port */ 
Note: See TracChangeset for help on using the changeset viewer.