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 libInit(const EpConfig&prmEpConfig )
使用指定的設置初始化pjsua。
所有設置都是可選的,並且在未指定配置時將使用默認值。
請注意,在調用此函數之前必須調用create()。
參數
- prmEpConfig -端點配置
7)void libStart()
所有初始化完成后調用此功能,以便庫可以進行其他檢查設置。
應用程序可以在init()之后的任何時間調用此函數。
8)void libRegisterThread(const 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 prmLevel,const string&prmSender,const string&prmMsg )
寫一個日志消息。
參數
prmLevel - 日志詳細程度(1-5)
prmSender - 日志發送方。
prmMsg - 日志消息。
15)void utilLogWrite(LogEntry&e )
寫一個日志條目。
參數
e - 日志條目。
16)pj_status_t utilVerifySipUri(const string&prmUri )
這是一個通用函數,用於驗證是否給出了有效的SIP URL。
如果URL是有效的SIP / SIPS方案,則將返回PJ_SUCCESS。
返回
PJ_SUCCESS成功,或相應的錯誤代碼。
參數
prmUri - URL字符串。
17)pj_status_t utilVerifyUri(const string&prmUri )
這是一個通用函數,用於驗證是否給出了有效的URI。
與utilVerifySipUri()不同,如果給出tel:URI,此函數將返回PJ_SUCCESS。
返回
PJ_SUCCESS成功,或相應的錯誤代碼。
參考pjsua_verify_sip_url()
參數
prm Uri - URL字符串。
18)Token utilTimerSchedule(unsigned prmMsecDelay,Token prmUserData )
安排具有指定間隔的時間和用戶數據。
當間隔經過時,將調用onTimer()回調。請注意,回調可能由不同的線程執行,具體取決於是否啟用了工作線程。
返回
令牌識別定時器,可以給予utilTimerCancel()。
參數
prmMsecDelay - 時間間隔,單位為毫秒。
prmUserData - 任意用戶數據,被回饋給應用程序在回調。
void utilTimerCancel(Token prmToken )
使用指定的定時器令牌取消先前定時的定時器。
參數
prmToken - 從以前的utilTimerSchedule()調用返回的計時器令牌。
19)void utilAddPendingJob(PendingJob * 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 natUpdateStunServers(const StringVector&prmServers,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 natCheckStunServers(const StringVector&prmServers,bool prmWait,Token prmUserData )
輔助功能,用於解析和聯系每個STUN服務器條目(依次)以查找哪個可用。
libInit()必須在調用這個函數之前被調用。
參數
prmServers - STUN服務器數組嘗試。端點將嘗試解析並聯系每個STUN服務器條目,直到找到可用的條目。每個條目可能是域名,主機名,IP地址,並且可能包含可選的端口號。例如:
- “pjsip.org”(域名)
- “sip.pjsip.org”(主機名)
- “pjsip.org:33478”(域名和非標准端口號)
- “10.0.0.1:3478”(IP地址和端口號)
prmWait - 指定函數是否應該阻塞,直到得到結果。在這種情況下,函數將在分辨率完成時阻塞,並且在該函數返回之前調用回調函數。
prmUserData - 任意用戶數據要在回調中傳回應用程序。
25)void natCancelCheckStunServers(Token token ,bool notify_cb = false )
取消與指定令牌匹配的待決STUN分辨率。
異常:如果沒有匹配的PJ_ENOTFOUND或其他錯誤。
參數
token - 令牌匹配。這個令牌給了natCheckStunServers()
notify_cb - 布爾值,用於控制是否為已取消的分辨率調用回調。當調用回調時,結果中的狀態將被設置為PJ_ECANCELLED。
TransportId transportCreate( pjsip_transport_type_e type,const TransportConfig&cfg )
根據指定的設置創建並啟動新的SIP傳輸。
返回
傳輸ID。
參數
type - 傳輸類型。
cfg - 傳輸配置。
26)IntVector transportEnum()
枚舉系統中當前創建的所有傳輸。
此函數將返回所有傳輸ID,然后應用程序可以調用transportGetInfo()函數來檢索有關傳輸的詳細信息。
返回
傳輸ID數組。
27)TransportInfo transportGetInfo(TransportId id )
獲取有關傳輸的信息。
返回
交通信息
參數
id - 傳輸ID。
28)void transportSetEnable(TransportId id,bool enabled )
禁用傳輸或重新啟用它。
默認情況下,傳輸始終在創建后啟用。禁用傳輸不一定關閉套接字,它只會丟棄傳入的消息,並阻止傳輸被用於發送傳出的消息。
參數
id - 傳輸ID。
enabled - 啟用或禁用傳輸。
29)void transportClose(TransportId id )
關閉傳輸。
系統將等待所有事務關閉,同時防止新用戶使用傳輸,並在其使用次數達到零時關閉傳輸。
參數
id - 傳輸ID。
30)void transportShutdown(TransportHandle tp )
啟動此傳輸句柄的正常關閉程序。
在正常關閉啟動后,傳輸不能獲得新的參考。然而,當前使用傳輸的現有對象仍然可以使用該傳輸來發送和接收數據包。所有的物品釋放他們對這種傳輸工具的參考后,傳輸工具將立即銷毀。
注意:從onTransportState()回調獲取句柄后,應用程序通常會使用此API 。
參數
tp - 傳輸。
31)void hangupAllCalls( void )
終止所有呼叫
這將啟動所有當前活動呼叫的呼叫掛斷。
32)void mediaAdd(AudioMedia&media )
將媒體添加到媒體列表。
參數
media - 要添加的媒體
33)void mediaRemove(AudioMedia&media )
從媒體列表中刪除媒體。
參數
media - 要移除的媒體
34) bool mediaExists(const AudioMedia&媒體) const
檢查媒體是否已添加到媒體列表。
返回
如果添加了媒體,則為真,否則為false。
參數
media - 媒體要檢查
35)unsigned mediaMaxPorts() const
獲取媒體端口的最大數量。
返回
會議橋中媒體端口的最大數量。
36)unsigned mediaActivePorts() const
獲取橋梁中當前活動媒體端口的數量。
返回
活動媒體端口的數量。
37)const AudioMediaVector&mediaEnumPorts() const
枚舉所有媒體端口。
返回
Media端口列表。
38)AudDevManager&audDevManager()
獲取音頻設備管理器的實例。
返回
音頻設備管理器。
39)VidDevManager&vidDevManager()
獲取視頻設備管理器的實例。
返回
視頻設備管理器。
40)const CodecInfoVector&codecEnum()
枚舉系統中所有支持的編解碼器。
返回
編解碼器信息數組。
41)void codecSetPriority(const 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 codecSetParam(const string&codec_id,const CodecParam param )
設置編解碼器參數。
參數
codec_id - 編解碼器ID。
param - 編解碼器參數設置。設置為NULL以將編解碼器參數重置為庫默認設置。
44)const CodecInfoVector&videoCodecEnum()
枚舉所有支持的視頻編解碼器在系統中。
返回
視頻編解碼器信息數組。
45)void videoCodecSetPriority(const 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 setVideoCodecParam(const string&codec_id,const VidCodecParam&param )
設置視頻編解碼器參數。
參數
codec_id - 編解碼器ID。
param - 編解碼器參數設置。
void resetVideoCodecParam(const string&codec_id )
將視頻編解碼器參數重置為庫默認設置。
參數
codec_id - 編解碼器ID。
48)virtual void onNatDetectionComplete(const OnNatDetectionCompleteParam&prm )
端點完成使用natDetectType()啟動的NAT類型檢測時的回調。
參數
prm - 包含檢測結果的回調參數。
49)virtual void onNatCheckStunServersComplete(const OnNatCheckStunServersCompleteParam&prm )
當Endpoint完成執行調用libInit()或調用natCheckStunServers()或natUpdateStunServers()時啟動的STUN服務器檢查時的回調。
參數
prm - 回調參數
50)virtual void onTransportState(const OnTransportStateParam&prm )
傳輸狀態發生變化時調用此回調。
參數
prm - 回調參數
51)virtual void onTimer(const OnTimerParam&prm )
計時器觸發時回調。
參數
prm - 回調參數
52)virtual void onSelectAccount(OnSelectAccountParam&prm )
應用程序可以使用此回調來覆蓋用於處理傳入消息的帳戶。
最初,使用的帳戶將由lib自動計算。如果應用程序沒有實現此回調,則該初始帳戶將被使用,或者從此回調返回時應用程序設置無效的帳戶。
請注意,目前需要帳號分配的傳入消息是INVITE,MESSAGE,SUBSCRIBE和未經請求的NOTIFY。這個回調可以在SIP事件本身的回叫之前被調用,即:來電,尋呼機,訂閱或者非請求事件。
參數
prm - 回調參數
公共靜態函數
53)static Endpoint&instance()
檢索端點的單例實例。
私有函數
54)void performPendingJobs()
55)void clearCodecInfoList(CodecInfoVector&codec_list )
56)void updateCodecInfoList( pjsua_codec_info pj_codec [],unsigned count,CodecInfoVector&codec_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>
端點配置。
(50)公有函數
59)virtual void readObject(const ContainerNode&node )
從容器讀取此對象。
參數
node - 容器來寫值。
60)virtual void writeObject(ContainerNode&node) const
將此對象寫入容器。
參數
node - 容器將值寫入。
公有變量
61)UaConfig uaConfig
UA配置
62)LogConfig logConfig
記錄配置。
63)MediaConfig medConfig
媒體配置
12.1.3 struct LogConfig
#include <endpoint.hpp>
記錄配置,可以(可選)在調用Lib :: init()時指定。
公有函數
64)LogConfig()
默認構造函數初始化為默認值。
65)void fromPj(const pjsua_logging_config&lc )
從pjsua_logging_config構造。
66)pjsua_logging_config toPj() const
生成pjsua_logging_config。
67)virtual void readObject(const ContainerNode&node )
從容器讀取此對象。
參數
node - 容器來寫值。
68)virtual void writeObject(ContainerNode&node) 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 write(const LogEntry&entry ) =
寫一個日志條目。
12.1.6 struct MediaConfig
#include <endpoint.hpp>
此結構描述媒體配置,這將在調用Lib :: init()時指定。
公有函數
82)MediaConfig()
默認構造函數初始化為默認值。
83)void fromPj(const pjsua_media_config&mc )
從pjsua_media_config構造。
84)pjsua_media_config toPj() const
導出
85)virtual void readObject(const ContainerNode&node )
從容器讀取此對象。
參數
node - 容器來寫值。
86)virtual void writeObject(ContainerNode&node) 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>
公有變量
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>
公有變量
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 fromPj(const 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 fromPj(const 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用戶代理相關設置。
公有函數
160)UaConfig()
使用默認值初始化的默認構造函數。
161)void fromPj(const pjsua_config&ua_cfg )
從pjsua_config構造。
162)pjsua_config toPj() const
導出到pjsua_config。
163)virtual void readObject(const ContainerNode&node )
從容器讀取此對象。
參數
node - 容器來寫值。
164)virtual void writeObject(ContainerNode&node) 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()回調。
默認值: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>
公有函數
1)Account()
構造函數
2)virtual ~Account()
析構器
請注意,如果該帳戶被刪除,它也將刪除PJSUA-LIB中的相應帳戶。
3)void create(const AccountConfig&cfg,bool make_default = false )
創建帳戶。
參數
cfg - 帳號配置
make_default - 將其設為默認帳戶。
4)void modify(const AccountConfig&cfg )
修改帳戶以使用指定的帳戶配置。
根據變更,這可能會導致帳戶的注銷或重新注冊。
參數
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 setOnlineStatus(const PresenceStatus&pres_st )
設置或修改要發布給遠程/現場訂戶的帳戶的在線狀態。
如果此帳戶有服務器端存在訂閱,和/或出站PUBLISH(如果此帳戶啟用了存在發布),則會觸發發送傳出的NOTIFY請求。
參數
pres_st - 在線狀態。
12)void setTransport(TransportId tp_id )
將此帳戶鎖定/綁定到特定的傳輸/偵聽器。
通常,應用程序不需要這樣做,因為庫將根據目的地自動選擇傳輸。
當帳戶被鎖定/綁定到特定的傳輸時,來自該帳戶的所有傳出請求將使用指定的傳輸(包括SIP注冊,對話(呼叫和事件訂閱)以及諸如MESSAGE之類的對話外請求)。
請注意,傳輸ID也可以在AccountConfig中指定。
參數
tp_id - 傳輸ID。
13)void presNotify(const PresNotifyParam&prm )
發送NOTIFY以通知帳戶存在狀態或終止服務器端存在訂閱。
如果應用程序想要拒絕傳入的請求,它應該將PresNotifyParam.state的參數設置為PJSIP_EVSUB_STATE_TERMINATED。
參數
prm - 發送NOTIFY參數。
const BuddyVector&enumBuddies() const
枚舉帳戶的所有好友。
返回
好友列表。
14)Buddy * findBuddy( string URI,FindBuddyMatch * buddy_match = NULL ) const
在具有指定URI的好友列表中找到一個好友。
異常:如果沒有找到好友,PJ_ENOTFOUND將被拋出。
返回
指向好友的指針
參數
uri - 好友URI。
buddy_match - 好友比賽算法
15)void addBuddy(Buddy * buddy )
應用程序不能使用此功能。
16)void removeBuddy(Buddy * buddy )
應用程序不能使用此功能。
17)virtual void onIncomingCall(OnIncomingCallParam&prm )
通知來電時的應用程序。
參數
prm - 回調參數
18)virtual void onRegStarted(OnRegStartedParam&prm )
注冊或注銷登記時通知申請。
請注意,這只會通知初始注冊和注銷。一旦注冊會話處於活動狀態,后續刷新將不會導致此回調被調用。
參數
prm - 回調參數
19)virtual void onRegState(OnRegStateParam&prm )
注冊狀態發生變化時通知申請。
應用程序可能會查詢帳戶信息以獲取注冊詳細信息。
參數
prm - 回調參數
20)virtual void onIncomingSubscribe(OnIncomingSubscribeParam&prm )
收到傳入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 onInstantMessage(OnInstantMessageParam&prm )
通知應用程序傳入即時消息或尋呼機(即
MESSAGE請求)在呼叫上下文之外被接收。
參數
prm - 回調參數
22)virtual void onInstantMessageStatus(OnInstantMessageStatusParam&prm )
通知應用程序關於傳出尋呼機/即時消息的傳送狀態(即,
MESSAGE)請求。
參數
prm - 回調參數
23)virtual void onTypingIndication(OnTypingIndicationParam&prm )
通知應用程序打字指示。
參數
prm - 回調參數
24)virtual void onMwiInfo(OnMwiInfoParam&prm )
關於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中指定。
公有函數
27)virtual void readObject(const ContainerNode&node )
從容器節點讀取此對象。
參數
node - 容器從中讀取值。
28)virtual void writeObject(ContainerNode&node) 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>
帳戶配置。
公有函數
34)AccountConfig()
默認構造函數將使用默認值進行初始化。
35) void toPj( pjsua_acc_config&CFG ) const
因為這這將返回一個臨時pjsua_acc_config實例,其內容僅作為長期有效AccountConfig結構仍然有效,沒有修改完成它並沒有進一步toPj()函數調用。
對toPj()函數的任何調用都將使上一次調用返回的臨時pjsua_acc_config的內容無效。
36) void fromPj(const pjsua_acc_config &PRM, const pjsua_media_config * MCFG )
從pjsip初始化
37)virtual void readObject(const ContainerNode&node )
從容器節點讀取此對象。
參數
node - 容器從中讀取值。
38)virtual void writeObject(ContainerNode&node) 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 fromPj(const 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中指定。
公有函數
61)virtual void readObject(const ContainerNode&node )
從容器節點讀取此對象。
參數
node - 容器從中讀取值。
62)virtual void writeObject(ContainerNode&node) 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中指定。
公有函數
69)virtual void readObject(const ContainerNode&node )
從容器節點讀取此對象。
參數
node - 容器從中讀取值。
70)virtual void writeObject(ContainerNode&node) 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中指定。
公有函數
73)virtual void readObject(const ContainerNode&node )
從容器節點讀取此對象。
參數
node - 容器從中讀取值。
74)virtual void writeObject(ContainerNode&node) 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中指定。
公有函數
100)virtual void readObject(const ContainerNode&node )
從容器節點讀取此對象。
參數
node - 容器從中讀取值。
101)virtual void writeObject(ContainerNode&node) 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中指定。
公有函數
107)virtual void readObject(const ContainerNode&node )
從容器節點讀取此對象。
參數
node - 容器從中讀取值。
108)virtual void writeObject(ContainerNode&node) 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中指定),以避免所有客戶端同時重新注冊。
另請參見firstRetryIntervalSec和randomRetryIntervalSec設置。
默認值:PJSUA_REG_RETRY_INTERVAL
115)unsigned firstRetryIntervalSec
這指定了第一次注冊重試的間隔。
注冊重試在retryIntervalSec中解釋。請注意,這里的值也將隨機化幾秒鍾(在reg_retry_random_interval中指定),以避免所有客戶端重新注冊。
另請參閱retryIntervalSec和randomRetryIntervalSec設置。
默認值:0
116)unsigned randomRetryIntervalSec
這指定在reg_retry_interval和reg_first_retry_interval中指定的注冊重試間隔中添加/減去的最大隨機值,第二個。
這是有用的,以避免所有客戶端重新注冊在同一時間。例如,如果注冊重試間隔設置為100秒,並將其設置為10秒,則實際的注冊重試間隔將在90到110秒的范圍內。
另請參見retryIntervalSec和firstRetryIntervalSec設置。
默認值: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中指定。
公有函數
121)virtual void readObject(const ContainerNode&node )
從容器節點讀取此對象。
參數
node - 容器從中讀取值。
122)virtual void writeObject(ContainerNode&node) 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)
12.2.11 struct AccountVideoConfig
#include <account.hpp>
帳號視頻配置
這將在AccountConfig中指定。
公有函數
131)virtual void readObject(const ContainerNode&node )
從容器節點讀取此對象。
參數
node - 容器從中讀取值。
132)virtual void writeObject(ContainerNode&node) 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 match(const string&token,const Buddy&buddy )
默認算法實現。
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)AudioMedia&getCaptureDevMedia()
獲取捕獲音頻設備的AudioMedia。
返回
用於捕獲設備的音頻媒體。
17)INT getPlaybackDev() const
獲取當前正在播放的聲音設備。
如果沒有創建聲音設備,則該功能可能返回-1作為設備ID。
返回
播放設備的設備ID。
18)AudioMedia&getPlaybackDevMedia()
獲取揚聲器/播放音頻設備的AudioMedia。
返回
揚聲器/播放設備的音頻媒體。
19) void setCaptureDev( INT capture_dev ) const
選擇或更改拍攝聲音設備。
應用程序可以隨時調用此功能來替換當前的聲音設備。調用此方法不會更改聲音設備的狀態(打開/關閉)。請注意,此方法將覆蓋由setSndDevMode()設置的模式。
參數
capture_dev - 捕獲設備的設備ID。
20) void setPlaybackDev( INT playback_dev ) const
選擇或更改播放聲音設備。
應用程序可以隨時調用此功能來替換當前的聲音設備。調用此方法不會更改聲音設備的狀態(打開/關閉)。請注意,此方法將覆蓋由setSndDevMode()設置的模式。
參數
playback_dev - 播放設備的設備ID。
const AudioDevInfoVector&enumDev()
枚舉系統中安裝的所有音頻設備。
返回
音頻設備信息列表。
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 setExtFormat(const MediaFormatAudio&format,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 fromPj(const 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 :: AudioMediaPlayer,pj :: AudioMediaRecorder,pj :: ToneGenerator
公有函數
65)ConfPortInfo getPortInfo() const
獲取有關指定會議端口的信息。
66)INT getPortId() const
獲取端口ID。
67) void startTransmit(const AudioMedia& sink ) const
建立單向媒體流下沉。
該媒體端口將作為源,它可以傳輸到多個目的地/匯。並且如果多個源傳輸到同一個接收器,則媒體將被混合在一起。源和匯可以引用相同的媒體,有效地循環媒體。
如果需要雙向媒體流,應用程序需要調用此方法兩次,第二個來自相對的源媒體。
參數
sink - 目的地媒體。
68) void stopTransmit(const 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 registerMediaPort(MediaPort 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>
音頻媒體播放器
公有函數
81)AudioMediaPlayer()
構造函數
82)void createPlayer(const string&file_name,unsigned options = 0 )
創建文件播放器,並自動將此播放器添加到會議橋。
參數
file_name - 要播放的文件名 目前僅支持WAV文件,WAV文件必須格式化為16bit PCM單聲道/單聲道(支持任何時鍾頻率)。
options - 可選選項標志。應用程序可以指定PJMEDIA_FILE_NO_LOOP以防止回放循環。
83)void createPlaylist(const StringVector&file_names,const 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 * typecastFromAudioMedia(AudioMedia * 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>
音頻媒體記錄器
公有函數
96)AudioMediaRecorder()
構造函數
97)void createRecorder(const 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 * typecastFromAudioMedia(AudioMedia * 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 fromPj(const 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 fromPj(const 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>
媒體。
公有函數
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 :: MediaFormatAudio,pj :: 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>
該結構描述了有關音頻媒體的詳細信息。
公有函數
122)void fromPj(const 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>
該結構描述了有關視頻媒體的詳細信息。
公有函數
130)void fromPj(const 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>
音調發生器。
公有函數
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 play(const ToneDescVector&tone,bool loop = false )
指示音頻發生器播放具有指定持續時間的單頻或雙頻音調。
除了在調用此函數之前調用stop()之外,新的音調將被追加到當前播放的音色中。一旦音調發生器連接到其他媒體,播放就會開始。
參數
tones - 要播放的音色數組
loop - 在循環中播放音調。
153)void playDigits(const ToneDigitVector&digits,bool loop = false )
指示音發生器播放多個MF數字,每個數字具有單獨的開/關持續時間。
數位數組中的每位數字必須在數位圖中具有相應的描述符。除了在調用此函數之前調用stop()之外,新的音調將被追加到當前播放的音色中。一旦音源發生器連接到 sink 介質,播放就會開始。
參數
digits - MF數位數組。
loop - 在循環中播放音調。
154)ToneDigitMapVector getDigitMap() const
獲取此音調發生器當前使用的數位圖。
返回
音色發生器當前使用的數字圖
155)void setDigitMap(const ToneDigitMapVector&digit_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特定設置,decFmtp和encFmtp,可能需要根據有效設置進行適當設置。有關詳細信息,請參閱每個編解碼器文檔。
公有函數
157)void fromPj(const 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 setCodecFmtp(const pjmedia_codec_fmtp&in_fmtp,CodecFmtpVector&out_fmtp )
(11) void getCodecFmtp(const CodecFmtpVector&in_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 VideoDevInfoVector&enumDev()
枚舉系統中安裝的所有視頻設備。
返回
視頻設備信息列表
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_id,const MediaFormatVideo&format,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_id,const MediaSize&scale,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_id,const VideoSwitchParam&param )
這將配置快速切換到另一個視頻設備。
如果視頻設備當前處於活動狀態,則該方法會將設置轉發到要立即應用的視頻設備實例,如果它支持。
該方法僅在設備在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 fromPj(const 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 start(const VideoPreviewOpParam&param )
啟動指定捕獲設備的視頻預覽窗口。
參數
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 fromPj(const 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 setPos(const MediaCoordinate&pos )
設置視頻窗口位置。
此操作對於本機窗口(VideoWindowInfo.isNative = true)無效,必須使用本機窗口API。
參數
pos - 窗口位置。
210)void setSize(const MediaSize&size )
調整窗口大小。
此操作對於本機窗口(VideoWindowInfo.isNative = true)無效,必須使用本機窗口API。
參數
size - 新的窗口大小。
211)void rotate( int angle )
旋轉視頻窗口。
此功能將改變視頻方向,也可能會改變視頻窗口大小(寬度和高度被交換)。此操作對於本機窗口(VideoWindowInfo.isNative = true)無效,必須使用本機窗口API。
參數
angle - 旋轉角度(以度為單位)必須為90度的倍數。指定順時針旋轉的正值或逆時針旋轉的負值。
212)void setWindow(const VideoWindowHandle&win )
設置輸出窗口。
此操作僅在底層視頻設備支持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>
公有函數
5)Call(Account&acc,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 setUserData(Token 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 makeCall(const string&dst_uri,const CallOpParam&prm )
撥出電話給指定的URI。
參數
dst_uri - 要放入To頭的URI(通常與目標URI相同)。
prm.opt - 可選呼叫設置。
prm.txOption - 可選標題等待添加到發出的INVITE請求。
17)void answer(const CallOpParam&prm )
通過呼叫設置參數發送對INVITE請求的響應。
根據指定為參數的狀態碼,此功能可能發送臨時響應,建立呼叫或終止呼叫。有關通話設置的注意事項:
- 如果在此功能的后續呼叫中更改呼叫設置,則僅應用提供的第一個呼叫設置。因此,一般來說,應用程序在從用戶獲得確認之前不會提供呼叫設置。
- 如果SDP不能發送,則不提供呼叫設置,即:使用狀態碼183或2xx進行應答,將使用默認呼叫設置,檢查CallSetting的默認值。
參數
prm.opt - 可選呼叫設置。
prm.statusCode - 狀態碼,(100-699)。
prm.reason - 可選原因短語。如果為空,將使用默認文本。
prm.txOption - 要添加到傳出響應消息的標題等的可選列表。請注意,此消息數據將在此INVITE請求的所有下一個答案/響應中持續存在。
18)void hangup(const CallOpParam&prm )
通過使用根據呼叫狀態適當的方法掛斷呼叫。
此功能與使用3xx-6xx響應(with answer())應答呼叫不同,因為該功能將掛斷呼叫,而不管呼叫的狀態和角色如何,而answer()僅適用於EARLY狀態下的來電。
參數
prm.statusCode - 我們拒絕來電時可以發送的可選狀態碼。如果值為零,將發送“603 / Decline”。
prm.reason - 我們拒絕來電時可以選擇發送的原因短語。如果為空,將使用默認文本。
prm.txOption - 要添加到傳出請求/響應消息的標題等的可選列表。
19)void setHold(const CallOpParam&prm )
將指定的呼叫置於保持狀態。
這將發送re-INVITE與適當的SDP通知遙控器呼叫被擱置。請求本身的最終狀態將在onCallMediaState()回調中報告,該回調通知應用程序呼叫的媒體狀態已更改。
參數
prm.options - pjsua_call_flag常量的位掩碼。目前,只能使用標志PJSUA_CALL_UPDATE_CONTACT。
prm.txOption - 與請求一起發送的可選消息組件。
20)void reinvite(const CallOpParam&prm )
發送re-INVITE。
請求本身的最終狀態將在onCallMediaState()回調中報告,該回調通知應用程序呼叫的媒體狀態已更改。
參數
prm.opt - 可選呼叫設置,如果為空,當前呼叫設置將保持不變。
prm.opt.flag - pjsua_call_flag常量的位掩碼。在此指定PJSUA_CALL_UNHOLD將釋放呼叫保持。
prm.txOption - 與請求一起發送的可選消息組件。
21)void update(const CallOpParam&prm )
發送UPDATE請求。
參數
prm.opt - 可選呼叫設置,如果為空,當前呼叫設置將保持不變。
prm.txOption - 與請求一起發送的可選消息組件。
22)void xfer(const string&dest,const CallOpParam&prm )
啟動呼叫轉移到指定的地址。
該功能將發送REFER請求,指示遠程呼叫方向指定的目的地/目標發起新的INVITE會話。
如果應用程序有興趣監視傳輸請求的成功性和進度,它可以實現onCallTransferStatus()回調,它將報告呼叫轉移請求的進度。
參數
dest - 要聯系的新目標的URI。URI可以是名稱地址或addr-spec格式。
prm.txOption - 與請求一起發送的可選消息組件。
23)void xferReplaces(const Call&dest_call,const CallOpParam&prm )
發起參加呼叫轉移。
該功能將發送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 dialDtmf(const string&digits )
使用RFC 2833有效載荷格式將DTMF數字發送到遠程。
參數
digits - 要發送的DTMF字符串數字。
26)void sendInstantMessage(const SendInstantMessageParam&prm )
在INVITE會話中發送即時消息。
參數
prm.contentType - MIME類型。
prm.content - 消息內容。
prm.txOption - 要包括在傳出請求中的標題等的可選列表。txOption中的body描述符被忽略。
prm.userData - 可選的用戶數據,在調用IM回調時將返回。
27)void sendTypingIndication(const SendTypingIndicationParam&prm )
在INVITE會話中發送IM打字指示。
參數
prm.isTyping - 確實是為了向遠方指示當地人當前正在鍵入IM。
prm.txOption - 要包括在傳出請求中的標題等的可選列表。
28)void sendRequest(const CallSendRequestParam&prm )
發送任意請求與呼叫。
這對於發送INFO請求是有用的。請注意,應用程序不應該使用此函數發送將更改邀請會話狀態的請求,例如re-INVITE,UPDATE,PRACK和BYE。
參數
prm.method - 請求的SIP方法。
prm.txOption - 可選消息體和/或要包括在傳出請求中的頭部列表。
29)string dump( bool with_media,const 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 op,const CallVidSetStreamParam&param )
為指定的呼叫添加,刪除,修改和/或操縱視頻媒體流。
這可能會觸發重新啟動或更新以發送呼叫。
參數
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 processMediaUpdate(OnCallMediaStateParam&prm )
內部函數(由端點調用(當調用媒體狀態更改時處理更新以調用媒體。
37)void processStateChange(OnCallStateParam&prm )
內部函數(由端點調用)處理調用狀態更改。
38)virtual void onCallState(OnCallStateParam&prm )
呼叫狀態發生變化時通知應用程序。
應用程序可以通過調用getInfo()函數來查詢呼叫信息以獲取詳細調用狀態。
參數
prm - 回調參數
39)virtual void onCallTsxState(OnCallTsxStateParam&prm )
這是一個通用回調,當呼叫中的一個事務已經改變狀態時被調用。
例如,應用程序可以實現此回調,以監視傳出請求的狀態,或者以最終響應回答未處理的傳入請求(如INFO)。
參數
prm - 回調參數
40)virtual void onCallMediaState(OnCallMediaStateParam&prm )
當通話中的媒體狀態發生變化時通知應用程序。
正常應用需要實現這種回調,例如將呼叫的媒體連接到聲音設備。當使用ICE時,也會調用此回調來報告ICE協商失敗。
參數
prm - 回調參數
41)virtual void onCallSdpCreated(OnCallSdpCreatedParam&prm )
當呼叫剛剛創建本地SDP(用於初始或隨后的SDP報價/答案)時通知應用程序。
應用程序可以在遠程SDP發送和/或協商之前實施此回調來修改SDP,例如,以每個帳戶/呼叫基礎編解碼器優先級應用或添加自定義/專有SDP屬性。
參數
prm - 回調參數
42)virtual void onStreamCreated(OnStreamCreatedParam&prm )
在創建媒體會話之前,注冊到會議橋之前通知應用程序。
如果已將媒體處理端口添加到流中,應用程序可能會返回不同的媒體端口。然后,這個媒體端口將被添加到會議橋。
參數
prm - 回調參數
43)virtual void onStreamDestroyed(OnStreamDestroyedParam&prm )
Media會議從會議橋被注銷並被銷毀時通知應用程序。
參數
prm - 回調參數
44)virtual void onDtmfDigit(OnDtmfDigitParam&prm )
傳入DTMF數字時通知應用程序。
參數
prm - 回調參數
45)virtual void onCallTransferRequest(OnCallTransferRequestParam&prm )
通知申請被轉移(即
REFER被接收)。應用程序可以通過設置代碼來決定接受/拒絕傳輸請求(默認為202)。當此回調未實現時,默認行為是接受轉移。
參數
prm - 回調參數
46)virtual void onCallTransferStatus(OnCallTransferStatusParam&prm )
通知應用以前發送的呼叫轉移請求的狀態。
應用程序可以監視呼叫轉移請求的狀態,例如決定是否終止現有呼叫。
參數
prm - 回調參數
47)virtual void onCallReplaceRequest(OnCallReplaceRequestParam&prm )
通過替換標題通知有關INVITE的應用程序。
應用程序可以通過設置非2xx代碼來拒絕該請求。
參數
prm - 回調參數
48)virtual void onCallReplaced(OnCallReplacedParam&prm )
通知應用程序現有呼叫已被新呼叫替換。
當PJSUA-API使用Replaces標頭接收到INVITE請求時,會發生這種情況。
調用此回調后,通常PJSUA-API將斷開此調用並建立新的調用newCallId。
參數
prm - 回調參數
49)virtual void onCallRxOffer(OnCallRxOfferParam&prm )
當通話接收到來自遙控器的新報價時通知應用程序(即
接收到使用SDP的re-INVITE / UPDATE)。應用程序可以通過設置代碼來決定接受/拒絕報價(默認為200)。如果報價被接受,應用程序可以更新應答的通話設置。當此回調未實現時,默認行為是接受使用當前通話設置的報價。
參數
prm - 回調參數
50)virtual void onCallTxOffer(OnCallTxOfferParam&prm )
通話時通知應用程序接收到沒有SDP報價的INVITE。
應用程序可以更新呼叫設置(例如:添加音頻/視頻),或啟用/禁用編解碼器,或者從回調內更新其他媒體會話設置,但是,如標准(RFC3261第14.2節)所規定的那樣,它必須確保更新與需要對等體支持的現有媒體會話(編解碼器,傳輸或其他參數)重疊,這是為了避免對等體拒絕該提議。
當不執行此回調時,默認行為是使用當前活動媒體會話發送SDP報價(每個媒體類型上都有所有啟用的編解碼器)。
參數
prm - 回調參數
51)virtual void onInstantMessage(OnInstantMessageParam&prm )
通知輸入MESSAGE請求的應用程序。
參數
prm - 回調參數
52)virtual void onInstantMessageStatus(OnInstantMessageStatusParam&prm )
通知應用程序關於傳出MESSAGE請求的傳送狀態。
參數
prm - 回調參數
53)virtual void onTypingIndication(OnTypingIndicationParam&prm )
通知應用程序打字指示。
參數
prm - 回調參數
54)virtual pjsip_redirect_op onCallRedirected(OnCallRedirectedParam&prm )
當呼叫即將重新發送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 onCallMediaTransportState(OnCallMediaTransportStateParam&prm )
當媒體傳輸狀態更改時,將調用此回調。
參數
prm - 回調參數
56)virtual void onCallMediaEvent(OnCallMediaEventParam&prm )
有關媒體事件(例如視頻通知)的通知。
這種回調很可能是從媒體線程調用的,所以應用程序不能在這個回調中執行大量的處理。特別是,應用程序不得在此回調中銷毀呼叫或媒體。如果應用程序需要執行更復雜的任務來處理事件,則應將任務發布到另一個線程。
參數
prm - 回調參數
57)virtual void onCreateMediaTransport(OnCreateMediaTransportParam&prm )
應用程序可以使用此回調來實現呼叫的自定義媒體傳輸適配器,或者使用完全全新的媒體傳輸替換媒體傳輸。
創建新呼叫時調用此回調。該庫已經為該調用創建了一個媒體傳輸,並且作為該回調的mediaTp參數提供。回調可能會隨媒體傳輸的實例而改變,以便呼叫使用。
參數
prm - 回調參數
58)virtual void onCreateMediaTransportSrtp(OnCreateMediaTransportSrtpParam&prm )
當創建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 fromPj(const 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 fromPj(const 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 fromPj(const 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 fromPj(const 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 fromPj(const 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 fromPj(const 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 fromPj(const 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 fromPj(const 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 fromPj(const 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 fromPj(const 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 fromPj(const 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 fromPj(const 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 fromPj(const 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 create(Account&acc,const BuddyConfig&cfg )
創建好友並將好友注冊給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 sendInstantMessage(const SendInstantMessageParam&prm )
發送即時消息外部對話框,使用該伙伴指定的帳戶進行路由集和身份驗證。
參數
prm - 發送即時消息參數。
5)void sendTypingIndication(const SendTypingIndicationParam&prm )
在對話框外發送打字指示。
參數
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()將好友添加到好友列表時,此結構將描述好友配置。
公有函數
8)virtual void readObject(const ContainerNode&node )
從容器節點讀取此對象。
參數
node - 容器從中讀取值。
9)virtual void writeObject(ContainerNode&node) const
將此對象寫入容器節點。
參數
node - 容器將值寫入。
公有變量
10) string uri
好友網址或名稱地址。
11) bool subscribe
指定是否立即啟動呈現訂閱。
12.5.3 struct BuddyInfo
#include <presence.hpp>
此結構描述好友信息,可以通過Buddy :: getInfo ()檢索。
公有函數
12)void fromPj(const 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 readInt(const string &name = “” ) const
從文檔讀取整數值並返回值。
如果當前的元素不是數字,這將拋出錯誤。讀取位置將提前到下一個元素。
返回
價值。
參數
name - 如果指定了,那么該函數將檢查下一個元素的名稱是否與指定的名稱匹配,如果不匹配則拋出錯誤。
7)float readNumber(const string &name = “” ) const
從文檔讀取數值並返回值。
如果當前的元素不是數字,這將拋出錯誤。讀取位置將提前到下一個元素。
返回
價值。
參數
name - 如果指定了,那么該函數將檢查下一個元素的名稱是否與指定的名稱匹配,如果不匹配則拋出錯誤。
8) bool readBool(const string &name = “” ) const
從容器讀取一個布爾值並返回值。
如果當前元素不是布爾值,這將拋出錯誤。讀取位置將提前到下一個元素。
返回
價值。
參數
name - 如果指定了,那么該函數將檢查下一個元素的名稱是否與指定的名稱匹配,如果不匹配則拋出錯誤。
9)string readString(const string &name = “” ) const
從容器讀取字符串值並返回值。
如果當前元素不是字符串,則會拋出錯誤。讀取位置將提前到下一個元素。
返回
價值。
參數
name - 如果指定了,那么該函數將檢查下一個元素的名稱是否與指定的名稱匹配,如果不匹配則拋出錯誤。
10)StringVector readStringVector(const string &name = “” ) const
從容器讀取字符串數組。
如果當前元素不是字符串數組,這將拋出錯誤。讀取位置將提前到下一個元素。
返回
價值。
參數
name - 如果指定了,那么該函數將檢查下一個元素的名稱是否與指定的名稱匹配,如果不匹配則拋出錯誤。
11) void readObject(PersistentObject&OBJ ) const
從容器讀取指定的對象。
這等於調用PersistentObject.readObject(ContainerNode);
參數
obj - 要閱讀的對象
12)ContainerNode readContainer(const string &name = “” ) const
從容器中讀取容器。
如果當前元素不是容器,這將拋出錯誤。讀取位置將提前到下一個元素。
返回
容器對象。
參數
name - 如果指定了,那么該函數將檢查下一個元素的名稱是否與指定的名稱匹配,如果不匹配則拋出錯誤。
13)ContainerNode readArray(const string &name = “” ) const
從容器讀取數組容器。
如果當前元素不是數組,這將拋出錯誤。讀取位置將提前到下一個元素。
返回
容器對象。
參數
name - 如果指定了,那么該函數將檢查下一個元素的名稱是否與指定的名稱匹配,如果不匹配則拋出錯誤。
14)void writeNumber(const string&name,float num )
向容器寫入一個數字值。
參數
name - 容器中值的名稱。
num - 要寫的價值
15)void writeInt(const string&name,int num )
向容器寫入一個數字值。
參數
name - 容器中值的名稱。
num - 要寫的價值
16)void writeBool(const string&name,bool value )
將一個布爾值寫入容器。
參數
name - 容器中值的名稱。
value - 要寫的價值
17)void writeString(const string&name,const string&value )
將一個字符串值寫入容器。
參數
name - 容器中值的名稱。
value - 要寫的價值
18)void writeStringVector(const string&name,const StringVector&arr )
將字符串vector寫入容器。
參數
name - 容器中值的名稱。
arr - 要寫的vector
19)void writeObject(const PersistentObject&obj )
將一個對象寫入容器。
這等於調用PersistentObject.writeObject(ContainerNode);
參數
obj - 要寫的對象
20)ContainerNode writeNewContainer(const string&name )
創建並寫入一個空的Object節點,該節點可以用作后續寫入操作的父項。
返回
一個子容器。
參數
name - 容器中新容器的名稱。
21)ContainerNode writeNewArray(const 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文檔中說明的宏來讀取/寫入更詳細的數據。
公有函數
24)virtual ~PersistentDocument()
virtual 析構函數
25)virtual void loadFile(const string&filename ) =
從文件加載此文檔。
參數
filename - 文件名。
26)virtual void loadString(const string&input ) =
從字符串加載此文檔。
參數
input - 字符串。
27)virtual void saveFile(const string&filename ) =
將此文檔寫入文件。
參數
filename - 文件名。
virtual string saveString() =
將此文檔寫入字符串。
返回
字符串文檔。
28)virtual ContainerNode&getRootContainer() const = 0
獲取此文檔的根容器節點。
返回
根節點。
29) bool hasUnread() const
確定是否有未讀元素。
如果是,那么應用程序可以使用一個readXxx()函數來讀取它。
返回
如果有的話。
30)string unreadName() const
獲取下一個未讀元素的名稱。
如果沒有更多的元素要讀取,它將拋出錯誤。
返回
下一個元素的名稱。
31)INT readInt(const string &name = “” ) const
從文檔讀取整數值並返回值。
如果當前的元素不是數字,這將拋出錯誤。讀取位置將提前到下一個元素。
返回
價值。
參數
name - 如果指定了,那么該函數將檢查下一個元素的名稱是否與指定的名稱匹配,如果不匹配則拋出錯誤。
32)float readNumber(const string &name = “” ) const
從文檔讀取一個浮點值並返回值。
如果當前的元素不是數字,這將拋出錯誤。讀取位置將提前到下一個元素。
返回
價值。
參數
name - 如果指定了,那么該函數將檢查下一個元素的名稱是否與指定的名稱匹配,如果不匹配則拋出錯誤。
33) bool readBool(const string &name = “” ) const
從容器讀取一個布爾值並返回值。
如果當前元素不是布爾值,這將拋出錯誤。讀取位置將提前到下一個元素。
返回
價值。
參數
name - 如果指定了,那么該函數將檢查下一個元素的名稱是否與指定的名稱匹配,如果不匹配則拋出錯誤。
34)string readString(const string &name = “” ) const
從容器讀取字符串值並返回值。
如果當前元素不是字符串,則會拋出錯誤。讀取位置將提前到下一個元素。
返回
價值。
參數
name - 如果指定了,那么該函數將檢查下一個元素的名稱是否與指定的名稱匹配,如果不匹配則拋出錯誤。
35)StringVector readStringVector(const string &name = “” ) const
從容器讀取字符串數組。
如果當前元素不是字符串數組,這將拋出錯誤。讀取位置將提前到下一個元素。
返回
價值。
參數
name - 如果指定了,那么該函數將檢查下一個元素的名稱是否與指定的名稱匹配,如果不匹配則拋出錯誤。
36) void readObject(PersistentObject &OBJ ) const
從容器讀取指定的對象。
這等於調用PersistentObject.readObject(ContainerNode);
參數
obj - 要閱讀的對象
37)ContainerNode readContainer(const string &name = “” ) const
從容器中讀取容器。
如果當前的元素不是一個對象,這將拋出錯誤。讀取位置將提前到下一個元素。
返回
容器對象。
參數
name - 如果指定了,那么該函數將檢查下一個元素的名稱是否與指定的名稱匹配,如果不匹配則拋出錯誤。
38)ContainerNode readArray(const string &name = “” ) const
從容器讀取數組容器。
如果當前元素不是數組,這將拋出錯誤。讀取位置將提前到下一個元素。
返回
容器對象。
參數
name - 如果指定了,那么該函數將檢查下一個元素的名稱是否與指定的名稱匹配,如果不匹配則拋出錯誤。
39)void writeNumber(const string&name,float num )
向容器寫入一個數字值。
參數
name - 容器中值的名稱。
num - 要寫的價值
40)void writeInt(const string&name,int num )
向容器寫入一個數字值。
參數
name - 容器中值的名稱。
num - 要寫的價值
41)void writeBool(const string&name,bool value )
將一個布爾值寫入容器。
參數
name - 容器中值的名稱。
value - 要寫的價值
42)void writeString(const string&name,const string&value )
將一個字符串值寫入容器。
參數
name - 容器中值的名稱。
value - 要寫的價值
43)void writeStringVector(const string&name,const StringVector&arr )
將字符串vector寫入容器。
參數
name - 容器中值的名稱。
arr - 要寫的vector
44)void writeObject(const PersistentObject&obj )
將一個對象寫入容器。
這等於調用PersistentObject.writeObject(ContainerNode);
參數
obj - 要寫的對象
45)ContainerNode writeNewContainer(const string&name )
創建並寫入一個空的Object節點,該節點可以用作后續寫入操作的父項。
返回
一個子容器。
參數
name - 容器中新容器的名稱。
46)ContainerNode writeNewArray(const string&name )
創建並寫入一個空數組節點,可以將其用作后續寫入操作的父節點。
返回
一個子容器。
參數
name - 數組的名稱。
12.6.4 class PersistentObject
#include <persistent.hpp>
這是可以將序列化到/從持久性文檔的對象的抽象基類。
由pj :: AccountCallConfig,pj :: AccountConfig,pj :: AccountMediaConfig,pj :: AccountMwiConfig,pj :: AccountNatConfig,pj :: AccountPresConfig,pj :: AccountRegConfig,pj :: AccountSipConfig,pj :: AccountVideoConfig,pj :: Subclassed AuthCredInfo,pj :: BuddyConfig,pj :: EpConfig,pj :: LogConfig,pj :: MediaConfig,pj :: TlsConfig,pj :: TransportConfig,pj :: UaConfig
公有函數
47)virtual void readObject(const ContainerNode&node) = 0
從容器節點讀取此對象。
參數
node - 容器從中讀取值。
48)virtual void writeObject(ContainerNode&node) const = 0
將此對象寫入容器節點。
參數
node - 容器將值寫入。
- json.hpp
namespace pj
PJSUA2 API在pj命名空間內。
12.6.5 class JsonDocument
#include <json.hpp>
具有JSON格式的持久文檔(文件)。
公有函數
49)JsonDocument()
默認構造函數。
50)~JsonDocument()
析構器
51)virtual void loadFile(const string&filename )
從文件加載此文檔。
參數
filename - 文件名。
52)virtual void loadString(const string&input )
從字符串加載此文檔。
參數
input - 字符串。
53)virtual void saveFile(const string&filename )
將此文檔寫入文件。
參數
filename - 文件名。
54)virtual string saveString()
將此文檔寫入字符串。
virtual ContainerNode&getRootContainer() 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>
證明資料。
憑據包含用於對服務進行身份驗證的信息。
公有函數
3)AuthCredInfo()
默認構造函數。
4)AuthCredInfo(const string&scheme,const string&realm,const string&user_name,const int data_type,const string data )
使用指定的參數構造憑據。
5)virtual void readObject(const ContainerNode&node )
從容器節點讀取此對象。
參數
node - 容器從中讀取值。
6)virtual void writeObject(ContainerNode&node) 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 fromPj(const 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 fromPj(const 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 fromPj(const 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 fromPj(const 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 fromPj(const 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中指定。
公有函數
81)TlsConfig()
默認構造函數初始化為默認值。
82)pjsip_tls_setting toPj() const
轉換為pjsip。
83)void fromPj(const pjsip_tls_setting&prm )
從pjsip轉換
84)virtual void readObject(const ContainerNode&node )
從容器節點讀取此對象。
參數
node - 容器從中讀取值。
85)virtual void writeObject(ContainerNode&node) 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>
創建傳輸實例的參數。
公有函數
100)TransportConfig()
默認構造函數初始化為默認值。
101)void fromPj(const pjsua_transport_config&prm )
從pjsip轉換
102)pjsua_transport_config toPj() const
轉換為pjsip。
103)virtual void readObject(const ContainerNode&node )
從容器節點讀取此對象。
參數
node - 容器從中讀取值。
104)virtual void writeObject(ContainerNode&node) 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 fromPj(const 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 fromPj(const 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
指定錯誤異常信息是否包含操作和源文件信息。