PJ_DECL(pj_status_t) vid_set_android_window(pjsua_call_id call_id, jobject window) { pj_status_t status = PJ_ENOTFOUND; pjsua_call *call; int i; if( !(call_id>=0 && call_id<(int)pjsua_var.ua_cfg.max_calls) ){ return PJ_ENOTFOUND; } PJ_LOG(4, (THIS_FILE, "Setup android window for call %d", call_id)); PJSUA_LOCK(); // Retrieve the stream if (pjsua_call_has_media(call_id)) { call = &pjsua_var.calls[call_id]; for (i = 0; i < call->med_cnt; ++i) { pjsua_call_media *call_med = &call->media[i]; vid_set_stream_window(call_med, PJMEDIA_DIR_RENDER, window); vid_set_stream_window(call_med, PJMEDIA_DIR_CAPTURE, window); } } PJSUA_UNLOCK(); return status; }
PJ_DECL(pj_status_t) vid_set_android_capturer(jobject window) { unsigned ci, i, count; pj_status_t status = PJ_ENOTFOUND; pjsua_call *call; pjsua_call_id calls_id[PJSUA_MAX_ACC]; count = PJ_ARRAY_SIZE(calls_id); status = pjsua_enum_calls(calls_id, &count); if(status != PJ_SUCCESS){ return status; } PJ_LOG(4, (THIS_FILE, "Setup android capturer for all calls")); PJSUA_LOCK(); for(ci = 0; ci < count; ++ci){ pjsua_call_id call_id = calls_id[ci]; if(pjsua_call_is_active(call_id) && pjsua_call_has_media(call_id)){ call = &pjsua_var.calls[call_id]; for (i = 0; i < call->med_cnt; ++i) { pjsua_call_media *call_med = &call->media[i]; vid_set_stream_window(call_med, PJMEDIA_DIR_CAPTURE, window); status = PJ_SUCCESS; } } } PJSUA_UNLOCK(); return status; }