PJSUA2開發文檔--第十二章 PJSUA2 API 參考手冊

12 PJSUA2 API 參考手冊

12.1 endpoint.hpp 

PJSUA2基本代理操做。html

 namespace pjnode

PJSUA2 API在pj命名空間內。git

12.1.1 class Endpoint

#include <endpoint.hpp>算法

端點表示pjsua庫的一個實例。json

在應用程序中只能有一個pjsua庫的實例,所以這個類是一個單例。後端

公有函數 數組

1)Endpoint()

默認構造函數。安全

2)virtual  ~Endpoint()

virtual 析構函數服務器

3)Version  libVersion() const

獲取lib版本。網絡

4)void libCreate()

實例化pjsua應用程序。

調用任何其餘函數以前,應用程序必須調用此函數,以確保底層庫被正確初始化。一旦這個函數返回成功,應用程序必須在退出以前調用libDestroy()

5)pjsua_state libGetState() const

獲取庫狀態。

返回

lib狀態。

6)void libInitconst EpConfigprmEpConfig 

使用指定的設置初始化pjsua。

全部設置都是可選的,而且在未指定配置時將使用默認值。

請注意,在調用此函數以前必須調用create()。

參數

7)void libStart()

全部初始化完成後調用此功能,以便庫能夠進行其餘檢查設置。

應用程序能夠在init()以後的任什麼時候間調用此函數。

8)void libRegisterThreadconst string&name 

註冊外部或本lib的API建立的線程

請注意,每次調用此函數時,它將分配一些內存來存儲線程描述,這隻會在庫被析構時被釋放。

參數

  • name -要分配給線程的可選名稱。

9)bool libIsThreadRegistered()

檢查這個線程是否已經註冊到庫中。

注意,此函數僅適用於lib主工做線程和使用libRegisterThread()註冊的外部/ lib的API建立的線程。

10)void libStopWorkerThreads()

中止全部工做線程。

11)int libHandleEvents( unsigned msec_timeout 

對事件進行輪詢pjsua,若是須要,能夠阻塞調用者線程指定的最大間隔(以毫秒爲單位)。

若是在pjsua_config結構中配置了工做線程(thread_cnt字段),應用程序一般不須要調用此函數,由於輪詢將由這些工做線程完成。

若是啓用了EpConfig :: UaConfig :: mainThreadOnly,而且從主線程調用此函數(默認主線程是調用libCreate()的線程),此函數還將掃描並運行列表中的任何待處理做業。

返回

投票期間處理的事件數。負值表示錯誤,應用程序能夠以(status = -return_value)方式檢索錯誤。

參數

  • msec_timeout -最長時間等待,以毫秒爲單位。

12)void libDestroy( unsigned prmFlags = 0 )

銷燬pjsua。

建議使用應用程序在調用此功能以前執行正常關閉(例如從SIP服務器註銷賬戶,終止預訂訂閱和掛斷主動調用),可是若是發現須要的活動會話,此功能將執行全部這些功能被終止 此功能將阻止幾秒鐘等待遠程的回覆。

若是沒有跟蹤它的狀態,應用程序能夠屢次安全地調用此函數。

參數

prmFlags - 組合pjsua_destroy_flag枚舉。

13)string utilStrError( pj_status_t prmErr 

檢索指定狀態代碼的錯誤字符串。

參數

prmErr - 錯誤代碼。

14)void utilLogWrite( int prmLevelconst string&prmSenderconst string&prmMsg 

寫一個日誌消息。

參數

prmLevel - 日誌詳細程度(1-5)

prmSender - 日誌發送方。

prmMsg - 日誌消息。

15)void utilLogWriteLogEntry

寫一個日誌條目。

參數

e - 日誌條目。

16)pj_status_t utilVerifySipUriconst string&prmUri 

這是一個通用函數,用於驗證是否給出了有效的SIP URL。

若是URL是有效的SIP / SIPS方案,則將返回PJ_SUCCESS。

返回

PJ_SUCCESS成功,或相應的錯誤代碼。

參考utilVerifyUri()

參數

prmUri - URL字符串。

17)pj_status_t utilVerifyUriconst string&prmUri 

這是一個通用函數,用於驗證是否給出了有效的URI。

utilVerifySipUri()不一樣,若是給出tel:URI,此函數將返回PJ_SUCCESS。

返回

PJ_SUCCESS成功,或相應的錯誤代碼。

參考pjsua_verify_sip_url()

參數

prm Uri - URL字符串。

18)Token  utilTimerSchedule(unsigned prmMsecDelayToken  prmUserData 

安排具備指定間隔的時間和用戶數據。

當間隔通過時,將調用onTimer()回調。請注意,回調可能由不一樣的線程執行,具體取決因而否啓用了工做線程。

返回

令牌識別定時器,能夠給予utilTimerCancel()

參數

prmMsecDelay - 時間間隔,單位爲毫秒。

prmUserData - 任意用戶數據,被回饋給應用程序在回調。

void utilTimerCancelToken prmToken 

使用指定的定時器令牌取消先前定時的定時器。

參數

prmToken - 從之前的utilTimerSchedule()調用返回的計時器令牌。

19)void utilAddPendingJobPendingJob * job 

註冊要由主線程執行的待處理做業的實用程序。

若是EpConfig :: UaConfig :: mainThreadOnly爲false,該做業將當即執行。

參數

job - 工做類。

20)IntVector utilSslGetAvailableCiphers()

獲取SSL / TLS後端支持的密碼列表。

21)void natDetectType( void )

這是在該端點前面檢測NAT類型的通用函數。

一旦成功調用,此函數將異步完成,並在onNatDetectionComplete()中報告結果。

在檢測到NAT並調用回調後,應用程序能夠經過調用natGetType()獲取檢測到的NAT類型。應用程序還能夠在稍後再次調用natDetectType()來執行NAT檢測。

注意,必須啓用STUN才能成功運行此功能。

22)pj_stun_nat_type natGetType()

獲取natDetectType()函數檢測到的NAT類型。

natDetectType()已成功完成而且已調用onNatDetectionComplete()回調函數後,此函數將僅返回有用的NAT類型。

異常:若是在檢測過程當中調用此函數,將引起PJ_EPENDING異常。

23)void natUpdateStunServersconst StringVectorprmServers,bool prmWait 

更新STUN服務器列表。

libInit()必須在調用這個函數以前已被調用。

參數

prmServers - STUN服務器數組嘗試。端點將嘗試解析並聯系每一個STUN服務器條目,直到找到可用的條目。每一個條目多是域名,主機名,IP地址,而且可能包含可選的端口號。例如:

  • 「pjsip.org」(域名)
  • 「sip.pjsip.org」(主機名)
  • 「pjsip.org:33478」(域名和非標準端口號)
  • 「10.0.0.1:3478」(IP地址和端口號)

prmWait - 指定函數是否應該阻塞,直到獲得結果。在這種狀況下,函數將在完成過程當中阻塞,而且在該函數返回以前調用onNatCheckStunServersComplete()

24)void natCheckStunServersconst StringVectorprmServers,bool prmWaitToken prmUserData 

輔助功能,用於解析和聯繫每一個STUN服務器條目(依次)以查找哪一個可用。

libInit()必須在調用這個函數以前被調用。

參考natCancelCheckStunServers()

參數

prmServers - STUN服務器數組嘗試。端點將嘗試解析並聯系每一個STUN服務器條目,直到找到可用的條目。每一個條目多是域名,主機名,IP地址,而且可能包含可選的端口號。例如:

  • 「pjsip.org」(域名)
  • 「sip.pjsip.org」(主機名)
  • 「pjsip.org:33478」(域名和非標準端口號)
  • 「10.0.0.1:3478」(IP地址和端口號)

prmWait - 指定函數是否應該阻塞,直到獲得結果。在這種狀況下,函數將在分辨率完成時阻塞,而且在該函數返回以前調用回調函數。

prmUserData - 任意用戶數據要在回調中傳回應用程序。

25)void natCancelCheckStunServersToken  token ,bool notify_cb = false )

取消與指定令牌匹配的待決STUN分辨率。

異常:若是沒有匹配的PJ_ENOTFOUND或其餘錯誤。

參數

token - 令牌匹配。這個令牌給了natCheckStunServers()

notify_cb - 布爾值,用於控制是否爲已取消的分辨率調用回調。當調用回調時,結果中的狀態將被設置爲PJ_ECANCELLED。

TransportId transportCreate( pjsip_transport_type_e typeconst TransportConfigcfg 

根據指定的設置建立並啓動新的SIP傳輸。

返回

傳輸ID。

參數

type - 傳輸類型。

cfg - 傳輸配置。

26)IntVector transportEnum()

枚舉系統中當前建立的全部傳輸。

此函數將返回全部傳輸ID,而後應用程序能夠調用transportGetInfo()函數來檢索有關傳輸的詳細信息。

返回

傳輸ID數組。

27)TransportInfo transportGetInfoTransportId id 

獲取有關傳輸的信息。

返回

交通訊息

參數

id - 傳輸ID。

28)void transportSetEnableTransportId id,bool enabled 

禁用傳輸或從新啓用它。

默認狀況下,傳輸始終在建立後啓用。禁用傳輸不必定關閉套接字,它只會丟棄傳入的消息,並阻止傳輸被用於發送傳出的消息。

參數

id - 傳輸ID。

enabled - 啓用或禁用傳輸。

29)void transportCloseTransportId id 

關閉傳輸。

系統將等待全部事務關閉,同時防止新用戶使用傳輸,並在其使用次數達到零時關閉傳輸。

參數

id - 傳輸ID。

30)void transportShutdownTransportHandle tp 

啓動此傳輸句柄的正常關閉程序。

在正常關閉啓動後,傳輸不能得到新的參考。然而,當前使用傳輸的現有對象仍然可使用該傳輸來發送和接收數據包。全部的物品釋放他們對這種傳輸工具的參考後,傳輸工具將當即銷燬。

注意:從onTransportState()回調獲取句柄後,應用程序一般會使用此API 。

參數

tp - 傳輸。

31)void hangupAllCalls( void )

終止全部呼叫

這將啓動全部當前活動呼叫的呼叫掛斷。

32)void mediaAddAudioMediamedia 

將媒體添加到媒體列表。

參數

media - 要添加的媒體

33)void mediaRemoveAudioMediamedia 

從媒體列表中刪除媒體。

參數

media - 要移除的媒體

34) bool mediaExistsconst  AudioMedia媒體) const

檢查媒體是否已添加到媒體列表。

返回

若是添加了媒體,則爲真,不然爲false。

參數

media - 媒體要檢查

35)unsigned mediaMaxPorts() const

獲取媒體端口的最大數量。

返回

會議橋中媒體端口的最大數量。

36)unsigned mediaActivePorts() const

獲取橋樑中當前活動媒體端口的數量。

返回

活動媒體端口的數量。

37)const  AudioMediaVectormediaEnumPorts() const

枚舉全部媒體端口。

返回

Media端口列表。

38)AudDevManageraudDevManager()

獲取音頻設備管理器的實例。

返回

音頻設備管理器。

39)VidDevManagervidDevManager()

獲取視頻設備管理器的實例。

返回

視頻設備管理器。

40)const CodecInfoVectorcodecEnum()

枚舉系統中全部支持的編解碼器。

返回

編解碼器信息數組。

41)void codecSetPriorityconst string&codec_id,pj_uint8_t priority 

更改編解碼優先級。

參數

codec_id - 編解碼器ID,它是惟一標識編解碼器的字符串(如「speex / 8000」)。

priority - 編解碼器優先級0-255,其中0表示禁用編解碼器。

42)CodecParam codecGetParam const  const string & codec_id ) const

獲取編解碼器參數。

返回

編解碼器參數。若是沒有找到編解碼器,則會拋出錯誤

參數

codec_id - 編解碼器ID。

43)void codecSetParamconst string&codec_idconst CodecParam param 

設置編解碼器參數。

參數

codec_id - 編解碼器ID。

param - 編解碼器參數設置。設置爲NULL以將編解碼器參數重置爲庫默認設置。

44)const CodecInfoVectorvideoCodecEnum()

枚舉全部支持的視頻編解碼器在系統中。

返回

視頻編解碼器信息數組。

45)void videoCodecSetPriorityconst string&codec_id,pj_uint8_t priority 

更改視頻編解碼優先級

參數

codec_id - 編解碼器ID,其是惟一標識編解碼器的字符串(例如「H263 / 90000」)。有關詳細信息,請參閱pjsua手冊或pjmedia編解碼器參考。

priority - 編解碼器優先級0-255,其中0表示禁用編解碼器。

46)VidCodecParam getVideoCodecParam const  const string & codec_id ) const

獲取視頻編解碼器參數

返回

編解碼器參數。若是沒有找到編解碼器,則會拋出錯誤

參數

codec_id - 編解碼器ID。

47)void setVideoCodecParamconst string&codec_idconst VidCodecParamparam 

設置視頻編解碼器參數。

參數

codec_id - 編解碼器ID。

param - 編解碼器參數設置。

void resetVideoCodecParamconst string&codec_id 

將視頻編解碼器參數重置爲庫默認設置。

參數

codec_id - 編解碼器ID。

48)virtual  void onNatDetectionCompleteconst OnNatDetectionCompleteParamprm 

端點完成使用natDetectType()啓動的NAT類型檢測時的回調。

參數

prm - 包含檢測結果的回調參數。

49)virtual  void onNatCheckStunServersCompleteconst OnNatCheckStunServersCompleteParamprm 

Endpoint完成執行調用libInit()或調用natCheckStunServers()natUpdateStunServers()時啓動的STUN服務器檢查時的回調。

參數

prm - 回調參數

50)virtual  void onTransportStateconst OnTransportStateParamprm 

傳輸狀態發生變化時調用此回調。

參數

prm - 回調參數

51)virtual  void onTimerconst OnTimerParamprm 

計時器觸發時回調。

計時器由utilTimerSchedule()調度

參數

prm - 回調參數

52)virtual  void onSelectAccountOnSelectAccountParamprm 

應用程序可使用此回調來覆蓋用於處理傳入消息的賬戶。

最初,使用的賬戶將由lib自動計算。若是應用程序沒有實現此回調,則該初始賬戶將被使用,或者今後回調返回時應用程序設置無效的賬戶。

請注意,目前須要賬號分配的傳入消息是INVITE,MESSAGE,SUBSCRIBE和未經請求的NOTIFY。這個回調能夠在SIP事件自己的回叫以前被調用,即:來電,尋呼機,訂閱或者非請求事件。

參數

prm - 回調參數

公共靜態函數

53)static Endpointinstance()

檢索端點的單例實例。

私有函數

54)void performPendingJobs()

55)void clearCodecInfoListCodecInfoVectorcodec_list 

56)void updateCodecInfoList( pjsua_codec_info pj_codec [],unsigned countCodecInfoVectorcodec_list 

57)私有變量

(1)LogWriter * writer
(2)AudioMediaVector mediaList
(3)AudDevManager audioDevMgr
(4)VidDevManager videoDevMgr
(5)CodecInfoVector codecInfoList
(6)CodecInfoVector videoCodecInfoList
(7)std :: map <pj_thread_t *,pj_thread_desc *> threadDescMap
(8) bool mainThreadOnly
(9)void * mainThread
(10)unsigned pendingJobSize
(11)std :: list < PendingJob *> pendingJobs

58)私有靜態函數

 

(12)static void logFunc(int level, const char *data, int len)
(13)static void stun_resolve_cb(const pj_stun_resolve_result *result)
(14)static void on_timer(pj_timer_heap_t *timer_heap, struct pj_timer_entry *entry)
(15)static void on_nat_detect(const pj_stun_nat_detect_result *res)
(16)static void on_transport_state(pjsip_transport *tp, pjsip_transport_state state, const pjsip_transport_state_info *info)
(17)static Account *lookupAcc(int acc_id, const char *op)
(18)static Call *lookupCall(int call_id, const char *op)
(19)static void on_incoming_call(pjsua_acc_id acc_id, pjsua_call_id call_id, pjsip_rx_data *rdata)
(20)static void on_reg_started(pjsua_acc_id acc_id, pj_bool_t renew)
(21)static void on_reg_state2(pjsua_acc_id acc_id, pjsua_reg_info *info)
(22)static void on_incoming_subscribe(pjsua_acc_id acc_id, pjsua_srv_pres *srv_pres, pjsua_buddy_id buddy_id, const pj_str_t *from, pjsip_rx_data *rdata, pjsip_status_code *code, pj_str_t *reason, pjsua_msg_data *msg_data)
(23)static void on_pager2(pjsua_call_id call_id, const pj_str_t *from, const pj_str_t *to, const pj_str_t *contact, const pj_str_t *mime_type, const pj_str_t *body, pjsip_rx_data *rdata, pjsua_acc_id acc_id)
(24)static void on_pager_status2(pjsua_call_id call_id, const pj_str_t *to, const pj_str_t *body, void *user_data, pjsip_status_code status, const pj_str_t *reason, pjsip_tx_data *tdata, pjsip_rx_data *rdata, pjsua_acc_id acc_id)
(25)static void on_typing2(pjsua_call_id call_id, const pj_str_t *from, const pj_str_t *to, const pj_str_t *contact, pj_bool_t is_typing, pjsip_rx_data *rdata, pjsua_acc_id acc_id)
(26)static void on_mwi_info(pjsua_acc_id acc_id, pjsua_mwi_info *mwi_info)
(27)static void on_acc_find_for_incoming(const pjsip_rx_data *rdata, pjsua_acc_id *acc_id)
(28)static void on_buddy_state(pjsua_buddy_id buddy_id)
(29)static void on_call_state(pjsua_call_id call_id, pjsip_event *e)
(30)static void on_call_tsx_state(pjsua_call_id call_id, pjsip_transaction *tsx, pjsip_event *e)
(31)static void on_call_media_state(pjsua_call_id call_id)
(32)static void on_call_sdp_created(pjsua_call_id call_id, pjmedia_sdp_session *sdp, pj_pool_t *pool, const pjmedia_sdp_session *rem_sdp)
(33)static void on_stream_created(pjsua_call_id call_id, pjmedia_stream *strm, unsigned stream_idx, pjmedia_port **p_port)
(34)static void on_stream_destroyed(pjsua_call_id call_id, pjmedia_stream *strm, unsigned stream_idx)
(35)static void on_dtmf_digit(pjsua_call_id call_id, int digit)
(36)static void on_call_transfer_request(pjsua_call_id call_id, const pj_str_t *dst, pjsip_status_code *code)
(37)static void on_call_transfer_request2(pjsua_call_id call_id, const pj_str_t *dst, pjsip_status_code *code, pjsua_call_setting *opt)
(38)static void on_call_transfer_status(pjsua_call_id call_id, int st_code, const pj_str_t *st_text, pj_bool_t final, pj_bool_t *p_cont)
(39)static void on_call_replace_request(pjsua_call_id call_id, pjsip_rx_data *rdata, int *st_code, pj_str_t *st_text)
(40)static void on_call_replace_request2(pjsua_call_id call_id, pjsip_rx_data *rdata, int *st_code, pj_str_t *st_text, pjsua_call_setting *opt)
(41)static void on_call_replaced(pjsua_call_id old_call_id, pjsua_call_id new_call_id)
(42)static void on_call_rx_offer(pjsua_call_id call_id, const pjmedia_sdp_session *offer, void *reserved, pjsip_status_code *code, pjsua_call_setting *opt)
(43)static void on_call_tx_offer(pjsua_call_id call_id, void *reserved, pjsua_call_setting *opt)
(44)static pjsip_redirect_op on_call_redirected(pjsua_call_id call_id, const pjsip_uri *target, const pjsip_event *e)
(45)static pj_status_t on_call_media_transport_state(pjsua_call_id call_id, const pjsua_med_tp_state_info *info)
(46)static void on_call_media_event(pjsua_call_id call_id, unsigned med_idx, pjmedia_event *event)?
(47)static pjmedia_transport *on_create_media_transport(pjsua_call_id call_id, unsigned media_idx, pjmedia_transport *base_tp, unsigned flags)
(48)static void on_create_media_transport_srtp(pjsua_call_id call_id, unsigned media_idx, pjmedia_srtp_setting *srtp_opt)

私有靜態屬性

(49)Endpoint *instance_

12.1.2 struct EpConfig

#include <endpoint.hpp>

端點配置。

pj :: PersistentObject繼承

(50)公有函數

59)virtual  void readObjectconst ContainerNodenode 

從容器讀取此對象。

參數

node - 容器來寫值。

60)virtual  void  writeObjectContainerNodenode) const

將此對象寫入容器。

參數

node - 容器將值寫入。

公有變量

61)UaConfig uaConfig

UA配置

62)LogConfig logConfig

記錄配置。

63)MediaConfig medConfig

媒體配置

12.1.3 struct LogConfig

#include <endpoint.hpp>

記錄配置,能夠(可選)在調用Lib :: init()時指定。

pj :: PersistentObject繼承

公有函數

64)LogConfig()

默認構造函數初始化爲默認值。

65)void fromPjconst pjsua_logging_config&lc 

從pjsua_logging_config構造。

66)pjsua_logging_config toPj() const

生成pjsua_logging_config。

67)virtual  void readObjectconst ContainerNodenode 

從容器讀取此對象。

參數

node - 容器來寫值。

68)virtual   void writeObjectContainerNodenode) const

將此對象寫入容器。

參數

node - 容器將值寫入。

公有變量

69)unsigned msgLogging

記錄傳入和傳出的SIP消息?是!

70)unsigned level

輸入詳細級別。

價值5是合理的。

71)unsigned consoleLevel

控制檯的信息提示詳細程度。

4比較合理

72)unsigned decor

日誌裝飾。

73) string filename

若是應用程序但願庫寫入日誌文件,則可選日誌文件名。

74)unsigned fileFlags

在打開日誌文件時,給予pj_file_open()的附加標誌。

默認狀況下,該標誌爲PJ_O_WRONLY。應用程序能夠在此設置PJ_O_APPEND,以便將日誌附加到現有文件,而不是覆蓋它。

默認值爲0。

75)LogWriter * writer

自定義日誌記錄器,若是須要。

當端點被銷燬時,該實例將被端點銷燬。

12.1.4 struct LogEntry

#include <endpoint.hpp>

包含由LogWriter寫入的日誌條目的數據。

公有變量

76)INT level

記錄此消息的詳細級別。

77) string msg

日誌消息。

78) long threadId

當前線程的ID。

79) string threadName

寫入該日誌的線程的名稱。

12.1.5 class LogWriter

#include <endpoint.hpp>

用於編寫日誌消息的界面

應用程序能夠繼承此類並在LogConfig結構中提供它,以實現自定義日誌寫入工具。

公有函數

80)virtual  ~LogWriter()

析構器

81)virtual  void writeconst LogEntryentry ) = 

寫一個日誌條目。

12.1.6 struct MediaConfig

#include <endpoint.hpp>

此結構描述媒體配置,這將在調用Lib :: init()時指定。

pj :: PersistentObject繼承

公有函數

82)MediaConfig()

默認構造函數初始化爲默認值。

83)void fromPjconst pjsua_media_config&mc 

從pjsua_media_config構造。

84)pjsua_media_config toPj() const

導出

85)virtual  void readObjectconst ContainerNodenode 

從容器讀取此對象。

參數

node - 容器來寫值。

86)virtual   void writeObjectContainerNodenode) const

將此對象寫入容器。

參數

node - 容器將值寫入。

公有變量

87)unsigned clockRate

應用於會議橋的時鐘速率。

若是值爲零,將使用默認時鐘速率(PJSUA_DEFAULT_CLOCK_RATE,默認爲16KHz)。

88)unsigned sndClockRate

打開聲音設備時應用的時鐘速率。

若是值爲零,將使用會議橋時鐘速率。

89)unsigned channelCount

打開聲音設備和會議橋時應用通道數。

90)unsigned audioFramePtime

指定音頻幀ptime。

這裏的值將影響聲音設備和會議橋的每幀採樣。指定較低的ptime一般會下降延遲。

默認值:PJSUA_DEFAULT_AUDIO_FRAME_PTIME

91)unsigned maxMediaPorts

指定要在會議橋中建立的最大媒體端口數。

因爲全部媒體終止於橋(呼叫,文件播放器,文件記錄器等),所以該值必須足夠大以支持全部這些。然而,值越大,執行的計算越多。

默認值:PJSUA_MAX_CONF_PORTS

92) bool hasIoqueue

指定媒體管理器是否應爲RTP / RTCP套接字管理本身的ioqueue。

若是是,將建立ioqueue,而且至少建立一個工做線程。若是否,RTP / RTCP套接字將與SIP套接字共享相同的ioqueue,而且不須要工做線程。

一般應用程序會在這裏說是,除非它想從一個線程運行全部的東西。

93)unsigned threadCnt

指定處理傳入RTP數據包的工做線程數。

建議大多數應用程序使用值1。

94)unsigned quality

媒體質量,0-10,根據本表:5-10:重採樣使用大過濾器,3-4:重採樣使用小過濾器,1-2:重採樣使用線性。

Media質量也將speex編解碼器的質量/複雜度設置爲數字。

默認值:5(PJSUA_DEFAULT_CODEC_QUALITY)。

95)unsigned ptime

指定默認編解碼器ptime。

默認值:0(編解碼專用)

96) bool noVad

禁用VAD?

默認值:0(否(意味着啓用VAD))

97)unsigned ilbcMode

iLBC模式(20或30)。

默認值:30(PJSUA_DEFAULT_ILBC_MODE)

98)unsigned txDropPct

RTP數據包在TX方向丟棄的百分比(以模擬丟包)。

默認值:0

99)unsigned rxDropPct

RTP分組在RX方向降低的百分比(以模擬分組丟失)。

默認值:0

100)unsigned ecOptions

回聲消除器選項(請參閱pjmedia_echo_create())

默認值:0。

101)unsigned ecTailLen

回波消除器尾部長度,以毫秒爲單位。

將其設置爲零將禁用回聲消除。

默認值:PJSUA_DEFAULT_EC_TAIL_LEN

102)unsigned sndRecLatency

音頻捕獲緩衝區長度,以毫秒爲單位。

默認值:PJMEDIA_SND_DEFAULT_REC_LATENCY

103)unsigned sndPlayLatency

音頻播放緩衝區長度,以毫秒爲單位。

默認值:PJMEDIA_SND_DEFAULT_PLAY_LATENCY

104)INT jbInit

抖動緩衝區初始預取延遲(msec)。

該值必須在下面的jb_min_pre和jb_max_pre之間。

默認值:-1(使用默認流設置,目前爲150毫秒)

105)INT jbMinPre

抖動緩衝區最小預取延遲(msec)。

默認值:-1(使用默認流設置,目前爲60毫秒)

106)INT jbMaxPre

抖動緩衝區最大預取延遲(msec)。

默認值:-1(使用默認流設置,目前爲240毫秒)

107)INT jbMax

設置能夠由抖動緩衝區msec容納的最大延遲。

默認值:-1(使用默認流設置,目前爲360毫秒)

108)INT sndAutoCloseTime

指定聲音設備在自動關閉以前的空閒時間(以秒爲單位)。

使用值-1可禁用聲音設備的自動關閉功能

默認值:1

109)bool vidPreviewEnableNative

指定是否可使用內置/本機預覽。

在某些系統中,視頻輸入設備具備內置的顯示設備預覽窗口的功能。使用這種內置的預覽是最好的,由於它消耗較少的CPU功率。若是內置預覽不可用,庫將執行輸入的軟件渲染。若是此字段設置爲PJ_FALSE,將始終使用軟件預覽。

默認值:PJ_TRUE

12.1.7 struct OnNatCheckStunServersCompleteParam

#include <endpoint.hpp>

參數Endpoint :: onNatCheckStunServersComplete()回調。

公有變量

110)Token  userData

傳遞給Endpoint :: natCheckStunServers()函數的任意用戶數據。

111)pj_status_t status

若是找到至少一個可用的STUN服務器,則將包含PJ_SUCCESS,不然將在操做期間包含最後一個錯誤代碼。

112) string name

產生成功結果的服務器名稱。

若是狀態成功,這將只包含值。

113)SocketAddress addr

服務器IP地址和端口爲「IP:端口」格式。

若是狀態成功,這將只包含值。

12.1.8 struct OnNatDetectionCompleteParam

#include <endpoint.hpp>

參數Endpoint :: onNatDetectionComplete()回調。

公有變量

114)pj_status_t status

檢測過程的狀態。

若是此值不是PJ_SUCCESS,則檢測失敗,而且nat_type字段將包含PJ_STUN_NAT_TYPE_UNKNOWN。

115) string reason

描述狀態的文本,若是狀態不是PJ_SUCCESS。

116)pj_stun_nat_type natType

這包含檢測程序檢測到的NAT類型。

此值僅在狀態爲PJ_SUCCESS 時有效。

117) string natTypeName

描述NAT類型的文字。

12.1.9 struct OnSelectAccountParam

#include <endpoint.hpp>

參數端點:: onSelectAccount()回調。

公有變量

118)SipRxData rdata

傳入請求。

119)INT accountIndex

用於處理請求的賬戶索引。

輸入後,將由lib選擇的賬戶索引填寫。應用程序可能會將其更改成另外一個值以使用另外一個賬戶。

12.1.10 struct OnTimerParam

#include <endpoint.hpp>

參數端點::的OnTimer()回調。

公有變量

120)Token  userData

傳遞給Endpoint :: utilTimerSchedule()函數的任意用戶數據。

121)unsigned msecDelay

該定時器的間隔時間,以毫秒爲單位。

12.1.11 struct OnTransportStateParam

#include <endpoint.hpp>

參數端點:: onTransportState()回調。

公有變量

122)TransportHandle hnd

傳輸句柄。

123) string type

傳輸類型。

124)pjsip_transport_state state

傳輸當前狀態。

125)pj_status_t lastError

與傳輸狀態相關的最後一個錯誤代碼。

126)TlsInfo tlsInfo

TLS傳輸信息,僅在傳輸類型爲TLS時使用。

使用TlsInfo.isEmpty()來檢查此信息是否可用。

12.1.12 struct PendingJob

公有函數

127)virtual   void execute( bool is_pending ) = 0 

執行工做

128)virtual  ~PendingJob()

virtual 析構函數

12.1.13 struct SslCertInfo

#include <endpoint.hpp>

SSL證書信息。

公有函數

129)SslCertInfo()

構造函數

130) bool isEmpty() const

檢查信息是否設置爲空值。

返回

若是信息爲空,則爲真。

131)void fromPjconst pj_ssl_cert_info&info 

從pjsip轉換

公有變量

132)unsigned version

證書版本。

133)unsigned char serialNo[20] 

序列號,字節數組,第一個索引是MSB。

134) string subjectCn

通用名稱。

135) string subjectInfo

一行主題,字段以斜槓分隔,例如:「CN = sample.org / OU = HRD」。

136) string issuerCn

發行人通用名稱。

137)string issuerInfo

一行主題,字段以斜槓分隔。

138)timeval  validityStart

有效性開始

139)timeval  validityEnd

有效期結束。

140) bool validityGmt

標記有效日期/時間使用GMT。

141)vector< SslCertName > subjectAltName

主題備用名稱擴展名。

142) string raw

原始證書爲PEM格式,僅適用於遠程證書。

143)私有變量

(51) bool empty

12.1.14 struct SslCertName

#include <endpoint.hpp>

SSL證書類型和名稱結構。

公有變量

144)pj_ssl_cert_name_type type

名稱類型。

145) string name

名字。

12.1.15 struct TlsInfo

#include <endpoint.hpp>

TLS傳輸信息。

公有函數

146)TlsInfo()

構造函數

147) bool isEmpty() const

檢查信息是否設置爲空值。

返回

若是信息爲空,則爲真。

148)void fromPjconst pjsip_tls_state_info&info 

從pjsip轉換

公有變量

149) bool established

描述安全套接字鏈接是否創建,即:TLS / SSL握手已成功完成。

150)unsigned protocol

描述正在使用的安全套接字協議,請參見#pj_ssl_sock_proto。

使用按位或運算組合協議類型。

151)pj_ssl_cipher cipher

描述正在使用的密碼套件,只有當鏈接創建時纔會設置。

152) string cipherName

描述正在使用的密碼名稱,這僅在創建鏈接時才設置。

153)SocketAddress  localAddr

描述本地地址。

154)SocketAddress  remoteAddr

描述遠程地址。

155)SslCertInfo localCertInfo

描述活動的本地證書信息。

使用SslCertInfo.isEmpty()來檢查本地證書信息是否可用。

156)SslCertInfo remoteCertInfo

描述活動的遠程證書信息。

使用SslCertInfo.isEmpty()來檢查遠程證書信息是否可用。

157)unsigned verifyStatus

對等證書驗證狀態

158)StringVector verifyMsgs

基於上述字段verifyStatus的對等證書驗證的錯誤消息(若是有的話)。

159)私有變量

(52) bool empty

12.1.16 struct UaConfig

#include <endpoint.hpp>

SIP用戶代理相關設置。

pj :: PersistentObject繼承

公有函數

160)UaConfig()

使用默認值初始化的默認構造函數。

161)void fromPjconst pjsua_config&ua_cfg 

從pjsua_config構造。

162)pjsua_config toPj() const

導出到pjsua_config。

163)virtual  void readObjectconst ContainerNodenode 

從容器讀取此對象。

參數

node - 容器來寫值。

164)virtual   void writeObjectContainerNodenode) const

將此對象寫入容器。

參數

node - 容器將值寫入。

公有變量

165)unsigned maxCalls

最大支持呼叫(默認值:4)。

此處指定的值必須小於編譯時最大設置PJSUA_MAX_CALLS,默認值爲32.要增長此限制,必須使用新的PJSUA_MAX_CALLS值從新編譯庫。

166)unsigned threadCnt

工做線程數。

一般,應用程序將但願至少有一個工做線程,除非它要按期輪詢庫,在這種狀況下,工做線程能夠設置爲零。

167) bool mainThreadOnly

當這個標誌非零時,來自主線程之外的線程的全部回調都將被髮布到主線程,並由Endpoint :: libHandleEvents()函數執行。

這包括日誌記錄回調。請注意,只有當ThreadCnt設置爲零而且主線程執行Endpoint :: libHandleEvents()時,這纔有效。默認狀況下,主線程是從調用Endpoint :: libCreate()的線程設置的,

默認值:false

168)StringVector nameserver

SIP解析器子系統使用的名稱服務器數組。

名稱服務器的順序指定優先級(首先使用名字服務器,除非它不可訪問)。

169) string userAgent

可選用戶代理字符串(默認爲空)。

若是它是空的,則不會使用傳出請求發送用戶代理頭。

170)StringVector stunServer

STUN服務器數組嘗試。

庫將嘗試解析並聯系每一個STUN服務器條目,直到找到可用的條目。每一個條目多是域名,主機名,IP地址,而且可能包含可選的端口號。例如:

  • 「pjsip.org」(域名)
  • 「sip.pjsip.org」(主機名)
  • 「pjsip.org:33478」(域名和非標準端口號)
  • 「10.0.0.1:3478」(IP地址和端口號)

當在pjsua_config.nameserver字段中配置名稱服務器時,若是條目不是IP地址,則首先將使用DNS SRV解析來解析名稱服務器,若是失敗,它將回退使用DNS A解析。即便該條目是域名,也能夠指定端口號,以防DNS SRV分辨率回退到非標準端口。

當未配置名稱服務器時,若是不是IP地址,則將使用pj_gethostbyname()解析條目。若是服務器未在標準STUN端口中偵聽,則能夠指定端口號。

171) bool stunIgnoreFailure

這指定庫啓動應該忽略STUN服務器的故障。

若是設置爲PJ_FALSE,若是沒法解析或聯繫任何STUN服務器,庫將拒絕啓動。

默認值:TRUE

172)INT natTypeInSdp

支持在SDP中添加和解析NAT類型,以協助故障排除。

有效值爲:

  • 0:SDP中不會添加任何信息,禁用解析。
  • 1:只添加NAT類型號。
  • 2:添加NAT類型號和名稱。

默認值:1

173) bool mwiUnsolicitedEnabled

處理包含留言等待指示(MWI)信息的未經請求的NOTIFY請求。

未經請求的MWI是來自NOTIFY請求,客戶端不向SUBSCRIBE請求請求。

若是啓用了此功能,庫將響應200 / OK到NOTIFY請求,並將請求轉發到Endpoint :: onMwiInfo()回調。

另請參見AccountMwiConfig.enabled

默認值:PJ_TRUE

12.2 account.hpp 

PJSUA2帳戶操做。

 namespace pj

PJSUA2 API在pj命名空間內。

Typedefs

typedef std :: vector < AuthCredInfo > AuthCredInfoVector

SIP憑證數組。

12.2.1 class Account

#include <account.hpp>

Account

公有函數

1)Account()

構造函數

2)virtual  ~Account()

析構器

請注意,若是該賬戶被刪除,它也將刪除PJSUA-LIB中的相應賬戶。

3)void createconst AccountConfigcfg,bool make_default = false )

建立賬戶。

參數

cfg - 賬號配置

make_default - 將其設爲默認賬戶。

4)void modifyconst AccountConfigcfg 

修改賬戶以使用指定的賬戶配置。

根據變動,這可能會致使賬戶的註銷或從新註冊。

參數

cfg - 要應用於賬戶的新賬戶配置。

5) bool isValid() const

檢查此賬戶是否仍然有效。

返回

若是是的話。

6)void setDefault()

將此設置爲默認賬戶以在傳入和傳出請求與任何賬戶不匹配時使用。

返回

PJ_SUCCESS成功。

7) bool isDefault() const

檢查這個賬戶是不是默認賬戶。

默認賬戶將用於與任何其餘賬戶不匹配的傳入和傳出請求。

返回

若是這是默認賬戶,則爲true。

8)INT getId() const

獲取與此賬戶相關聯的PJSUA-LIB賬戶ID或索引。

返回

整數大於或等於零。

9)AccountInfo getInfo() const

獲取賬戶信息。

返回

賬戶信息。

10)void setRegistration( bool renew 

更新註冊或執行註銷。

若是要手動更新註冊或從服務器註銷,一般只須要調用此函數。

參數

renew - 若是是虛假的,這將開始註銷過程。

11)void setOnlineStatusconst PresenceStatuspres_st 

設置或修改要發佈給遠程/現場訂戶的賬戶的在線狀態。

若是此賬戶有服務器端存在訂閱,和/或出站PUBLISH(若是此賬戶啓用了存在發佈),則會觸發發送傳出的NOTIFY請求。

參數

pres_st - 在線狀態。

12)void setTransportTransportId tp_id 

將此賬戶鎖定/綁定到特定的傳輸/偵聽器。

一般,應用程序不須要這樣作,由於庫將根據目的地自動選擇傳輸。

當賬戶被鎖定/綁定到特定的傳輸時,來自該賬戶的全部傳出請求將使用指定的傳輸(包括SIP註冊,對話(呼叫和事件訂閱)以及諸如MESSAGE之類的對話外請求)。

請注意,傳輸ID也能夠在AccountConfig中指定

參數

tp_id - 傳輸ID。

13)void presNotifyconst PresNotifyParamprm 

發送NOTIFY以通知賬戶存在狀態或終止服務器端存在訂閱。

若是應用程序想要拒絕傳入的請求,它應該將PresNotifyParam.state的參數設置爲PJSIP_EVSUB_STATE_TERMINATED。

參數

prm - 發送NOTIFY參數。

const  BuddyVectorenumBuddies() const

枚舉賬戶的全部好友。

返回

好友列表。

14)Buddy * findBuddy( string URIFindBuddyMatch * buddy_match = NULL ) const

在具備指定URI的好友列表中找到一個好友。

異常:若是沒有找到好友,PJ_ENOTFOUND將被拋出。

返回

指向好友的指針

參數

uri - 好友URI。

buddy_match - 好友比賽算法

15)void addBuddyBuddy * buddy 

一個內部功能,將一個好友添加到賬戶好友列表。

應用程序不能使用此功能。

16)void removeBuddyBuddy * buddy 

賬戶好友列表中刪除好友的內部功能。

應用程序不能使用此功能。

17)virtual  void onIncomingCallOnIncomingCallParamprm 

通知來電時的應用程序。

參數

prm - 回調參數

18)virtual  void onRegStartedOnRegStartedParamprm 

註冊或註銷登記時通知申請。

請注意,這隻會通知初始註冊和註銷。一旦註冊會話處於活動狀態,後續刷新將不會致使此回調被調用。

參數

prm - 回調參數

19)virtual  void onRegStateOnRegStateParamprm 

註冊狀態發生變化時通知申請。

應用程序可能會查詢賬戶信息以獲取註冊詳細信息。

參數

prm - 回調參數

20)virtual  void onIncomingSubscribeOnIncomingSubscribeParamprm 

收到傳入SUBSCRIBE請求時的通知。

應用程序可使用此回調來受權傳入的訂閱請求(例如,若是請求被授予,請求用戶許可)。

若是未實現此回調,則將接受全部傳入的存在訂閱請求。

若是這個回調被實現,應用程序有幾個選擇,如何處理傳入的請求:

  • 它能夠經過在IncomingSubscribeParam.code參數中指定非200類最終響應當即拒絕該請求。
  • 它能夠經過指定200做爲IncomingSubscribeParam.code參數來當即接受該請求。若是應用程序未將任何值設置爲IncomingSubscribeParam.code參數,則這是默認值。在這種狀況下,庫將今後回調返回時自動發送NOTIFY請求。
  • 它可能延遲請求的處理,例如要求用戶許但是接受仍是拒絕請求。在這種狀況下,該應用程序必須設置IncomingSubscribeParam.code參數202,而後當即調用presNotify()與狀態PJSIP_EVSUB_STATE_PENDING和之後調用presNotify()再次接受或拒絕的訂閱請求。

200和202之外的任何IncomingSubscribeParam.code將被視爲200。

應用程序必須當即今後回調中返回(例如,在等待用戶確認時不得阻止此回調)。

參數

prm - 回調參數

21)virtual  void onInstantMessageOnInstantMessageParamprm 

通知應用程序傳入即時消息或尋呼機(即

MESSAGE請求)在呼叫上下文以外被接收。

參數

prm - 回調參數

22)virtual  void onInstantMessageStatusOnInstantMessageStatusParamprm 

通知應用程序關於傳出尋呼機/即時消息的傳送狀態(即,

MESSAGE)請求。

參數

prm - 回調參數

23)virtual  void onTypingIndicationOnTypingIndicationParamprm 

通知應用程序打字指示。

參數

prm - 回調參數

24)virtual  void onMwiInfoOnMwiInfoParamprm 

關於MWI(消息等待指示)狀態變化的通知。

能夠在SUBSCRIBE請求的狀態更改(例如,202 /接收到SUBSCRIBE被接收)或接收到NOTIFY reqeust時調用此回調。

參數

prm - 回調參數

公共靜態函數

25)static Account * lookup( int acc_id 

獲取指定賬戶ID 的賬戶類。

返回

賬戶實例或NULL,若是沒有找到。

參數

acc_id - 要查找的賬號

26)私有變量

(1)pjsua_acc_id id
(2) string tmpReason
(3)BuddyVector buddyList

friends

(4)friend pj::Endpoint

12.2.2 struct AccountCallConfig

#include <account.hpp>

賬戶的通話設置。

這將在AccountConfig中指定

pj :: PersistentObject繼承

公有函數

27)virtual  void readObjectconst ContainerNodenode 

從容器節點讀取此對象。

參數

node - 容器從中讀取值。

28)virtual   void writeObjectContainerNodenode) const

將此對象寫入容器節點。

參數

node - 容器將值寫入。

公有變量

29)pjsua_call_hold_type holdType

指定如何向遠程對等體提供呼叫保持。

有關更多信息,請參閱有關pjsua_call_hold_type的文檔。

默認值:PJSUA_CALL_HOLD_TYPE_DEFAULT

30)pjsua_100rel_use prackUse

指定如何對該賬戶中的全部會話使用對可靠臨時響應(100rel / PRACK)的支持。

有關詳細信息,請參閱pjsua_100rel_use枚舉的文檔。

默認值:PJSUA_100REL_NOT_USED

31)pjsua_sip_timer_use timerUse

指定全部會話的會話計時器的用法。

有關可能的值,請參閱pjsua_sip_timer_use。

默認值:PJSUA_SIP_TIMER_OPTIONAL

32)unsigned timerMinSESec

指定最小會話計時器到期時間,以秒爲單位。

不得低於90。默認值爲90。

33)unsigned timerSessExpiresSec

指定會話計時器的有效期,以秒爲單位。

不能低於timerMinSE。默認值爲1800。

12.2.3 struct AccountConfig

#include <account.hpp>

賬戶配置。

pj :: PersistentObject繼承

公有函數

34)AccountConfig()

默認構造函數將使用默認值進行初始化。

35) void toPj( pjsua_acc_config&CFG ) const

由於這這將返回一個臨時pjsua_acc_config實例,其內容僅做爲長期有效AccountConfig結構仍然有效,沒有修改完成它並無進一步toPj()函數調用。

toPj()函數的任何調用都將使上一次調用返回的臨時pjsua_acc_config的內容無效。

36) void fromPjconst  pjsua_acc_config &PRM, const  pjsua_media_config * MCFG 

從pjsip初始化

37)virtual  void readObjectconst ContainerNodenode 

從容器節點讀取此對象。

參數

node - 容器從中讀取值。

38)virtual   void writeObjectContainerNodenode) const

將此對象寫入容器節點。

參數

node - 容器將值寫入。

公有變量

39)INT priority

賬戶優先級,用於控制匹配傳入/傳出請求的順序。

數字越高意味着優先級越高,賬戶將首先匹配。

40)string idUri

記錄地址或AOR,即肯定賬戶的完整SIP URL。

該值可使用名稱地址或URL格式,並將看起來像「sip:account @ serviceprovider」。

該字段是強制性的。

41)AccountRegConfig regConfig

註冊設置。

42)AccountSipConfig sipConfig

SIP設置。

43)AccountCallConfig callConfig

通話設置。

44)AccountPresConfig presConfig

存在設置。

45)AccountMwiConfig mwiConfig

MWI(留言等待指示)設置。

46)AccountNatConfig natConfig

NAT設置。

47)AccountMediaConfig mediaConfig

媒體設置(適用於音頻和視頻)。

48)AccountVideoConfig videoConfig

視頻設置。

12.2.4 struct AccountInfo

#include <account.hpp>

賬戶信息。

應用程序能夠經過調用Account :: getInfo ()來查詢賬戶信息。

公有函數

49)void fromPjconst pjsua_acc_info&pai 

從pjsip數據導入。

公有變量

50)pjsua_acc_id id

賬號。

51) bool isDefault

標記以指示這是不是默認賬戶。

52) string uri

賬戶 URI。

53) bool regIsConfigured

標記以判斷此賬號是否具備註冊設置(reg_uri不爲空)。

54) bool regIsActive

標記以判斷此賬號是否正在註冊(有活動的註冊會話)。

55)INT regExpiresSec

賬戶註冊會話的最新到期時間間隔。

56)pjsip_status_code regStatus

最後一次註冊狀態碼。

若是狀態碼爲零,則該賬戶當前未註冊。任何其餘值表示註冊的SIP狀態代碼。

57) string regStatusText

描述註冊狀態的字符串。

58)pj_status_t regLastErr

上次註冊錯誤代碼。

當狀態字段包含指示註冊失敗的SIP狀態代碼時,上次註冊錯誤代碼包含致使故障的錯誤代碼。在任何其餘狀況下,其值爲零。

59) bool onlineStatus

存在此賬戶的在線狀態。

60) string onlineStatusText

在線狀態文本。

12.2.5 struct AccountMediaConfig

#include <account.hpp>

賬戶媒體配置(適用於音頻和視頻)。

這將在AccountConfig中指定

pj :: PersistentObject繼承

公有函數

61)virtual  void readObjectconst ContainerNodenode 

從容器節點讀取此對象。

參數

node - 容器從中讀取值。

62)virtual   void writeObjectContainerNodenode) const

將此對象寫入容器節點。

參數

node - 容器將值寫入。

公有變量

63)TransportConfig transportConfig

媒體傳輸(RTP)配置。

64) bool lockCodecEnabled

若是遠程在媒體行中發送包含多個格式或編解碼器的SDP應答,則只須要一個編解碼器發送re-INVITE或UPDATE便可鎖定要使用的編解碼器。

默認值:True(是)。

65) bool streamKaEnabled

指定是否爲此賬戶啓用流保持活動和使用非編解碼器VAD機制的NAT打孔(請參閱PJMEDIA_STREAM_ENABLE_KA)。

默認值:False

66)pjmedia_srtp_use srtpUse

指定是否應該爲此賬戶使用安全媒體傳輸。

有效值爲PJMEDIA_SRTP_DISABLED,PJMEDIA_SRTP_OPTIONAL和PJMEDIA_SRTP_MANDATORY。

默認值:PJSUA_DEFAULT_USE_SRTP

67)INT srtpSecureSignaling

指定SRTP是否須要使用安全信令。

此選項僅在上述use_srtp選項不爲零時使用。

有效值爲:0:SRTP不須要安全信令1:SRTP須要安全傳輸,如TLS 2:SRTP須要安全的端到端傳輸(SIPS)

默認值:PJSUA_DEFAULT_SRTP_SECURE_SIGNALING

68)pjsua_ipv6_use ipv6Use

指定是否應在介質上使用IPv6。

不使用默認值。

12.2.6 struct AccountMwiConfig

#include <account.hpp>

賬號 MWI(留言等待指示)設置。

這將在AccountConfig中指定

pj :: PersistentObject繼承

公有函數

69)virtual  void readObjectconst ContainerNodenode 

從容器節點讀取此對象。

參數

node - 容器從中讀取值。

70)virtual   void writeObjectContainerNodenode) const

將此對象寫入容器節點。

參數

node - 容器將值寫入。

公有變量

71) bool enabled

訂閱消息等待指示事件(RFC 3842)。

另請參見UaConfig.mwiUnsolicitedEnabled設置。

默認值:FALSE

72)unsigned expirationSec

指定消息等待指示(RFC 3842)事件訂閱的默認過時時間(以秒爲單位)。

這不能爲零。

默認值:PJSIP_MWI_DEFAULT_EXPIRES(3600)

12.2.7 struct AccountNatConfig

#include <account.hpp>

賬戶的NAT(網絡地址轉換)設置。

這將在AccountConfig中指定

pj :: PersistentObject繼承

公有函數

73)virtual  void readObjectconst ContainerNodenode 

從容器節點讀取此對象。

參數

node - 容器從中讀取值。

74)virtual   void writeObjectContainerNodenode) const

將此對象寫入容器節點。

參數

node - 容器將值寫入。

公有變量

75)pjsua_stun_use sipStunUse

控制使用STUN進行SIP信令。

默認值:PJSUA_STUN_USE_DEFAULT

76)pjsua_stun_use mediaStunUse

控制使用STUN進行媒體傳輸。

默認值:PJSUA_STUN_USE_DEFAULT

77) bool iceEnabled

爲媒體傳輸啓用ICE。

默認值:False

78)INT iceMaxHostCands

設置ICE主機候選人的最大數量。

默認值:-1(最大未設置)

79) bool iceAggressiveNomination

指定是否使用積極的提名。

默認值:True

80)unsigned iceNominatedCheckDelayMsec

對於控制代理(若是使用常規提名),在全部組件都具備有效對後,指定執行提名檢查的延遲(與USE-CANDIDATE屬性的鏈接性檢查)。

默認值爲PJ_ICE_NOMINATED_CHECK_DELAY。

81)INT iceWaitNominationTimeoutMsec

對於受控代理,指定控制代理程序在控制代理程序發現全部組件中的全部鏈接檢查已經完成後,要等待的時間(以毫秒爲單位),以便控制代理完成將全部組件的指定標誌設置爲true的發送鏈接檢查而且每一個組件至少有一個成功(但未被提名)檢查。

此選項的默認值爲ICE_CONTROLLED_AGENT_WAIT_NOMINATION_TIMEOUT。指定-1以禁用此定時器。

82) bool iceNoRtcp

禁用RTCP組件。

默認值:False

83) bool iceAlwaysUpdate

在ICE協商以後始終發送re-INVITE / UPDATE,而無論默認的ICE傳輸地址是否改變。

當這被設置爲False時,只有在更改默認ICE傳輸地址時纔會發送re-INVITE / UPDATE。

默認值:是

84) bool turnEnabled

在ICE中啓用TURN候選。

85) string turnServer

在「DOMAIN:PORT」或「HOST:PORT」格式中指定TURN域名或主機名。

86)pj_turn_tp_type turnConnType

指定要用於TURN服務器的鏈接類型。

有效值爲PJ_TURN_TP_UDP或PJ_TURN_TP_TCP。

默認值:PJ_TURN_TP_UDP

87) string turnUserName

指定使用TURN服務器進行身份驗證的用戶名。

88)INT turnPasswordType

指定密碼的類型。

目前這個值必須爲0,表示密碼中將會使用明文密碼。

89) string turnPassword

指定使用TURN服務器進行身份驗證的密碼。

90)INT contactRewriteUse

此選項用於更新REGISTER請求的傳輸地址和Contact標頭。

啓用此選項後,庫將根據REGISTER請求的響應跟蹤公共IP地址。一旦檢測到地址發生變化,它將取消註冊當前的聯繫人,更新與從Via頭獲取的傳輸地址的聯繫,並向註冊商註冊一個新的聯繫人。若是配置了STUN,這也將更新UDP傳輸的公共名稱。

另請參閱contactRewriteMethod字段。

默認值:TRUE

91)INT contactRewriteMethod

指定如何聯繫更新將與註冊完成,若是contactRewriteEnabled啓用。

該值是pjsua_contact_rewrite_method的位掩碼組合。另請參見pjsua_contact_rewrite_method。

值PJSUA_CONTACT_REWRITE_UNREGISTER(1)是遺留行爲。

默認值:PJSUA_CONTACT_REWRITE_METHOD(PJSUA_CONTACT_REWRITE_NO_UNREG | PJSUA_CONTACT_REWRITE_ALWAYS_UPDATE)

92)INT contactUseSrcPort

若是使用TCP / TLS傳輸,請指定是否應將源TCP端口用做初始聯繫人地址。

請注意,配置名稱服務器時,因爲DNS SRV分辨率可能會產生不一樣的目標地址,所以此功能將自動關閉。還有一些平臺在鏈接時沒法報告TCP套接字的本地地址。在這些狀況下,此功能也將被關閉。

默認值:1(是)。

93)INT viaRewriteUse

只要請求使用與以前的REGISTER請求相同的傳輸實例,該選項用於覆蓋具備與REGISTER請求中的接口地址相同的接口地址的傳出消息的Via頭部的「已發送」字段。

默認值:TRUE

94)INT sdpNatRewriteUse

此選項控制SDP中的IP地址是否應替換爲REGISTER響應的Via標頭中的IP地址,僅在不使用STUN和ICE時替換。

若是值爲FALSE(原始行爲),則將使用本地IP地址。若是爲TRUE,當STUN和ICE被禁用時,將使用在註冊響應中找到的IP地址。

默認值:PJ_FALSE(否)

95)INT sipOutboundUse

控制SIP出站功能的使用。

在RFC 5626中描述了SIP出站,以使得代理或註冊商可以使用由UA發起的相同鏈接來將入站請求發送回UA。此功能在NAT-ed deployemtns中很是有用,所以默認狀況下啓用。

注意:目前SIP出站只能與TCP和TLS傳輸一塊兒使用。若是使用UDP進行註冊,則SIP出站功能將被默認忽略。

默認值:TRUE

96) string sipOutboundInstanceId

指定此賬戶要使用的SIP出站(RFC 5626)實例ID。

若是爲空,則將根據此代理的主機名生成實例ID。若是應用程序指定了此參數,則該值將不會使用雙引號,如「<urn:uuid:00000000-0000-1000-8000-AABBCCDDEEFF」>。

默認值:空

97) string sipOutboundRegId

指定SIP出站(RFC 5626)註冊ID。

默認值爲空,這將致使庫自動生成一個合適的值。

默認值:空

98)unsigned udpKaIntervalSec

爲此賬戶設置週期性保持傳輸的間隔。

若是此值爲零,則該賬戶將禁用保持活動。成功註冊後,保密傳輸將發送到註冊服務商的地址。

默認值:15(秒)

99) string udpKaData

指定要發送的數據做爲保活數據包。

默認值:CR-LF

12.2.8 struct AccountPresConfig

#include <account.hpp>

賬戶存在配置。

這將在AccountConfig中指定

pj :: PersistentObject繼承

公有函數

100)virtual  void readObjectconst ContainerNodenode 

從容器節點讀取此對象。

參數

node - 容器從中讀取值。

101)virtual   void writeObjectContainerNodenode) const

將此對象寫入容器節點。

參數

node - 容器將值寫入。

公有變量

102)SipHeaderVector headers

可選的自定義SIP標頭將放在存在訂閱請求中。

103) bool publishEnabled

若是設置了此標誌,則該賬戶的存在信息將被髮布到該賬戶所屬的服務器。

默認值:PJ_FALSE

104) bool publishQueue

指定客戶端發佈會話是否應該排隊PUBLISH請求,若是還有另外一個PUBLISH事務尚待處理。

若是這設置爲false,則若是還有另外一個PUBLISH事務仍在進行中,客戶端將在PUBLISH請求上返回錯誤。

默認值:PJSIP_PUBLISHC_QUEUE_REQUEST(TRUE)

105)unsigned publishShutdownWaitMsec

發送取消註冊以前等待發布的交易在停機過程當中完成的最長時間。

在庫關閉過程當中,庫發送註冊請求以註銷該賬戶以前,嘗試等待未發佈(un-PUBLISH)完成。若是該值設置得過短,則可能在發佈完成以前發送註銷,致使發佈請求失敗。

值以毫秒爲單位。

默認值:PJSUA_UNPUBLISH_MAX_WAIT_TIME_MSEC(2000)

106) string pidfTupleId

可選PIDF元組ID,用於傳出PUBLISH和NOTIFY。

若是未指定此值,將使用隨機字符串。

12.2.9 struct AccountRegConfig

#include <account.hpp>

賬戶註冊配置

這將在AccountConfig中指定

pj :: PersistentObject繼承

公有函數

107)virtual  void readObjectconst ContainerNodenode 

從容器節點讀取此對象。

參數

node - 容器從中讀取值。

108)virtual   void writeObjectContainerNodenode) const

將此對象寫入容器節點。

參數

node - 容器將值寫入。

公有變量

109) string registrarUri

這是要放入註冊請求URI的URL,看起來像「sip:serviceprovider」。

若是須要註冊,應該指定該字段。若是該值爲空,則不會執行任何賬戶註冊。

110) bool registerOnAdd

指定賬戶是否應在UA添加後當即註冊。

應用程序能夠將其設置爲PJ_FALSE,並使用pjsua_acc_set_registration()手動控制註冊。

默認值:True

111)SipHeaderVector headers

可選的自定義SIP頭要放在註冊請求中。

112) string contactParams

將附加在註冊請求的聯繫人頭部中的附加參數。

這將附加在AccountSipConfig.contactParams以後;

這些參數應該以分號爲前綴,全部的字符串必須被正確地轉義。示例:「; my-param = X; another-param = Hi%20there」

113)unsigned timeoutSec

可選的註冊間隔,以秒爲單位。

若是值爲零,則將使用默認間隔(PJSUA_REG_INTERVAL,300秒)。

114)unsigned retryIntervalSec

在註冊失敗時指定自動註冊重試的間隔(包括傳輸問題引發的),秒鐘。

設置爲0以禁用自動從新註冊。請注意,若是因爲傳輸失敗而發生註冊重試,則首次重試將在firstRetryIntervalSec秒後進行。另請注意,間隔將稍微隨機一些秒(在reg_retry_random_interval中指定),以免全部客戶端同時從新註冊。

另請參見firstRetryIntervalSecrandomRetryIntervalSec設置。

默認值:PJSUA_REG_RETRY_INTERVAL

115)unsigned firstRetryIntervalSec

這指定了第一次註冊重試的間隔。

註冊重試在retryIntervalSec中解釋。請注意,這裏的值也將隨機化幾秒鐘(在reg_retry_random_interval中指定),以免全部客戶端從新註冊。

另請參閱retryIntervalSecrandomRetryIntervalSec設置。

默認值:0

116)unsigned randomRetryIntervalSec

這指定在reg_retry_intervalreg_first_retry_interval指定的註冊重試間隔中添加/減去的最大隨機值,第二個。

這是有用的,以免全部客戶端從新註冊在同一時間。例如,若是註冊重試間隔設置爲100秒,並將其設置爲10秒,則實際的註冊重試間隔將在90到110秒的範圍內。

另請參見retryIntervalSecfirstRetryIntervalSec設置。

默認值:10

117)unsigned delayBeforeRefreshSec

在註冊過時以前指定刷新客戶端註冊的秒數。

默認值:PJSIP_REGISTER_CLIENT_DELAY_BEFORE_REFRESH,5秒

118) bool dropCallsOnFail

指定註冊失敗後配置的賬戶的呼叫是否應該被丟棄,而且從新註冊的嘗試也失敗。

默認值:FALSE(禁用)

119)unsigned unregWaitMsec

指定在庫關閉序列期間等待註銷請求完成的最長時間。

默認值:PJSUA_UNREG_TIMEOUT

120)unsigned proxyUse

指定註冊如何使用出站和賬戶代理設置。

這將控制此賬戶的REGISTER請求中是否顯示以及哪些Route標題。該值是PJSUA_REG_USE_OUTBOUND_PROXY和PJSUA_REG_USE_ACC_PROXY位的位掩碼組合。若是該值設置爲0,REGISTER請求將不會使用任何代理(即它不會有任何Route頭)。

默認值:3(PJSUA_REG_USE_OUTBOUND_PROXY | PJSUA_REG_USE_ACC_PROXY)

12.2.10 struct AccountSipConfig

#include <account.hpp>

賬戶的各類SIP設置。

這將在AccountConfig中指定

pj :: PersistentObject繼承

公有函數

121)virtual  void readObjectconst ContainerNodenode 

從容器節點讀取此對象。

參數

node - 容器從中讀取值。

122)virtual   void writeObjectContainerNodenode) const

將此對象寫入容器節點。

參數

node - 容器將值寫入。

公有變量

123)AuthCredInfoVector authCreds

憑證數組

若是須要註冊,一般應至少指定一個憑證,以成功驗證服務提供商。能夠指定更多的憑證,例如當請求被路由集中的代理人挑戰時。

124)StringVector proxies

用於傳出請求的代理服務器數組。

每一個條目被翻譯成一個路由URI。

125) string contactForced

要爲此賬戶設置爲聯繫人的可選URI。

建議將該字段留空,以便根據傳輸地址自動計算該值。

126) string contactParams

附加參數將附加在此賬戶的聯繫人頭文件中。

這將影響表明此賬戶發送的全部SIP郵件中的聯繫人郵件,包括但不限於REGISTER,INVITE和SUBCRIBE請求或響應。

這些參數應該以分號爲前綴,全部的字符串必須被正確地轉義。示例:「; my-param = X; another-param = Hi%20there」

127) string contactUriParams

附加的URI參數將附加在此賬戶的聯繫人URI中。

這將影響表明此賬戶發送的全部SIP消息中的聯繫URI,包括但不限於REGISTER,INVITE和SUBCRIBE請求或響應。

這些參數應該以分號爲前綴,全部的字符串必須被正確地轉義。示例:「; my-param = X; another-param = Hi%20there」

128) bool authInitialEmpty

若是設置了該標誌,則認證客戶端框架將在每一個初始請求中發送一個空的受權頭。

默認是否。

129) string authInitialAlgorithm

指定要爲每一個初始請求發送空受權頭時使用的算法(見上文)

130)TransportId transportId

(可選)將此賬戶綁定到特定的傳輸。

這一般不是一個好主意,由於賬戶應該可以根據目的地使用任何可用的傳輸發送請求。可是某些應用程序可能但願對傳輸使用有明確的控制權,所以在這種狀況下能夠設置此字段。

默認值:-1(PJSUA_INVALID_ID)

參考Account :: setTransport()

12.2.11 struct AccountVideoConfig

#include <account.hpp>

賬號視頻配置

這將在AccountConfig中指定

pj :: PersistentObject繼承

公有函數

131)virtual  void readObjectconst ContainerNodenode 

從容器節點讀取此對象。

參數

node - 容器從中讀取值。

132)virtual   void writeObjectContainerNodenode) const

將此對象寫入容器節點。

參數

node - 容器將值寫入。

公有變量

133) bool autoShowIncoming

指定輸入視頻是否應顯示爲默認屏幕。

這適用於來電(INVITE),傳入的re-INVITE和傳入的UPDATE請求。

不管此設置如何,應用程序能夠經過執行on_call_media_state()回調並使用pjsua_call_get_info()枚舉媒體流來檢測傳入的視頻。一旦傳入視頻被識別,應用程序能夠檢索與傳入視頻相關聯的窗口,並使用pjsua_vid_win_set_show()顯示或隱藏它。

默認值:False

134) bool autoTransmitOutgoing

指定輸出視頻在撥出電話時默認是否被激活,和/或當檢測到輸入視頻時。

這適用於傳入和傳出呼叫,傳入re-INVITE和傳入UPDATE。若是設置不爲零,一旦響應這些請求被髮送(或接收),即將開始傳出視頻傳輸。

不管此設置的值如何,應用程序可使用pjsua_call_set_vid_strm()啓動和中止傳出視頻傳輸。

默認值:False

135)unsigned windowFlags

指定視頻窗口的標誌。

該值是pjmedia_vid_dev_wnd_flag的位掩碼組合。

默認值:0

136)pjmedia_vid_dev_index defaultCaptureDevice

指定此賬戶要使用的默認捕獲設備。

若是vidOutAutoTransmit啓用,則此設備將用於捕獲視頻。

默認值:PJMEDIA_VID_DEFAULT_CAPTURE_DEV

137)pjmedia_vid_dev_index defaultRenderDevice

指定此賬戶使用的默認渲染設備。

默認:PJMEDIA_VID_DEFAULT_RENDER_DEV

138)pjmedia_vid_stream_rc_method rateControlMethod

速率控制方式。

默認值:PJMEDIA_VID_STREAM_RC_SIMPLE_BLOCKING。

139)unsigned rateControlBandwidth

上行/出站帶寬。

若是這設置爲零,視頻流將使用編解碼器最大比特率設置。

默認值:0(跟隨編解碼器最大比特率)。

140)unsigned startKeyframeCount

流建立後要發送的關鍵幀數。

默認值:PJMEDIA_VID_STREAM_START_KEYFRAME_CNT

141)unsigned startKeyframeInterval

流建立後的關鍵幀發送間隔。

默認值:PJMEDIA_VID_STREAM_START_KEYFRAME_INTERVAL_MSEC

12.2.12 class FindBuddyMatch

#include <account.hpp>

Buddy匹配算法的包裝類。

默認算法是Buddy URI 中搜索令牌的簡單子字符串查找,區分大小寫。應用程序能夠經過覆蓋此類並在Account :: findBuddy()中指定其實例來實現本身的匹配算法。

公有函數

142)virtual  bool matchconst string&tokenconst Buddybuddy 

默認算法實現。

143)virtual  ~FindBuddyMatch()

析構器

12.2.13 struct OnIncomingCallParam

#include <account.hpp>

此結構包含onIncomingCall()賬戶回調的參數。

公有變量

144)INT callId

爲新呼叫分配的庫呼叫ID。

145)SipRxData rdata

來電INVITE請求。

12.2.14 struct OnIncomingSubscribeParam

#include <account.hpp>

此結構包含onIncomingSubscribe()回調的參數。

公有變量

146)void * srvPres

服務器存在訂閱實例。

若是應用程序延遲接受請求,則在調用Account :: presNotify()時須要指定此對象。

147) string fromUri

發件人URI。

148)SipRxData rdata

傳入的消息。

149)pjsip_status_code code

響應請求的狀態代碼。

默認值爲200.應用程序可將此設置爲其餘最終狀態代碼以接受或拒絕請求。

150) string reason

答覆請求的緣由。

SipTxOption txOption

與響應一塊兒發送的附加數據(若是有)。

12.2.15 struct OnInstantMessageParam

#include <account.hpp>

onInstantMessage()賬戶回調的參數。

公有變量

151) string fromUri

發件人從URI。

152) string toUri

到請求的URI。

153) string contactUri

聯繫發件人的URI。

154) string contentType

消息體的MIME類型。

155) string msgBody

消息體。

156)SipRxData rdata

整個消息。

12.2.16 struct OnInstantMessageStatusParam

#include <account.hpp>

onInstantMessageStatus()賬戶回調的參數。

公有變量

157)Token  userData

與尋呼機傳輸相關聯的令牌或用戶數據。

158) string toUri

目的地URI。

159) string msgBody

消息體。

160)pjsip_status_code code

交易的SIP狀態碼。

161) string reason

交易的緣由短語。

162)SipRxData rdata

致使此回調的傳入響應被調用。

若是因爲超時或傳輸錯誤而致使事務失敗,內容將爲空。

12.2.17 struct OnMwiInfoParam

#include <account.hpp>

onMwiInfo()賬戶回調的參數。

公有變量

163)pjsip_evsub_state state

MWI訂閱狀態。

164)SipRxData rdata

整個消息緩衝區。

12.2.18 struct OnRegStartedParam

#include <account.hpp>

此結構包含onRegStarted()賬戶回調的參數。

公有變量

165) bool renew

註冊:true,註銷爲false。

12.2.19 struct OnRegStateParam

#include <account.hpp>

此結構包含onRegState()賬戶回調的參數。

公有變量

166)pj_status_t status

註冊業務狀態。

167)pjsip_status_code code

接收到SIP狀態碼。

168) string reason

SIP緣由短語收到。

169)SipRxData rdata

傳入的消息。

170)INT expiration

下一個到期時間間隔。

12.2.20 struct OnTypingIndicationParam

#include <account.hpp>

onTypingIndication()賬戶回調的參數。

公有變量

171) string fromUri

發件人/來自URI。

172) string toUri

到URI。

173) string contactUri

聯繫人URI。

174) bool isTyping

 bool 值表示發件人是否正在輸入。

175)SipRxData rdata

整個消息緩衝區。

12.2.21 struct PresNotifyParam

#include <account.hpp>

presNotify()賬戶方法的參數。

公有變量

176)void * srvPres

服務器存在訂閱實例。

177)pjsip_evsub_state state

服務器呈現訂閱狀態設置。

178) string stateStr

或者指定狀態字符串名稱,若是狀態不是「活動」,「待定」或「終止」。

179) string reason

若是新狀態爲PJSIP_EVSUB_STATE_TERMINATED,則可選擇指定終止緣由。

180) bool withBody

若是新狀態爲PJSIP_EVSUB_STATE_TERMINATED,則指定NOTIFY請求是否應包含包含賬戶的狀態信息的消息體。

181)SipTxOption txOption

使用NOTIFY請求發送的標題的可選列表。

12.3 media.hpp 

PJSUA2 Media操做。

 namespace pj

PJSUA2 API在pj命名空間內。

Typedefs

1)typedef std :: vector < MediaFormat *> MediaFormatVector

MediaFormat數組。

2)typedef void * MediaPort

媒體端口對應於pjmedia_port。

3)typedef std :: vector < AudioMedia *> AudioMediaVector

音頻媒體數組。

4)typedef std :: vector < ToneDesc > ToneDescVector

音調描述符數組。

5)typedef std :: vector < ToneDigit > ToneDigitVector

音數位數。

6)typedef std :: vector < ToneDigitMapDigit > ToneDigitMapVector

音數位圖。

7)typedef std :: vector < AudioDevInfo *> AudioDevInfoVector

音頻設備信息數組。

8)typedef struct  PJ :: WindowHandle WindowHandle

窗口句柄。

9)typedef struct  PJ :: VideoWindowInfo VideoWindowInfo

此結構描述視頻窗口信息。

10)typedef std :: vector < VideoDevInfo *> VideoDevInfoVector

視頻設備信息數組。

11)typedef std :: vector < CodecInfo *> CodecInfoVector

編解碼器信息數組。

12)typedef void * CodecParam

編解碼器參數,對應於pjmedia_codec_param。

13)typedef struct  PJ :: CodecFmtp CodecFmtp

編解碼器特定參數的結構,其中包含name = value對。

編解碼器特定參數將根據SDP'a = fmtp'屬性中的標準(例如:RFC 3555)與SDP一塊兒使用。

14)typedef std :: vector < CodecFmtp > CodecFmtpVector

數組編解碼器fmtp。

12.3.1 class AudDevManager

#include <media.hpp>

音頻設備管理器。

公有函數

15)INT getCaptureDev() const

獲取當前活動的捕捉聲音設備。

若是沒有建立聲音設備,則該功能可能返回-1做爲設備ID。

返回

捕獲設備的設備ID。

16)AudioMediagetCaptureDevMedia()

獲取捕獲音頻設備的AudioMedia

返回

用於捕獲設備的音頻媒體。

17)INT getPlaybackDev() const

獲取當前正在播放的聲音設備。

若是沒有建立聲音設備,則該功能可能返回-1做爲設備ID。

返回

播放設備的設備ID。

18)AudioMediagetPlaybackDevMedia()

獲取揚聲器/播放音頻設備的AudioMedia

返回

揚聲器/播放設備的音頻媒體。

19) void setCaptureDev( INT capture_dev ) const

選擇或更改拍攝聲音設備。

應用程序能夠隨時調用此功能來替換當前的聲音設備。調用此方法不會更改聲音設備的狀態(打開/關閉)。請注意,此方法將覆蓋由setSndDevMode()設置的模式。

參數

capture_dev - 捕獲設備的設備ID。

20) void setPlaybackDev( INT playback_dev ) const

選擇或更改播放聲音設備。

應用程序能夠隨時調用此功能來替換當前的聲音設備。調用此方法不會更改聲音設備的狀態(打開/關閉)。請注意,此方法將覆蓋由setSndDevMode()設置的模式。

參數

playback_dev - 播放設備的設備ID。

const AudioDevInfoVectorenumDev()

枚舉系統中安裝的全部音頻設備。

返回

音頻設備信息列表。

21)void setNullDev()

設置pjsua使用空聲音設備。

零聲音設備僅提供會議橋所需的時間,而且不會與任何硬件相互衝突。

22)MediaPort * setNoDev()

斷開主會議橋與任何聲音設備的鏈接,並讓應用將網橋鏈接到本身的聲卡/主端口。

返回

會議橋的端口接口,使應用程序能夠將其鏈接到本身的聲音設備或主端口。

23) void setSndDevMode( unsigned mode ) const

設置聲音設備模式。

參數

mode - 聲音設備模式,做爲#pjsua_snd_dev_mode的位掩碼組合

24)void setEcOptions( unsigned tail_msec,unsigned options 

更改回聲消除設置。

此功能的行爲取決於聲音設備當前是否處於活動狀態,若是是,是否正在使用設備或軟件AEC。

若是聲音設備當前處於活動狀態,而且設備支持AEC,則此功能會將更改請求轉發給設備,而且由設備決定是否支持該請求。若是使用軟件AEC(若是設備不支持AEC,將使用軟件EC),則此功能將更改軟件EC設置。在全部狀況下,將保存設置以備未來打開聲音設備。

若是聲音設備當前未處於活動狀態,則僅會更改默認的AEC設置,而且下次打開聲音設備時將進行設置。

參數

tail_msec - 尾長度,以毫秒爲單位。設置爲零以禁用AEC。

options - 要傳遞給pjmedia_echo_create()的選項。一般值應爲零。

25)unsigned getEcTail() const

獲取當前的回聲消除器尾部長度。

返回

EC尾部長度(以毫秒爲單位),若是禁用AEC,則該值將爲零。

26) bool sndIsActive() const

檢查聲音設備當前是否處於活動狀態。

若是應用程序已經設置自動關閉功能非零(在sndAutoCloseTime設定聲音設備能夠是不活動MediaConfig),或者若是空聲音設備或聲音設備已經經由配置setNoDev()函數。

27)void refreshDevs()

刷新系統中安裝的聲音設備列表。

此方法只會刷新音頻設備列表,所以全部活動音頻流將不受影響。刷新設備列表後,應用程序必須確保在調用任何接受音頻設備索引的方法做爲參數以前,更新對音頻設備的全部索引引用。

28)unsigned getDevCount() const

獲取系統中安裝的聲音設備的數量。

返回

安裝在系統中的聲音設備的數量。

29)AudioDevInfo getDevInfo( INT ID ) const

獲取設備信息。

返回

一旦返回成功,將經過此方法填寫的設備信息。

參數

id - 音頻設備ID。

30)INT lookupDev(const string &drv_name,  const string &dev_name ) const

根據驅動程序和設備名稱查找設備索引。

返回

設備ID。若是沒有找到設備,將會拋出錯誤

參數

drv_name - 驅動名稱。

dev_name - 設備名稱。

31) string capName( pjmedia_aud_dev_cap  cap ) const

獲取指定功能的字符串信息。

返回

能力名稱

參數

cap - 能力Capability  ID。

32)void setExtFormatconst MediaFormatAudioformat,bool keep = true )

這將配置音頻格式功能(PCM除外)到正在使用的聲音設備。

若是聲音設備當前處於活動狀態,則該方法會將設置轉發到要當即應用的聲音設備實例(若是它支持)。

該方法僅在設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_EXT_FORMAT功能時有效,不然將拋出錯誤

請注意,若是設置保留未來使用,即便應用程序更改了要使用的聲音設備,也將應用於任何設備。

參數

format - 音頻格式。

keep - 指定設置是否保留以備未來使用。

33)MediaFormatAudio getExtFormat() const

獲取正在使用的聲音設備的音頻格式功能(PCM除外)。

若是聲音設備當前處於活動狀態,則該方法會將該請求轉發到聲音設備。若是聲音設備當前處於非活動狀態,而且若是應用程序之前設置了設置並將設置標記爲保留,則該設置將被返回。不然,這種方法會引發錯誤。

該方法僅在設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_EXT_FORMAT功能時有效,不然將拋出錯誤

返回

音頻格式。

34)void setInputLatency( unsigned latency_msec,bool keep = true )

這將爲正在使用的聲音設備配置音頻輸入延遲控制或查詢功能。

若是聲音設備當前處於活動狀態,則該方法會將設置轉發到要當即應用的聲音設備實例(若是它支持)。

該方法僅在設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_INPUT_LATENCY功能時有效,不然將拋出錯誤

請注意,若是設置保留未來使用,即便應用程序更改了要使用的聲音設備,也將應用於任何設備。

參數

latency_msec - 輸入延遲。

keep - 指定設置是否保留以備未來使用。

35)unsigned getInputLatency() const

獲取正在使用的聲音設備的音頻輸入延遲控制或查詢功能。

若是聲音設備當前處於活動狀態,則該方法會將該請求轉發到聲音設備。若是聲音設備當前處於非活動狀態,而且若是應用程序之前設置了設置並將設置標記爲保留,則該設置將被返回。不然,這種方法會引發錯誤。

該方法僅在設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_INPUT_LATENCY功能時有效,不然將拋出錯誤

返回

音頻輸入延遲。

36)void setOutputLatency( unsigned latency_msec,bool keep = true )

這將爲正在使用的聲音設備配置音頻輸出延遲控制或查詢功能。

若是聲音設備當前處於活動狀態,則該方法會將設置轉發到要當即應用的聲音設備實例(若是它支持)。

該方法僅在設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_OUTPUT_LATENCY功能時有效,不然將拋出錯誤

請注意,若是設置保留未來使用,即便應用程序更改了要使用的聲音設備,也將應用於任何設備。

參數

latency_msec - 輸出延遲。

keep - 指定設置是否保留以備未來使用。

37)unsigned getOutputLatency() const

獲取正在使用的聲音設備的音頻輸出延遲控制或查詢功能。

若是聲音設備當前處於活動狀態,則該方法會將該請求轉發到聲音設備。若是聲音設備當前處於非活動狀態,而且若是應用程序之前設置了設置並將設置標記爲保留,則該設置將被返回。不然,這種方法會引發錯誤。

該方法僅在設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_OUTPUT_LATENCY功能時有效,不然將拋出錯誤

返回

音頻輸出延遲。

38)void setInputVolume( unsigned volume,bool keep = true )

這將爲正在使用的聲音設備配置音頻輸入音量級別功能。

若是聲音設備當前處於活動狀態,則該方法會將設置轉發到要當即應用的聲音設備實例(若是它支持)。

該方法僅在設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_INPUT_VOLUME_SETTING功能時有效,不然將拋出錯誤

請注意,若是設置保留未來使用,即便應用程序更改了要使用的聲音設備,也將應用於任何設備。

參數

volume - 輸入音量級別,以百分比表示。

keep - 指定設置是否保留以備未來使用。

39)unsigned getInputVolume() const

獲取正在使用的聲音設備的音頻輸入音量電平能力。

若是聲音設備當前處於活動狀態,則該方法會將該請求轉發到聲音設備。若是聲音設備當前處於非活動狀態,而且若是應用程序之前設置了設置並將設置標記爲保留,則該設置將被返回。不然,這種方法會引發錯誤。

該方法僅在設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_INPUT_VOLUME_SETTING功能時有效,不然將拋出錯誤。*

返回

音頻輸入音量級別,以百分比表示。

40)void setOutputVolume( unsigned volume,bool keep = true )

這將爲正在使用的聲音設備配置音頻輸出音量級別的功能。

若是聲音設備當前處於活動狀態,則該方法會將設置轉發到要當即應用的聲音設備實例(若是它支持)。

該方法僅在設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_OUTPUT_VOLUME_SETTING功能時有效,不然將拋出錯誤

請注意,若是設置保留未來使用,即便應用程序更改了要使用的聲音設備,也將應用於任何設備。

參數

volume - 輸出音量級別,以百分比表示。

keep - 指定設置是否保留以備未來使用。

41)unsigned getOutputVolume() const

獲取正在使用的聲音設備的音頻輸出音量級別功能。

若是聲音設備當前處於活動狀態,則該方法會將該請求轉發到聲音設備。若是聲音設備當前處於非活動狀態,而且若是應用程序之前設置了設置並將設置標記爲保留,則該設置將被返回。不然,這種方法會引發錯誤。

該方法僅在設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_OUTPUT_VOLUME_SETTING功能時有效,不然將拋出錯誤

返回

音頻輸出音量電平,以百分比表示。

42)unsigned getInputSignal() const

獲取正在使用的聲音設備的音頻輸入信號電平能力。

若是聲音設備當前處於活動狀態,則該方法會將該請求轉發到聲音設備。若是聲音設備當前處於非活動狀態,而且若是應用程序之前設置了設置並將設置標記爲保留,則該設置將被返回。不然,這種方法會引發錯誤。

該方法僅在設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_INPUT_SIGNAL_METER功能時有效,不然將拋出錯誤

返回

音頻輸入信號電平,以百分比表示。

43)unsigned getOutputSignal() const

獲取正在使用的聲音設備的音頻輸出信號電平能力。

若是聲音設備當前處於活動狀態,則該方法會將該請求轉發到聲音設備。若是聲音設備當前處於非活動狀態,而且若是應用程序之前設置了設置並將設置標記爲保留,則該設置將被返回。不然,這種方法會引發錯誤。

該方法僅在設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_OUTPUT_SIGNAL_METER功能時有效,不然將拋出錯誤

返回

音頻輸出信號電平,以百分比表示。

44)void setInputRoute( pjmedia_aud_dev_route route,bool keep = true )

這將爲正在使用的聲音設備配置音頻輸入路由功能。

若是聲音設備當前處於活動狀態,則該方法會將設置轉發到要當即應用的聲音設備實例(若是它支持)。

該方法僅在設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_INPUT_ROUTE功能時有效,不然將拋出錯誤

請注意,若是設置保留未來使用,即便應用程序更改了要使用的聲音設備,也將應用於任何設備。

參數

route - 音頻輸入路由。

keep - 指定設置是否保留以備未來使用。

45)pjmedia_aud_dev_route getInputRoute() const

獲取正在使用的聲音設備的音頻輸入路由功能。

若是聲音設備當前處於活動狀態,則該方法會將該請求轉發到聲音設備。若是聲音設備當前處於非活動狀態,而且若是應用程序之前設置了設置並將設置標記爲保留,則該設置將被返回。不然,這種方法會引發錯誤。

該方法僅在設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_INPUT_ROUTE功能時有效,不然將拋出錯誤

返回

音頻輸入路由。

46)void setOutputRoute( pjmedia_aud_dev_route route,bool keep = true )

這將對正在使用的聲音設備配置音頻輸出路由功能。

若是聲音設備當前處於活動狀態,則該方法會將設置轉發到要當即應用的聲音設備實例(若是它支持)。

該方法僅在設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_OUTPUT_ROUTE功能時有效,不然將拋出錯誤

請注意,若是設置保留未來使用,即便應用程序更改了要使用的聲音設備,也將應用於任何設備。

參數

route - 音頻輸出路由。

keep - 指定設置是否保留以備未來使用。

47)pjmedia_aud_dev_route getOutputRoute() const

獲取正在使用的聲音設備的音頻輸出路由功能。

若是聲音設備當前處於活動狀態,則該方法會將該請求轉發到聲音設備。若是聲音設備當前處於非活動狀態,而且若是應用程序之前設置了設置並將設置標記爲保留,則該設置將被返回。不然,這種方法會引發錯誤。

該方法僅在設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_OUTPUT_ROUTE功能時有效,不然將拋出錯誤

返回

音頻輸出路由。

48)void setVad( bool enable,bool keep = true )

這將對正在使用的聲音設備配置音頻語音活動檢測功能。

若是聲音設備當前處於活動狀態,則該方法會將設置轉發到要當即應用的聲音設備實例(若是它支持)。

該方法僅在設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_VAD功能時有效,不然將拋出錯誤

請注意,若是設置保留未來使用,即便應用程序更改了要使用的聲音設備,也將應用於任何設備。

參數

enable - 啓用/禁用語音活動檢測功能。設置爲true以啓用。

keep - 指定設置是否保留以備未來使用。

49) bool getVad() const

獲取正在使用的聲音設備的音頻聲音活動檢測功能。

若是聲音設備當前處於活動狀態,則該方法會將該請求轉發到聲音設備。若是聲音設備當前處於非活動狀態,而且若是應用程序之前設置了設置並將設置標記爲保留,則該設置將被返回。不然,這種方法會引發錯誤。

該方法僅在設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_VAD功能時有效,不然將拋出錯誤

返回

音頻聲音活動檢測功能。

50)void setCng( bool enable,bool keep = true )

這將爲正在使用的聲音設備配置音頻溫馨噪聲產生能力。

若是聲音設備當前處於活動狀態,則該方法會將設置轉發到要當即應用的聲音設備實例(若是它支持)。

該方法僅在設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_CNG功能時有效,不然將拋出錯誤

請注意,若是設置保留未來使用,即便應用程序更改了要使用的聲音設備,也將應用於任何設備。

參數

enable - 啓用/禁用溫馨噪音生成功能。設置爲true以啓用。

keep - 指定設置是否保留以備未來使用。

51) bool getCng() const

獲取正在使用的聲音設備的音頻溫馨噪聲發生能力。

若是聲音設備當前處於活動狀態,則該方法會將該請求轉發到聲音設備。若是聲音設備當前處於非活動狀態,而且若是應用程序之前設置了設置並將設置標記爲保留,則該設置將被返回。不然,這種方法會引發錯誤。

該方法僅在設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_CNG功能時有效,不然將拋出錯誤

返回

音頻溫馨噪音產生功能。

52)void setPlc( bool enable,bool keep = true )

這將爲正在使用的聲音設備配置音頻包丟失隱藏功能。

若是聲音設備當前處於活動狀態,則該方法會將設置轉發到要當即應用的聲音設備實例(若是它支持)。

若是設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_PLC功能,則此方法纔有效,不然將拋出錯誤

請注意,若是設置保留未來使用,即便應用程序更改了要使用的聲音設備,也將應用於任何設備。

參數

enable - 啓用/禁用丟包隱藏功能。設置爲true以啓用。

keep - 指定設置是否保留以備未來使用。

53) bool getPlc() const

獲取正在使用的聲音設備的音頻包丟失隱藏功能。

若是聲音設備當前處於活動狀態,則該方法會將該請求轉發到聲音設備。若是聲音設備當前處於非活動狀態,而且若是應用程序之前設置了設置並將設置標記爲保留,則該設置將被返回。不然,這種方法會引發錯誤。

若是設備在AudioDevInfo.caps標誌中具備PJMEDIA_AUD_DEV_CAP_PLC功能,則此方法纔有效,不然將拋出錯誤

返回

音頻丟包隱藏功能。

54)私有函數

(1)AudDevManager()

構造函數

(2)~AudDevManager()

析構器

(3)void clearAudioDevList()
(4)INT getActiveDev( bool is_capture ) const

私有變量

(5)AudioDevInfoVector audioDevList
(6)AudioMedia * devMedia

friend

(7)friend pj::Endpoint

12.3.2 struct AudioDevInfo

#include <media.hpp>

音頻設備信息結構。

公有函數

55)void fromPjconst pjmedia_aud_dev_info&dev_info 

從pjmedia_aud_dev_info構造。

56)~AudioDevInfo()

析構器

公有變量

57) string name

設備名稱。

58)unsigned inputCount

此設備支持的最大輸入通道數。

若是該值爲零,則該設備不支持輸入操做(即它僅是播放設備)。

59)unsigned outputCount

此設備支持的最大輸出通道數。

若是值爲零,則該設備不支持輸出操做(即它是僅輸入設備)。

60)unsigned defaultSamplesPerSec

默認採樣率。

61) string driver

底層的驅動程序名稱。

62)unsigned caps

設備功能,做爲pjmedia_aud_dev_cap的位掩碼組合。

63)unsigned routes

支持的音頻設備路由,做爲pjmedia_aud_dev_route的位掩碼組合。

若是設備不支持音頻路由,該值可能爲零。

64)MediaFormatVector extFmt

支持的擴展音頻格式數組。

12.3.3 class AudioMedia

#include <media.hpp>

音頻媒體

pj :: Media繼承

子類有pj :: AudioMediaPlayerpj :: AudioMediaRecorderpj :: ToneGenerator

公有函數

65)ConfPortInfo getPortInfo() const

獲取有關指定會議端口的信息。

66)INT getPortId() const

獲取端口ID。

67) void startTransmitconst  AudioMedia sink ) const

創建單向媒體流下沉。

該媒體端口將做爲源,它能夠傳輸到多個目的地/匯。而且若是多個源傳輸到同一個接收器,則媒體將被混合在一塊兒。源和匯能夠引用相同的媒體,有效地循環媒體。

若是須要雙向媒體流,應用程序須要調用此方法兩次,第二個來自相對的源媒體。

參數

sink - 目的地媒體

68) void stopTransmitconst  AudioMedia sink ) const

中止媒體流到目的地/匯聚端口。

參數

sink - 目的地媒體。

69)void adjustRxLevel( float level 

經過使其更大或更安靜,調整要從橋樑傳輸到該介質端口的信號電平。

參數

level - 信號電平調整。值12.0表示無電平調整,值0表示使端口靜音。

70)void adjustTxLevel( float level 

經過使其更大或更安靜地調整從該媒體端口(到橋接器)接收的信號電平。

參數

level - 信號電平調整。值1.0表示無電平調整,值0表示使端口靜音。

71)unsigned getRxLevel() const

獲取最後收到的信號電平。

返回

信號電平百分比。

72)unsigned getTxLevel() const

獲取最後傳輸的信號電平。

返回

信號電平百分比。

73)virtual  ~AudioMedia()

virtual 析構函數

公共靜態函數

74)static ConfPortInfo getPortInfoFromId( int port_id 

從特定端口ID獲取信息。

75)static AudioMedia *typecastFromMedia(Media *media)

從基類媒體轉換類型。

這對於諸如Python不支持向下轉換類型的語言編寫的應用程序頗有用。

返回

該對象爲AudioMedia實例

參數

media - 要被轉換的對象

受保護函數

76)AudioMedia()

默認構造函數

77)void registerMediaPortMediaPort  port

該方法須要由此類的後代調用,以將建立的媒體端口註冊到會議橋和端點的媒體列表。

param將要註冊的媒體端口鏈接到會議橋。

78)void unregisterMediaPort()

該類的後代須要調用此方法,以從會議橋和端點的媒體列表中刪除媒體端口。

若是已將註冊的媒體與之前的registerMediaPort()調用註冊,則後代應該只調用此方法。

受保護的屬性

79)INT id

會議端口號

80)私有變量

(1)pj_caching_pool mediaCachingPool
(2)pj_pool_t * mediaPool

12.3.4 class AudioMediaPlayer

#include <media.hpp>

音頻媒體播放器

pj :: AudioMedia繼承

公有函數

81)AudioMediaPlayer()

構造函數

82)void createPlayerconst string&file_name,unsigned options = 0 )

建立文件播放器,並自動將此播放器添加到會議橋。

參數

file_name - 要播放的文件名 目前僅支持WAV文件,WAV文件必須格式化爲16bit PCM單聲道/單聲道(支持任什麼時候鍾頻率)。

options - 可選選項標誌。應用程序能夠指定PJMEDIA_FILE_NO_LOOP以防止回放循環。

83)void createPlaylistconst StringVectorfile_namesconst string&label =「」,unsigned options = 0 )

建立文件播放列表媒體端口,並自動將端口添加到會議橋。

參數

file_names - 要添加到播放列表的文件名數組。請注意,文件必須具備相同的時鐘速率,通道數和每一個樣本的位數。

label - 爲媒體端口設置的可選標籤。

options - 可選選項標誌。應用程序能夠指定PJMEDIA_FILE_NO_LOOP以防止循環。

84)AudioMediaPlayerInfo getInfo() const

獲取有關播放器的其餘信息。

此操做僅適用於播放器。對於播放列表,將會拋出錯誤

返回

信息。

85)pj_uint32_t getPos() const

獲取樣品中的當前播放位置。

此操做對播放列表無效。

返回

當前播放位置,在樣本中。

86)void setPos( pj_uint32_t samples 

在樣品中設置播放位置。

此操做對播放列表無效。

參數

samples - 樣品中所需的播放位置。

87)virtual  ~AudioMediaPlayer()

析構器

88)virtual  bool onEof()

當文件播放器讀取到達文件結束或文件讀取到達播放列表的最後一個文件的文件結束時,註冊要調用的回調。

若是文件或播放列表設置爲重複播放,則將屢次調用回調。

返回

若是回調返回false,則播放將中止。請注意,若是應用程序在回調中銷燬播放器,則必須在此返回false。

公共靜態函數

89)static AudioMediaPlayer * typecastFromAudioMediaAudioMedia * media 

來自基類AudioMedia的 Typecast 。

這對於諸如Python不支持向下轉換類型的語言編寫的應用程序頗有用。

返回

該對象爲AudioMediaPlayer實例

參數

media - 要被轉換的對象

90)私有變量

(3)INT playerId

播放器ID

91)私有靜態函數

(4)static pj_status_t eof_cb( pjmedia_port * port,void * usr_data 

低級別PJMEDIA回調。

12.3.5 struct AudioMediaPlayerInfo

#include <media.hpp>

此結構包含有關AudioMediaPlayer的附加信息。

公有變量

92)pjmedia_format_id formatId

有效載荷的格式ID。

93)unsigned payloadBitsPerSample

文件有效載荷的每一個樣本的位數。

例如,PCM WAV的值爲16,Alaw / Ulas WAV文件的值爲8。

94)pj_uint32_t sizeBytes

WAV有效載荷大小(以字節爲單位)。

95)pj_uint32_t sizeSamples

樣品中的WAV有效載荷大小。

12.3.6 class AudioMediaRecorder

#include <media.hpp>

音頻媒體記錄器

pj :: AudioMedia繼承

公有函數

96)AudioMediaRecorder()

構造函數

97)void createRecorderconst string&file_name,unsigned enc_type = 0,pj_ssize_t max_size = 0,unsigned options = 0 )

建立文件記錄器,並自動將此錄音機鏈接到會議橋。

錄音機目前支持錄製WAV文件。要使用的錄像機的類型由文件的擴展名(例如「.wav」)決定。

參數

file_name - 輸出文件名。該功能將根據文件擴展名肯定要使用的默認格式。目前全部平臺都支持「.wav」。

enc_type - 可選擇指定要用於壓縮介質的編碼器類型,若是文件能夠支持不一樣的編碼。如今該值必須爲零。

max_size - 最大文件大小 指定零或-1以刪除大小限制。此值如今必須爲零或-1。

options - 可選選項,可用於指定錄製文件格式。支持的選項有PJMEDIA_FILE_WRITE_PCM,PJMEDIA_FILE_WRITE_ALAW和PJMEDIA_FILE_WRITE_ULAW。默認值爲零或PJMEDIA_FILE_WRITE_PCM。

98)virtual  ~AudioMediaRecorder()

析構器

公共靜態函數

99)static AudioMediaRecorder * typecastFromAudioMediaAudioMedia * media 

來自基類AudioMedia的 Typecast 。

這對於諸如Python不支持向下轉換類型的語言編寫的應用程序頗有用。

返回

該對象爲AudioMediaRecorder實例

參數

media - 要被轉換的對象

100)私有變量

(5)INT recorderId

記錄器ID。

12.3.7 struct CodecFmtp

#include <media.hpp>

編解碼器特定參數的結構,其中包含name = value對。

編解碼器特定參數將根據SDP'a = fmtp'屬性中的標準(例如:RFC 3555)與SDP一塊兒使用。

公有變量

101) string name

102) string val

12.3.8 struct CodecInfo

#include <media.hpp>

該結構描述了編解碼信息。

公有函數

103)void fromPjconst pjsua_codec_info&codec_info 

從pjsua_codec_info構造。

公有變量

104) string codecId

編解碼器獨特識別。

105)pj_uint8_t priority

編解碼器優先級(0-255整數)。

106) string desc

編解碼器描述。

12.3.9 struct ConfPortInfo

#include <media.hpp>

此結構描述了已註冊到會議橋中的特定媒體端口的信息。

公有函數

107)void fromPjconst pjsua_conf_port_info&port_info 

從pjsua_conf_port_info構造。

公有變量

108)INT portId

會議端口號。

109) string name

端口名稱。

110)MediaFormatAudio format

媒體音頻格式信息。

111)float txLevelAdj

Tx電平調整。

值1.0表示無調整,值0表示端口靜音,值2.0表示電平放大兩次。

112)float rxLevelAdj

Rx電平調整。

值1.0表示無調整,值0表示端口靜音,值2.0表示電平放大兩次。

113)intVector  listeners

偵聽器數組(換句話說,該端口正在發送的端口)。

12.3.10 class Media

#include <media.hpp>

媒體

pj :: AudioMedia進行子類化

公有函數

114)virtual  ~Media()

virtual 析構函數

115)pjmedia_type getType() const

獲取媒體類型。

返回

Media類型。

受保護功能

116)Media( pjmedia_type med_type 

構造函數

117)私有變量

(6)pjmedia_type type

媒體類型

12.3.11 struct MediaCoordinate

#include <media.hpp>

Media協調錶示

公有變量

118)INT x

座標的X位置。

119)INT y

座標的Y位置。

12.3.12 struct MediaFormat

#include <media.hpp>

此結構包含徹底描述媒體所需的全部信息。

pj :: MediaFormatAudiopj :: MediaFormatVideo子類化

公有變量

120)pj_uint32_t id

指定音頻採樣或視頻像素格式的格式ID。

一些衆所周知的格式ids在pjmedia_format_id枚舉中聲明。

參考pjmedia_format_id

121)pjmedia_type type

最頂級的媒體類型,做爲信息。

12.3.13 struct MediaFormatAudio

#include <media.hpp>

該結構描述了有關音頻媒體的詳細信息。

繼承自pj :: MediaFormat

公有函數

122)void fromPjconst pjmedia_format&format 

從pjmedia_format構造。

123)pjmedia_format toPj() const

導出到pjmedia_format。

公有變量

124)unsigned clockRate

樣品中的音頻時鐘頻率或Hz。

125)unsigned channelCount

頻道數量

126)unsigned frameTimeUsec

幀間隔,以微秒爲單位。

127)unsigned bitsPerSample

每一個樣品的位數。

128)pj_uint32_t avgBps

平均比特率

129)pj_uint32_t maxBps

最大比特率

12.3.14 struct MediaFormatVideo

#include <media.hpp>

該結構描述了有關視頻媒體的詳細信息。

繼承自pj :: MediaFormat

公有函數

130)void fromPjconst pjmedia_format&format 

從pjmedia_format構造。

131)pjmedia_format toPj() const

導出到pjmedia_format。

公有變量

132)unsigned width

視頻寬度。

133)unsigned height

視頻高度

134)INT fpsNum

每分鐘幀數。

135)INT fpsDenum

每秒幀數。

136)pj_uint32_t avgBps

平均比特率

137)pj_uint32_t maxBps

最大比特率

12.3.15 struct MediaSize

#include <media.hpp>

Media大小的表示

公有變量

138)unsigned w

寬度。

139)unsigned h

高度。

12.3.16 class ToneDesc

#include <media.hpp>

Tone描述符(pjmedia_tone_desc的抽象)

從pjmedia_tone_desc繼承

公有函數

140)ToneDesc()

~ToneDesc()

12.3.17 class ToneDigit

#include <media.hpp>

音調數字(pjmedia_tone_digit的抽象)

從pjmedia_tone_digit繼承

公有函數

141)ToneDigit()

142)~ToneDigit()

12.3.18 struct ToneDigitMapDigit

#include <media.hpp>

音數位圖中的數字。

公有變量

143) string digit

144)INT freq1

145)INT freq2

12.3.19 class ToneGenerator

#include <media.hpp>

音調發生器。

pj :: AudioMedia繼承

公有函數

146)ToneGenerator()

構造函數

147)~ToneGenerator()

析構器

148)void createToneGenerator( unsigned clock_rate = 16000,unsigned channel_count = 1 )

建立音源

149) bool isBusy() const

檢查音頻發生器是否仍然生成一些音調。

返回

忙碌時非零。

150)void stop()

指示音發生器中止當前處理。

151)void rewind()

回放播放。

這將開始播放到播放列表中的第一個音調。

152)void playconst ToneDescVectortone,bool loop = false )

指示音頻發生器播放具備指定持續時間的單頻或雙頻音調。

除了在調用此函數以前調用stop()以外,新的音調將被追加到當前播放的音色中。一旦音調發生器鏈接到其餘媒體,播放就會開始。

參數

tones - 要播放的音色數組

loop - 在循環中播放音調。

153)void playDigitsconst ToneDigitVectordigits,bool loop = false )

指示音發生器播放多個MF數字,每一個數字具備單獨的開/關持續時間。

數位數組中的每位數字必須在數位圖中具備相應的描述符。除了在調用此函數以前調用stop()以外,新的音調將被追加到當前播放的音色中。一旦音源發生器鏈接到 sink 介質,播放就會開始。

參數

digits - MF數位數組。

loop - 在循環中播放音調。

154)ToneDigitMapVector getDigitMap() const

獲取此音調發生器當前使用的數位圖。

返回

音色發生器當前使用的數字圖

155)void setDigitMapconst ToneDigitMapVectordigit_map 

設置音色發生器使用的數字圖。

參數

digit_map - 數字地圖由音調發生器使用。

156)私有變量

(7)pj_pool_t * pool
(8)pjmedia_port * tonegen
(9)pjmedia_tone_digit_map digitMap

12.3.20 struct VidCodecParam

#include <media.hpp>

用於配置編解碼器和查詢編解碼器工廠能力的詳細編解碼器屬性。

請注意,編解碼器參數還包含SDP特定設置,decFmtpencFmtp,可能須要根據有效設置進行適當設置。有關詳細信息,請參閱每一個編解碼器文檔。

公有函數

157)void fromPjconst pjmedia_vid_codec_param&param 

158)pjmedia_vid_codec_param toPj() const

公有變量

159)pjmedia_dir dir

方向。

160)pjmedia_vid_packing packing

分組策略

12.3.21 struct  MediaFormatVideo encFmt

編碼格式。

161)CodecFmtpVector encFmtp

編碼器fmtp參數。

162)unsigned encMtu

MTU或最大有效負載大小設置。

12.3.22 struct  MediaFormatVideo decFmt

解碼格式

163)CodecFmtpVector decFmtp

解碼器fmtp參數。

164) bool ignoreFmtp

忽略fmtp參數。

若是設置爲true,則編解碼器將僅應用encFmt和decFmt中指定的格式設置。

165)私有函數

(10)void setCodecFmtpconst pjmedia_codec_fmtp&in_fmtpCodecFmtpVectorout_fmtp 
(11) void getCodecFmtpconst  CodecFmtpVectorin_fmtp,pjmedia_codec_fmtp&out_fmtp ) const

12.3.23 class VidDevManager

#include <media.hpp>

視頻設備管理器。

公有函數

166)void refreshDevs()

刷新系統中安裝的視頻設備列表。

此功能只會刷新視頻設備列表,所以全部活動的視頻流將不受影響。刷新設備列表後,應用程序必須確保在調用任何接受視頻設備索引的函數做爲參數以前,更新對視頻設備的全部索引引用(即pjmedia_vid_dev_index類型的全部變量)。

167)unsigned getDevCount()

獲取系統中安裝的視頻設備數量。

返回

設備數量。

168)VideoDevInfo getDevInfo( INT dev_id ) const

檢索指定設備索引的視頻設備信息。

返回

視頻設備信息列表

參數

dev_id - 視頻設備ID

169)const VideoDevInfoVectorenumDev()

枚舉系統中安裝的全部視頻設備。

返回

視頻設備信息列表

170)INT lookupDev(const string &drv_name,  const string &dev_name ) const

根據驅動程序和設備名稱查找設備索引。

返回

設備ID。若是沒有找到設備,將會拋出錯誤

參數

drv_name - 驅動名稱。

dev_name - 設備名稱。

171)string capName( pjmedia_vid_dev_cap  cap ) const

獲取指定功能的字符串信息。

返回

能力名稱

參數

cap - 能力ID。

172)void setFormat( int dev_idconst MediaFormatVideoformat,bool keep 

這將配置視頻設備的視頻格式功能。

若是視頻設備當前處於活動狀態,則該方法會將設置轉發到要當即應用的視頻設備實例,若是它支持。

該方法僅在設備在VideoDevInfo.caps標誌中具備PJMEDIA_VID_DEV_CAP_FORMAT功能時有效,不然將拋出錯誤

請注意,若是設置保留未來使用,即便應用程序更改了要使用的視頻設備,也將應用於任何設備。

參數

dev_id - 視頻設備ID。

format - 視頻格式。

keep - 指定設置是否保留以備未來使用。

173)MediaFormatVideo getFormat( INT dev_id ) const

獲取視頻設備的視頻格式功能。

若是視頻設備當前處於活動狀態,則將該請求轉發給視頻設備。若是視頻設備當前處於非活動狀態,而且若是應用程序之前設置了設置並將設置標記爲已保留,那麼該設置將被返回。不然,這種方法會引發錯誤。

該方法僅在設備在VideoDevInfo.caps標誌中具備PJMEDIA_VID_DEV_CAP_FORMAT功能時有效,不然將拋出錯誤

返回

保持視頻格式。

參數

dev_id - 視頻設備ID。

174)void setInputScale( int dev_idconst MediaSizescale,bool keep 

這將配置視頻設備的視頻格式功能。

若是視頻設備當前處於活動狀態,則該方法會將設置轉發到要當即應用的視頻設備實例,若是它支持。

該方法僅在設備在VideoDevInfo.caps標誌中具備PJMEDIA_VID_DEV_CAP_INPUT_SCALE功能時有效,不然將拋出錯誤

請注意,若是設置保留未來使用,即便應用程序更改了要使用的視頻設備,也將應用於任何設備。

參數

dev_id - 視頻設備ID。

scale - 視頻比例。

keep - 指定設置是否保留以備未來使用。

175)MediaSize getInputScale( INT dev_id ) const

獲取視頻設備的視頻輸入比例功能。

若是視頻設備當前處於活動狀態,則將該請求轉發給視頻設備。若是視頻設備當前處於非活動狀態,而且若是應用程序之前設置了設置並將設置標記爲已保留,那麼該設置將被返回。不然,這種方法會引發錯誤。

該方法僅在設備在VideoDevInfo.caps標誌中具備PJMEDIA_VID_DEV_CAP_FORMAT功能時有效,不然將拋出錯誤

返回

保持視頻格式。

參數

dev_id - 視頻設備ID。

176)void setOutputWindowFlags( int dev_id,int flags,bool keep 

這將配置快速切換到另外一個視頻設備。

若是視頻設備當前處於活動狀態,則該方法會將設置轉發到要當即應用的視頻設備實例,若是它支持。

該方法僅在設備在VideoDevInfo.caps標誌中具備PJMEDIA_VID_DEV_CAP_OUTPUT_WINDOW_FLAGS功能時有效,不然將拋出錯誤

請注意,若是設置保留未來使用,即便應用程序更改了要使用的視頻設備,也將應用於任何設備。

參數

dev_id - 視頻設備ID。

flags - 視頻窗口標誌。

keep - 指定設置是否保留以備未來使用。

177)int getOutputWindowFlags( int dev_id 

獲取視頻設備的窗口輸出標誌功能。

若是視頻設備當前處於活動狀態,則將該請求轉發給視頻設備。若是視頻設備當前處於非活動狀態,而且若是應用程序之前設置了設置並將設置標記爲已保留,那麼該設置將被返回。不然,這種方法會引發錯誤。

該方法僅在設備在VideoDevInfo.caps標誌中具備PJMEDIA_VID_DEV_CAP_OUTPUT_WINDOW_FLAGS功能時有效,不然將拋出錯誤

返回

保持視頻格式。

參數

dev_id - 視頻設備ID。

178)void switchDev( int dev_idconst VideoSwitchParamparam 

這將配置快速切換到另外一個視頻設備。

若是視頻設備當前處於活動狀態,則該方法會將設置轉發到要當即應用的視頻設備實例,若是它支持。

該方法僅在設備在VideoDevInfo.caps標誌中具備PJMEDIA_VID_DEV_CAP_SWITCH功能時有效,不然將拋出錯誤

參數

dev_id - 視頻設備ID。

param - 視頻切換參數

179) bool isCaptureActive( INT dev_id ) const

檢查視頻捕獲設備當前是否處於活動狀態,即

若是視頻預覽已經開始,或者使用該設備進行視頻通話。

返回

若是它是活躍的,則爲真。

參數

dev_id - 視頻設備ID

180)void setCaptureOrient( pjmedia_vid_dev_index dev_id,pjmedia_orient orient,bool keep = true )

這將配置視頻捕獲設備的視頻方向。

若是設備當前處於活動狀態(即若是使用該設備進行視頻通話或視頻預覽已啓動),則該方法會將設置轉發到視頻設備實例,以便當即應用於支持視頻設備實例。

若是「保持」參數設置爲true,該設置將被保存以供未來打開視頻設備。若是視頻設備當前處於非活動狀態,而且「保持」參數爲false,則此方法將拋出錯誤

參數

dev_id - 視頻設備ID

orient - 視頻方向。

keep - 指定設置是否保留以備未來使用。

181)私有函數

(12)void clearVideoDevList()
(13)VidDevManager()

構造函數

(14)~VidDevManager()

析構器

182)私有變量

(15)VideoDevInfoVector videoDevList

friend

(16)friend pj::Endpoint

12.3.24 struct VideoDevInfo

#include <media.hpp>

視頻設備信息結構。

公有函數

183)void fromPjconst pjmedia_vid_dev_info&dev_info 

從pjmedia_vid_dev_info構造。

184)~VideoDevInfo()

析構器

公有變量

185)pjmedia_vid_dev_index id

設備ID。

186) string name

設備名稱。

187) string driver

底層的驅動程序名稱。

188)pjmedia_dir dir

支持的視頻設備方向,即

是否僅支持捕獲,僅渲染或二者兼容。

189)unsigned caps

設備功能,做爲#pjmedia_vid_dev_cap的位掩碼組合。

190)MediaFormatVector fmt

支持的視頻格式數組。

每一個支持的視頻格式中的某些字段可能被設置爲零或「未知」值,以指示該值是未知的或應被忽略。當這些值未設置爲零時,表示正在使用確切的格式組合。

12.3.25 class VideoPreview

#include <media.hpp>

視頻預覽

公有函數

191)VideoPreview( int dev_id 

構造函數

192)bool hasNative()

肯定指定的視頻輸入設備是否具備內置的本地預覽功能。

這是一個方便的功能,等同於查詢設備PJMEDIA_VID_DEV_CAP_INPUT_PREVIEW功能的功能。

返回

若是有的話。

193)void startconst VideoPreviewOpParamparam 

啓動指定捕獲設備的視頻預覽窗口。

參數

p - 視頻預覽參數。

194)void stop()

中止視頻預覽。

195)VideoWindow getVideoWindow()

196)私有變量

(17)pjmedia_vid_dev_index devId

12.3.26 struct VideoPreviewOpParam

#include <media.hpp>

此結構包含VideoPreview :: start()的參數

公有函數

197)VideoPreviewOpParam()

默認構造函數用默認值初始化。

198)void fromPjconst pjsua_vid_preview_param&prm 

從pjsip轉換

199)pjsua_vid_preview_param toPj() const

轉換爲pjsip。

公有變量

200)pjmedia_vid_dev_index rendId

用於渲染捕獲流以進行預覽的視頻渲染器的設備ID。

若是使用本機預覽,則忽略此參數。

默認:PJMEDIA_VID_DEFAULT_RENDER_DEV

201) bool show

最初顯示窗口。

默認值:PJ_TRUE。

202)unsigned windowFlags

窗口標誌

該值是pjmedia_vid_dev_wnd_flag的位掩碼組合

默認值:0。

203)MediaFormat format

媒體格式

若是保持統一化,則不會使用此參數。

204)VideoWindowHandle window

用於顯示視頻預覽的可選輸出窗口。

僅當視頻設備支持PJMEDIA_VID_DEV_CAP_OUTPUT_WINDOW功能且該功能不爲只讀時,此參數纔會使用。

12.3.27 struct VideoSwitchParam

#include <media.hpp>

具備PJMEDIA_VID_DEV_CAP_SWITCH功能的開關器件的參數。

公有變量

205)pjmedia_vid_dev_index target_id

要切換到的設備ID。

一旦切換成功,視頻流將使用此設備,舊設備將關閉。

12.3.28 class VideoWindow

#include <media.hpp>

視頻窗口。

公有函數

206)VideoWindow( int win_id 

構造函數

207)VideoWindowInfo getInfo() const

獲取窗口信息。

返回

視頻窗口信息。

208)void Show( bool show 

顯示或隱藏窗口。

此操做對於本機窗口(VideoWindowInfo.isNative = true)無效,必須使用本機窗口API。

參數

show - 設置爲true顯示窗口,false隱藏窗口。

209)void setPosconst MediaCoordinatepos 

設置視頻窗口位置。

此操做對於本機窗口(VideoWindowInfo.isNative = true)無效,必須使用本機窗口API。

參數

pos - 窗口位置。

210)void setSizeconst MediaSizesize 

調整窗口大小。

此操做對於本機窗口(VideoWindowInfo.isNative = true)無效,必須使用本機窗口API。

參數

size - 新的窗口大小。

211)void rotate( int angle 

旋轉視頻窗口。

此功能將改變視頻方向,也可能會改變視頻窗口大小(寬度和高度被交換)。此操做對於本機窗口(VideoWindowInfo.isNative = true)無效,必須使用本機窗口API。

參數

angle - 旋轉角度(以度爲單位)必須爲90度的倍數。指定順時針旋轉的正值或逆時針旋轉的負值。

212)void setWindowconst VideoWindowHandlewin 

設置輸出窗口。

此操做僅在底層視頻設備支持PJMEDIA_VIDEO_DEV_CAP_OUTPUT_WINDOW功能而且容許輸入窗口即時更改時纔有效,不然將拋出錯誤。目前,它僅在Android上受支持。

參數

win - 新的輸出窗口。

私有變量

pjsua_vid_win_id winId

struct VideoWindowHandle

#include <media.hpp>

視頻窗口句柄。

公有變量

213)pjmedia_vid_dev_hwnd_type type

窗口句柄類型。

214)WindowHandle handle

窗口句柄。

12.3.29 struct VideoWindowInfo

#include <media.hpp>

此結構描述視頻窗口信息。

公有變量

215) bool isNative

標記以指示此窗口是不是本機窗口,例如由內置預覽設備建立的窗口。

若是該字段爲真,則只有此結構的視頻窗口句柄字段纔有效。

216)VideoWindowHandle winHandle

視頻窗口句柄。

217)INT renderDeviceId

渲染設備ID。

218) bool show

窗口顯示狀態。

假如窗口被隱藏。

219)Mediapos

窗口位置。

220)MediaSize size

窗口大小。

12.3.30 struct WindowHandle

#include <media.hpp>

窗口句柄。

公有變量

221)void * window

窗口。

222)void * display

顯示。

12.4 call.hpp 

PJSUA2呼叫處理。

 namespace pj

PJSUA2 API在pj命名空間內。

Typedefs

1)typedef void * MediaStream

媒體流,對應於pjmedia_stream。

2)typedef void * MediaTransport

媒體傳輸,對應於pjmedia_transport。

3) typedef  union  PJ :: MediaEventData MediaEventData

媒體事件數據。

4)typedef std :: vector < CallMediaInfo > CallMediaInfoVector

呼叫媒體信息數組。

12.4.1 class Call

#include <call.hpp>

Call

公有函數

5)CallAccountacc,int call_id = PJSUA_INVALID_ID )

構造函數

6)virtual  ~Call()

析構器

7)CallInfo getInfo() const

獲取有關此呼叫的詳細信息。

返回

來電信息。

8) bool isActive() const

檢查此呼叫是否具備活動的INVITE會話,而且INVITE會話未被斷開。

返回

若是通話活動,則爲真。

9)INT getId() const

獲取與此呼叫相關聯的PJSUA-LIB呼叫ID或索引。

返回

整數大於或等於零。

10) bool hasMedia() const

檢查呼叫是否有活動的媒體會話。

返回

若是是,則爲真。

11)Media * getMedia( unsigned med_idx ) const

獲取指定介質索引的介質。

返回

Media或NULL若是無效或無效。

參數

med_idx - 媒體指數

12)pjsip_dialog_cap_status remoteHasCap( INT HTYPE  const string &hname  const string &Token ) const

檢查遠程對等體是否支持指定的功能。

返回

PJSIP_DIALOG_CAP_SUPPORTED若是顯式支持指定的功能,請參閱pjsip_dialog_cap_status以獲取更多信息。

參數

htype - 要檢查的標題類型(pjsip_hdr_e),該值能夠是:

  • PJSIP_H_ACCEPT
  • PJSIP_H_ALLOW
  • PJSIP_H_SUPPORTED

hname - 若是htype指定了PJSIP_H_OTHER,則必須在此參數中提供頭名稱。不然,該值必須設置爲空字符串(「」)。

token - 檢查的能力標記。例如,若是htype是PJSIP_H_ALLOW,則token指定方法名稱; 若是htype是PJSIP_H_SUPPORTED,則token指定擴展名稱,例如「100rel」。

13)void setUserDataToken user_data 

將應用程序特定數據附加到呼叫。

應用程序能夠經過調用getUserData()來檢查此數據。

參數

user_data - 要附加到任意數據。

14)Token  getUserData() const

獲取附加到呼叫的用戶數據,之前使用setUserData()設置。

返回

用戶數據。

15)pj_stun_nat_type getRemNatType()

獲取遠程端點的NAT類型。

這是PJSUA-LIB的一個專有功能,當在UaConfig中設置natTypeInSdp時,它將其NAT類型發送到SDP 。

只有在從遠程接收到SDP以後才能調用此功能,這意味着對於來電,只要來電包含SDP,就能夠在收到呼叫時當即調用此功能,對於撥出呼叫,此功能只能被調用SDP接收後(一般爲200 / OK響應INVITE)。做爲通常狀況,應用程序應該在onCallMediaState()回調以後或以後調用此函數。

返回

NAT類型。

參考Endpoint :: natGetType(),natTypeInSdp

16)void makeCallconst string&dst_uriconst CallOpParamprm 

撥出電話給指定的URI。

參數

dst_uri - 要放入To頭的URI(一般與目標URI相同)。

prm.opt - 可選呼叫設置。

prm.txOption - 可選標題等待添加到發出的INVITE請求。

17)void answerconst CallOpParamprm 

經過呼叫設置參數發送對INVITE請求的響應。

根據指定爲參數的狀態碼,此功能可能發送臨時響應,創建呼叫或終止呼叫。有關通話設置的注意事項:

  • 若是在此功能的後續呼叫中更改呼叫設置,則僅應用提供的第一個呼叫設置。所以,通常來講,應用程序在從用戶得到確認以前不會提供呼叫設置。
  • 若是SDP不能發送,則不提供呼叫設置,即:使用狀態碼183或2xx進行應答,將使用默認呼叫設置,檢查CallSetting的默認值。

參數

prm.opt - 可選呼叫設置。

prm.statusCode - 狀態碼,(100-699)。

prm.reason - 可選緣由短語。若是爲空,將使用默認文本。

prm.txOption - 要添加到傳出響應消息的標題等的可選列表。請注意,此消息數據將在此INVITE請求的全部下一個答案/響應中持續存在。

18)void hangupconst CallOpParamprm 

經過使用根據呼叫狀態適當的方法掛斷呼叫。

此功能與使用3xx-6xx響應(with answer()應答呼叫不一樣,由於該功能將掛斷呼叫,而無論呼叫的狀態和角色如何,而answer()僅適用於EARLY狀態下的來電。

參數

prm.statusCode - 咱們拒絕來電時能夠發送的可選狀態碼。若是值爲零,將發送「603 / Decline」。

prm.reason - 咱們拒絕來電時能夠選擇發送的緣由短語。若是爲空,將使用默認文本。

prm.txOption - 要添加到傳出請求/響應消息的標題等的可選列表。

19)void setHoldconst CallOpParamprm 

將指定的呼叫置於保持狀態。

這將發送re-INVITE與適當的SDP通知遙控器呼叫被擱置。請求自己的最終狀態將在onCallMediaState()回調中報告,該回調通知應用程序呼叫的媒體狀態已更改。

參數

prm.options - pjsua_call_flag常量的位掩碼。目前,只能使用標誌PJSUA_CALL_UPDATE_CONTACT。

prm.txOption - 與請求一塊兒發送的可選消息組件。

20)void reinviteconst CallOpParamprm 

發送re-INVITE。

請求自己的最終狀態將在onCallMediaState()回調中報告,該回調通知應用程序呼叫的媒體狀態已更改。

參數

prm.opt - 可選呼叫設置,若是爲空,當前呼叫設置將保持不變。

prm.opt.flag - pjsua_call_flag常量的位掩碼。在此指定PJSUA_CALL_UNHOLD將釋放呼叫保持。

prm.txOption - 與請求一塊兒發送的可選消息組件。

21)void updateconst CallOpParamprm 

發送UPDATE請求。

參數

prm.opt - 可選呼叫設置,若是爲空,當前呼叫設置將保持不變。

prm.txOption - 與請求一塊兒發送的可選消息組件。

22)void xferconst string&destconst CallOpParamprm 

啓動呼叫轉移到指定的地址。

該功能將發送REFER請求,指示遠程呼叫方向指定的目的地/目標發起新的INVITE會話。

若是應用程序有興趣監視傳輸請求的成功性和進度,它能夠實現onCallTransferStatus()回調,它將報告呼叫轉移請求的進度。

參數

dest - 要聯繫的新目標的URI。URI能夠是名稱地址或addr-spec格式。

prm.txOption - 與請求一塊兒發送的可選消息組件。

23)void xferReplacesconst Calldest_callconst CallOpParamprm 

發起參加呼叫轉移。

該功能將發送REFER請求,指示遠程呼叫方向destCall的URL發起新的INVITE會話。dest_call的一方應該用「REFER」接收方的新呼叫「替換」咱們的呼叫。

參數

dest_call - 呼叫被替換。

prm.options - 應用程序能夠指定PJSUA_XFER_NO_REQUIRE_REPLACES以阻止在REFER請求建立的傳出INVITE請求中包含「Require:replace」。

prm.txOption - 與請求一塊兒發送的可選消息組件。

24)void processRedirect( pjsip_redirect_op cmd 

接受或拒絕重定向響應。

應用程序在onCallRedirected()回調函數中通知PJSIP_REDIRECT_PENDING後,必須調用此函數,以通知調用是接受仍是拒絕重定向到當前目標。應用程序可使用onCallRedirected()回調中的PJSIP_REDIRECT_PENDING命令的組合,而且此功能在重定向呼叫以前請求用戶權限。

請注意,若是應用程序選擇拒絕或中止重定向(經過分別使用PJSIP_REDIRECT_REJECT或PJSIP_REDIRECT_STOP),則此函數返回以前將調用呼叫斷開回調。而且若是應用程序拒絕目標,若是還有另一個目標要嘗試,那麼onCallRedirected()回調也能夠在此函數返回以前被調用。

參數

cmd - 要應用於當前目標的重定向操做。該參數的語義與onCallRedirected()回調中的描述相似,不一樣之處在於PJSIP_REDIRECT_PENDING不被接受。

25)void dialDtmfconst string&digits 

使用RFC 2833有效載荷格式將DTMF數字發送到遠程。

參數

digits - 要發送的DTMF字符串數字。

26)void sendInstantMessageconst SendInstantMessageParamprm 

在INVITE會話中發送即時消息。

參數

prm.contentType - MIME類型。

prm.content - 消息內容。

prm.txOption - 要包括在傳出請求中的標題等的可選列表。txOption中的body描述符被忽略。

prm.userData - 可選的用戶數據,在調用IM回調時將返回。

27)void sendTypingIndicationconst SendTypingIndicationParamprm 

在INVITE會話中發送IM打字指示。

參數

prm.isTyping - 確實是爲了向遠方指示當地人當前正在鍵入IM。

prm.txOption - 要包括在傳出請求中的標題等的可選列表。

28)void sendRequestconst CallSendRequestParamprm 

發送任意請求與呼叫。

這對於發送INFO請求是有用的。請注意,應用程序不該該使用此函數發送將更改邀請會話狀態的請求,例如re-INVITE,UPDATE,PRACK和BYE。

參數

prm.method - 請求的SIP方法。

prm.txOption - 可選消息體和/或要包括在傳出請求中的頭部列表。

29)string dump( bool with_mediaconst string indent 

將呼叫和媒體統計信息轉儲爲字符串。

返回

調用轉儲和媒體統計字符串。

參數

with_media - 真的也包括媒體信息。

indent - 左縮進的空格。

30)INT vidGetStreamIdx() const

獲取通話中默認視頻流的媒體流索引。

一般這將只是檢索呼叫中第一個激活的視頻流的流索引。若是沒有活動,它將返回第一個不活動的視頻流。

返回

Media流索引爲-1,若是沒有視頻流存在於呼叫中。

31) bool vidStreamIsRunning( INT med_idx,pjmedia_dir DIR ) const

肯定指定呼叫的視頻流當前是否正在運行(即,

已被建立,啓動,不被暫停)。

返回

若是目前正在爲指定的方向運行流,則爲真。

參數

med_idx - 媒體流索引,或-1表示默認視頻媒體。

dir - 要檢查的方向。

32)void vidSetStream( pjsua_call_vid_strm_op opconst CallVidSetStreamParamparam 

爲指定的呼叫添加,刪除,修改和/或操縱視頻媒體流。

這可能會觸發從新啓動或更新以發送呼叫。

參數

op - 要執行的視頻流操做,可能的值是pjsua_call_vid_strm_op。

param - 視頻流操做的參數(請參閱CallVidSetStreamParam)。

33)StreamInfo getStreamInfo( unsigned med_idx ) const

獲取指定媒體索引的媒體流信息。

返回

流信息。

參數

med_idx - 媒體流索引。

34)StreamStat getStreamStat( unsigned med_idx ) const

獲取指定媒體索引的媒體流統計信息。

返回

流統計。

參數

med_idx - 媒體流索引。

35)MediaTransportInfo getMedTransportInfo( unsigned med_idx ) const

獲取指定媒體索引的媒體傳輸信息。

返回

傳輸信息。

參數

med_idx - 媒體流索引。

36)void processMediaUpdateOnCallMediaStateParamprm 

內部函數(由端點調用(當調用媒體狀態更改時處理更新以調用媒體。

37)void processStateChangeOnCallStateParamprm 

內部函數(由端點調用)處理調用狀態更改。

38)virtual  void onCallStateOnCallStateParamprm 

呼叫狀態發生變化時通知應用程序。

應用程序能夠經過調用getInfo()函數來查詢呼叫信息以獲取詳細調用狀態。

參數

prm - 回調參數

39)virtual  void onCallTsxStateOnCallTsxStateParamprm 

這是一個通用回調,當呼叫中的一個事務已經改變狀態時被調用。

例如,應用程序能夠實現此回調,以監視傳出請求的狀態,或者以最終響應回答未處理的傳入請求(如INFO)。

參數

prm - 回調參數

40)virtual  void onCallMediaStateOnCallMediaStateParamprm 

當通話中的媒體狀態發生變化時通知應用程序。

正常應用須要實現這種回調,例如將呼叫的媒體鏈接到聲音設備。當使用ICE時,也會調用此回調來報告ICE協商失敗。

參數

prm - 回調參數

41)virtual  void onCallSdpCreatedOnCallSdpCreatedParamprm 

當呼叫剛剛建立本地SDP(用於初始或隨後的SDP報價/答案)時通知應用程序。

應用程序能夠在遠程SDP發送和/或協商以前實施此回調來修改SDP,例如,以每一個賬戶/呼叫基礎編解碼器優先級應用或添加自定義/專有SDP屬性。

參數

prm - 回調參數

42)virtual  void onStreamCreatedOnStreamCreatedParamprm 

在建立媒體會話以前,註冊到會議橋以前通知應用程序。

若是已將媒體處理端口添加到流中,應用程序可能會返回不一樣的媒體端口。而後,這個媒體端口將被添加到會議橋。

參數

prm - 回調參數

43)virtual  void onStreamDestroyedOnStreamDestroyedParamprm 

Media會議從會議橋被註銷並被銷燬時通知應用程序。

參數

prm - 回調參數

44)virtual  void onDtmfDigitOnDtmfDigitParamprm 

傳入DTMF數字時通知應用程序。

參數

prm - 回調參數

45)virtual  void onCallTransferRequestOnCallTransferRequestParamprm 

通知申請被轉移(即

REFER被接收)。應用程序能夠經過設置代碼來決定接受/拒絕傳輸請求(默認爲202)。當此回調未實現時,默認行爲是接受轉移。

參數

prm - 回調參數

46)virtual  void onCallTransferStatusOnCallTransferStatusParamprm 

通知應用之前發送的呼叫轉移請求的狀態。

應用程序能夠監視呼叫轉移請求的狀態,例如決定是否終止現有呼叫。

參數

prm - 回調參數

47)virtual  void onCallReplaceRequestOnCallReplaceRequestParamprm 

經過替換標題通知有關INVITE的應用程序。

應用程序能夠經過設置非2xx代碼來拒絕該請求。

參數

prm - 回調參數

48)virtual  void onCallReplacedOnCallReplacedParamprm 

通知應用程序現有呼叫已被新呼叫替換。

當PJSUA-API使用Replaces標頭接收到INVITE請求時,會發生這種狀況。

調用此回調後,一般PJSUA-API將斷開此調用並創建新的調用newCallId

參數

prm - 回調參數

49)virtual  void onCallRxOfferOnCallRxOfferParamprm 

當通話接收到來自遙控器的新報價時通知應用程序(即

接收到使用SDP的re-INVITE / UPDATE)。應用程序能夠經過設置代碼來決定接受/拒絕報價(默認爲200)。若是報價被接受,應用程序能夠更新應答的通話設置。當此回調未實現時,默認行爲是接受使用當前通話設置的報價。

參數

prm - 回調參數

50)virtual  void onCallTxOfferOnCallTxOfferParamprm 

通話時通知應用程序接收到沒有SDP報價的INVITE。

應用程序能夠更新呼叫設置(例如:添加音頻/視頻),或啓用/禁用編解碼器,或者從回調內更新其餘媒體會話設置,可是,如標準(RFC3261第14.2節)所規定的那樣,它必須確保更新與須要對等體支持的現有媒體會話(編解碼器,傳輸或其餘參數)重疊,這是爲了不對等體拒絕該提議。

當不執行此回調時,默認行爲是使用當前活動媒體會話發送SDP報價(每一個媒體類型上都有全部啓用的編解碼器)。

參數

prm - 回調參數

51)virtual  void onInstantMessageOnInstantMessageParamprm 

通知輸入MESSAGE請求的應用程序。

參數

prm - 回調參數

52)virtual  void onInstantMessageStatusOnInstantMessageStatusParamprm 

通知應用程序關於傳出MESSAGE請求的傳送狀態。

參數

prm - 回調參數

53)virtual  void onTypingIndicationOnTypingIndicationParamprm 

通知應用程序打字指示。

參數

prm - 回調參數

54)virtual  pjsip_redirect_op onCallRedirectedOnCallRedirectedParamprm 

當呼叫即將從新發送INVITE請求到指定的目標時,調用此回調,遵循先前接收到的重定向響應。

應用程序能夠接受重定向到指定的目標,僅拒絕此目標,並使會話繼續嘗試列表中的下一個目標,若是此類目標存在,則徹底中止整個重定向過程,並致使會話斷開或延遲決定要求用戶確認。

此回調是可選的,默認行爲是不遵循重定向響應。

返回

爲目標執行的行動。將此參數設置爲如下值之一:

  • PJSIP_REDIRECT_ACCEPT:當即接受重定向。設置後,呼叫將當即從新發送INVITE請求給目標。
  • PJSIP_REDIRECT_ACCEPT_REPLACE:當即接受重定向,並將To標題替換爲當前目標。設置後,呼叫將當即從新發送INVITE請求給目標。
  • PJSIP_REDIRECT_REJECT:當即拒絕此目標。若是存在,則呼叫將繼續重試下一個目標,若是沒有更多目標嘗試,則斷開該呼叫。
  • PJSIP_REDIRECT_STOP:中止整個重定向過程,並當即斷開通話。在此回調返回後,onCallState()回調將被調用PJSIP_INV_STATE_DISCONNECTED狀態。
  • PJSIP_REDIRECT_PENDING:若是不能當即做出決定(例如要求用戶確認),則設置爲此值。應用程序必須調用processRedirect()來在獲取用戶決定以後接受或拒絕重定向。

參數

prm - 回調參數

55)virtual  void onCallMediaTransportStateOnCallMediaTransportStateParamprm 

當媒體傳輸狀態更改時,將調用此回調。

參數

prm - 回調參數

56)virtual  void onCallMediaEventOnCallMediaEventParamprm 

有關媒體事件(例如視頻通知)的通知。

這種回調極可能是從媒體線程調用的,因此應用程序不能在這個回調中執行大量的處理。特別是,應用程序不得在此回調中銷燬呼叫或媒體。若是應用程序須要執行更復雜的任務來處理事件,則應將任務發佈到另外一個線程。

參數

prm - 回調參數

57)virtual  void onCreateMediaTransportOnCreateMediaTransportParamprm 

應用程序可使用此回調來實現呼叫的自定義媒體傳輸適配器,或者使用徹底全新的媒體傳輸替換媒體傳輸。

建立新呼叫時調用此回調。該庫已經爲該調用建立了一個媒體傳輸,而且做爲該回調的mediaTp參數提供。回調可能會隨媒體傳輸的實例而改變,以便呼叫使用。

參數

prm - 回調參數

58)virtual  void onCreateMediaTransportSrtpOnCreateMediaTransportSrtpParamprm 

當建立SRTP媒體傳輸時,將調用此回調。

應用程序能夠修改SRTP設置srtpOpt來指定要使用的密碼和密鑰。請注意,應用程序不該修改字段pjmedia_srtp_setting.close_member_tp,而且只能修改初始INVITE 的字段pjmedia_srtp_setting.use

參數

prm - 回調參數

公共靜態函數

59)static Call * lookup( int call_id 

獲取指定呼叫ID 的呼叫類。

返回

呼叫實例或NULL,若是沒有找到。

參數

call_id - 要查找的呼叫ID

60)私有變量

(18)Account &acc
(19)pjsua_call_id id
(20)Token  userData
(21)std :: vector < Media *> medias

12.4.2 struct CallInfo

#include <call.hpp>

來電信息。

應用程序能夠經過調用Call :: getInfo ()來查詢呼叫信息。

公有函數

61)void fromPjconst pjsua_call_info&pci 

從pjsip轉換

公有變量

62)pjsua_call_id id

呼叫識別。

63)pjsip_role_e role

初始調用角色(UAC == caller)

64)pjsua_acc_id accId

此呼叫所屬的賬戶ID。

65) string localUri

本地URI。

66) string localContact

本地聯繫人。

67) string remoteUri

遠程URI。

68) string remoteContact

遠程聯繫

69) string callIdString

Dialog Call-ID字符串。

70)CallSetting setting

通話設置。

71)pjsip_inv_state state

呼叫狀態。

72) string stateText

描述狀態的文字。

73)pjsip_status_code lastStatusCode

聽到最後一個狀態碼,能夠做爲緣由碼使用。

74) string lastReason

描述最後狀態的緣由。

75)CallMediaInfoVector media

活動媒體信息數組。

76)CallMediaInfoVector provMedia

臨時媒體信息數組。

這包含配置狀態下的媒體信息,即媒體會話正在建立/更新(SDP提供/回答正在進行中)。

77)timeval  connectDuration

最新呼叫鏈接持續時間(呼叫未創建時爲零)

78)timeval  totalDuration

總通話時間,包括設置時間。

79) bool remOfferer

標記若是遠程是SDP提供者。

80)unsigned remAudioCount

遙控器提供的音頻流數量。

81)unsigned remVideoCount

遙控器提供的視頻流數量。

12.4.3 struct CallMediaInfo

#include <call.hpp>

呼叫媒體信息。

公有函數

82)CallMediaInfo()

默認構造函數。

83)void fromPjconst pjsua_call_media_info&prm 

從pjsip轉換

公有變量

84)unsigned index

SDP媒體指數

85)pjmedia_type type

媒體類型

86)pjmedia_dir dir

媒體方向。

87)pjsua_call_media_status status

呼叫媒體狀態。

88)INT audioConfSlot

呼叫的會議端口號。

僅當媒體類型爲音頻時纔有效。

89)pjsua_vid_win_id videoIncomingWindowId

傳入視頻的窗口ID(若是有)或PJSUA_INVALID_ID。

僅當媒體類型爲視頻時纔有效。

90)VideoWindow  videoWindow

用於傳入視頻的視頻窗口實例。

僅當videoIncomingWindowId不是PJSUA_INVALID_ID且媒體類型是視頻時纔有效。

91)pjmedia_vid_dev_index videoCapDev

用於傳出傳輸的視頻捕獲設備(若是有的話)或PJMEDIA_VID_INVALID_DEV。

僅當媒體類型爲視頻時纔有效。

12.4.4 struct CallOpParam

#include <call.hpp>

此結構包含Call :: answer()Call :: hangup()Call :: reinvite()Call :: update()Call :: xfer()Call :: xferReplaces()Call :: setHold()

公有函數

92)CallOpParam( bool useDefaultCallSetting = false )

默認構造函數用零/空值初始化。

將useDefaultCallSetting設置爲true將使用默認呼叫設置值初始化opt。

公有變量

93)CallSetting opt

通話設置。

94)pjsip_status_code statusCode

狀態碼。

95) string reason

緣由短語

96)unsigned options

選項。

97)SipTxOption txOption

要添加到傳出響應消息的標題列表等。

請注意,此消息數據將在此INVITE請求的全部下一個答案/響應中持續存在。

12.4.5 struct CallSendRequestParam

#include <call.hpp>

此結構包含Call :: sendRequest()的參數,

公有函數

98)CallSendRequestParam()

默認構造函數用零/空值初始化。

公有變量

99) string method

請求的SIP方法。

100)SipTxOption txOption

郵件正文和/或標題列表等要包含在傳出請求中。

12.4.6 struct CallSetting

#include <call.hpp>

通話設置。

公有函數

101)CallSetting( pj_bool_t useDefaultValues = false )

默認構造函數用空或默認值初始化。

102) bool isEmpty() const

檢查設置是否設置爲空值。

返回

若是設置爲空,則爲真。

void fromPjconst pjsua_call_setting&prm 

從pjsip轉換

103)pjsua_call_setting toPj() const

轉換爲pjsip。

公有變量

104)unsigned flag

pjsua_call_flag常量的位掩碼。

默認值:PJSUA_CALL_INCLUDE_DISABLED_MEDIA

105)unsigned reqKeyframeMethod

此標誌控制在呼叫中容許請求關鍵幀的方法。

值是pjsua_vid_req_keyframe_method的位掩碼。

默認值:PJSUA_VID_REQ_KEYFRAME_SIP_INFO | PJSUA_VID_REQ_KEYFRAME_RTCP_PLI

106)unsigned audioCount

此呼叫的同時有效音頻流數量。

將其設置爲零將禁用此呼叫中的音頻。

默認值:1

107)unsigned videoCount

此呼叫同時處於活動視頻流的數量。

將此設置爲零將禁用此呼叫中的視頻。

默認值:1(若是啓用了視頻功能,不然爲零)

12.4.7 struct CallVidSetStreamParam

#include <call.hpp>

此結構包含Call :: vidSetStream()的參數,

公有函數

108)CallVidSetStreamParam()

默認構造函數。

公有變量

109)INT medIdx

指定媒體流索引。

這能夠設置爲-1以表示呼叫中的默認視頻流,即若是沒有活動視頻流是第一個活動視頻流或任何第一個視頻流。

除了PJSUA_CALL_VID_STRM_ADD外,此字段對全部視頻流操做都有效。

默認值:-1(第一個活動視頻流,或任何第一個視頻流,若是沒有活動)

110)pjmedia_dir dir

指定媒體流方向。

此字段對如下視頻流操做有效:PJSUA_CALL_VID_STRM_ADD和PJSUA_CALL_VID_STRM_CHANGE_DIR。

默認值:PJMEDIA_DIR_ENCODING_DECODING

111)pjmedia_vid_dev_index capDev

指定視頻捕獲設備ID。

這能夠設置爲PJMEDIA_VID_DEFAULT_CAPTURE_DEV以指定賬戶中配置的默認捕獲設備。

此字段對如下視頻流操做有效:PJSUA_CALL_VID_STRM_ADD和PJSUA_CALL_VID_STRM_CHANGE_CAP_DEV。

默認值:PJMEDIA_VID_DEFAULT_CAPTURE_DEV。

12.4.8 struct JbufState

#include <call.hpp>

此結構描述抖動緩衝狀態。

公有函數

112)void fromPjconst pjmedia_jb_state&prm 

從pjsip轉換

公有變量

113)unsigned frameSize

單個幀大小,以字節爲單位。

114)unsigned minPrefetch

最小容許預取,以frms爲單位。

115)unsigned maxPrefetch

最大容許預取,以frms爲單位。

116)unsigned burst

當前突發級別,以幀爲單位。

117)unsigned prefetch

當前預取值,以幀爲單位。

118)unsigned size

當前緩衝區大小,以幀爲單位。

119)unsigned avgDelayMsec

平均延遲(以ms爲單位)

120)unsigned minDelayMsec

最小延遲(以ms爲單位)

121)unsigned maxDelayMsec

最大延遲(以ms爲單位)

122)unsigned devDelayMsec

延遲的標準誤差(ms)。

123)unsigned avgBurst

平均突發,以幀爲單位。

124)unsigned lost

丟幀數

125)unsigned discard

丟棄幀數。

126)unsigned empty

GET事件上的空數。

12.4.9 struct LossType

#include <call.hpp>

檢測到的損失類型。

公有變量

127)unsigned burst

檢測到突發/順序數據包丟失。

128)unsigned random

檢測到隨機數據包丟失。

12.4.10 struct MathStat

#include <call.hpp>

此結構描述統計狀態。

公有函數

129)MathStat()

默認構造函數。

130)void fromPjconst pj_math_stat&prm 

從pjsip轉換

公有變量

131)INT n

樣品數量

132)INT max

最大值

133)INT min

最小值

134)INT last

最後的價值

135)INT mean

意思

12.4.11 struct MediaEvent

#include <call.hpp>

此結構描述媒體事件。

它對應於pjmedia_event結構。

公有函數

136)void fromPjconst pjmedia_event&ev 

從pjsip轉換

公有變量

137)pjmedia_event_type type

事件類型。

138)MediaEventData data

關於事件的附加數據/參數。

數據類型將特定於正在報告的事件類型。

139)void * pjMediaEvent

指向原始的pjmedia_event。

只有當結構從PJSIP的pjmedia_event轉換時纔有效。

12.4.12 union MediaEventData

#include <call.hpp>

媒體事件數據。

公有變量

140)MediaFmtChangedEvent fmtChanged

媒體格式更改事件數據。

141)GenericData ptr

指向存儲到用戶事件數據的指針,若是它在此結構以外。

12.4.13 struct MediaFmtChangedEvent

#include <call.hpp>

此結構描述媒體格式更改事件。

公有變量

142)unsigned newWidth

新的寬度。

143)unsigned newHeight

新的高度。

12.4.14 struct MediaTransportInfo

#include <call.hpp>

這種結構描述媒體傳輸信息。

它對應於pjmedia_transport_info結構。

公有函數

144)void fromPjconst pjmedia_transport_info&info 

從pjsip轉換

公有變量

145)SocketAddress  srcRtpName

RTP源自的遠程地址。

146)SocketAddress  srcRtcpName

RTCP起源的遠程地址。

12.4.15 struct OnCallMediaEventParam

#include <call.hpp>

此結構包含Call :: onCallMediaEvent()回調的參數。

公有變量

147)unsigned medIdx

Media流索引。

148)MediaEvent ev

Media事件。

12.4.16 struct OnCallMediaStateParam

#include <call.hpp>

此結構包含Call :: onCallMediaState()回調的參數。

12.4.17 struct OnCallMediaTransportStateParam

#include <call.hpp>

此結構包含Call :: onCallMediaTransportState()回調的參數。

公有變量

149)unsigned medIdx

Media指數

150)pjsua_med_tp_st state

Media傳輸情況。

151)pj_status_t status

與媒體傳輸狀態相關的最後一個錯誤代碼。

152)INT sipErrorCode

可選的SIP錯誤代碼。

12.4.18 struct OnCallRedirectedParam

#include <call.hpp>

此結構包含Call :: onCallRedirected()回調的參數。

公有變量

153) string targetUri

目前被試的目標。

SipEvent e

致使此回調的事件被調用。

若是從Call :: processRedirect()上下文中調用此回調,則多是收到3xx響應或接收到發送到後續目標的INVITE的4xx / 5xx響應,或空(e.type == PJSIP_EVENT_UNKNOWN)。

12.4.19 struct OnCallReplacedParam

#include <call.hpp>

此結構包含Call :: onCallReplaced()回調的參數。

公有變量

154)pjsua_call_id newCallId

新的通話ID。

12.4.20 struct OnCallReplaceRequestParam

#include <call.hpp>

此結構包含Call :: onCallReplaceRequest()回調的參數。

公有變量

155)SipRxData rdata

來電INVITE請求來替換呼叫。

156)pjsip_status_code statusCode

應用程序要設置的狀態代碼。

應用程序只能返回最終狀態(200-699)

157) string reason

可選狀態文本由應用程序設置。

158)CallSetting opt

當前的呼叫設置,應用程序能夠更新此更改設置。

12.4.21 struct OnCallRxOfferParam

#include <call.hpp>

此結構包含Call :: onCallRxOffer()回調的參數。

公有變量

159)SdpSession offer

收到的新的Offer。

160)pjsip_status_code statusCode

要回復Offer的狀態代碼。

在輸入時,它包含狀態代碼200.目前,有效值只有200和488。

161)CallSetting opt

當前的通話設置,應用程序能夠更新此設置以應答報價。

12.4.22 struct OnCallSdpCreatedParam

#include <call.hpp>

此結構包含Call :: onCallSdpCreated()回調的參數。

公有變量

162)SdpSession sdp

SDP剛剛建立。

163)SdpSession remSdp

若是本地是SDP提供者,則遠程SDP將爲空。

12.4.23 struct OnCallStateParam

#include <call.hpp>

此結構包含Call :: onCallState()回調的參數。

公有變量

164)SipEvent e

致使呼叫狀態發生變化的事件。

12.4.24 struct OnCallTransferRequestParam

#include <call.hpp>

此結構包含Call :: onCallTransferRequest()回調的參數。

公有變量

165) string dstUri

呼叫轉移到的目的地。

166)pjsip_status_code statusCode

要爲呼叫轉移請求返回的狀態碼。

在輸入時,它包含狀態碼200。

167)CallSetting opt

當前的呼叫設置,應用程序能夠更新該傳輸呼叫的設置。

12.4.25 struct OnCallTransferStatusParam

#include <call.hpp>

此結構包含Call :: onCallTransferStatus()回調的參數。

公有變量

168)pjsip_status_code statusCode

轉移請求的狀態進度。

169) string reason

狀態進度緣由

170) bool finalNotify

若是是,則不會再報告進一步的通知。

此回調中指定的statusCode是最終狀態。

171) bool cont

最初將設置爲true,若是再也不須要接收進一步的通知(例如,掛斷電話後),應用程序能夠將其設置爲false。

12.4.26 struct OnCallTsxStateParam

#include <call.hpp>

此結構包含Call :: onCallTsxState()回調的參數。

公有變量

172)SipEvent e

致使狀態變化的事務事件。

12.4.27 struct OnCallTxOfferParam

#include <call.hpp>

此結構包含Call :: onCallTxOffer()回調的參數。

公有變量

173)CallSetting opt

當前的通話設置,應用程序能夠更新此設置以生成優惠。

請注意,應用程序應保留任何活動的媒體,以免對等體拒絕該提議的須要。

12.4.28 struct OnCreateMediaTransportParam

#include <call.hpp>

此結構包含Call :: onCreateMediaTransport()回調的參數。

公有變量

174)unsigned mediaIdx

SDP中的媒體索引將用於此媒體傳輸。

175)MediaTransport mediaTp

不然將由呼叫使用的媒體傳輸具備此回調未實現。

應用程序能夠將其更改成其自身的媒體傳輸實例,以供呼叫使用。

unsigned flags

來自pjsua_create_media_transport_flag的位掩碼。

12.4.29 struct OnCreateMediaTransportSrtpParam

#include <call.hpp>

此結構包含Call :: onCreateMediaTransportSrtp()回調的參數。

公有變量

176)unsigned mediaIdx

將使用SRTP媒體傳輸的SDP中的媒體索引。

177)pjmedia_srtp_use srtpUse

指定是否應使用安全媒體傳輸。

應用程序只能對初始INVITE進行修改。有效值爲PJMEDIA_SRTP_DISABLED,PJMEDIA_SRTP_OPTIONAL和PJMEDIA_SRTP_MANDATORY。

178)vector< SrtpCrypto > cryptos

應用程序能夠對其進行修改,以指定要使用的密碼和密鑰。

12.4.30 struct OnDtmfDigitParam

#include <call.hpp>

此結構包含Call :: onDtmfDigit()回調的參數。

公有變量

179) string digit

DTMF ASCII數字。

12.4.31 struct OnStreamCreatedParam

#include <call.hpp>

此結構包含Call :: onStreamCreated()回調的參數。

公有變量

180)MediaStream stream

媒體流。

181)unsigned streamIdx

Media會話中的流索引。

182)MediaPort  pPort

在輸入時,它指定流的媒體端口。

應用程序能夠修改該指針以指向要註冊到會議橋的不一樣媒體端口。

12.4.32 struct OnStreamDestroyedParam

#include <call.hpp>

此結構包含Call :: onStreamDestroyed()回調的參數。

公有變量

183)MediaStream stream

媒體流。

184)unsigned streamIdx

Media會話中的流索引。

12.4.33 struct RtcpSdes

#include <call.hpp>

RTCP SDES結構。

公有函數

185)void fromPjconst pjmedia_rtcp_sdes&prm 

從pjsip轉換

公有變量

186) string cname

RTCP SDES類型CNAME。

187) string name

RTCP SDES類型NAME。

188) string email

RTCP SDES類型EMAIL。

189) string phone

RTCP SDES類型電話。

190) string loc

RTCP SDES類型LOC。

191) string tool

RTCP SDES型工具。

192) string note

RTCP SDES類型注意。

12.4.34 struct RtcpStat

#include <call.hpp>

雙向RTP流統計。

公有函數

193)void fromPjconst pjmedia_rtcp_stat&prm 

從pjsip轉換

公有變量

194)timeval  start

建立會話的時間

195)RtcpStreamStat txStat

編碼器流統計。

196)RtcpStreamStat rxStat

解碼器流統計。

197)MathStat rttUsec

往返延遲統計

198)pj_uint32_t rtpTxLastTs

最後TX RTP時間戳。

199)pj_uint16_t rtpTxLastSeq

最後TX RTP序列。

200)MathStat rxIpdvUsec

接收方向IP分組延遲變化統計。

僅當PJMEDIA_RTCP_STAT_HAS_IPDV設置爲非零時才使用。

201)MathStat rxRawJitterUsec

接收方向原始抖動統計。

僅當PJMEDIA_RTCP_STAT_HAS_RAW_JITTER設置爲非零時才使用。

202)RtcpSdes peerSdes

同行SDES。

12.4.35 struct RtcpStreamStat

#include <call.hpp>

單向RTP流統計。

公有函數

203)void fromPjconst pjmedia_rtcp_stream_stat&prm 

從pjsip轉換

公有變量

204)timeval  update

上次更新的時間

205)unsigned updateCount

更新數(計算平均)

206)unsigned pkt

總數量。

207)unsigned bytes

總負載/字節數。

208)unsigned discard

丟棄數據包總數。

209)unsigned loss

丟包總數。

210)unsigned reorder

總數不合格的數據包。

211)unsigned dup

重複數據包總數。

212)MathStat lossPeriodUsec

損失期統計。

213)LossType lossType

檢測到的損失類型。

214)MathStat jitterUsec

抖動統計。

12.4.36 struct SdpSession

#include <call.hpp>

該結構描述了SDP會話描述。

它對應於pjmedia_sdp_session結構。

公有函數

215)void fromPjconst pjmedia_sdp_session&sdp 

從pjsip轉換

公有變量

216) string wholeSdp

整個SDP做爲一個字符串。

217)void * pjSdpSession

指向其原始的pjmedia_sdp_session。

只有當結構從PJSIP的pjmedia_sdp_session轉換時纔有效。

12.4.37 struct SrtpCrypto

#include <call.hpp>

SRTP加密

公有變量

218) string key

可選鍵

若是爲空,隨機密鑰將被自動生成。

219) string name

加密名稱。

220)unsigned flags

標誌,位號從#pjmedia_srtp_crypto_option。

12.4.38 struct StreamInfo

#include <call.hpp>

媒體流信息。

公有函數

221)void fromPjconst pjsua_stream_info&info 

從pjsip轉換

公有變量

222)pjmedia_type type

此流的媒體類型。

223)pjmedia_tp_proto proto

傳輸協議(RTP / AVP等)

224)pjmedia_dir dir

媒體方向。

225)SocketAddress  remoteRtpAddress

遠程RTP地址。

226)SocketAddress  remoteRtcpAddress

可選遠程RTCP地址。

227)unsigned txPt

傳出編解碼器淨荷類型。

228)unsigned rxPt

傳入編解碼器有效載荷類型。

229) string codecName

編解碼器名稱。

230)unsigned codecClockRate

編解碼器時鐘速率。

231)CodecParam codecParam

可選編解碼器參數

12.4.39 struct StreamStat

#include <call.hpp>

媒體流統計。

公有函數

232)void fromPjconst pjsua_stream_stat&prm 

從pjsip轉換

公有變量

233)RtcpStat rtcp

RTCP統計。

234)JbufState jbuf

抖動緩衝區統計。

12.5 presence.hpp 

PJSUA2存在操做。

 namespace pj

PJSUA2 API在pj命名空間內。

Typedefs

1)typedef std :: vector < Buddy *> BuddyVector

好友數組

12.5.1 class Buddy

#include <presence.hpp>

Buddy

公有函數

2)Buddy()

構造函數

3)virtual  ~Buddy()

析構器

請注意,若是Buddy實例被刪除,它也將刪除PJSUA-LIB中的相應夥伴。

4)void createAccountaccconst BuddyConfigcfg 

建立好友並將好友註冊給PJSUA-LIB。

參數

acc - 這個好友的賬號。

cfg - 好友配置

5) bool isValid() const

檢查這個好友是否有效。

返回

若是是的話。

1)BuddyInfo getInfo() const

獲取詳細的好友信息。

返回

好友信息

2)void subscribePresence( bool subscribe 

啓用/禁用好友的狀態監控。

一旦好友的存在被訂閱,應用程序將被通知經過onBuddyState()回調改變好友的狀態。

參數

subscribe - 指定true以激活狀態訂閱。

3)void updatePresence( void )

更新夥伴的在線信息。

雖然lib會按期刷新全部好友的存在訂閱,但某些應用程序可能會當即刷新好友的呈現訂閱,在這種狀況下,可使用此功能來完成此操做。

請注意,只有啓用了好友的狀態監視,才能啓動好友的呈現訂閱。請參閱subscribePresence()瞭解更多信息。此外,若是好友的狀態訂閱已經處於活動狀態,則此功能將不會執行任何操做。

一旦對於好友成功激活了呈現訂閱,應用程序將在onBuddyState()回調中通知有關好友的狀態。

4)void sendInstantMessageconst SendInstantMessageParamprm 

發送即時消息外部對話框,使用該夥伴指定的賬戶進行路由集和身份驗證。

參數

prm - 發送即時消息參數。

5)void sendTypingIndication(const SendTypingIndicationParamprm 

在對話框外發送打字指示。

參數

prm - 發送即時消息參數。

6)virtual  void onBuddyState()

當好友狀態發生變化時通知應用程序。

應用程序可能會查詢好友信息以獲取詳細信息。

7)私有變量

(1)pjsua_buddy_id id

好友 ID。

(2)Account  * acc

賬戶

12.5.2 struct BuddyConfig

#include <presence.hpp>

Buddy :: create()將好友添加到好友列表時,此結構將描述好友配置。

pj :: PersistentObject繼承

公有函數

8)virtual  void readObjectconst ContainerNodenode 

從容器節點讀取此對象。

參數

node - 容器從中讀取值。

9)virtual   void writeObjectContainerNodenode) const

將此對象寫入容器節點。

參數

node - 容器將值寫入。

公有變量

10) string uri

好友網址或名稱地址。

11) bool subscribe

指定是否當即啓動呈現訂閱。

12.5.3 struct BuddyInfo

#include <presence.hpp>

此結構描述好友信息,能夠經過Buddy :: getInfo ()檢索。

公有函數

12)void fromPjconst pjsua_buddy_info&pbi 

從pjsip結構導入。

公有變量

13) string uri

夥伴的完整URI,如配置中所指定。

14) string contact

Buddy的聯繫人,只有在向好友創建了存在訂閱時纔可用。

15) bool presMonitorEnabled

標記表示咱們應該監視此好友的存在信息(一般是,除非明確禁用)。

16)pjsip_evsub_state subState

若是presMonitorEnabled爲true,則指定狀態訂閱的最後狀態。

若是存在訂閱會話當前處於活動狀態,則該值將爲PJSIP_EVSUB_STATE_ACTIVE。若是存在訂閱請求被拒絕,則該值將爲PJSIP_EVSUB_STATE_TERMINATED,而且將在subTermReason中指定終止緣由。

17) string subStateName

訂閱狀態的字符串表示。

18)pjsip_status_code subTermCode

指定最後一次存在訂閱終止代碼。

這將返回SUBSCRIBE請求的最後一個狀態。若是服務器使用NOTIFY終止訂閱,則此值將設置爲200,並在subTermReason字段中給出訂閱終止緣由。

19) string subTermReason

指定最後一次存在訂閱終止緣由。

若是如今訂閱當前處於活動狀態,則該值將爲空。

20)PresenceStatus presStatus

存在狀態

12.5.4 struct PresenceStatus

#include <presence.hpp>

這描述了狀態。

公有函數

21)PresenceStatus()

構造函數

公有變量

22)pjsua_buddy_status status

Buddy的在線狀態。

23) string statusText

文字描述好友的在線狀態。

24)pjrpid_activity activity

活動類型

25) string note

描述人物/元素的可選文本。

26) string rpidId

可選RPID ID字符串。

12.6 persistent.hpp 

PJSUA2持久服務。

 namespace pj

PJSUA2 API在pj命名空間內。

12.6.1 struct container_node_internal_data

#include <persistent.hpp>

ContainerNode的內部數據。

有關更多信息,請參閱ContainerNode實現說明。

公有變量

1)void * doc

文件。

2)void * data1

內部數據1。

3)void * data2

內部數據2。

12.6.2 class ContainerNode

#include <persistent.hpp>

容器節點是用於存儲其餘數據元素的佔位符,能夠是布爾值,數字,字符串,字符串數組或另外一個容器。

容器中的每一個數據基本上都是名稱/值對,其類型與其內部相關聯,以即可以以正確的類型讀取寫入的數據。數據被連續讀取和寫入,讀取順序必須與寫入順序相同。

應用程序能夠經過使用各類讀取方法從中讀取數據,並使用各類寫入方式將數據寫入數據。或者,使用下面提供的宏讀取和寫入數據可能會更方便,由於這些宏會自動設置名稱:

  • NODE_READ_BOOL(節點,項目)
  • NODE_READ_UNSIGNED(節點,項目)
  • NODE_READ_INT(節點,項目)
  • NODE_READ_FLOAT(節點,項目)
  • NODE_READ_NUM_T(節點,類型,項目)
  • NODE_READ_STRING(節點,項目)
  • NODE_READ_STRINGV(節點,項目)
  • NODE_READ_OBJ(節點,項目)
  • NODE_WRITE_BOOL(節點,項目)
  • NODE_WRITE_UNSIGNED(節點,項目)
  • NODE_WRITE_INT(節點,項目)
  • NODE_WRITE_FLOAT(節點,項目)
  • NODE_WRITE_NUM_T(節點,類型,項目)
  • NODE_WRITE_STRING(節點,項目)
  • NODE_WRITE_STRINGV(節點,項目)
  • NODE_WRITE_OBJ(節點,項目)

實施說明:

ContainerNode類的子類,能夠,但不是在一般的C ++的方式。使用一般的C ++繼承,一些方法將被作成純虛擬,而且必須由實際的類實現。然而,這樣作將須要ContainerNode類的動態實例化,這意味着咱們將須要傳遞類做爲指針,例如做爲readContainer()writeNewContainer()方法的返回值。那麼咱們將須要肯定誰須要或如何刪除這些對象,或使用共享指針機制,其中每個被認爲太不方便或複雜的目的。

所以,咱們使用C風格的「繼承」,其中方法在container_node_op中聲明,並在container_node_internal_data結構中聲明數據。的實現ContainerNode類須要設置這些成員值是有意義的自己。container_node_op中的方法包含指向實際執行操做的指針,這將根據文檔的格式具體化。此ContainerNode類中的方法只是調用container_node_op結構中的實現的簡單包裝器。

公有函數

4) bool hasUnread() const

肯定是否有未讀元素。

若是是,那麼應用程序可使用一個readXxx()函數來讀取它。

5)string unreadName() const

獲取下一個未讀元素的名稱。

6)INT readIntconst  string &name   = 「」 ) const

從文檔讀取整數值並返回值。

若是當前的元素不是數字,這將拋出錯誤。讀取位置將提早到下一個元素。

返回

價值。

參數

name - 若是指定了,那麼該函數將檢查下一個元素的名稱是否與指定的名稱匹配,若是不匹配則拋出錯誤

7)float readNumberconst  string &name   = 「」 ) const

從文檔讀取數值並返回值。

若是當前的元素不是數字,這將拋出錯誤。讀取位置將提早到下一個元素。

返回

價值。

參數

name - 若是指定了,那麼該函數將檢查下一個元素的名稱是否與指定的名稱匹配,若是不匹配則拋出錯誤

8) bool readBoolconst  string &name   = 「」 ) const

從容器讀取一個布爾值並返回值。

若是當前元素不是布爾值,這將拋出錯誤。讀取位置將提早到下一個元素。

返回

價值。

參數

name - 若是指定了,那麼該函數將檢查下一個元素的名稱是否與指定的名稱匹配,若是不匹配則拋出錯誤

9)string readStringconst  string &name   = 「」 ) const

從容器讀取字符串值並返回值。

若是當前元素不是字符串,則會拋出錯誤。讀取位置將提早到下一個元素。

返回

價值。

參數

name - 若是指定了,那麼該函數將檢查下一個元素的名稱是否與指定的名稱匹配,若是不匹配則拋出錯誤

10)StringVector readStringVectorconst  string &name   = 「」 ) const

從容器讀取字符串數組。

若是當前元素不是字符串數組,這將拋出錯誤。讀取位置將提早到下一個元素。

返回

價值。

參數

name - 若是指定了,那麼該函數將檢查下一個元素的名稱是否與指定的名稱匹配,若是不匹配則拋出錯誤

11) void readObject(PersistentObject&OBJ ) const

從容器讀取指定的對象。

這等於調用PersistentObject.readObject(ContainerNode);

參數

obj - 要閱讀的對象

12)ContainerNode readContainerconst  string &name   = 「」 ) const

從容器中讀取容器。

若是當前元素不是容器,這將拋出錯誤。讀取位置將提早到下一個元素。

返回

容器對象。

參數

name - 若是指定了,那麼該函數將檢查下一個元素的名稱是否與指定的名稱匹配,若是不匹配則拋出錯誤

13)ContainerNode readArrayconst  string &name   = 「」 ) const

從容器讀取數組容器。

若是當前元素不是數組,這將拋出錯誤。讀取位置將提早到下一個元素。

返回

容器對象。

參數

name - 若是指定了,那麼該函數將檢查下一個元素的名稱是否與指定的名稱匹配,若是不匹配則拋出錯誤

14)void writeNumberconst string&name,float num 

向容器寫入一個數字值。

參數

name - 容器中值的名稱。

num - 要寫的價值

15)void writeIntconst string&name,int num 

向容器寫入一個數字值。

參數

name - 容器中值的名稱。

num - 要寫的價值

16)void writeBoolconst string&name,bool value 

將一個布爾值寫入容器。

參數

name - 容器中值的名稱。

value - 要寫的價值

17)void writeStringconst string&nameconst string&value 

將一個字符串值寫入容器。

參數

name - 容器中值的名稱。

value - 要寫的價值

18)void writeStringVectorconst string&nameconst StringVectorarr 

將字符串vector寫入容器。

參數

name - 容器中值的名稱。

arr - 要寫的vector

19)void writeObjectconst PersistentObjectobj 

將一個對象寫入容器。

這等於調用PersistentObject.writeObject(ContainerNode);

參數

obj - 要寫的對象

20)ContainerNode writeNewContainerconst string&name 

建立並寫入一個空的Object節點,該節點能夠用做後續寫入操做的父項。

返回

一個子容器。

參數

name - 容器中新容器的名稱。

21)ContainerNode writeNewArrayconst string&name 

建立並寫入一個空數組節點,能夠將其用做後續寫入操做的父節點。

返回

一個子容器。

參數

name - 數組的名稱。

公有變量

22)container_node_op * op

方法表。

23)container_node_internal_data data

內部數據

12.6.3 class PersistentDocument

#include <persistent.hpp>

這是持久性文檔的抽象基類。

經過從字符串或文件加載,或經過在向其寫入數據時手動構建文檔來建立文檔。而後,文檔能夠保存到字符串或文件。文檔包含一個根ContainerID,其中全部數據都存儲在其下。

文件被順序讀取和寫入,所以閱讀順序必須與寫做順序相同。該PersistentDocument類提供的API來讀取和寫入到根節點,但對於更靈活的業務應用程序可使用ContainerNode方法來代替。事實上,PersistentDocument中的讀寫API 只是一個調用ContainerNode中相關方法的簡寫。做爲提示,一般應用程序僅使用此處聲明的readObject()writeObject()方法來讀/寫頂級對象,並使用ContainerNode文檔中說明的宏來讀取/寫入更詳細的數據。

pj :: JsonDocument進行子類化

公有函數

24)virtual  ~PersistentDocument()

virtual 析構函數

25)virtual  void loadFileconst string&filename ) = 

從文件加載此文檔。

參數

filename - 文件名。

26)virtual  void loadStringconst string&input ) = 

從字符串加載此文檔。

參數

input - 字符串。

27)virtual  void saveFileconst string&filename ) = 

將此文檔寫入文件。

參數

filename - 文件名。

virtual  string saveString() = 

將此文檔寫入字符串。

返回

字符串文檔。

28)virtual  ContainerNodegetRootContainer() const = 0 

獲取此文檔的根容器節點。

返回

根節點。

29) bool hasUnread() const

肯定是否有未讀元素。

若是是,那麼應用程序可使用一個readXxx()函數來讀取它。

返回

若是有的話。

30)string unreadName() const

獲取下一個未讀元素的名稱。

若是沒有更多的元素要讀取,它將拋出錯誤

返回

下一個元素的名稱。

31)INT readIntconst  string &name   = 「」 ) const

從文檔讀取整數值並返回值。

若是當前的元素不是數字,這將拋出錯誤。讀取位置將提早到下一個元素。

返回

價值。

參數

name - 若是指定了,那麼該函數將檢查下一個元素的名稱是否與指定的名稱匹配,若是不匹配則拋出錯誤

32)float readNumberconst  string &name   = 「」 ) const

從文檔讀取一個浮點值並返回值。

若是當前的元素不是數字,這將拋出錯誤。讀取位置將提早到下一個元素。

返回

價值。

參數

name - 若是指定了,那麼該函數將檢查下一個元素的名稱是否與指定的名稱匹配,若是不匹配則拋出錯誤

33) bool readBoolconst  string &name   = 「」 ) const

從容器讀取一個布爾值並返回值。

若是當前元素不是布爾值,這將拋出錯誤。讀取位置將提早到下一個元素。

返回

價值。

參數

name - 若是指定了,那麼該函數將檢查下一個元素的名稱是否與指定的名稱匹配,若是不匹配則拋出錯誤

34)string readStringconst  string &name   = 「」 ) const

從容器讀取字符串值並返回值。

若是當前元素不是字符串,則會拋出錯誤。讀取位置將提早到下一個元素。

返回

價值。

參數

name - 若是指定了,那麼該函數將檢查下一個元素的名稱是否與指定的名稱匹配,若是不匹配則拋出錯誤

35)StringVector readStringVectorconst  string &name   = 「」 ) const

從容器讀取字符串數組。

若是當前元素不是字符串數組,這將拋出錯誤。讀取位置將提早到下一個元素。

返回

價值。

參數

name - 若是指定了,那麼該函數將檢查下一個元素的名稱是否與指定的名稱匹配,若是不匹配則拋出錯誤

36) void readObjectPersistentObject OBJ ) const

從容器讀取指定的對象。

這等於調用PersistentObject.readObject(ContainerNode);

參數

obj - 要閱讀的對象

37)ContainerNode readContainerconst  string &name   = 「」 ) const

從容器中讀取容器。

若是當前的元素不是一個對象,這將拋出錯誤。讀取位置將提早到下一個元素。

返回

容器對象。

參數

name - 若是指定了,那麼該函數將檢查下一個元素的名稱是否與指定的名稱匹配,若是不匹配則拋出錯誤

38)ContainerNode readArrayconst  string &name   = 「」 ) const

從容器讀取數組容器。

若是當前元素不是數組,這將拋出錯誤。讀取位置將提早到下一個元素。

返回

容器對象。

參數

name - 若是指定了,那麼該函數將檢查下一個元素的名稱是否與指定的名稱匹配,若是不匹配則拋出錯誤

39)void writeNumberconst string&name,float num 

向容器寫入一個數字值。

參數

name - 容器中值的名稱。

num - 要寫的價值

40)void writeIntconst string&name,int num 

向容器寫入一個數字值。

參數

name - 容器中值的名稱。

num - 要寫的價值

41)void writeBoolconst string&name,bool value 

將一個布爾值寫入容器。

參數

name - 容器中值的名稱。

value - 要寫的價值

42)void writeStringconst string&nameconst string&value 

將一個字符串值寫入容器。

參數

name - 容器中值的名稱。

value - 要寫的價值

43)void writeStringVectorconst string&nameconst StringVectorarr 

將字符串vector寫入容器。

參數

name - 容器中值的名稱。

arr - 要寫的vector

44)void writeObjectconst PersistentObjectobj 

將一個對象寫入容器。

這等於調用PersistentObject.writeObject(ContainerNode);

參數

obj - 要寫的對象

45)ContainerNode writeNewContainerconst string&name 

建立並寫入一個空的Object節點,該節點能夠用做後續寫入操做的父項。

返回

一個子容器。

參數

name - 容器中新容器的名稱。

46)ContainerNode writeNewArrayconst string&name 

建立並寫入一個空數組節點,能夠將其用做後續寫入操做的父節點。

返回

一個子容器。

參數

name - 數組的名稱。

12.6.4 class PersistentObject

#include <persistent.hpp>

這是能夠將序列化到/從持久性文檔的對象的抽象基類。

pj :: AccountCallConfigpj :: AccountConfigpj :: AccountMediaConfigpj :: AccountMwiConfigpj :: AccountNatConfigpj :: AccountPresConfigpj :: AccountRegConfigpj :: AccountSipConfigpj :: AccountVideoConfigpj :: Subclassed AuthCredInfopj :: BuddyConfigpj :: EpConfigpj :: LogConfigpj :: MediaConfigpj :: TlsConfigpj :: TransportConfigpj :: UaConfig

公有函數

47)virtual   void readObjectconst  ContainerNodenode) = 0 

從容器節點讀取此對象。

參數

node - 容器從中讀取值。

48)virtual   void writeObjectContainerNodenode) const = 0 

將此對象寫入容器節點。

參數

node - 容器將值寫入。

  • json.hpp 

 namespace pj

PJSUA2 API在pj命名空間內。

12.6.5 class JsonDocument

#include <json.hpp>

具備JSON格式的持久文檔(文件)。

繼承自pj :: PersistentDocument

公有函數

49)JsonDocument()

默認構造函數。

50)~JsonDocument()

析構器

51)virtual  void loadFileconst string&filename 

從文件加載此文檔。

參數

filename - 文件名。

52)virtual  void loadStringconst string&input 

從字符串加載此文檔。

參數

input - 字符串。

53)virtual  void saveFileconst string&filename 

將此文檔寫入文件。

參數

filename - 文件名。

54)virtual  string saveString()

將此文檔寫入字符串。

virtual  ContainerNodegetRootContainer() const

獲取此文檔的根容器節點。

55)pj_json_elem * allocElement() const

一個內部函數來建立JSON元素。

56)pj_pool_t * getPool()

一個內部函數來獲取池。

57)私有函數

(3) void initRoot() const

58)私有變量

(4)pj_caching_pool cp
(5)ContainerNode rootNode
(6)pj_json_elem * root
(7)pj_pool_t * pool

12.7 siptypes.hpp 

 namespace pj

PJSUA2 API在pj命名空間內。

Typedefs

1)typedef std :: vector < SipHeader > SipHeaderVector

字符串數組

2)typedef std :: vector < SipMultipartPart > SipMultipartPartVector

多部分數組。

12.7.1 struct AuthCredInfo

#include <siptypes.hpp>

證實資料。

憑據包含用於對服務進行身份驗證的信息。

pj :: PersistentObject繼承

公有函數

3)AuthCredInfo()

默認構造函數。

4)AuthCredInfo(const string&scheme,const string&realm,const string&user_name,const int data_type,const string data )

使用指定的參數構造憑據。

5)virtual  void readObjectconst ContainerNodenode 

從容器節點讀取此對象。

參數

node - 容器從中讀取值。

6)virtual   void writeObjectContainerNodenode) const

將此對象寫入容器節點。

參數

node - 容器將值寫入。

公有變量

7) string scheme

認證方案(例如

「消化」)。

8) string realm

使用該憑證的領域。

使用「*」建立可用於對任何挑戰進行身份驗證的憑據。

9) string username

驗證用戶名。

10)INT dataType

「數據」字段中包含的數據類型。

若是數據包含純文本密碼,請使用0。

11) string data

數據,能夠是純文本密碼或散列摘要。

12) string akaK

永久用戶密鑰。

13) string akaOp

操做員變體鍵。

14) string akaAmf

認證管理領域。

12.7.2 struct RxMsgEvent

#include <siptypes.hpp>

此結構描述消息到達事件。

公有變量

15)SipRxData rdata

接收數據緩衝區。

12.7.3 struct SendInstantMessageParam

#include <siptypes.hpp>

此結構包含用於發送實例消息方法的參數,例如:Buddy :: sendInstantMessage()Call:sendInstantMessage()。

公有函數

16)SendInstantMessageParam()

默認構造函數用零/空值初始化。

公有變量

17) string contentType

MIME類型。

默認爲「text / plain」。

18) string content

消息內容。

19)SipTxOption txOption

要包括在傳出請求中的標題列表等。

20)Token  userData

用戶數據,當IM回調被調用時將被返回。

12.7.4 struct SendTypingIndicationParam

#include <siptypes.hpp>

此結構包含用於發送打字指示方法的參數,例如:Buddy :: sendTypingIndication()Call:sendTypingIndication()。

公有函數

21)SendTypingIndicationParam()

默認構造函數用零/空值初始化。

公有變量

22) bool isTyping

確實是爲了向遠方指示當地人當前正在鍵入IM。

23)SipTxOption txOption

要包括在傳出請求中的標題列表等。

12.7.5 struct SipEvent

#include <siptypes.hpp>

此結構描述事件描述符以徹底標識SIP事件。

它對應於PJSIP庫中的pjsip_event結構。

公有函數

24)SipEvent()

默認構造函數。

25)void fromPjconst pjsip_event&ev 

從PJSIP的pjsip_event構造。

公有變量

26)pjsip_event_id_e type

事件類型能夠是pjsip_event_id_e任何值。

27)SipEventBody body

事件主體,哪些字段取決於事件類型。

28)void * pjEvent

指向其原始的pjsip_event。

僅當從PJSIP的pjsip_event構造結構時纔有效。

12.7.6 struct SipEventBody

#include <siptypes.hpp>

事件體。

公有變量

29)TimerEvent timer

定時器事件。

30)TsxStateEvent tsxState

事務狀態發生了變化。

31)TxMsgEvent txMsg

消息傳輸事件。

32)TxErrorEvent txError

傳輸錯誤事件。

33)RxMsgEvent rxMsg

消息到達事件。

34)UserEvent user

用戶事件。

12.7.7 struct SipHeader

#include <siptypes.hpp>

簡單的SIP頭。

公有函數

35)void fromPjconst pjsip_hdr * )

從PJSIP頭開始。

36)pjsip_generic_string_hdr& () const toPj

轉換爲PJSIP標題。

公有變量

37) string hName

標題名稱

38) string hValue

標題值。

39)私有變量

(8)pjsip_generic_string_hdr pjHdr

用於轉換爲PJSIP標頭的Interal緩衝區。

12.7.8 struct SipMediaType

#include <siptypes.hpp>

SIP媒體類型包含類型和子類型。

例如,對於「application / sdp」,類型爲「application」,子類型爲「sdp」。

公有函數

40)void fromPjconst pjsip_media_type&prm 

從PJSIP的pjsip_media_type構造。

41)pjsip_media_type toPj() const

轉換爲PJSIP的pjsip_media_type。

公有變量

42) string type

媒體類型

43) string subType

媒體子類型。

12.7.9 struct SipMultipartPart

#include <siptypes.hpp>

這描述了每一個多部分。

公有函數

44)void fromPjconst pjsip_multipart_part&prm 

從PJSIP的pjsip_multipart_part開始。

45)pjsip_multipart_part& () const toPj

轉換爲PJSIP的pjsip_multipart_part。

公有變量

46)SipHeaderVector headers

要放在這個多部分的可選標題。

47)SipMediaType contentType

這個多部分部分的主體部分的MIME類型。

48) string body

身體部分是這個多部分的部分。

49)私有變量

(9)pjsip_multipart_part pjMpp

用於轉換爲PJSIP的Interal緩衝區pjsip_multipart_part。

(10)pjsip_msg_body pjMsgBody

12.7.10 struct SipRxData

#include <siptypes.hpp>

該結構描述了傳入的SIP消息。

它對應於PJSIP庫中的pjsip_rx_data結構。

公有函數

50)SipRxData()

默認構造函數。

51) void fromPj( pjsip_rx_data&RDATA 

從PJSIP的pjsip_rx_data構造。

公有變量

52) string info

描述請求的簡短信息字符串,一般包含請求方法及其CSeq。

53) string wholeMsg

整個消息數據做爲一個字符串,包含標題部分和消息正文部分。

54)SocketAddress  srcAddress

消息的源地址。

55)void * pjRxData

指向原始的pjsip_rx_data。

僅當從PJSIP的pjsip_rx_data構造結構時纔有效。

12.7.11 struct SipTransaction

#include <siptypes.hpp>

該結構描述了SIP事務對象。

它對應於PJSIP庫中的pjsip_transaction結構。

公有函數

56)SipTransaction()

默認構造函數。

57)void fromPj( pjsip_transaction&tsx 

從PJSIP的pjsip_transaction構造。

公有變量

58)pjsip_role_e role

角色(UAS或UAC)

59) string method

方法。

60)INT statusCode

看到最後的狀態碼。

61) string statusText

最後的緣由短語。

62)pjsip_tsx_state_e state

狀態

63)SipTxData lastTx

消息保留轉發。

64)void * pjTransaction

pjsip_transaction。

12.7.12 struct SipTxData

#include <siptypes.hpp>

該結構描述了傳出的SIP消息。

它對應於PJSIP庫中的pjsip_tx_data結構。

公有函數

65)SipTxData()

默認構造函數。

66)void fromPj( pjsip_tx_data&tdata 

從PJSIP的pjsip_tx_data構造。

公有變量

67) string info

描述請求的簡短信息字符串,一般包含請求方法及其CSeq。

68) string wholeMsg

整個消息數據做爲一個字符串,包含標題部分和消息正文部分。

69)SocketAddress  dstAddress

郵件的目的地址。

70)void * pjTxData

指向原始的pjsip_tx_data。

僅當從PJSIP的pjsip_tx_data構造結構時纔有效。

12.7.13 struct SipTxOption

#include <siptypes.hpp>

發送出站SIP消息時的附加選項。

這對應於PJSIP庫中的pjsua_msg_data結構。

公有函數

71) bool isEmpty() const

檢查選項是否爲空。

若是選項設置爲空值,將不會發送附加信息與傳出的SIP消息。

返回

若是選項爲空,則爲真。

72)void fromPjconst pjsua_msg_data&prm 

從PJSUA的pjsua_msg_data開始。

73) void toPj( pjsua_msg_data&msg_data ) const

轉換爲PJSUA的pjsua_msg_data。

公有變量

74) string targetUri

可選遠程目標URI(即

目標標題)。若是爲空(「」),則將目標設置爲遠程URI(To頭)。此時只有在發送初始INVITE和MESSAGE請求時才使用該字段。

75)SipHeaderVector headers

要包含在外發消息中的附加消息頭。

76) string contentType

消息體的MIME類型,若是應用程序在此結構中指定了messageBody。

77) string msgBody

僅當消息沒有正文時,能夠將消息體添加到消息中。

78)SipMediaType multipartContentType

多部分主體的內容類型。

若是應用程序想要發送多部分消息體,它將部件放在multipartParts中,並將內容類型設置爲multipartContentType。若是消息已經包含一個主體,那麼主體將被添加到多部分主體中。

79)SipMultipartPartVector multipartParts

多部分數組。

若是應用程序須要發送多消息體,它把零件在零件和設置在內容類型multipart_ctype。若是消息已經包含一個主體,那麼主體將被添加到多部分主體中。

12.7.14 struct TimerEvent

#include <siptypes.hpp>

此結構描述定時器事件。

公有變量

80)TimerEntry entry

定時器輸入。

12.7.15 struct TlsConfig

#include <siptypes.hpp>

TLS傳輸設置,要在TransportConfig中指定

pj :: PersistentObject繼承

公有函數

81)TlsConfig()

默認構造函數初始化爲默認值。

82)pjsip_tls_setting toPj() const

轉換爲pjsip。

83)void fromPjconst pjsip_tls_setting&prm 

從pjsip轉換

84)virtual  void readObjectconst ContainerNodenode 

從容器節點讀取此對象。

參數

node - 容器從中讀取值。

85)virtual   void writeObjectContainerNodenode) const

將此對象寫入容器節點。

參數

node - 容器將值寫入。

公有變量

86) string CaListFile

證書證書(CA)清單文件。

87) string certFile

公共端點證書文件,將用做傳出TLS鏈接的客戶端證書,以及用於傳入TLS鏈接的服務器端證書。

88) string privKeyFile

要使用的端點證書的可選私鑰。

89) string password

密碼打開私鑰。

90)pjsip_ssl_method method

TLS協議方法來自#pjsip_ssl_method。

在未來,這個領域可能不同意使用原型領域。如今,此字段僅在原始字段設置爲零時才適用。

默認值爲PJSIP_SSL_UNSPECIFIED_METHOD(0),後者又將使用PJSIP_SSL_DEFAULT_METHOD,默認值爲PJSIP_TLSV1_METHOD。

91)unsigned proto

TLS協議類型來自#pj_ssl_sock_proto。

使用此字段啓用特定的協議類型。使用按位或運算組合協議類型。

默認爲PJSIP_SSL_DEFAULT_PROTO。

92)intVector  ciphers

密碼和訂單偏好。

Endpoint::utilSslGetAvailableCiphers()能夠用來檢查由後端支持的可用密碼。若是數組爲空,則將使用後端的默認密碼列表。

93) bool verifyServer

在服務器上指定TLS傳輸行爲TLS證書驗證結果:

  • 若是verifyServer被禁用,TLS傳輸將經過pjsip_tp_state_callback通知應用程序,狀態PJSIP_TP_STATE_CONNECTED無論TLS驗證結果。
  • 若是啓用了verifyServer,TLS傳輸將被關閉,每當有任何TLS驗證錯誤時,應用程序將被通知狀態PJSIP_TP_STATE_DISCONNECTED,不然將通知PJSIP_TP_STATE_CONNECTED。

在任何狀況下,應用程序能夠檢查回調中的pjsip_tls_state_info以查看驗證詳細信息。

默認值爲false。

94) bool verifyClient

指定客戶端TLS證書驗證結果的TLS傳輸行爲:

  • 若是verifyClient被禁用,TLS傳輸將經過pjsip_tp_state_callback通知應用程序,狀態爲PJSIP_TP_STATE_CONNECTED,無論TLS驗證結果。
  • 若是啓用verifyClient,TLS傳輸將被關閉,每當有任何TLS驗證錯誤時,應用程序將被通知狀態爲PJSIP_TP_STATE_DISCONNECTED,不然將通知PJSIP_TP_STATE_CONNECTED。

在任何狀況下,應用程序能夠檢查回調中的pjsip_tls_state_info以查看驗證詳細信息。

默認值爲PJ_FALSE。

95) bool requireClientCert

看成爲服務器(傳入TLS鏈接)時,若是客戶端不提供TLS證書,則拒絕傳入鏈接。

此設置對應於SSL_VERIFY_FAIL_IF_NO_PEER_CERT標誌。默認值爲PJ_FALSE。

96)unsigned msecTimeout

TLS協商超時應用於傳出和傳入鏈接,以毫秒爲單位。

若是爲0,則SSL協商沒有超時。

默認值:零

97)pj_qos_type qosType

要在此傳輸上設置QoS流量類型。

當應用程序想要將QoS標記應用於傳輸時,最好設置此字段而不是qosParam字段,由於這更容易。

默認值爲PJ_QOS_TYPE_BEST_EFFORT。

98)pj_qos_params qosParams

將低級QoS參數設置爲傳輸。

這是比設置qosType字段更低級別的操做,可能在全部平臺上都不支持。

默認狀況下,此結構中的全部設置都被禁用。

99) bool qosIgnoreError

指定在設置QoS流量類型/參數時傳輸是否應該忽略任何錯誤。

默認值:PJ_TRUE

12.7.16 struct TransportConfig

#include <siptypes.hpp>

建立傳輸實例的參數。

pj :: PersistentObject繼承

公有函數

100)TransportConfig()

默認構造函數初始化爲默認值。

101)void fromPjconst pjsua_transport_config&prm 

從pjsip轉換

102)pjsua_transport_config toPj() const

轉換爲pjsip。

103)virtual  void readObjectconst ContainerNodenode 

從容器節點讀取此對象。

參數

node - 容器從中讀取值。

104)virtual   void writeObjectContainerNodenode) const

將此對象寫入容器節點。

參數

node - 容器將值寫入。

公有變量

105)unsigned port

本地綁定的UDP端口號。

即便須要默認端口,也必須指定此設置。若是值爲零,則傳輸將綁定到任何可用端口,應用程序能夠經過查詢傳輸信息來查詢端口。

106)unsigned portRange

指定插座結合相對於在指定的起始端口號端口範圍,端口

請注意,此設置僅適用於起始端口號不爲零時。

默認值爲零。

107) string publicAddress

可選地址做爲此傳輸的地址進行廣告宣傳。

應用程序能夠指定該字段的任何地址或主機名,例如它能夠指向系統中的一個接口地址,也能夠指向爲該應用配置了端口映射的NAT路由器的公網地址。

注意:此選項也能夠用於UDP和TCP二者!

108) string boundAddress

應該將套接字綁定到的可選地址。

該選項應該僅用於選擇性地將套接字綁定到特定接口(而不是0.0.0.0),而且不該該用於設置傳輸的發佈地址(public_addr字段應該用於此目的)。

請注意,與public_addr字段不一樣,這裏的地址(或主機名)必須對應於主機中的實際接口地址,由於該地址將被指定爲bind()參數。

109)TlsConfig tlsConfig

這指定TLS傳輸的TLS設置。

只有當此傳輸配置用於建立SIP TLS傳輸時,才能使用它。

110)pj_qos_type qosType

要在此傳輸上設置QoS流量類型。

當應用程序想要將QoS標記應用於傳輸時,最好設置此字段而不是qosParam字段,由於這更容易。

默認值是QoS未設置。

pj_qos_params qosParams

將低級QoS參數設置爲傳輸。

這是比設置qosType字段更低級別的操做,可能在全部平臺上都不支持。

默認值是QoS未設置。

12.7.17 struct TransportInfo

#include <siptypes.hpp>

此結構描述了Endpoint :: transportGetInfo()函數返回的傳輸信息

公有函數

(11)void fromPjconst pjsua_transport_info&info 

從pjsua_transport_info構造。

公有變量

(12)TransportId id

PJSUA傳輸識別。

(13)pjsip_transport_type_e type

傳輸類型。

(14) string typeName

傳輸類型名稱。

(15) string info

傳輸字符串信息/描述。

(16)unsigned flags

傳輸標誌(見pjsip_transport_flags_e)。

(17)SocketAddress  localAddress

本地/綁定地址。

(18)SocketAddress  localName

發佈地址(或傳輸地址名稱)。

(19)unsigned usageCount

當前引用此傳輸的對象的數量。

111)struct TsxStateEvent

#include <siptypes.hpp>

此結構描述事務狀態改變事件。

公有變量

(20)TsxStateEventSrc src

事件來源

(21)SipTransaction tsx

交易。

(22)pjsip_tsx_state_e prevState

之前的狀態

(23)pjsip_event_id_e type

事件來源類型:

  • PJSIP_EVENT_TX_MSG
  • PJSIP_EVENT_RX_MSG,
  • PJSIP_EVENT_TRANSPORT_ERROR
  • PJSIP_EVENT_TIMER
  • PJSIP_EVENT_USER

112)struct TsxStateEventSrc

#include <siptypes.hpp>

此結構描述事務狀態事件源。

公有變量

(24)SipRxData rdata

傳入的消息。

(25)SipTxData tdata

傳出的消息。

(26)TimerEntry timer

定時器。

(27)pj_status_t status

傳輸錯誤狀態。

(28)GenericData data

通用數據。

113)struct TxErrorEvent

#include <siptypes.hpp>

此結構描述傳輸錯誤事件。

公有變量

(29)SipTxData tdata

發送數據。

(30)SipTransaction tsx

交易。

114)struct TxMsgEvent

#include <siptypes.hpp>

該結構描述消息傳輸事件。

公有變量

(31)SipTxData tdata

發送數據緩衝區。

115)struct UserEvent

#include <siptypes.hpp>

此結構描述用戶事件。

公有變量

(32)GenericData user1

用戶數據1。

(33)GenericData user2

用戶數據2。

(34)GenericData user3

用戶數據3。

(35)GenericData user4

用戶數據4。

12.8 types.hpp 

PJSUA2基本類型。

定義

1)PJSUA2_RAISE_ERROR(status)

觸發錯誤異常。

2)PJSUA2_RAISE_ERROR2( status,op )

觸發錯誤異常。

3)PJSUA2_RAISE_ERROR3( status,op,txt )

觸發錯誤異常。

4)PJSUA2_CHECK_RAISE_ERROR2( status,op )

若是表達式失敗,則引起錯誤異常。

5)PJSUA2_CHECK_RAISE_ERROR(status)

若是狀態失敗,則觸發錯誤異常。

6)PJSUA2_CHECK_EXPR( expr )

若是表達式失敗,則引起錯誤異常。

 namespace pj

PJSUA2 API在pj命名空間內。

12.8.1 Typedefs

7)typedef std :: vector <std :: string> StringVector

 string 數組

8)typedef std :: vector <int> IntVector

整數數組。

9)typedef void * Token

令牌類型,即

任意應用程序用戶數據

10)typedef string SocketAddress

套接字地址,編碼爲字符串。

套接字地址包含「host [:port]」格式的主機和端口號。主機部分可能包含主機名,域名,IPv4或IPv6地址。對於IPv6地址,地址將用方括號括起來,例如「[:: 1]:5060」。

11) typedef INT TransportId

傳輸ID是一個整數。

12)typedef void * TransportHandle

傳輸句柄對應於pjsip_transport實例。

13)typedef void * TimerEntry

計時器輸入,對應於pj_timer_entry。

14)typedef void * GenericData

通用數據。

12.8.2 枚舉

15)enum  [anonymous]

常數

值:

INVALID_ID = -1

無效ID,等於PJSUA_INVALID_ID。

SUCCESS= 0

成功,等於PJ_SUCCESS。

12.8.3 struct Error

#include <types.hpp>

此結構包含有關做爲異常拋出的錯誤的信息。

公有函數

16) string info( bool multi_line =假) const

構建錯誤字符串。

17)Error()

默認構造函數。

18)Error( pj_status_t prm_status,const string&prm_title,const string&prm_reason,const string&prm_src_file,int prm_src_line )

從指定的參數構造一個錯誤實例。

若是prm_reason爲空,它將填寫狀態代碼的錯誤描述。

公有變量

19)pj_status_t status

錯誤代碼。

20) string title

拋出錯誤的PJSUA API操做。

21) string reason

錯誤消息。

22) string srcFile

拋出錯誤的PJSUA源文件。

23)INT srcLine

引起錯誤的PJSUA源文件的行號。

12.8.4 struct TimeVal

#include <types.hpp>

表示時間價值。

公有函數

24)void fromPjconst pj_time_val&prm 

從pjsip轉換

公有變量

25) long sec

秒的時間部分。

26) long msec

時間的毫秒數。

12.8.5 struct Version

#include <types.hpp>

版本信息。

公有變量

27)INT major

主要號碼。

28)INT minor

次要號碼

29)INT rev

附加修訂號。

30) string suffix

版本後綴(例如

「-svn」)

31) string full

完整版本信息(例如

「2.1.0-svn」)

32)unsigned numeric

PJLIB版本號爲三個字節,格式以下:0xMMIIRR00,其中MM:主號,II:次號,RR:修訂號,00:如今老是爲零。

  • config.hpp 

PJSUA2基本代理操做。

12.8.6 定義

33)PJSUA2_ERROR_HAS_EXTRA_INFO

指定錯誤異常信息是否包含操做和源文件信息。

 

 

相關文章
相關標籤/搜索