123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992 |
- #ifndef __PJSUA_INTERNAL_H__
- #define __PJSUA_INTERNAL_H__
- PJ_BEGIN_DECL
- typedef struct pjsua_call pjsua_call;
- typedef struct pjsua_call_media pjsua_call_media;
- struct pjsua_call_media
- {
- pjsua_call *call;
- pjmedia_type type;
- unsigned idx;
- pj_str_t rem_mid;
- pjsua_call_media_status state;
- pjsua_call_media_status prev_state;
- pjmedia_dir def_dir;
- pjmedia_dir dir;
-
- struct {
-
- struct {
- pjmedia_stream *stream;
- pjmedia_port *media_port;
- pj_bool_t destroy_port;
- int conf_slot;
- } a;
-
- struct {
- pjmedia_vid_stream *stream;
- pjsua_conf_port_id strm_enc_slot;
- pjsua_conf_port_id strm_dec_slot;
- pjsua_vid_win_id cap_win_id;
- pjsua_vid_win_id rdr_win_id;
- pjmedia_vid_dev_index cap_dev;
- pjmedia_vid_dev_index rdr_dev;
- } v;
- } strm;
- pj_uint32_t ssrc;
- pj_uint32_t rtp_tx_ts;
- pj_uint16_t rtp_tx_seq;
- pj_uint8_t rtp_tx_seq_ts_set;
-
- pjmedia_type prev_type;
- pj_sockaddr prev_local_addr;
- pj_sockaddr prev_rem_addr;
- pj_bool_t prev_srtp_use;
- pjmedia_srtp_info prev_srtp_info;
- pj_bool_t prev_ice_use;
- pjmedia_ice_transport_info prev_ice_info;
- pjmedia_transport *tp;
- pj_status_t tp_ready;
- pj_status_t tp_result;
- pjmedia_transport *tp_orig;
- pj_bool_t tp_auto_del;
- pjsua_med_tp_st tp_st;
- pj_bool_t use_custom_med_tp;
- pj_bool_t enable_rtcp_mux;
- pj_sockaddr rtp_addr;
- pjmedia_srtp_use rem_srtp_use;
- pj_timestamp last_req_keyframe;
- pj_bool_t use_upnp;
- pj_sockaddr mapped_addr[2];
- pjsua_med_tp_state_cb med_init_cb;
-
- pj_status_t (*med_create_cb)(pjsua_call_media *call_med,
- pj_status_t status, int security_level,
- int *sip_err_code);
- };
- #define PJSUA_MAX_CALL_MEDIA PJMEDIA_MAX_SDP_MEDIA
- typedef struct call_answer
- {
- PJ_DECL_LIST_MEMBER(struct call_answer);
- pjsua_msg_data *msg_data;
- pj_str_t *reason;
- unsigned code;
- pjsua_call_setting *opt;
- } call_answer;
- typedef enum pjsua_op_state {
- PJSUA_OP_STATE_NULL,
- PJSUA_OP_STATE_READY,
- PJSUA_OP_STATE_RUNNING,
- PJSUA_OP_STATE_DONE,
- } pjsua_op_state;
- struct pjsua_call
- {
- unsigned index;
- pjsua_call_setting opt;
- pj_bool_t opt_inited;
- pjsip_inv_session *inv;
- void *user_data;
- pjsip_status_code last_code;
- pj_str_t last_text;
- pj_time_val start_time;
- pj_time_val res_time;
- pj_time_val conn_time;
- pj_time_val dis_time;
- pjsua_acc_id acc_id;
- int secure_level;
- pjsua_call_hold_type call_hold_type;
- pj_bool_t local_hold;
- void *hold_msg;
- pj_str_t cname;
- char cname_buf[16];
- unsigned med_cnt;
- pjsua_call_media media[PJSUA_MAX_CALL_MEDIA];
- unsigned med_prov_cnt;
- pjsua_call_media media_prov[PJSUA_MAX_CALL_MEDIA];
-
- pj_bool_t med_update_success;
-
- pj_bool_t hanging_up;
- int audio_idx;
- pj_mutex_t *med_ch_mutex;
- pjsua_med_tp_state_cb med_ch_cb;
- pjsua_med_tp_state_info med_ch_info;
- pjsip_evsub *xfer_sub;
- pj_stun_nat_type rem_nat_type;
- char last_text_buf_[128];
- struct {
- int retry_cnt;
- } lock_codec;
- struct {
- pjsip_dialog *dlg;
- pjmedia_sdp_session *rem_sdp;
- pj_pool_t *pool_prov;
- pj_bool_t med_ch_deinit;
- union {
- struct {
- pjsua_msg_data *msg_data;
- pj_bool_t hangup;
- } out_call;
- struct {
- call_answer answers;
- pj_bool_t hangup;
- pjsip_dialog *replaced_dlg;
- } inc_call;
- } call_var;
- } async_call;
- pj_bool_t rem_offerer;
- unsigned rem_aud_cnt;
- unsigned rem_vid_cnt;
-
- pj_bool_t rx_reinv_async;
- pj_timer_entry reinv_timer;
- pj_bool_t reinv_pending;
- pj_bool_t reinv_ice_sent;
- pjsip_rx_data *incoming_data;
- struct {
- pj_bool_t enabled;
- pj_bool_t remote_sup;
- pj_bool_t remote_dlg_est;
- pjsua_op_state trickling;
- int retrans18x_count;
- pj_bool_t pending_info;
- pj_timer_entry timer;
- } trickle_ice;
- pj_timer_entry hangup_timer;
- unsigned hangup_retry;
- unsigned hangup_code;
- pj_str_t hangup_reason;
- pjsua_msg_data *hangup_msg_data;
- };
- struct pjsua_srv_pres
- {
- PJ_DECL_LIST_MEMBER(struct pjsua_srv_pres);
- pjsip_evsub *sub;
- char *remote;
- int acc_id;
- pjsip_dialog *dlg;
- unsigned expires;
- };
- typedef struct pjsua_acc
- {
- pj_pool_t *pool;
- pjsua_acc_config cfg;
- pj_bool_t valid;
- int index;
- pj_str_t display;
- pj_str_t user_part;
- pj_bool_t is_sips;
- pj_str_t contact;
- pj_str_t reg_contact;
- pj_bool_t contact_rewritten;
-
- pjsip_host_port via_addr;
- pjsip_transport *via_tp;
- pj_str_t srv_domain;
- int srv_port;
- pjsip_regc *regc;
- pj_status_t reg_last_err;
- int reg_last_code;
- pj_str_t reg_mapped_addr;
- struct {
- pj_bool_t active;
- pj_timer_entry timer;
- void *reg_tp;
- unsigned attempt_cnt;
- } auto_rereg;
- pj_timer_entry ka_timer;
- pjsip_transport *ka_transport;
- pj_sockaddr ka_target;
- unsigned ka_target_len;
- pjsip_route_hdr route_set;
- pj_uint32_t global_route_crc;
- pj_uint32_t local_route_crc;
- unsigned rfc5626_status;
- pj_str_t rfc5626_instprm;
- pj_str_t rfc5626_regprm;
- unsigned rfc5626_flowtmr;
- unsigned cred_cnt;
- pjsip_cred_info cred[PJSUA_ACC_MAX_PROXIES];
- pj_bool_t online_status;
- pjrpid_element rpid;
- pjsua_srv_pres pres_srv_list;
- pjsip_publishc *publish_sess;
- pj_bool_t publish_state;
- pjsip_evsub *mwi_sub;
- pjsip_dialog *mwi_dlg;
- pj_uint16_t next_rtp_port;
- pjsip_transport_type_e tp_type;
- pjsua_ip_change_op ip_change_op;
- } pjsua_acc;
- typedef struct pjsua_transport_data
- {
- int index;
- pjsip_transport_type_e type;
- pjsip_host_port local_name;
- pj_sockaddr pub_addr;
- union {
- pjsip_transport *tp;
- pjsip_tpfactory *factory;
- void *ptr;
- } data;
- pj_bool_t is_restarting;
- pj_status_t restart_status;
- pj_bool_t has_cfg_addr;
- } pjsua_transport_data;
- #define PJSUA_BUDDY_SUB_TERM_REASON_LEN 32
- typedef struct pjsua_buddy
- {
- pj_pool_t *pool;
- unsigned index;
- void *user_data;
- pj_str_t uri;
- pj_str_t contact;
- pj_str_t name;
- pj_str_t display;
- pj_str_t host;
- unsigned port;
- pj_bool_t monitor;
- pjsip_dialog *dlg;
- pjsip_evsub *sub;
- pj_bool_t presence;
- unsigned term_code;
- pj_str_t term_reason;
- pjsip_pres_status status;
- pjsip_dlg_event_status dlg_ev_status;
- pj_timer_entry timer;
- } pjsua_buddy;
- typedef struct pjsua_file_data
- {
- pj_bool_t type;
- pjmedia_port *port;
- pj_pool_t *pool;
- unsigned slot;
- } pjsua_file_data;
- typedef struct pjsua_conf_setting
- {
- unsigned channel_count;
- unsigned samples_per_frame;
- unsigned bits_per_sample;
- } pjsua_conf_setting;
- typedef struct pjsua_stun_resolve
- {
- PJ_DECL_LIST_MEMBER(struct pjsua_stun_resolve);
- pj_pool_t *pool;
- int ref_cnt;
- pj_bool_t destroy_flag;
- pj_bool_t has_result;
- unsigned count;
- pj_str_t *srv;
- unsigned idx;
- void *token;
- pj_stun_resolve_cb cb;
- pj_bool_t blocking;
- pj_thread_t *waiter;
- pj_timer_entry timer;
- pj_status_t status;
- pj_sockaddr addr;
- pj_stun_sock *stun_sock;
- int af;
- pj_bool_t async_wait;
- } pjsua_stun_resolve;
- typedef enum pjsua_vid_win_type
- {
- PJSUA_WND_TYPE_NONE,
- PJSUA_WND_TYPE_PREVIEW,
- PJSUA_WND_TYPE_STREAM
- } pjsua_vid_win_type;
- typedef struct pjsua_vid_win
- {
- pjsua_vid_win_type type;
- pj_pool_t *pool;
- unsigned ref_cnt;
- pjmedia_vid_port *vp_cap;
- pjmedia_vid_port *vp_rend;
- pjsua_conf_port_id cap_slot;
- pjsua_conf_port_id rend_slot;
- pjmedia_vid_dev_index preview_cap_id;
- pj_bool_t preview_running;
- pj_bool_t is_native;
- } pjsua_vid_win;
- typedef struct pjsua_timer_list
- {
- PJ_DECL_LIST_MEMBER(struct pjsua_timer_list);
- pj_timer_entry entry;
- void (*cb)(void *user_data);
- void *user_data;
- } pjsua_timer_list;
- typedef struct pjsua_event_list
- {
- PJ_DECL_LIST_MEMBER(struct pjsua_event_list);
- pjmedia_event event;
- pjsua_call_id call_id;
- unsigned med_idx;
- } pjsua_event_list;
- struct pjsua_data
- {
-
- pj_caching_pool cp;
- pj_pool_t *pool;
- pj_pool_t *timer_pool;
- pj_mutex_t *mutex;
- unsigned mutex_nesting_level;
- pj_thread_t *mutex_owner;
- pjsua_state state;
-
- pjsua_logging_config log_cfg;
- pj_oshandle_t log_file;
-
- pjsip_endpoint *endpt;
- pjsip_module mod;
- pjsua_transport_data tpdata[8];
- pjsip_tp_state_callback old_tp_cb;
-
- pj_bool_t thread_quit_flag;
- pj_thread_t *thread[4];
-
- pj_stun_config stun_cfg;
- pj_sockaddr stun_srv;
- pj_status_t stun_status;
- pjsua_stun_resolve stun_res;
- unsigned stun_srv_idx;
- unsigned stun_opt;
- pj_dns_resolver *resolver;
-
- pj_status_t upnp_status;
-
- pj_stun_nat_type nat_type;
- pj_status_t nat_status;
- pj_bool_t nat_in_progress;
-
- pjsip_route_hdr outbound_proxy;
-
- unsigned acc_cnt;
- pjsua_acc_id default_acc;
- pjsua_acc acc[PJSUA_MAX_ACC];
- pjsua_acc_id acc_ids[PJSUA_MAX_ACC];
-
- pjsua_config ua_cfg;
- unsigned call_cnt;
- pjsua_call calls[PJSUA_MAX_CALLS];
- pjsua_call_id next_call_id;
-
- unsigned buddy_cnt;
- pjsua_buddy buddy[PJSUA_MAX_BUDDIES];
-
- pj_timer_entry pres_timer;
-
- pjsua_media_config media_cfg;
- pjmedia_endpt *med_endpt;
- pjsua_conf_setting mconf_cfg;
- pjmedia_conf *mconf;
- pj_bool_t is_mswitch;
-
- pjmedia_aud_dev_index cap_dev;
- pjmedia_aud_dev_index play_dev;
- pj_uint32_t aud_svmask;
- pjmedia_aud_param aud_param;
- pj_bool_t aud_open_cnt;
- pj_bool_t no_snd;
- pj_pool_t *snd_pool;
- pjmedia_snd_port *snd_port;
- pj_timer_entry snd_idle_timer;
- pjmedia_master_port *null_snd;
- pjmedia_port *null_port;
- pj_bool_t snd_is_on;
- unsigned snd_mode;
-
- pjmedia_vid_dev_index vcap_dev;
- pjmedia_vid_dev_index vrdr_dev;
-
- #if PJSUA_HAS_VIDEO
- pjmedia_vid_conf *vid_conf;
- pj_uint32_t vid_caps[PJMEDIA_VID_DEV_MAX_DEVS];
- pjmedia_vid_dev_param vid_param[PJMEDIA_VID_DEV_MAX_DEVS];
- #endif
-
- unsigned player_cnt;
- pjsua_file_data player[PJSUA_MAX_PLAYERS];
-
- unsigned rec_cnt;
- pjsua_file_data recorder[PJSUA_MAX_RECORDERS];
-
- #if PJSUA_HAS_VIDEO
- pjsua_vid_win win[PJSUA_MAX_VID_WINS];
- #endif
-
- pjsua_timer_list active_timer_list;
- pjsua_timer_list timer_list;
- pjsua_event_list event_list;
- pj_mutex_t *timer_mutex;
- };
- extern struct pjsua_data pjsua_var;
- PJ_DECL(struct pjsua_data*) pjsua_get_var(void);
- typedef struct pjsua_im_data
- {
- pjsua_acc_id acc_id;
- pjsua_call_id call_id;
- pj_str_t to;
- pj_str_t body;
- void *user_data;
- } pjsua_im_data;
- pj_status_t pjsua_media_apply_xml_control(pjsua_call_id call_id,
- const pj_str_t *xml_st);
- PJ_INLINE(pjsua_im_data*) pjsua_im_data_dup(pj_pool_t *pool,
- const pjsua_im_data *src)
- {
- pjsua_im_data *dst;
- dst = (pjsua_im_data*) pj_pool_alloc(pool, sizeof(*dst));
- dst->acc_id = src->acc_id;
- dst->call_id = src->call_id;
- pj_strdup_with_null(pool, &dst->to, &src->to);
- dst->user_data = src->user_data;
- pj_strdup_with_null(pool, &dst->body, &src->body);
- return dst;
- }
- #if 1
- PJ_INLINE(void) PJSUA_LOCK()
- {
- pj_mutex_lock(pjsua_var.mutex);
- pjsua_var.mutex_owner = pj_thread_this();
- ++pjsua_var.mutex_nesting_level;
- }
- PJ_INLINE(void) PJSUA_UNLOCK()
- {
- if (--pjsua_var.mutex_nesting_level == 0)
- pjsua_var.mutex_owner = NULL;
- pj_mutex_unlock(pjsua_var.mutex);
- }
- PJ_INLINE(pj_status_t) PJSUA_TRY_LOCK()
- {
- pj_status_t status;
- status = pj_mutex_trylock(pjsua_var.mutex);
- if (status == PJ_SUCCESS) {
- pjsua_var.mutex_owner = pj_thread_this();
- ++pjsua_var.mutex_nesting_level;
- }
- return status;
- }
- PJ_INLINE(pj_bool_t) PJSUA_LOCK_IS_LOCKED()
- {
- return pjsua_var.mutex_owner == pj_thread_this();
- }
- PJ_INLINE(unsigned) PJSUA_RELEASE_LOCK()
- {
- unsigned num_locks = 0;
- while (PJSUA_LOCK_IS_LOCKED()) {
- num_locks++;
- PJSUA_UNLOCK();
- }
- return num_locks;
- }
- PJ_INLINE(void) PJSUA_RELOCK(unsigned num_locks)
- {
- for (; num_locks > 0; num_locks--)
- PJSUA_LOCK();
- }
- #else
- #define PJSUA_LOCK()
- #define PJSUA_TRY_LOCK() PJ_SUCCESS
- #define PJSUA_UNLOCK()
- #define PJSUA_LOCK_IS_LOCKED() PJ_TRUE
- #endif
- void pjsua_set_state(pjsua_state new_state);
- pj_status_t resolve_stun_server(pj_bool_t wait, pj_bool_t retry_if_cur_error,
- unsigned options);
- pj_status_t normalize_route_uri(pj_pool_t *pool, pj_str_t *uri);
- pj_bool_t pjsua_sip_acc_is_using_stun(pjsua_acc_id acc_id);
- pj_bool_t pjsua_media_acc_is_using_stun(pjsua_acc_id acc_id);
- pj_bool_t pjsua_sip_acc_is_using_upnp(pjsua_acc_id acc_id);
- pj_bool_t pjsua_media_acc_is_using_upnp(pjsua_acc_id acc_id);
- pj_bool_t pjsua_sip_acc_is_using_ipv6(pjsua_acc_id acc_id);
- pj_status_t pjsua_acc_get_uac_addr(pjsua_acc_id acc_id,
- pj_pool_t *pool,
- const pj_str_t *dst_uri,
- pjsip_host_port *addr,
- pjsip_transport_type_e *p_tp_type,
- int *p_secure,
- const void **p_tp);
- pj_bool_t pjsua_call_on_incoming(pjsip_rx_data *rdata);
- pj_status_t pjsua_media_channel_init(pjsua_call_id call_id,
- pjsip_role_e role,
- int security_level,
- pj_pool_t *tmp_pool,
- const pjmedia_sdp_session *rem_sdp,
- int *sip_err_code,
- pj_bool_t async,
- pjsua_med_tp_state_cb cb);
- pj_status_t pjsua_media_channel_create_sdp(pjsua_call_id call_id,
- pj_pool_t *pool,
- const pjmedia_sdp_session *rem_sdp,
- pjmedia_sdp_session **p_sdp,
- int *sip_err_code);
- pj_status_t pjsua_media_channel_update(pjsua_call_id call_id,
- const pjmedia_sdp_session *local_sdp,
- const pjmedia_sdp_session *remote_sdp);
- pj_status_t pjsua_media_channel_deinit(pjsua_call_id call_id);
- void pjsua_ice_check_start_trickling(pjsua_call *call,
- pj_bool_t forceful,
- pjsip_event *e);
- #define ERR_MEDIA_CHANGING " because another media operation is in progress"
- pj_bool_t pjsua_call_media_is_changing(pjsua_call *call);
- pj_status_t pjsua_call_media_init(pjsua_call_media *call_med,
- pjmedia_type type,
- const pjmedia_sdp_session *rem_sdp,
- const pjsua_transport_config *tcfg,
- int security_level,
- int *sip_err_code,
- pj_bool_t async,
- pjsua_med_tp_state_cb cb);
- void pjsua_call_cleanup_flag(pjsua_call_setting *opt);
- void pjsua_set_media_tp_state(pjsua_call_media *call_med, pjsua_med_tp_st tp_st);
- void pjsua_media_prov_clean_up(pjsua_call_id call_id);
- void pjsua_media_prov_revert(pjsua_call_id call_id);
- pj_status_t on_media_event(pjmedia_event *event, void *user_data);
- void call_med_event_cb(void *user_data);
- pj_status_t call_media_on_event(pjmedia_event *event,
- void *user_data);
- pj_status_t pjsua_pres_init(void);
- pj_status_t pjsua_pres_start(void);
- void pjsua_pres_refresh(void);
- void pjsua_pres_update_acc(int acc_id, pj_bool_t force);
- void pjsua_pres_shutdown(unsigned flags);
- pj_status_t pjsua_pres_init_acc(int acc_id);
- pj_status_t pjsua_pres_init_publish_acc(int acc_id);
- void pjsua_pres_unpublish(pjsua_acc *acc, unsigned flags);
- void pjsua_pres_delete_acc(int acc_id, unsigned flags);
- pj_status_t pjsua_im_init(void);
- pj_status_t pjsua_start_mwi(pjsua_acc_id acc_id, pj_bool_t force_renew);
- pj_status_t pjsua_call_subsys_init(const pjsua_config *cfg);
- pj_status_t pjsua_call_subsys_start(void);
- pj_status_t pjsua_media_subsys_init(const pjsua_media_config *cfg);
- pj_status_t pjsua_media_subsys_start(void);
- pj_status_t pjsua_media_subsys_destroy(unsigned flags);
- pj_bool_t pjsua_im_accept_pager(pjsip_rx_data *rdata,
- pjsip_accept_hdr **p_accept_hdr);
- void pjsua_im_process_pager(int call_id, const pj_str_t *from,
- const pj_str_t *to, pjsip_rx_data *rdata);
- pjsip_accept_hdr* pjsua_im_create_accept(pj_pool_t *pool);
- void pjsua_process_msg_data(pjsip_tx_data *tdata,
- const pjsua_msg_data *msg_data);
- void pjsua_set_msg_route_set( pjsip_tx_data *tdata,
- const pjsip_route_hdr *route_set );
- void pjsua_parse_media_type( pj_pool_t *pool,
- const pj_str_t *mime,
- pjsip_media_type *media_type);
- void pjsua_init_tpselector(pjsua_transport_id tp_id,
- pjsip_tpselector *sel);
- pjsip_dialog* on_dlg_forked(pjsip_dialog *first_set, pjsip_rx_data *res);
- pj_status_t acquire_call(const char *title,
- pjsua_call_id call_id,
- pjsua_call **p_call,
- pjsip_dialog **p_dlg);
- const char *good_number(char *buf, unsigned buf_size, pj_int32_t val);
- void print_call(const char *title,
- int call_id,
- char *buf, pj_size_t size);
- pj_status_t pjsua_aud_subsys_init(void);
- pj_status_t pjsua_aud_subsys_start(void);
- pj_status_t pjsua_aud_subsys_destroy(void);
- void pjsua_aud_stop_stream(pjsua_call_media *call_med);
- pj_status_t pjsua_aud_channel_update(pjsua_call_media *call_med,
- pj_pool_t *tmp_pool,
- pjmedia_stream_info *si,
- const pjmedia_sdp_session *local_sdp,
- const pjmedia_sdp_session *remote_sdp);
- void pjsua_check_snd_dev_idle(void);
- pj_status_t pjsua_vid_subsys_init(void);
- pj_status_t pjsua_vid_subsys_start(void);
- pj_status_t pjsua_vid_subsys_destroy(void);
- void pjsua_vid_stop_stream(pjsua_call_media *call_med);
- pj_status_t pjsua_vid_channel_init(pjsua_call_media *call_med);
- pj_status_t pjsua_vid_channel_update(pjsua_call_media *call_med,
- pj_pool_t *tmp_pool,
- pjmedia_vid_stream_info *si,
- const pjmedia_sdp_session *local_sdp,
- const pjmedia_sdp_session *remote_sdp);
- #if PJSUA_HAS_VIDEO
- void pjsua_vid_win_reset(pjsua_vid_win_id wid);
- #else
- # define pjsua_vid_win_reset(wid)
- #endif
- void pjsua_call_schedule_reinvite_check(pjsua_call *call, unsigned delay_ms);
- pj_status_t pjsua_acc_update_contact_on_ip_change(pjsua_acc *acc);
- pj_status_t pjsua_acc_handle_call_on_ip_change(pjsua_acc *acc);
- void pjsua_acc_end_ip_change(pjsua_acc *acc);
- PJ_END_DECL
- #endif
|