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


12 PJSUA2 API 參考手冊

12.1 endpoint.hpp 

PJSUA2基本代理操作。

 namespace pj

PJSUA2 API在pj命名空間內。

12.1.1 class Endpoint

#include <endpoint.hpp>

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

在應用程序中只能有一個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

指定錯誤異常信息是否包含操作和源文件信息。

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM