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(TokenprmToken )
使用指定的定时器令牌取消先前定时的定时器。
参数
prmToken - 从以前的utilTimerSchedule()调用返回的计时器令牌。
19)void utilAddPendingJob(PendingJob * job )
注册要由主线程执行的待处理作业的实用程序。
如果EpConfig :: UaConfig :: mainThreadOnly为false,该作业将立即执行。
参数
job - 工作类。
20)IntVectorutilSslGetAvailableCiphers()
获取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,TokenprmUserData )
辅助功能,用于解析和联系每个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。
TransportIdtransportCreate( pjsip_transport_type_e type,const TransportConfig&cfg )
根据指定的设置创建并启动新的SIP传输。
返回
传输ID。
参数
type - 传输类型。
cfg - 传输配置。
26)IntVectortransportEnum()
枚举系统中当前创建的所有传输。
此函数将返回所有传输ID,然后应用程序可以调用transportGetInfo()函数来检索有关传输的详细信息。
返回
传输ID数组。
27)TransportInfotransportGetInfo(TransportIdid )
获取有关传输的信息。
返回
交通信息
参数
id - 传输ID。
28)void transportSetEnable(TransportIdid,bool enabled )
禁用传输或重新启用它。
默认情况下,传输始终在创建后启用。禁用传输不一定关闭套接字,它只会丢弃传入的消息,并阻止传输被用于发送传出的消息。
参数
id - 传输ID。
enabled - 启用或禁用传输。
29)void transportClose(TransportIdid )
关闭传输。
系统将等待所有事务关闭,同时防止新用户使用传输,并在其使用次数达到零时关闭传输。
参数
id - 传输ID。
30)void transportShutdown(TransportHandletp )
启动此传输句柄的正常关闭程序。
在正常关闭启动后,传输不能获得新的参考。然而,当前使用传输的现有对象仍然可以使用该传输来发送和接收数据包。所有的物品释放他们对这种传输工具的参考后,传输工具将立即销毁。
注意:从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)CodecParamcodecGetParam( const const string & codec_id ) const
获取编解码器参数。
返回
编解码器参数。如果没有找到编解码器,则会抛出错误。
参数
codec_id - 编解码器ID。
43)void codecSetParam(const string&codec_id,const CodecParamparam )
设置编解码器参数。
参数
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)VidCodecParamgetVideoCodecParam( 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)AudioMediaVectormediaList
(3)AudDevManageraudioDevMgr
(4)VidDevManagervideoDevMgr
(5)CodecInfoVectorcodecInfoList
(6)CodecInfoVectorvideoCodecInfoList
(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)UaConfiguaConfig
UA配置
62)LogConfiglogConfig
记录配置。
63)MediaConfigmedConfig
媒体配置
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)SocketAddressaddr
服务器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)SipRxDatardata
传入请求。
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)TransportHandlehnd
传输句柄。
123) string type
传输类型。
124)pjsip_transport_state state
传输当前状态。
125)pj_status_t lastError
与传输状态相关的最后一个错误代码。
126)TlsInfotlsInfo
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)SocketAddresslocalAddr
描述本地地址。
154)SocketAddressremoteAddr
描述远程地址。
155)SslCertInfolocalCertInfo
描述活动的本地证书信息。
使用SslCertInfo.isEmpty()来检查本地证书信息是否可用。
156)SslCertInforemoteCertInfo
描述活动的远程证书信息。
使用SslCertInfo.isEmpty()来检查远程证书信息是否可用。
157)unsigned verifyStatus
对等证书验证状态
158)StringVectorverifyMsgs
基于上述字段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)StringVectornameserver
SIP解析器子系统使用的名称服务器数组。
名称服务器的顺序指定优先级(首先使用名字服务器,除非它不可访问)。
169) string userAgent
可选用户代理字符串(默认为空)。
如果它是空的,则不会使用传出请求发送用户代理头。
170)StringVectorstunServer
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)AccountInfogetInfo() const
获取帐户信息。
返回
帐户信息。
10)void setRegistration( bool renew )
更新注册或执行注销。
如果要手动更新注册或从服务器注销,通常只需要调用此函数。
参数
renew - 如果是虚假的,这将开始注销过程。
11)void setOnlineStatus(const PresenceStatus&pres_st )
设置或修改要发布给远程/现场订户的帐户的在线状态。
如果此帐户有服务器端存在订阅,和/或出站PUBLISH(如果此帐户启用了存在发布),则会触发发送传出的NOTIFY请求。
参数
pres_st - 在线状态。
12)void setTransport(TransportIdtp_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)BuddyVectorbuddyList
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)AccountRegConfigregConfig
注册设置。
42)AccountSipConfigsipConfig
SIP设置。
43)AccountCallConfigcallConfig
通话设置。
44)AccountPresConfigpresConfig
存在设置。
45)AccountMwiConfigmwiConfig
MWI(留言等待指示)设置。
46)AccountNatConfignatConfig
NAT设置。
47)AccountMediaConfigmediaConfig
媒体设置(适用于音频和视频)。
48)AccountVideoConfigvideoConfig
视频设置。
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)SipHeaderVectorheaders
可选的自定义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)SipHeaderVectorheaders
可选的自定义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)AuthCredInfoVectorauthCreds
凭证数组
如果需要注册,通常应至少指定一个凭证,以成功验证服务提供商。可以指定更多的凭证,例如当请求被路由集中的代理人挑战时。
124)StringVectorproxies
用于传出请求的代理服务器数组。
每个条目被翻译成一个路由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)TransportIdtransportId
(可选)将此帐户绑定到特定的传输。
这通常不是一个好主意,因为帐户应该能够根据目的地使用任何可用的传输发送请求。但是某些应用程序可能希望对传输使用有明确的控制权,因此在这种情况下可以设置此字段。
默认值:-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)SipRxDatardata
来电INVITE请求。
12.2.14 struct OnIncomingSubscribeParam
#include <account.hpp>
此结构包含onIncomingSubscribe()回调的参数。
公有变量
146)void * srvPres
服务器存在订阅实例。
如果应用程序延迟接受请求,则在调用Account :: presNotify()时需要指定此对象。
147) string fromUri
发件人URI。
148)SipRxDatardata
传入的消息。
149)pjsip_status_code code
响应请求的状态代码。
默认值为200.应用程序可将此设置为其他最终状态代码以接受或拒绝请求。
150) string reason
答复请求的原因。
SipTxOptiontxOption
与响应一起发送的附加数据(如果有)。
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)SipRxDatardata
整个消息。
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)SipRxDatardata
导致此回调的传入响应被调用。
如果由于超时或传输错误而导致事务失败,内容将为空。
12.2.17 struct OnMwiInfoParam
#include <account.hpp>
onMwiInfo()帐户回调的参数。
公有变量
163)pjsip_evsub_state state
MWI订阅状态。
164)SipRxDatardata
整个消息缓冲区。
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)SipRxDatardata
传入的消息。
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)SipRxDatardata
整个消息缓冲区。
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)SipTxOptiontxOption
使用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 :: WindowHandleWindowHandle
窗口句柄。
9)typedef struct PJ :: VideoWindowInfoVideoWindowInfo
此结构描述视频窗口信息。
10)typedef std :: vector < VideoDevInfo *> VideoDevInfoVector
视频设备信息数组。
11)typedef std :: vector < CodecInfo *> CodecInfoVector
编解码器信息数组。
12)typedef void * CodecParam
编解码器参数,对应于pjmedia_codec_param。
13)typedef struct PJ :: CodecFmtpCodecFmtp
编解码器特定参数的结构,其中包含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)AudioDevInfogetDevInfo( 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)MediaFormatAudiogetExtFormat() 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)AudioDevInfoVectoraudioDevList
(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)MediaFormatVectorextFmt
支持的扩展音频格式数组。
12.3.3 class AudioMedia
#include <media.hpp>
音频媒体。
从pj :: Media继承
子类有pj :: AudioMediaPlayer,pj :: AudioMediaRecorder,pj :: ToneGenerator
公有函数
65)ConfPortInfogetPortInfo() 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 ConfPortInfogetPortInfoFromId( 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)AudioMediaPlayerInfogetInfo() 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)MediaFormatAudioformat
媒体音频格式信息。
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)ToneDigitMapVectorgetDigitMap() 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 MediaFormatVideoencFmt
编码格式。
161)CodecFmtpVectorencFmtp
编码器fmtp参数。
162)unsigned encMtu
MTU或最大有效负载大小设置。
12.3.22 struct MediaFormatVideodecFmt
解码格式
163)CodecFmtpVectordecFmtp
解码器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)VideoDevInfogetDevInfo( 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)MediaFormatVideogetFormat( 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)MediaSizegetInputScale( 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)VideoDevInfoVectorvideoDevList
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)MediaFormatVectorfmt
支持的视频格式数组。
每个支持的视频格式中的某些字段可能被设置为零或“未知”值,以指示该值是未知的或应被忽略。当这些值未设置为零时,表示正在使用确切的格式组合。
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)VideoWindowgetVideoWindow()
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)MediaFormatformat
媒体格式
如果保持统一化,则不会使用此参数。
204)VideoWindowHandlewindow
用于显示视频预览的可选输出窗口。
仅当视频设备支持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)VideoWindowInfogetInfo() 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)WindowHandlehandle
窗口句柄。
12.3.29 struct VideoWindowInfo
#include <media.hpp>
此结构描述视频窗口信息。
公有变量
215) bool isNative
标记以指示此窗口是否是本机窗口,例如由内置预览设备创建的窗口。
如果该字段为真,则只有此结构的视频窗口句柄字段才有效。
216)VideoWindowHandlewinHandle
视频窗口句柄。
217)INT renderDeviceId
渲染设备ID。
218) bool show
窗口显示状态。
假如窗口被隐藏。
219)Mediapos
窗口位置。
220)MediaSizesize
窗口大小。
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 :: MediaEventDataMediaEventData
媒体事件数据。
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)CallInfogetInfo() 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(Tokenuser_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)StreamInfogetStreamInfo( unsigned med_idx ) const
获取指定媒体索引的媒体流信息。
返回
流信息。
参数
med_idx - 媒体流索引。
34)StreamStatgetStreamStat( unsigned med_idx ) const
获取指定媒体索引的媒体流统计信息。
返回
流统计。
参数
med_idx - 媒体流索引。
35)MediaTransportInfogetMedTransportInfo( 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)CallSettingsetting
通话设置。
71)pjsip_inv_state state
呼叫状态。
72) string stateText
描述状态的文字。
73)pjsip_status_code lastStatusCode
听到最后一个状态码,可以作为原因码使用。
74) string lastReason
描述最后状态的原因。
75)CallMediaInfoVectormedia
活动媒体信息数组。
76)CallMediaInfoVectorprovMedia
临时媒体信息数组。
这包含配置状态下的媒体信息,即媒体会话正在创建/更新(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)CallSettingopt
通话设置。
94)pjsip_status_code statusCode
状态码。
95) string reason
原因短语
96)unsigned options
选项。
97)SipTxOptiontxOption
要添加到传出响应消息的标题列表等。
请注意,此消息数据将在此INVITE请求的所有下一个答案/响应中持续存在。
12.4.5 struct CallSendRequestParam
#include <call.hpp>
此结构包含Call :: sendRequest()的参数,
公有函数
98)CallSendRequestParam()
默认构造函数用零/空值初始化。
公有变量
99) string method
请求的SIP方法。
100)SipTxOptiontxOption
邮件正文和/或标题列表等要包含在传出请求中。
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)MediaEventDatadata
关于事件的附加数据/参数。
数据类型将特定于正在报告的事件类型。
139)void * pjMediaEvent
指向原始的pjmedia_event。
只有当结构从PJSIP的pjmedia_event转换时才有效。
12.4.12 union MediaEventData
#include <call.hpp>
媒体事件数据。
公有变量
140)MediaFmtChangedEventfmtChanged
媒体格式更改事件数据。
141)GenericDataptr
指向存储到用户事件数据的指针,如果它在此结构之外。
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)SocketAddresssrcRtpName
RTP源自的远程地址。
146)SocketAddresssrcRtcpName
RTCP起源的远程地址。
12.4.15 struct OnCallMediaEventParam
#include <call.hpp>
此结构包含Call :: onCallMediaEvent()回调的参数。
公有变量
147)unsigned medIdx
Media流索引。
148)MediaEventev
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
目前被试的目标。
导致此回调的事件被调用。
如果从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)SipRxDatardata
来电INVITE请求来替换呼叫。
156)pjsip_status_code statusCode
应用程序要设置的状态代码。
应用程序只能返回最终状态(200-699)
157) string reason
可选状态文本由应用程序设置。
158)CallSettingopt
当前的呼叫设置,应用程序可以更新此更改设置。
12.4.21 struct OnCallRxOfferParam
#include <call.hpp>
此结构包含Call :: onCallRxOffer()回调的参数。
公有变量
159)SdpSessionoffer
收到的新的Offer。
160)pjsip_status_code statusCode
要回复Offer的状态代码。
在输入时,它包含状态代码200.目前,有效值只有200和488。
161)CallSettingopt
当前的通话设置,应用程序可以更新此设置以应答报价。
12.4.22 struct OnCallSdpCreatedParam
#include <call.hpp>
此结构包含Call :: onCallSdpCreated()回调的参数。
公有变量
162)SdpSessionsdp
SDP刚刚创建。
163)SdpSessionremSdp
如果本地是SDP提供者,则远程SDP将为空。
12.4.23 struct OnCallStateParam
#include <call.hpp>
此结构包含Call :: onCallState()回调的参数。
公有变量
164)SipEvente
导致呼叫状态发生变化的事件。
12.4.24 struct OnCallTransferRequestParam
#include <call.hpp>
此结构包含Call :: onCallTransferRequest()回调的参数。
公有变量
165) string dstUri
呼叫转移到的目的地。
166)pjsip_status_code statusCode
要为呼叫转移请求返回的状态码。
在输入时,它包含状态码200。
167)CallSettingopt
当前的呼叫设置,应用程序可以更新该传输呼叫的设置。
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)SipEvente
导致状态变化的事务事件。
12.4.27 struct OnCallTxOfferParam
#include <call.hpp>
此结构包含Call :: onCallTxOffer()回调的参数。
公有变量
173)CallSettingopt
当前的通话设置,应用程序可以更新此设置以生成优惠。
请注意,应用程序应保留任何活动的媒体,以避免对等体拒绝该提议的需要。
12.4.28 struct OnCreateMediaTransportParam
#include <call.hpp>
此结构包含Call :: onCreateMediaTransport()回调的参数。
公有变量
174)unsigned mediaIdx
SDP中的媒体索引将用于此媒体传输。
175)MediaTransportmediaTp
否则将由呼叫使用的媒体传输具有此回调未实现。
应用程序可以将其更改为其自身的媒体传输实例,以供呼叫使用。
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)MediaStreamstream
媒体流。
181)unsigned streamIdx
Media会话中的流索引。
182)MediaPort pPort
在输入时,它指定流的媒体端口。
应用程序可以修改该指针以指向要注册到会议桥的不同媒体端口。
12.4.32 struct OnStreamDestroyedParam
#include <call.hpp>
此结构包含Call :: onStreamDestroyed()回调的参数。
公有变量
183)MediaStreamstream
媒体流。
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)RtcpStreamStattxStat
编码器流统计。
196)RtcpStreamStatrxStat
解码器流统计。
197)MathStatrttUsec
往返延迟统计
198)pj_uint32_t rtpTxLastTs
最后TX RTP时间戳。
199)pj_uint16_t rtpTxLastSeq
最后TX RTP序列。
200)MathStatrxIpdvUsec
接收方向IP分组延迟变化统计。
仅当PJMEDIA_RTCP_STAT_HAS_IPDV设置为非零时才使用。
201)MathStatrxRawJitterUsec
接收方向原始抖动统计。
仅当PJMEDIA_RTCP_STAT_HAS_RAW_JITTER设置为非零时才使用。
202)RtcpSdespeerSdes
同行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)MathStatlossPeriodUsec
损失期统计。
213)LossTypelossType
检测到的损失类型。
214)MathStatjitterUsec
抖动统计。
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)SocketAddressremoteRtpAddress
远程RTP地址。
226)SocketAddressremoteRtcpAddress
可选远程RTCP地址。
227)unsigned txPt
传出编解码器净荷类型。
228)unsigned rxPt
传入编解码器有效载荷类型。
229) string codecName
编解码器名称。
230)unsigned codecClockRate
编解码器时钟速率。
231)CodecParamcodecParam
可选编解码器参数
12.4.39 struct StreamStat
#include <call.hpp>
媒体流统计。
公有函数
232)void fromPj(const pjsua_stream_stat&prm )
从pjsip转换
公有变量
233)RtcpStatrtcp
RTCP统计。
234)JbufStatejbuf
抖动缓冲区统计。
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)BuddyInfogetInfo() 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)PresenceStatuspresStatus
存在状态
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)StringVectorreadStringVector(const string &name = “” ) const
从容器读取字符串数组。
如果当前元素不是字符串数组,这将抛出错误。读取位置将提前到下一个元素。
返回
价值。
参数
name - 如果指定了,那么该函数将检查下一个元素的名称是否与指定的名称匹配,如果不匹配则抛出错误。
11) void readObject(PersistentObject&OBJ ) const
从容器读取指定的对象。
这等于调用PersistentObject.readObject(ContainerNode);
参数
obj - 要阅读的对象
12)ContainerNodereadContainer(const string &name = “” ) const
从容器中读取容器。
如果当前元素不是容器,这将抛出错误。读取位置将提前到下一个元素。
返回
容器对象。
参数
name - 如果指定了,那么该函数将检查下一个元素的名称是否与指定的名称匹配,如果不匹配则抛出错误。
13)ContainerNodereadArray(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)ContainerNodewriteNewContainer(const string&name )
创建并写入一个空的Object节点,该节点可以用作后续写入操作的父项。
返回
一个子容器。
参数
name - 容器中新容器的名称。
21)ContainerNodewriteNewArray(const string&name )
创建并写入一个空数组节点,可以将其用作后续写入操作的父节点。
返回
一个子容器。
参数
name - 数组的名称。
公有变量
22)container_node_op * op
方法表。
23)container_node_internal_datadata
内部数据
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)StringVectorreadStringVector(const string &name = “” ) const
从容器读取字符串数组。
如果当前元素不是字符串数组,这将抛出错误。读取位置将提前到下一个元素。
返回
价值。
参数
name - 如果指定了,那么该函数将检查下一个元素的名称是否与指定的名称匹配,如果不匹配则抛出错误。
36) void readObject(PersistentObject&OBJ ) const
从容器读取指定的对象。
这等于调用PersistentObject.readObject(ContainerNode);
参数
obj - 要阅读的对象
37)ContainerNodereadContainer(const string &name = “” ) const
从容器中读取容器。
如果当前的元素不是一个对象,这将抛出错误。读取位置将提前到下一个元素。
返回
容器对象。
参数
name - 如果指定了,那么该函数将检查下一个元素的名称是否与指定的名称匹配,如果不匹配则抛出错误。
38)ContainerNodereadArray(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)ContainerNodewriteNewContainer(const string&name )
创建并写入一个空的Object节点,该节点可以用作后续写入操作的父项。
返回
一个子容器。
参数
name - 容器中新容器的名称。
46)ContainerNodewriteNewArray(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 ::SubclassedAuthCredInfo,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)ContainerNoderootNode
(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)SipRxDatardata
接收数据缓冲区。
12.7.3 struct SendInstantMessageParam
#include <siptypes.hpp>
此结构包含用于发送实例消息方法的参数,例如:Buddy :: sendInstantMessage(),Call:sendInstantMessage()。
公有函数
16)SendInstantMessageParam()
默认构造函数用零/空值初始化。
公有变量
17) string contentType
MIME类型。
默认为“text / plain”。
18) string content
消息内容。
19)SipTxOptiontxOption
要包括在传出请求中的标题列表等。
20)Token userData
用户数据,当IM回调被调用时将被返回。
12.7.4 struct SendTypingIndicationParam
#include <siptypes.hpp>
此结构包含用于发送打字指示方法的参数,例如:Buddy :: sendTypingIndication(),Call:sendTypingIndication()。
公有函数
21)SendTypingIndicationParam()
默认构造函数用零/空值初始化。
公有变量
22) bool isTyping
确实是为了向远方指示当地人当前正在键入IM。
23)SipTxOptiontxOption
要包括在传出请求中的标题列表等。
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)SipEventBodybody
事件主体,哪些字段取决于事件类型。
28)void * pjEvent
指向其原始的pjsip_event。
仅当从PJSIP的pjsip_event构造结构时才有效。
12.7.6 struct SipEventBody
#include <siptypes.hpp>
事件体。
公有变量
29)TimerEventtimer
定时器事件。
30)TsxStateEventtsxState
事务状态发生了变化。
31)TxMsgEventtxMsg
消息传输事件。
32)TxErrorEventtxError
传输错误事件。
33)RxMsgEventrxMsg
消息到达事件。
34)UserEventuser
用户事件。
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)SipHeaderVectorheaders
要放在这个多部分的可选标题。
47)SipMediaTypecontentType
这个多部分部分的主体部分的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)SocketAddresssrcAddress
消息的源地址。
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)SipTxDatalastTx
消息保留转发。
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)SocketAddressdstAddress
邮件的目的地址。
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)SipHeaderVectorheaders
要包含在外发消息中的附加消息头。
76) string contentType
消息体的MIME类型,如果应用程序在此结构中指定了messageBody。
77) string msgBody
仅当消息没有正文时,可以将消息体添加到消息中。
78)SipMediaTypemultipartContentType
多部分主体的内容类型。
如果应用程序想要发送多部分消息体,它将部件放在multipartParts中,并将内容类型设置为multipartContentType。如果消息已经包含一个主体,那么主体将被添加到多部分主体中。
79)SipMultipartPartVectormultipartParts
多部分数组。
如果应用程序需要发送多消息体,它把零件在零件和设置在内容类型multipart_ctype。如果消息已经包含一个主体,那么主体将被添加到多部分主体中。
12.7.14 struct TimerEvent
#include <siptypes.hpp>
此结构描述定时器事件。
公有变量
80)TimerEntryentry
定时器输入。
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)TlsConfigtlsConfig
这指定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)TransportIdid
PJSUA传输识别。
(13)pjsip_transport_type_e type
传输类型。
(14) string typeName
传输类型名称。
(15) string info
传输字符串信息/描述。
(16)unsigned flags
传输标志(见pjsip_transport_flags_e)。
(17)SocketAddresslocalAddress
本地/绑定地址。
(18)SocketAddresslocalName
发布地址(或传输地址名称)。
(19)unsigned usageCount
当前引用此传输的对象的数量。
111)struct TsxStateEvent
#include <siptypes.hpp>
此结构描述事务状态改变事件。
公有变量
(20)TsxStateEventSrcsrc
事件来源
(21)SipTransactiontsx
交易。
(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)SipRxDatardata
传入的消息。
(25)SipTxDatatdata
传出的消息。
(26)TimerEntrytimer
定时器。
(27)pj_status_t status
传输错误状态。
(28)GenericDatadata
通用数据。
113)struct TxErrorEvent
#include <siptypes.hpp>
此结构描述传输错误事件。
公有变量
(29)SipTxDatatdata
发送数据。
(30)SipTransactiontsx
交易。
114)struct TxMsgEvent
#include <siptypes.hpp>
该结构描述消息传输事件。
公有变量
(31)SipTxDatatdata
发送数据缓冲区。
115)struct UserEvent
#include <siptypes.hpp>
此结构描述用户事件。
公有变量
(32)GenericDatauser1
用户数据1。
(33)GenericDatauser2
用户数据2。
(34)GenericDatauser3
用户数据3。
(35)GenericDatauser4
用户数据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
指定错误异常信息是否包含操作和源文件信息。