PJSUA2开发文档--第十二章 PJSUA2 API 参考手册

12 PJSUA2 API 参考手册

12.1 endpoint.hpp

PJSUA2基本代理操作。

 namespace pj

PJSUA2 API在pj命名空间内。

12.1.1 class Endpoint

#include <endpoint.hpp>

端点表示pjsua库的一个实例。

在应用程序中只能有一个pjsua库的实例,因此这个类是一个单例。

公有函数

1)Endpoint()

默认构造函数。

2)virtual  ~Endpoint()

virtual 析构函数

3)Version libVersion() const

获取lib版本。

4)void libCreate()

实例化pjsua应用程序。

调用任何其他函数之前,应用程序必须调用此函数,以确保底层库被正确初始化。一旦这个函数返回成功,应用程序必须在退出之前调用libDestroy()

5)pjsua_state libGetState() const

获取库状态。

返回

lib状态。

6)void libInitconst EpConfigprmEpConfig 

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

所有设置都是可选的,并且在未指定配置时将使用默认值。

请注意,在调用此函数之前必须调用create()。

参数

7)void libStart()

所有初始化完成后调用此功能,以便库可以进行其他检查设置。

应用程序可以在init()之后的任何时间调用此函数。

8)void libRegisterThreadconst string&name 

注册外部或本lib的API创建的线程

请注意,每次调用此函数时,它将分配一些内存来存储线程描述,这只会在库被析构时被释放。

参数

  • name -要分配给线程的可选名称。

9)bool libIsThreadRegistered()

检查这个线程是否已经注册到库中。

注意,此函数仅适用于lib主工作线程和使用libRegisterThread()注册的外部/ lib的API创建的线程。

10)void libStopWorkerThreads()

停止所有工作线程。

11)int libHandleEvents( unsigned msec_timeout 

对事件进行轮询pjsua,如果需要,可以阻塞调用者线程指定的最大间隔(以毫秒为单位)。

如果在pjsua_config结构中配置了工作线程(thread_cnt字段),应用程序通常不需要调用此函数,因为轮询将由这些工作线程完成。

如果启用了EpConfig :: UaConfig :: mainThreadOnly,并且从主线程调用此函数(默认主线程是调用libCreate()的线程),此函数还将扫描并运行列表中的任何待处理作业。

返回

投票期间处理的事件数。负值表示错误,应用程序可以以(status = -return_value)方式检索错误。

参数

  • msec_timeout -最长时间等待,以毫秒为单位。

12)void libDestroy( unsigned prmFlags = 0 )

销毁pjsua。

建议使用应用程序在调用此功能之前执行正常关闭(例如从SIP服务器注销帐户,终止预订订阅和挂断主动调用),但是如果发现需要的活动会话,此功能将执行所有这些功能被终止 此功能将阻止几秒钟等待远程的回复。

如果没有跟踪它的状态,应用程序可以多次安全地调用此函数。

参数

prmFlags - 组合pjsua_destroy_flag枚举。

13)string utilStrError( pj_status_t prmErr 

检索指定状态代码的错误字符串。

参数

prmErr - 错误代码。

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

写一个日志消息。

参数

prmLevel - 日志详细程度(1-5)

prmSender - 日志发送方。

prmMsg - 日志消息。

15)void utilLogWriteLogEntry

写一个日志条目。

参数

e - 日志条目。

16)pj_status_t utilVerifySipUriconst string&prmUri 

这是一个通用函数,用于验证是否给出了有效的SIP URL。

如果URL是有效的SIP / SIPS方案,则将返回PJ_SUCCESS。

返回

PJ_SUCCESS成功,或相应的错误代码。

参考utilVerifyUri()

参数

prmUri - URL字符串。

17)pj_status_t utilVerifyUriconst string&prmUri 

这是一个通用函数,用于验证是否给出了有效的URI。

utilVerifySipUri()不同,如果给出tel:URI,此函数将返回PJ_SUCCESS。

返回

PJ_SUCCESS成功,或相应的错误代码。

参考pjsua_verify_sip_url()

参数

prm Uri - URL字符串。

18)Token utilTimerSchedule(unsigned prmMsecDelayToken prmUserData 

安排具有指定间隔的时间和用户数据。

当间隔经过时,将调用onTimer()回调。请注意,回调可能由不同的线程执行,具体取决于是否启用了工作线程。

返回

令牌识别定时器,可以给予utilTimerCancel()

参数

prmMsecDelay - 时间间隔,单位为毫秒。

prmUserData - 任意用户数据,被回馈给应用程序在回调。

void utilTimerCancelTokenprmToken 

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

参数

prmToken - 从以前的utilTimerSchedule()调用返回的计时器令牌。

19)void utilAddPendingJobPendingJob * 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 natUpdateStunServersconst StringVectorprmServers,bool prmWait 

更新STUN服务器列表。

libInit()必须在调用这个函数之前已被调用。

参数

prmServers - STUN服务器数组尝试。端点将尝试解析并联系每个STUN服务器条目,直到找到可用的条目。每个条目可能是域名,主机名,IP地址,并且可能包含可选的端口号。例如:

  • “pjsip.org”(域名)
  • “sip.pjsip.org”(主机名)
  • “pjsip.org:33478”(域名和非标准端口号)
  • “10.0.0.1:3478”(IP地址和端口号)

prmWait - 指定函数是否应该阻塞,直到得到结果。在这种情况下,函数将在完成过程中阻塞,并且在该函数返回之前调用onNatCheckStunServersComplete()

24)void natCheckStunServersconst StringVectorprmServers,bool prmWaitTokenprmUserData 

辅助功能,用于解析和联系每个STUN服务器条目(依次)以查找哪个可用。

libInit()必须在调用这个函数之前被调用。

参考natCancelCheckStunServers()

参数

prmServers - STUN服务器数组尝试。端点将尝试解析并联系每个STUN服务器条目,直到找到可用的条目。每个条目可能是域名,主机名,IP地址,并且可能包含可选的端口号。例如:

  • “pjsip.org”(域名)
  • “sip.pjsip.org”(主机名)
  • “pjsip.org:33478”(域名和非标准端口号)
  • “10.0.0.1:3478”(IP地址和端口号)

prmWait - 指定函数是否应该阻塞,直到得到结果。在这种情况下,函数将在分辨率完成时阻塞,并且在该函数返回之前调用回调函数。

prmUserData - 任意用户数据要在回调中传回应用程序。

25)void natCancelCheckStunServersToken token ,bool notify_cb = false )

取消与指定令牌匹配的待决STUN分辨率。

异常:如果没有匹配的PJ_ENOTFOUND或其他错误。

参数

token - 令牌匹配。这个令牌给了natCheckStunServers()

notify_cb - 布尔值,用于控制是否为已取消的分辨率调用回调。当调用回调时,结果中的状态将被设置为PJ_ECANCELLED。

TransportIdtransportCreate( pjsip_transport_type_e typeconst TransportConfigcfg 

根据指定的设置创建并启动新的SIP传输。

返回

传输ID。

参数

type - 传输类型。

cfg - 传输配置。

26)IntVectortransportEnum()

枚举系统中当前创建的所有传输。

此函数将返回所有传输ID,然后应用程序可以调用transportGetInfo()函数来检索有关传输的详细信息。

返回

传输ID数组。

27)TransportInfotransportGetInfoTransportIdid 

获取有关传输的信息。

返回

交通信息

参数

id - 传输ID。

28)void transportSetEnableTransportIdid,bool enabled 

禁用传输或重新启用它。

默认情况下,传输始终在创建后启用。禁用传输不一定关闭套接字,它只会丢弃传入的消息,并阻止传输被用于发送传出的消息。

参数

id - 传输ID。

enabled - 启用或禁用传输。

29)void transportCloseTransportIdid 

关闭传输。

系统将等待所有事务关闭,同时防止新用户使用传输,并在其使用次数达到零时关闭传输。

参数

id - 传输ID。

30)void transportShutdownTransportHandletp 

启动此传输句柄的正常关闭程序。

在正常关闭启动后,传输不能获得新的参考。然而,当前使用传输的现有对象仍然可以使用该传输来发送和接收数据包。所有的物品释放他们对这种传输工具的参考后,传输工具将立即销毁。

注意:从onTransportState()回调获取句柄后,应用程序通常会使用此API 。

参数

tp - 传输。

31)void hangupAllCalls( void )

终止所有呼叫

这将启动所有当前活动呼叫的呼叫挂断。

32)void mediaAddAudioMediamedia 

将媒体添加到媒体列表。

参数

media - 要添加的媒体

33)void mediaRemoveAudioMediamedia 

从媒体列表中删除媒体。

参数

media - 要移除的媒体

34) bool mediaExistsconst  AudioMedia媒体) const

检查媒体是否已添加到媒体列表。

返回

如果添加了媒体,则为真,否则为false。

参数

media - 媒体要检查

35)unsigned mediaMaxPorts() const

获取媒体端口的最大数量。

返回

会议桥中媒体端口的最大数量。

36)unsigned mediaActivePorts() const

获取桥梁中当前活动媒体端口的数量。

返回

活动媒体端口的数量。

37)const  AudioMediaVectormediaEnumPorts() const

枚举所有媒体端口。

返回

Media端口列表。

38)AudDevManageraudDevManager()

获取音频设备管理器的实例。

返回

音频设备管理器。

39)VidDevManagervidDevManager()

获取视频设备管理器的实例。

返回

视频设备管理器。

40)const CodecInfoVectorcodecEnum()

枚举系统中所有支持的编解码器。

返回

编解码器信息数组。

41)void codecSetPriorityconst string&codec_id,pj_uint8_t priority 

更改编解码优先级。

参数

codec_id - 编解码器ID,它是唯一标识编解码器的字符串(如“speex / 8000”)。

priority - 编解码器优先级0-255,其中0表示禁用编解码器。

42)CodecParamcodecGetParam const  const string & codec_id ) const

获取编解码器参数。

返回

编解码器参数。如果没有找到编解码器,则会抛出错误

参数

codec_id - 编解码器ID。

43)void codecSetParamconst string&codec_idconst CodecParamparam 

设置编解码器参数。

参数

codec_id - 编解码器ID。

param - 编解码器参数设置。设置为NULL以将编解码器参数重置为库默认设置。

44)const CodecInfoVectorvideoCodecEnum()

枚举所有支持的视频编解码器在系统中。

返回

视频编解码器信息数组。

45)void videoCodecSetPriorityconst string&codec_id,pj_uint8_t priority 

更改视频编解码优先级

参数

codec_id - 编解码器ID,其是唯一标识编解码器的字符串(例如“H263 / 90000”)。有关详细信息,请参阅pjsua手册或pjmedia编解码器参考。

priority - 编解码器优先级0-255,其中0表示禁用编解码器。

46)VidCodecParamgetVideoCodecParam const  const string & codec_id ) const

获取视频编解码器参数

返回

编解码器参数。如果没有找到编解码器,则会抛出错误

参数

codec_id - 编解码器ID。

47)void setVideoCodecParamconst string&codec_idconst VidCodecParamparam 

设置视频编解码器参数。

参数

codec_id - 编解码器ID。

param - 编解码器参数设置。

void resetVideoCodecParamconst string&codec_id 

将视频编解码器参数重置为库默认设置。

参数

codec_id - 编解码器ID。

48)virtual  void onNatDetectionCompleteconst OnNatDetectionCompleteParamprm 

端点完成使用natDetectType()启动的NAT类型检测时的回调。

参数

prm - 包含检测结果的回调参数。

49)virtual  void onNatCheckStunServersCompleteconst OnNatCheckStunServersCompleteParamprm 

Endpoint完成执行调用libInit()或调用natCheckStunServers()natUpdateStunServers()时启动的STUN服务器检查时的回调。

参数

prm - 回调参数

50)virtual  void onTransportStateconst OnTransportStateParamprm 

传输状态发生变化时调用此回调。

参数

prm - 回调参数

51)virtual  void onTimerconst OnTimerParamprm 

计时器触发时回调。

计时器由utilTimerSchedule()调度

参数

prm - 回调参数

52)virtual  void onSelectAccountOnSelectAccountParamprm 

应用程序可以使用此回调来覆盖用于处理传入消息的帐户。

最初,使用的帐户将由lib自动计算。如果应用程序没有实现此回调,则该初始帐户将被使用,或者从此回调返回时应用程序设置无效的帐户。

请注意,目前需要帐号分配的传入消息是INVITE,MESSAGE,SUBSCRIBE和未经请求的NOTIFY。这个回调可以在SIP事件本身的回叫之前被调用,即:来电,寻呼机,订阅或者非请求事件。

参数

prm - 回调参数

公共静态函数

53)static Endpointinstance()

检索端点的单例实例。

私有函数

54)void performPendingJobs()

55)void clearCodecInfoListCodecInfoVectorcodec_list 

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

57)私有变量

(1)LogWriter * writer
(2)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>

端点配置。

pj :: PersistentObject继承

(50)公有函数

59)virtual  void readObjectconst ContainerNodenode 

从容器读取此对象。

参数

node - 容器来写值。

60)virtual  void  writeObjectContainerNodenode) const

将此对象写入容器。

参数

node - 容器将值写入。

公有变量

61)UaConfiguaConfig

UA配置

62)LogConfiglogConfig

记录配置。

63)MediaConfigmedConfig

媒体配置

12.1.3 struct LogConfig

#include <endpoint.hpp>

记录配置,可以(可选)在调用Lib :: init()时指定。

pj :: PersistentObject继承

公有函数

64)LogConfig()

默认构造函数初始化为默认值。

65)void fromPjconst pjsua_logging_config&lc 

从pjsua_logging_config构造。

66)pjsua_logging_config toPj() const

生成pjsua_logging_config。

67)virtual  void readObjectconst ContainerNodenode 

从容器读取此对象。

参数

node - 容器来写值。

68)virtual   void writeObjectContainerNodenode) const

将此对象写入容器。

参数

node - 容器将值写入。

公有变量

69)unsigned msgLogging

记录传入和传出的SIP消息?是!

70)unsigned level

输入详细级别。

价值5是合理的。

71)unsigned consoleLevel

控制台的信息提示详细程度。

4比较合理

72)unsigned decor

日志装饰。

73) string filename

如果应用程序希望库写入日志文件,则可选日志文件名。

74)unsigned fileFlags

在打开日志文件时,给予pj_file_open()的附加标志。

默认情况下,该标志为PJ_O_WRONLY。应用程序可以在此设置PJ_O_APPEND,以便将日志附加到现有文件,而不是覆盖它。

默认值为0。

75)LogWriter * writer

自定义日志记录器,如果需要。

当端点被销毁时,该实例将被端点销毁。

12.1.4 struct LogEntry

#include <endpoint.hpp>

包含由LogWriter写入的日志条目的数据。

公有变量

76)INT level

记录此消息的详细级别。

77) string msg

日志消息。

78) long threadId

当前线程的ID。

79) string threadName

写入该日志的线程的名称。

12.1.5 class LogWriter

#include <endpoint.hpp>

用于编写日志消息的界面

应用程序可以继承此类并在LogConfig结构中提供它,以实现自定义日志写入工具。

公有函数

80)virtual  ~LogWriter()

析构器

81)virtual  void writeconst LogEntryentry ) =

写一个日志条目。

12.1.6 struct MediaConfig

#include <endpoint.hpp>

此结构描述媒体配置,这将在调用Lib :: init()时指定。

pj :: PersistentObject继承

公有函数

82)MediaConfig()

默认构造函数初始化为默认值。

83)void fromPjconst pjsua_media_config&mc 

从pjsua_media_config构造。

84)pjsua_media_config toPj() const

导出

85)virtual  void readObjectconst ContainerNodenode 

从容器读取此对象。

参数

node - 容器来写值。

86)virtual   void writeObjectContainerNodenode) const

将此对象写入容器。

参数

node - 容器将值写入。

公有变量

87)unsigned clockRate

应用于会议桥的时钟速率。

如果值为零,将使用默认时钟速率(PJSUA_DEFAULT_CLOCK_RATE,默认为16KHz)。

88)unsigned sndClockRate

打开声音设备时应用的时钟速率。

如果值为零,将使用会议桥时钟速率。

89)unsigned channelCount

打开声音设备和会议桥时应用通道数。

90)unsigned audioFramePtime

指定音频帧ptime。

这里的值将影响声音设备和会议桥的每帧采样。指定较低的ptime通常会降低延迟。

默认值:PJSUA_DEFAULT_AUDIO_FRAME_PTIME

91)unsigned maxMediaPorts

指定要在会议桥中创建的最大媒体端口数。

由于所有媒体终止于桥(呼叫,文件播放器,文件记录器等),因此该值必须足够大以支持所有这些。然而,值越大,执行的计算越多。

默认值:PJSUA_MAX_CONF_PORTS

92) bool hasIoqueue

指定媒体管理器是否应为RTP / RTCP套接字管理自己的ioqueue。

如果是,将创建ioqueue,并且至少创建一个工作线程。如果否,RTP / RTCP套接字将与SIP套接字共享相同的ioqueue,并且不需要工作线程。

通常应用程序会在这里说是,除非它想从一个线程运行所有的东西。

93)unsigned threadCnt

指定处理传入RTP数据包的工作线程数。

建议大多数应用程序使用值1。

94)unsigned quality

媒体质量,0-10,根据本表:5-10:重采样使用大过滤器,3-4:重采样使用小过滤器,1-2:重采样使用线性。

Media质量也将speex编解码器的质量/复杂度设置为数字。

默认值:5(PJSUA_DEFAULT_CODEC_QUALITY)。

95)unsigned ptime

指定默认编解码器ptime。

默认值:0(编解码专用)

96) bool noVad

禁用VAD?

默认值:0(否(意味着启用VAD))

97)unsigned ilbcMode

iLBC模式(20或30)。

默认值:30(PJSUA_DEFAULT_ILBC_MODE)

98)unsigned txDropPct

RTP数据包在TX方向丢弃的百分比(以模拟丢包)。

默认值:0

99)unsigned rxDropPct

RTP分组在RX方向下降的百分比(以模拟分组丢失)。

默认值:0

100)unsigned ecOptions

回声消除器选项(请参阅pjmedia_echo_create())

默认值:0。

101)unsigned ecTailLen

回波消除器尾部长度,以毫秒为单位。

将其设置为零将禁用回声消除。

默认值:PJSUA_DEFAULT_EC_TAIL_LEN

102)unsigned sndRecLatency

音频捕获缓冲区长度,以毫秒为单位。

默认值:PJMEDIA_SND_DEFAULT_REC_LATENCY

103)unsigned sndPlayLatency

音频播放缓冲区长度,以毫秒为单位。

默认值:PJMEDIA_SND_DEFAULT_PLAY_LATENCY

104)INT jbInit

抖动缓冲区初始预取延迟(msec)。

该值必须在下面的jb_min_pre和jb_max_pre之间。

默认值:-1(使用默认流设置,目前为150毫秒)

105)INT jbMinPre

抖动缓冲区最小预取延迟(msec)。

默认值:-1(使用默认流设置,目前为60毫秒)

106)INT jbMaxPre

抖动缓冲区最大预取延迟(msec)。

默认值:-1(使用默认流设置,目前为240毫秒)

107)INT jbMax

设置可以由抖动缓冲区msec容纳的最大延迟。

默认值:-1(使用默认流设置,目前为360毫秒)

108)INT sndAutoCloseTime

指定声音设备在自动关闭之前的空闲时间(以秒为单位)。

使用值-1可禁用声音设备的自动关闭功能

默认值:1

109)bool vidPreviewEnableNative

指定是否可以使用内置/本机预览。

在某些系统中,视频输入设备具有内置的显示设备预览窗口的功能。使用这种内置的预览是最好的,因为它消耗较少的CPU功率。如果内置预览不可用,库将执行输入的软件渲染。如果此字段设置为PJ_FALSE,将始终使用软件预览。

默认值:PJ_TRUE

12.1.7 struct OnNatCheckStunServersCompleteParam

#include <endpoint.hpp>

参数Endpoint :: onNatCheckStunServersComplete()回调。

公有变量

110)Token userData

传递给Endpoint :: natCheckStunServers()函数的任意用户数据。

111)pj_status_t status

如果找到至少一个可用的STUN服务器,则将包含PJ_SUCCESS,否则将在操作期间包含最后一个错误代码。

112) string name

产生成功结果的服务器名称。

如果状态成功,这将只包含值。

113)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>

参数端点:: onSelectAccount()回调。

公有变量

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>

参数端点:: onTransportState()回调。

公有变量

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 fromPjconst pj_ssl_cert_info&info 

从pjsip转换

公有变量

132)unsigned version

证书版本。

133)unsigned char serialNo[20]

序列号,字节数组,第一个索引是MSB。

134) string subjectCn

通用名称。

135) string subjectInfo

一行主题,字段以斜杠分隔,例如:“CN = sample.org / OU = HRD”。

136) string issuerCn

发行人通用名称。

137)string issuerInfo

一行主题,字段以斜杠分隔。

138)timeval validityStart

有效性开始

139)timeval validityEnd

有效期结束。

140) bool validityGmt

标记有效日期/时间使用GMT。

141)vector< SslCertName > subjectAltName

主题备用名称扩展名。

142) string raw

原始证书为PEM格式,仅适用于远程证书。

143)私有变量

(51) bool empty

12.1.14 struct SslCertName

#include <endpoint.hpp>

SSL证书类型和名称结构。

公有变量

144)pj_ssl_cert_name_type type

名称类型。

145) string name

名字。

12.1.15 struct TlsInfo

#include <endpoint.hpp>

TLS传输信息。

公有函数

146)TlsInfo()

构造函数

147) bool isEmpty() const

检查信息是否设置为空值。

返回

如果信息为空,则为真。

148)void fromPjconst pjsip_tls_state_info&info 

从pjsip转换

公有变量

149) bool established

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

150)unsigned protocol

描述正在使用的安全套接字协议,请参见#pj_ssl_sock_proto。

使用按位或运算组合协议类型。

151)pj_ssl_cipher cipher

描述正在使用的密码套件,只有当连接建立时才会设置。

152) string cipherName

描述正在使用的密码名称,这仅在建立连接时才设置。

153)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用户代理相关设置。

pj :: PersistentObject继承

公有函数

160)UaConfig()

使用默认值初始化的默认构造函数。

161)void fromPjconst pjsua_config&ua_cfg 

从pjsua_config构造。

162)pjsua_config toPj() const

导出到pjsua_config。

163)virtual  void readObjectconst ContainerNodenode 

从容器读取此对象。

参数

node - 容器来写值。

164)virtual   void writeObjectContainerNodenode) const

将此对象写入容器。

参数

node - 容器将值写入。

公有变量

165)unsigned maxCalls

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

此处指定的值必须小于编译时最大设置PJSUA_MAX_CALLS,默认值为32.要增加此限制,必须使用新的PJSUA_MAX_CALLS值重新编译库。

166)unsigned threadCnt

工作线程数。

通常,应用程序将希望至少有一个工作线程,除非它要定期轮询库,在这种情况下,工作线程可以设置为零。

167) bool mainThreadOnly

当这个标志非零时,来自主线程以外的线程的所有回调都将被发布到主线程,并由Endpoint :: libHandleEvents()函数执行。

这包括日志记录回调。请注意,只有当ThreadCnt设置为零并且主线程执行Endpoint :: libHandleEvents()时,这才有效。默认情况下,主线程是从调用Endpoint :: libCreate()的线程设置的,

默认值:false

168)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()回调。

另请参见AccountMwiConfig.enabled

默认值:PJ_TRUE

12.2 account.hpp

PJSUA2账户操作。

 namespace pj

PJSUA2 API在pj命名空间内。

Typedefs

typedef std :: vector < AuthCredInfo > AuthCredInfoVector

SIP凭证数组。

12.2.1 class Account

#include <account.hpp>

Account

公有函数

1)Account()

构造函数

2)virtual  ~Account()

析构器

请注意,如果该帐户被删除,它也将删除PJSUA-LIB中的相应帐户。

3)void createconst AccountConfigcfg,bool make_default = false )

创建帐户。

参数

cfg - 帐号配置

make_default - 将其设为默认帐户。

4)void modifyconst AccountConfigcfg 

修改帐户以使用指定的帐户配置。

根据变更,这可能会导致帐户的注销或重新注册。

参数

cfg - 要应用于帐户的新帐户配置。

5) bool isValid() const

检查此帐户是否仍然有效。

返回

如果是的话。

6)void setDefault()

将此设置为默认帐户以在传入和传出请求与任何帐户不匹配时使用。

返回

PJ_SUCCESS成功。

7) bool isDefault() const

检查这个帐户是否是默认帐户。

默认帐户将用于与任何其他帐户不匹配的传入和传出请求。

返回

如果这是默认帐户,则为true。

8)INT getId() const

获取与此帐户相关联的PJSUA-LIB帐户ID或索引。

返回

整数大于或等于零。

9)AccountInfogetInfo() const

获取帐户信息。

返回

帐户信息。

10)void setRegistration( bool renew 

更新注册或执行注销。

如果要手动更新注册或从服务器注销,通常只需要调用此函数。

参数

renew - 如果是虚假的,这将开始注销过程。

11)void setOnlineStatusconst PresenceStatuspres_st 

设置或修改要发布给远程/现场订户的帐户的在线状态。

如果此帐户有服务器端存在订阅,和/或出站PUBLISH(如果此帐户启用了存在发布),则会触发发送传出的NOTIFY请求。

参数

pres_st - 在线状态。

12)void setTransportTransportIdtp_id 

将此帐户锁定/绑定到特定的传输/侦听器。

通常,应用程序不需要这样做,因为库将根据目的地自动选择传输。

当帐户被锁定/绑定到特定的传输时,来自该帐户的所有传出请求将使用指定的传输(包括SIP注册,对话(呼叫和事件订阅)以及诸如MESSAGE之类的对话外请求)。

请注意,传输ID也可以在AccountConfig中指定

参数

tp_id - 传输ID。

13)void presNotifyconst PresNotifyParamprm 

发送NOTIFY以通知帐户存在状态或终止服务器端存在订阅。

如果应用程序想要拒绝传入的请求,它应该将PresNotifyParam.state的参数设置为PJSIP_EVSUB_STATE_TERMINATED。

参数

prm - 发送NOTIFY参数。

const  BuddyVectorenumBuddies() const

枚举帐户的所有好友。

返回

好友列表。

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

在具有指定URI的好友列表中找到一个好友。

异常:如果没有找到好友,PJ_ENOTFOUND将被抛出。

返回

指向好友的指针

参数

uri - 好友URI。

buddy_match - 好友比赛算法

15)void addBuddyBuddy * buddy 

一个内部功能,将一个好友添加到帐户好友列表。

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

16)void removeBuddyBuddy * buddy 

帐户好友列表中删除好友的内部功能。

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

17)virtual  void onIncomingCallOnIncomingCallParamprm 

通知来电时的应用程序。

参数

prm - 回调参数

18)virtual  void onRegStartedOnRegStartedParamprm 

注册或注销登记时通知申请。

请注意,这只会通知初始注册和注销。一旦注册会话处于活动状态,后续刷新将不会导致此回调被调用。

参数

prm - 回调参数

19)virtual  void onRegStateOnRegStateParamprm 

注册状态发生变化时通知申请。

应用程序可能会查询帐户信息以获取注册详细信息。

参数

prm - 回调参数

20)virtual  void onIncomingSubscribeOnIncomingSubscribeParamprm 

收到传入SUBSCRIBE请求时的通知。

应用程序可以使用此回调来授权传入的订阅请求(例如,如果请求被授予,请求用户许可)。

如果未实现此回调,则将接受所有传入的存在订阅请求。

如果这个回调被实现,应用程序有几个选择,如何处理传入的请求:

  • 它可以通过在IncomingSubscribeParam.code参数中指定非200类最终响应立即拒绝该请求。
  • 它可以通过指定200作为IncomingSubscribeParam.code参数来立即接受该请求。如果应用程序未将任何值设置为IncomingSubscribeParam.code参数,则这是默认值。在这种情况下,库将从此回调返回时自动发送NOTIFY请求。
  • 它可能延迟请求的处理,例如要求用户许可是接受还是拒绝请求。在这种情况下,该应用程序必须设置IncomingSubscribeParam.code参数202,然后立即调用presNotify()与状态PJSIP_EVSUB_STATE_PENDING和以后调用presNotify()再次接受或拒绝的订阅请求。

200和202以外的任何IncomingSubscribeParam.code将被视为200。

应用程序必须立即从此回调中返回(例如,在等待用户确认时不得阻止此回调)。

参数

prm - 回调参数

21)virtual  void onInstantMessageOnInstantMessageParamprm 

通知应用程序传入即时消息或寻呼机(即

MESSAGE请求)在呼叫上下文之外被接收。

参数

prm - 回调参数

22)virtual  void onInstantMessageStatusOnInstantMessageStatusParamprm 

通知应用程序关于传出寻呼机/即时消息的传送状态(即,

MESSAGE)请求。

参数

prm - 回调参数

23)virtual  void onTypingIndicationOnTypingIndicationParamprm 

通知应用程序打字指示。

参数

prm - 回调参数

24)virtual  void onMwiInfoOnMwiInfoParamprm 

关于MWI(消息等待指示)状态变化的通知。

可以在SUBSCRIBE请求的状态更改(例如,202 /接收到SUBSCRIBE被接收)或接收到NOTIFY reqeust时调用此回调。

参数

prm - 回调参数

公共静态函数

25)static Account * lookup( int acc_id 

获取指定帐户ID 的帐户类。

返回

帐户实例或NULL,如果没有找到。

参数

acc_id - 要查找的帐号

26)私有变量

(1)pjsua_acc_id id
(2) string tmpReason
(3)BuddyVectorbuddyList

friends

(4)friend pj::Endpoint

12.2.2 struct AccountCallConfig

#include <account.hpp>

帐户的通话设置。

这将在AccountConfig中指定

pj :: PersistentObject继承

公有函数

27)virtual  void readObjectconst ContainerNodenode 

从容器节点读取此对象。

参数

node - 容器从中读取值。

28)virtual   void writeObjectContainerNodenode) const

将此对象写入容器节点。

参数

node - 容器将值写入。

公有变量

29)pjsua_call_hold_type holdType

指定如何向远程对等体提供呼叫保持。

有关更多信息,请参阅有关pjsua_call_hold_type的文档。

默认值:PJSUA_CALL_HOLD_TYPE_DEFAULT

30)pjsua_100rel_use prackUse

指定如何对该帐户中的所有会话使用对可靠临时响应(100rel / PRACK)的支持。

有关详细信息,请参阅pjsua_100rel_use枚举的文档。

默认值:PJSUA_100REL_NOT_USED

31)pjsua_sip_timer_use timerUse

指定所有会话的会话计时器的用法。

有关可能的值,请参阅pjsua_sip_timer_use。

默认值:PJSUA_SIP_TIMER_OPTIONAL

32)unsigned timerMinSESec

指定最小会话计时器到期时间,以秒为单位。

不得低于90。默认值为90。

33)unsigned timerSessExpiresSec

指定会话计时器的有效期,以秒为单位。

不能低于timerMinSE。默认值为1800。

12.2.3 struct AccountConfig

#include <account.hpp>

帐户配置。

pj :: PersistentObject继承

公有函数

34)AccountConfig()

默认构造函数将使用默认值进行初始化。

35) void toPj( pjsua_acc_config&CFG ) const

因为这这将返回一个临时pjsua_acc_config实例,其内容仅作为长期有效AccountConfig结构仍然有效,没有修改完成它并没有进一步toPj()函数调用。

toPj()函数的任何调用都将使上一次调用返回的临时pjsua_acc_config的内容无效。

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

从pjsip初始化

37)virtual  void readObjectconst ContainerNodenode 

从容器节点读取此对象。

参数

node - 容器从中读取值。

38)virtual   void writeObjectContainerNodenode) const

将此对象写入容器节点。

参数

node - 容器将值写入。

公有变量

39)INT priority

帐户优先级,用于控制匹配传入/传出请求的顺序。

数字越高意味着优先级越高,帐户将首先匹配。

40)string idUri

记录地址或AOR,即确定帐户的完整SIP URL。

该值可以使用名称地址或URL格式,并将看起来像“sip:account @ serviceprovider”。

该字段是强制性的。

41)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 fromPjconst pjsua_acc_info&pai 

从pjsip数据导入。

公有变量

50)pjsua_acc_id id

帐号。

51) bool isDefault

标记以指示这是否是默认帐户。

52) string uri

帐户 URI。

53) bool regIsConfigured

标记以判断此帐号是否具有注册设置(reg_uri不为空)。

54) bool regIsActive

标记以判断此帐号是否正在注册(有活动的注册会话)。

55)INT regExpiresSec

帐户注册会话的最新到期时间间隔。

56)pjsip_status_code regStatus

最后一次注册状态码。

如果状态码为零,则该帐户当前未注册。任何其他值表示注册的SIP状态代码。

57) string regStatusText

描述注册状态的字符串。

58)pj_status_t regLastErr

上次注册错误代码。

当状态字段包含指示注册失败的SIP状态代码时,上次注册错误代码包含导致故障的错误代码。在任何其他情况下,其值为零。

59) bool onlineStatus

存在此帐户的在线状态。

60) string onlineStatusText

在线状态文本。

12.2.5 struct AccountMediaConfig

#include <account.hpp>

帐户媒体配置(适用于音频和视频)。

这将在AccountConfig中指定

pj :: PersistentObject继承

公有函数

61)virtual  void readObjectconst ContainerNodenode 

从容器节点读取此对象。

参数

node - 容器从中读取值。

62)virtual   void writeObjectContainerNodenode) const

将此对象写入容器节点。

参数

node - 容器将值写入。

公有变量

63)TransportConfig transportConfig

媒体传输(RTP)配置。

64) bool lockCodecEnabled

如果远程在媒体行中发送包含多个格式或编解码器的SDP应答,则只需要一个编解码器发送re-INVITE或UPDATE即可锁定要使用的编解码器。

默认值:True(是)。

65) bool streamKaEnabled

指定是否为此帐户启用流保持活动和使用非编解码器VAD机制的NAT打孔(请参阅PJMEDIA_STREAM_ENABLE_KA)。

默认值:False

66)pjmedia_srtp_use srtpUse

指定是否应该为此帐户使用安全媒体传输。

有效值为PJMEDIA_SRTP_DISABLED,PJMEDIA_SRTP_OPTIONAL和PJMEDIA_SRTP_MANDATORY。

默认值:PJSUA_DEFAULT_USE_SRTP

67)INT srtpSecureSignaling

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

此选项仅在上述use_srtp选项不为零时使用。

有效值为:0:SRTP不需要安全信令1:SRTP需要安全传输,如TLS 2:SRTP需要安全的端到端传输(SIPS)

默认值:PJSUA_DEFAULT_SRTP_SECURE_SIGNALING

68)pjsua_ipv6_use ipv6Use

指定是否应在介质上使用IPv6。

不使用默认值。

12.2.6 struct AccountMwiConfig

#include <account.hpp>

帐号 MWI(留言等待指示)设置。

这将在AccountConfig中指定

pj :: PersistentObject继承

公有函数

69)virtual  void readObjectconst ContainerNodenode 

从容器节点读取此对象。

参数

node - 容器从中读取值。

70)virtual   void writeObjectContainerNodenode) const

将此对象写入容器节点。

参数

node - 容器将值写入。

公有变量

71) bool enabled

订阅消息等待指示事件(RFC 3842)。

另请参见UaConfig.mwiUnsolicitedEnabled设置。

默认值:FALSE

72)unsigned expirationSec

指定消息等待指示(RFC 3842)事件订阅的默认过期时间(以秒为单位)。

这不能为零。

默认值:PJSIP_MWI_DEFAULT_EXPIRES(3600)

12.2.7 struct AccountNatConfig

#include <account.hpp>

帐户的NAT(网络地址转换)设置。

这将在AccountConfig中指定

pj :: PersistentObject继承

公有函数

73)virtual  void readObjectconst ContainerNodenode 

从容器节点读取此对象。

参数

node - 容器从中读取值。

74)virtual   void writeObjectContainerNodenode) const

将此对象写入容器节点。

参数

node - 容器将值写入。

公有变量

75)pjsua_stun_use sipStunUse

控制使用STUN进行SIP信令。

默认值:PJSUA_STUN_USE_DEFAULT

76)pjsua_stun_use mediaStunUse

控制使用STUN进行媒体传输。

默认值:PJSUA_STUN_USE_DEFAULT

77) bool iceEnabled

为媒体传输启用ICE。

默认值:False

78)INT iceMaxHostCands

设置ICE主机候选人的最大数量。

默认值:-1(最大未设置)

79) bool iceAggressiveNomination

指定是否使用积极的提名。

默认值:True

80)unsigned iceNominatedCheckDelayMsec

对于控制代理(如果使用常规提名),在所有组件都具有有效对后,指定执行提名检查的延迟(与USE-CANDIDATE属性的连接性检查)。

默认值为PJ_ICE_NOMINATED_CHECK_DELAY。

81)INT iceWaitNominationTimeoutMsec

对于受控代理,指定控制代理程序在控制代理程序发现所有组件中的所有连接检查已经完成后,要等待的时间(以毫秒为单位),以便控制代理完成将所有组件的指定标志设置为true的发送连接检查并且每个组件至少有一个成功(但未被提名)检查。

此选项的默认值为ICE_CONTROLLED_AGENT_WAIT_NOMINATION_TIMEOUT。指定-1以禁用此定时器。

82) bool iceNoRtcp

禁用RTCP组件。

默认值:False

83) bool iceAlwaysUpdate

在ICE协商之后始终发送re-INVITE / UPDATE,而不管默认的ICE传输地址是否改变。

当这被设置为False时,只有在更改默认ICE传输地址时才会发送re-INVITE / UPDATE。

默认值:是

84) bool turnEnabled

在ICE中启用TURN候选。

85) string turnServer

在“DOMAIN:PORT”或“HOST:PORT”格式中指定TURN域名或主机名。

86)pj_turn_tp_type turnConnType

指定要用于TURN服务器的连接类型。

有效值为PJ_TURN_TP_UDP或PJ_TURN_TP_TCP。

默认值:PJ_TURN_TP_UDP

87) string turnUserName

指定使用TURN服务器进行身份验证的用户名。

88)INT turnPasswordType

指定密码的类型。

目前这个值必须为0,表示密码中将会使用明文密码。

89) string turnPassword

指定使用TURN服务器进行身份验证的密码。

90)INT contactRewriteUse

此选项用于更新REGISTER请求的传输地址和Contact标头。

启用此选项后,库将根据REGISTER请求的响应跟踪公共IP地址。一旦检测到地址发生变化,它将取消注册当前的联系人,更新与从Via头获取的传输地址的联系,并向注册商注册一个新的联系人。如果配置了STUN,这也将更新UDP传输的公共名称。

另请参阅contactRewriteMethod字段。

默认值:TRUE

91)INT contactRewriteMethod

指定如何联系更新将与注册完成,如果contactRewriteEnabled启用。

该值是pjsua_contact_rewrite_method的位掩码组合。另请参见pjsua_contact_rewrite_method。

值PJSUA_CONTACT_REWRITE_UNREGISTER(1)是遗留行为。

默认值:PJSUA_CONTACT_REWRITE_METHOD(PJSUA_CONTACT_REWRITE_NO_UNREG | PJSUA_CONTACT_REWRITE_ALWAYS_UPDATE)

92)INT contactUseSrcPort

如果使用TCP / TLS传输,请指定是否应将源TCP端口用作初始联系人地址。

请注意,配置名称服务器时,由于DNS SRV分辨率可能会产生不同的目标地址,因此此功能将自动关闭。还有一些平台在连接时无法报告TCP套接字的本地地址。在这些情况下,此功能也将被关闭。

默认值:1(是)。

93)INT viaRewriteUse

只要请求使用与之前的REGISTER请求相同的传输实例,该选项用于覆盖具有与REGISTER请求中的接口地址相同的接口地址的传出消息的Via头部的“已发送”字段。

默认值:TRUE

94)INT sdpNatRewriteUse

此选项控制SDP中的IP地址是否应替换为REGISTER响应的Via标头中的IP地址,仅在不使用STUN和ICE时替换。

如果值为FALSE(原始行为),则将使用本地IP地址。如果为TRUE,当STUN和ICE被禁用时,将使用在注册响应中找到的IP地址。

默认值:PJ_FALSE(否)

95)INT sipOutboundUse

控制SIP出站功能的使用。

在RFC 5626中描述了SIP出站,以使得代理或注册商能够使用由UA发起的相同连接来将入站请求发送回UA。此功能在NAT-ed deployemtns中非常有用,因此默认情况下启用。

注意:目前SIP出站只能与TCP和TLS传输一起使用。如果使用UDP进行注册,则SIP出站功能将被默认忽略。

默认值:TRUE

96) string sipOutboundInstanceId

指定此帐户要使用的SIP出站(RFC 5626)实例ID。

如果为空,则将根据此代理的主机名生成实例ID。如果应用程序指定了此参数,则该值将不会使用双引号,如“<urn:uuid:00000000-0000-1000-8000-AABBCCDDEEFF”>。

默认值:空

97) string sipOutboundRegId

指定SIP出站(RFC 5626)注册ID。

默认值为空,这将导致库自动生成一个合适的值。

默认值:空

98)unsigned udpKaIntervalSec

为此帐户设置周期性保持传输的间隔。

如果此值为零,则该帐户将禁用保持活动。成功注册后,保密传输将发送到注册服务商的地址。

默认值:15(秒)

99) string udpKaData

指定要发送的数据作为保活数据包。

默认值:CR-LF

12.2.8 struct AccountPresConfig

#include <account.hpp>

帐户存在配置。

这将在AccountConfig中指定

pj :: PersistentObject继承

公有函数

100)virtual  void readObjectconst ContainerNodenode 

从容器节点读取此对象。

参数

node - 容器从中读取值。

101)virtual   void writeObjectContainerNodenode) const

将此对象写入容器节点。

参数

node - 容器将值写入。

公有变量

102)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中指定

pj :: PersistentObject继承

公有函数

107)virtual  void readObjectconst ContainerNodenode 

从容器节点读取此对象。

参数

node - 容器从中读取值。

108)virtual   void writeObjectContainerNodenode) const

将此对象写入容器节点。

参数

node - 容器将值写入。

公有变量

109) string registrarUri

这是要放入注册请求URI的URL,看起来像“sip:serviceprovider”。

如果需要注册,应该指定该字段。如果该值为空,则不会执行任何帐户注册。

110) bool registerOnAdd

指定帐户是否应在UA添加后立即注册。

应用程序可以将其设置为PJ_FALSE,并使用pjsua_acc_set_registration()手动控制注册。

默认值:True

111)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中指定),以避免所有客户端同时重新注册。

另请参见firstRetryIntervalSecrandomRetryIntervalSec设置。

默认值:PJSUA_REG_RETRY_INTERVAL

115)unsigned firstRetryIntervalSec

这指定了第一次注册重试的间隔。

注册重试在retryIntervalSec中解释。请注意,这里的值也将随机化几秒钟(在reg_retry_random_interval中指定),以避免所有客户端重新注册。

另请参阅retryIntervalSecrandomRetryIntervalSec设置。

默认值:0

116)unsigned randomRetryIntervalSec

这指定在reg_retry_intervalreg_first_retry_interval指定的注册重试间隔中添加/减去的最大随机值,第二个。

这是有用的,以避免所有客户端重新注册在同一时间。例如,如果注册重试间隔设置为100秒,并将其设置为10秒,则实际的注册重试间隔将在90到110秒的范围内。

另请参见retryIntervalSecfirstRetryIntervalSec设置。

默认值:10

117)unsigned delayBeforeRefreshSec

在注册过期之前指定刷新客户端注册的秒数。

默认值:PJSIP_REGISTER_CLIENT_DELAY_BEFORE_REFRESH,5秒

118) bool dropCallsOnFail

指定注册失败后配置的帐户的呼叫是否应该被丢弃,并且重新注册的尝试也失败。

默认值:FALSE(禁用)

119)unsigned unregWaitMsec

指定在库关闭序列期间等待注销请求完成的最长时间。

默认值:PJSUA_UNREG_TIMEOUT

120)unsigned proxyUse

指定注册如何使用出站和帐户代理设置。

这将控制此帐户的REGISTER请求中是否显示以及哪些Route标题。该值是PJSUA_REG_USE_OUTBOUND_PROXY和PJSUA_REG_USE_ACC_PROXY位的位掩码组合。如果该值设置为0,REGISTER请求将不会使用任何代理(即它不会有任何Route头)。

默认值:3(PJSUA_REG_USE_OUTBOUND_PROXY | PJSUA_REG_USE_ACC_PROXY)

12.2.10 struct AccountSipConfig

#include <account.hpp>

帐户的各种SIP设置。

这将在AccountConfig中指定

pj :: PersistentObject继承

公有函数

121)virtual  void readObjectconst ContainerNodenode 

从容器节点读取此对象。

参数

node - 容器从中读取值。

122)virtual   void writeObjectContainerNodenode) const

将此对象写入容器节点。

参数

node - 容器将值写入。

公有变量

123)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)

参考Account :: setTransport()

12.2.11 struct AccountVideoConfig

#include <account.hpp>

帐号视频配置

这将在AccountConfig中指定

pj :: PersistentObject继承

公有函数

131)virtual  void readObjectconst ContainerNodenode 

从容器节点读取此对象。

参数

node - 容器从中读取值。

132)virtual   void writeObjectContainerNodenode) const

将此对象写入容器节点。

参数

node - 容器将值写入。

公有变量

133) bool autoShowIncoming

指定输入视频是否应显示为默认屏幕。

这适用于来电(INVITE),传入的re-INVITE和传入的UPDATE请求。

无论此设置如何,应用程序可以通过执行on_call_media_state()回调并使用pjsua_call_get_info()枚举媒体流来检测传入的视频。一旦传入视频被识别,应用程序可以检索与传入视频相关联的窗口,并使用pjsua_vid_win_set_show()显示或隐藏它。

默认值:False

134) bool autoTransmitOutgoing

指定输出视频在拨出电话时默认是否被激活,和/或当检测到输入视频时。

这适用于传入和传出呼叫,传入re-INVITE和传入UPDATE。如果设置不为零,一旦响应这些请求被发送(或接收),即将开始传出视频传输。

无论此设置的值如何,应用程序可以使用pjsua_call_set_vid_strm()启动和停止传出视频传输。

默认值:False

135)unsigned windowFlags

指定视频窗口的标志。

该值是pjmedia_vid_dev_wnd_flag的位掩码组合。

默认值:0

136)pjmedia_vid_dev_index defaultCaptureDevice

指定此帐户要使用的默认捕获设备。

如果vidOutAutoTransmit启用,则此设备将用于捕获视频。

默认值:PJMEDIA_VID_DEFAULT_CAPTURE_DEV

137)pjmedia_vid_dev_index defaultRenderDevice

指定此帐户使用的默认渲染设备。

默认:PJMEDIA_VID_DEFAULT_RENDER_DEV

138)pjmedia_vid_stream_rc_method rateControlMethod

速率控制方式。

默认值:PJMEDIA_VID_STREAM_RC_SIMPLE_BLOCKING。

139)unsigned rateControlBandwidth

上行/出站带宽。

如果这设置为零,视频流将使用编解码器最大比特率设置。

默认值:0(跟随编解码器最大比特率)。

140)unsigned startKeyframeCount

流创建后要发送的关键帧数。

默认值:PJMEDIA_VID_STREAM_START_KEYFRAME_CNT

141)unsigned startKeyframeInterval

流创建后的关键帧发送间隔。

默认值:PJMEDIA_VID_STREAM_START_KEYFRAME_INTERVAL_MSEC

12.2.12 class FindBuddyMatch

#include <account.hpp>

Buddy匹配算法的包装类。

默认算法是Buddy URI 中搜索令牌的简单子字符串查找,区分大小写。应用程序可以通过覆盖此类并在Account :: findBuddy()中指定其实例来实现自己的匹配算法。

公有函数

142)virtual  bool matchconst string&tokenconst Buddybuddy 

默认算法实现。

143)virtual  ~FindBuddyMatch()

析构器

12.2.13 struct OnIncomingCallParam

#include <account.hpp>

此结构包含onIncomingCall()帐户回调的参数。

公有变量

144)INT callId

为新呼叫分配的库呼叫ID。

145)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)AudioMediagetCaptureDevMedia()

获取捕获音频设备的AudioMedia

返回

用于捕获设备的音频媒体。

17)INT getPlaybackDev() const

获取当前正在播放的声音设备。

如果没有创建声音设备,则该功能可能返回-1作为设备ID。

返回

播放设备的设备ID。

18)AudioMediagetPlaybackDevMedia()

获取扬声器/播放音频设备的AudioMedia

返回

扬声器/播放设备的音频媒体。

19) void setCaptureDev( INT capture_dev ) const

选择或更改拍摄声音设备。

应用程序可以随时调用此功能来替换当前的声音设备。调用此方法不会更改声音设备的状态(打开/关闭)。请注意,此方法将覆盖由setSndDevMode()设置的模式。

参数

capture_dev - 捕获设备的设备ID。

20) void setPlaybackDev( INT playback_dev ) const

选择或更改播放声音设备。

应用程序可以随时调用此功能来替换当前的声音设备。调用此方法不会更改声音设备的状态(打开/关闭)。请注意,此方法将覆盖由setSndDevMode()设置的模式。

参数

playback_dev - 播放设备的设备ID。

const AudioDevInfoVectorenumDev()

枚举系统中安装的所有音频设备。

返回

音频设备信息列表。

21)void setNullDev()

设置pjsua使用空声音设备。

零声音设备仅提供会议桥所需的时间,并且不会与任何硬件相互冲突。

22)MediaPort * setNoDev()

断开主会议桥与任何声音设备的连接,并让应用将网桥连接到自己的声卡/主端口。

返回

会议桥的端口接口,使应用程序可以将其连接到自己的声音设备或主端口。

23) void setSndDevMode( unsigned mode ) const

设置声音设备模式。

参数

mode - 声音设备模式,作为#pjsua_snd_dev_mode的位掩码组合

24)void setEcOptions( unsigned tail_msec,unsigned options 

更改回声消除设置。

此功能的行为取决于声音设备当前是否处于活动状态,如果是,是否正在使用设备或软件AEC。

如果声音设备当前处于活动状态,并且设备支持AEC,则此功能会将更改请求转发给设备,并且由设备决定是否支持该请求。如果使用软件AEC(如果设备不支持AEC,将使用软件EC),则此功能将更改软件EC设置。在所有情况下,将保存设置以备将来打开声音设备。

如果声音设备当前未处于活动状态,则仅会更改默认的AEC设置,并且下次打开声音设备时将进行设置。

参数

tail_msec - 尾长度,以毫秒为单位。设置为零以禁用AEC。

options - 要传递给pjmedia_echo_create()的选项。通常值应为零。

25)unsigned getEcTail() const

获取当前的回声消除器尾部长度。

返回

EC尾部长度(以毫秒为单位),如果禁用AEC,则该值将为零。

26) bool sndIsActive() const

检查声音设备当前是否处于活动状态。

如果应用程序已经设置自动关闭功能非零(在sndAutoCloseTime设定声音设备可以是不活动MediaConfig),或者如果空声音设备或声音设备已经经由配置setNoDev()函数。

27)void refreshDevs()

刷新系统中安装的声音设备列表。

此方法只会刷新音频设备列表,因此所有活动音频流将不受影响。刷新设备列表后,应用程序必须确保在调用任何接受音频设备索引的方法作为参数之前,更新对音频设备的所有索引引用。

28)unsigned getDevCount() const

获取系统中安装的声音设备的数量。

返回

安装在系统中的声音设备的数量。

29)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 setExtFormatconst MediaFormatAudioformat,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 fromPjconst pjmedia_aud_dev_info&dev_info 

从pjmedia_aud_dev_info构造。

56)~AudioDevInfo()

析构器

公有变量

57) string name

设备名称。

58)unsigned inputCount

此设备支持的最大输入通道数。

如果该值为零,则该设备不支持输入操作(即它仅是播放设备)。

59)unsigned outputCount

此设备支持的最大输出通道数。

如果值为零,则该设备不支持输出操作(即它是仅输入设备)。

60)unsigned defaultSamplesPerSec

默认采样率。

61) string driver

底层的驱动程序名称。

62)unsigned caps

设备功能,作为pjmedia_aud_dev_cap的位掩码组合。

63)unsigned routes

支持的音频设备路由,作为pjmedia_aud_dev_route的位掩码组合。

如果设备不支持音频路由,该值可能为零。

64)MediaFormatVectorextFmt

支持的扩展音频格式数组。

12.3.3 class AudioMedia

#include <media.hpp>

音频媒体

pj :: Media继承

子类有pj :: AudioMediaPlayerpj :: AudioMediaRecorderpj :: ToneGenerator

公有函数

65)ConfPortInfogetPortInfo() const

获取有关指定会议端口的信息。

66)INT getPortId() const

获取端口ID。

67) void startTransmitconst  AudioMedia sink ) const

建立单向媒体流下沉。

该媒体端口将作为源,它可以传输到多个目的地/汇。并且如果多个源传输到同一个接收器,则媒体将被混合在一起。源和汇可以引用相同的媒体,有效地循环媒体。

如果需要双向媒体流,应用程序需要调用此方法两次,第二个来自相对的源媒体。

参数

sink - 目的地媒体

68) void stopTransmitconst  AudioMedia sink ) const

停止媒体流到目的地/汇聚端口。

参数

sink - 目的地媒体。

69)void adjustRxLevel( float level 

通过使其更大或更安静,调整要从桥梁传输到该介质端口的信号电平。

参数

level - 信号电平调整。值12.0表示无电平调整,值0表示使端口静音。

70)void adjustTxLevel( float level 

通过使其更大或更安静地调整从该媒体端口(到桥接器)接收的信号电平。

参数

level - 信号电平调整。值1.0表示无电平调整,值0表示使端口静音。

71)unsigned getRxLevel() const

获取最后收到的信号电平。

返回

信号电平百分比。

72)unsigned getTxLevel() const

获取最后传输的信号电平。

返回

信号电平百分比。

73)virtual  ~AudioMedia()

virtual 析构函数

公共静态函数

74)static ConfPortInfogetPortInfoFromId( int port_id 

从特定端口ID获取信息。

75)static AudioMedia *typecastFromMedia(Media *media)

从基类媒体转换类型。

这对于诸如Python不支持向下转换类型的语言编写的应用程序很有用。

返回

该对象为AudioMedia实例

参数

media - 要被转换的对象

受保护函数

76)AudioMedia()

默认构造函数

77)void registerMediaPortMediaPort port

该方法需要由此类的后代调用,以将创建的媒体端口注册到会议桥和端点的媒体列表。

param将要注册的媒体端口连接到会议桥。

78)void unregisterMediaPort()

该类的后代需要调用此方法,以从会议桥和端点的媒体列表中删除媒体端口。

如果已将注册的媒体与以前的registerMediaPort()调用注册,则后代应该只调用此方法。

受保护的属性

79)INT id

会议端口号

80)私有变量

(1)pj_caching_pool mediaCachingPool
(2)pj_pool_t * mediaPool

12.3.4 class AudioMediaPlayer

#include <media.hpp>

音频媒体播放器

pj :: AudioMedia继承

公有函数

81)AudioMediaPlayer()

构造函数

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

创建文件播放器,并自动将此播放器添加到会议桥。

参数

file_name - 要播放的文件名 目前仅支持WAV文件,WAV文件必须格式化为16bit PCM单声道/单声道(支持任何时钟频率)。

options - 可选选项标志。应用程序可以指定PJMEDIA_FILE_NO_LOOP以防止回放循环。

83)void createPlaylistconst StringVectorfile_namesconst string&label =“”,unsigned options = 0 )

创建文件播放列表媒体端口,并自动将端口添加到会议桥。

参数

file_names - 要添加到播放列表的文件名数组。请注意,文件必须具有相同的时钟速率,通道数和每个样本的位数。

label - 为媒体端口设置的可选标签。

options - 可选选项标志。应用程序可以指定PJMEDIA_FILE_NO_LOOP以防止循环。

84)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 * typecastFromAudioMediaAudioMedia * media 

来自基类AudioMedia的 Typecast 。

这对于诸如Python不支持向下转换类型的语言编写的应用程序很有用。

返回

该对象为AudioMediaPlayer实例

参数

media - 要被转换的对象

90)私有变量

(3)INT playerId

播放器ID

91)私有静态函数

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

低级别PJMEDIA回调。

12.3.5 struct AudioMediaPlayerInfo

#include <media.hpp>

此结构包含有关AudioMediaPlayer的附加信息。

公有变量

92)pjmedia_format_id formatId

有效载荷的格式ID。

93)unsigned payloadBitsPerSample

文件有效载荷的每个样本的位数。

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

94)pj_uint32_t sizeBytes

WAV有效载荷大小(以字节为单位)。

95)pj_uint32_t sizeSamples

样品中的WAV有效载荷大小。

12.3.6 class AudioMediaRecorder

#include <media.hpp>

音频媒体记录器

pj :: AudioMedia继承

公有函数

96)AudioMediaRecorder()

构造函数

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

创建文件记录器,并自动将此录音机连接到会议桥。

录音机目前支持录制WAV文件。要使用的录像机的类型由文件的扩展名(例如“.wav”)决定。

参数

file_name - 输出文件名。该功能将根据文件扩展名确定要使用的默认格式。目前所有平台都支持“.wav”。

enc_type - 可选择指定要用于压缩介质的编码器类型,如果文件可以支持不同的编码。现在该值必须为零。

max_size - 最大文件大小 指定零或-1以删除大小限制。此值现在必须为零或-1。

options - 可选选项,可用于指定录制文件格式。支持的选项有PJMEDIA_FILE_WRITE_PCM,PJMEDIA_FILE_WRITE_ALAW和PJMEDIA_FILE_WRITE_ULAW。默认值为零或PJMEDIA_FILE_WRITE_PCM。

98)virtual  ~AudioMediaRecorder()

析构器

公共静态函数

99)static AudioMediaRecorder * typecastFromAudioMediaAudioMedia * media 

来自基类AudioMedia的 Typecast 。

这对于诸如Python不支持向下转换类型的语言编写的应用程序很有用。

返回

该对象为AudioMediaRecorder实例

参数

media - 要被转换的对象

100)私有变量

(5)INT recorderId

记录器ID。

12.3.7 struct CodecFmtp

#include <media.hpp>

编解码器特定参数的结构,其中包含name = value对。

编解码器特定参数将根据SDP'a = fmtp'属性中的标准(例如:RFC 3555)与SDP一起使用。

公有变量

101) string name

102) string val

12.3.8 struct CodecInfo

#include <media.hpp>

该结构描述了编解码信息。

公有函数

103)void fromPjconst pjsua_codec_info&codec_info 

从pjsua_codec_info构造。

公有变量

104) string codecId

编解码器独特识别。

105)pj_uint8_t priority

编解码器优先级(0-255整数)。

106) string desc

编解码器描述。

12.3.9 struct ConfPortInfo

#include <media.hpp>

此结构描述了已注册到会议桥中的特定媒体端口的信息。

公有函数

107)void fromPjconst pjsua_conf_port_info&port_info 

从pjsua_conf_port_info构造。

公有变量

108)INT portId

会议端口号。

109) string name

端口名称。

110)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>

媒体

pj :: AudioMedia进行子类化

公有函数

114)virtual  ~Media()

virtual 析构函数

115)pjmedia_type getType() const

获取媒体类型。

返回

Media类型。

受保护功能

116)Media( pjmedia_type med_type 

构造函数

117)私有变量

(6)pjmedia_type type

媒体类型

12.3.11 struct MediaCoordinate

#include <media.hpp>

Media协调表示

公有变量

118)INT x

坐标的X位置。

119)INT y

坐标的Y位置。

12.3.12 struct MediaFormat

#include <media.hpp>

此结构包含完全描述媒体所需的所有信息。

pj :: MediaFormatAudiopj :: MediaFormatVideo子类化

公有变量

120)pj_uint32_t id

指定音频采样或视频像素格式的格式ID。

一些众所周知的格式ids在pjmedia_format_id枚举中声明。

参考pjmedia_format_id

121)pjmedia_type type

最*的媒体类型,作为信息。

12.3.13 struct MediaFormatAudio

#include <media.hpp>

该结构描述了有关音频媒体的详细信息。

继承自pj :: MediaFormat

公有函数

122)void fromPjconst pjmedia_format&format 

从pjmedia_format构造。

123)pjmedia_format toPj() const

导出到pjmedia_format。

公有变量

124)unsigned clockRate

样品中的音频时钟频率或Hz。

125)unsigned channelCount

频道数量

126)unsigned frameTimeUsec

帧间隔,以微秒为单位。

127)unsigned bitsPerSample

每个样品的位数。

128)pj_uint32_t avgBps

平均比特率

129)pj_uint32_t maxBps

最大比特率

12.3.14 struct MediaFormatVideo

#include <media.hpp>

该结构描述了有关视频媒体的详细信息。

继承自pj :: MediaFormat

公有函数

130)void fromPjconst pjmedia_format&format 

从pjmedia_format构造。

131)pjmedia_format toPj() const

导出到pjmedia_format。

公有变量

132)unsigned width

视频宽度。

133)unsigned height

视频高度

134)INT fpsNum

每分钟帧数。

135)INT fpsDenum

每秒帧数。

136)pj_uint32_t avgBps

平均比特率

137)pj_uint32_t maxBps

最大比特率

12.3.15 struct MediaSize

#include <media.hpp>

Media大小的表示

公有变量

138)unsigned w

宽度。

139)unsigned h

高度。

12.3.16 class ToneDesc

#include <media.hpp>

Tone描述符(pjmedia_tone_desc的抽象)

从pjmedia_tone_desc继承

公有函数

140)ToneDesc()

~ToneDesc()

12.3.17 class ToneDigit

#include <media.hpp>

音调数字(pjmedia_tone_digit的抽象)

从pjmedia_tone_digit继承

公有函数

141)ToneDigit()

142)~ToneDigit()

12.3.18 struct ToneDigitMapDigit

#include <media.hpp>

音数位图中的数字。

公有变量

143) string digit

144)INT freq1

145)INT freq2

12.3.19 class ToneGenerator

#include <media.hpp>

音调发生器。

pj :: AudioMedia继承

公有函数

146)ToneGenerator()

构造函数

147)~ToneGenerator()

析构器

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

创建音源

149) bool isBusy() const

检查音频发生器是否仍然生成一些音调。

返回

忙碌时非零。

150)void stop()

指示音发生器停止当前处理。

151)void rewind()

回放播放。

这将开始播放到播放列表中的第一个音调。

152)void playconst ToneDescVectortone,bool loop = false )

指示音频发生器播放具有指定持续时间的单频或双频音调。

除了在调用此函数之前调用stop()之外,新的音调将被追加到当前播放的音色中。一旦音调发生器连接到其他媒体,播放就会开始。

参数

tones - 要播放的音色数组

loop - 在循环中播放音调。

153)void playDigitsconst ToneDigitVectordigits,bool loop = false )

指示音发生器播放多个MF数字,每个数字具有单独的开/关持续时间。

数位数组中的每位数字必须在数位图中具有相应的描述符。除了在调用此函数之前调用stop()之外,新的音调将被追加到当前播放的音色中。一旦音源发生器连接到 sink 介质,播放就会开始。

参数

digits - MF数位数组。

loop - 在循环中播放音调。

154)ToneDigitMapVectorgetDigitMap() const

获取此音调发生器当前使用的数位图。

返回

音色发生器当前使用的数字图

155)void setDigitMapconst ToneDigitMapVectordigit_map 

设置音色发生器使用的数字图。

参数

digit_map - 数字地图由音调发生器使用。

156)私有变量

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

12.3.20 struct VidCodecParam

#include <media.hpp>

用于配置编解码器和查询编解码器工厂能力的详细编解码器属性。

请注意,编解码器参数还包含SDP特定设置,decFmtpencFmtp,可能需要根据有效设置进行适当设置。有关详细信息,请参阅每个编解码器文档。

公有函数

157)void fromPjconst pjmedia_vid_codec_param&param 

158)pjmedia_vid_codec_param toPj() const

公有变量

159)pjmedia_dir dir

方向。

160)pjmedia_vid_packing packing

分组策略

12.3.21 struct  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 setCodecFmtpconst pjmedia_codec_fmtp&in_fmtpCodecFmtpVectorout_fmtp 
(11) void getCodecFmtpconst  CodecFmtpVectorin_fmtp,pjmedia_codec_fmtp&out_fmtp ) const

12.3.23 class VidDevManager

#include <media.hpp>

视频设备管理器。

公有函数

166)void refreshDevs()

刷新系统中安装的视频设备列表。

此功能只会刷新视频设备列表,因此所有活动的视频流将不受影响。刷新设备列表后,应用程序必须确保在调用任何接受视频设备索引的函数作为参数之前,更新对视频设备的所有索引引用(即pjmedia_vid_dev_index类型的所有变量)。

167)unsigned getDevCount()

获取系统中安装的视频设备数量。

返回

设备数量。

168)VideoDevInfogetDevInfo( INT dev_id ) const

检索指定设备索引的视频设备信息。

返回

视频设备信息列表

参数

dev_id - 视频设备ID

169)const VideoDevInfoVectorenumDev()

枚举系统中安装的所有视频设备。

返回

视频设备信息列表

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

根据驱动程序和设备名称查找设备索引。

返回

设备ID。如果没有找到设备,将会抛出错误

参数

drv_name - 驱动名称。

dev_name - 设备名称。

171)string capName( pjmedia_vid_dev_cap  cap ) const

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

返回

能力名称

参数

cap - 能力ID。

172)void setFormat( int dev_idconst MediaFormatVideoformat,bool keep 

这将配置视频设备的视频格式功能。

如果视频设备当前处于活动状态,则该方法会将设置转发到要立即应用的视频设备实例,如果它支持。

该方法仅在设备在VideoDevInfo.caps标志中具有PJMEDIA_VID_DEV_CAP_FORMAT功能时有效,否则将抛出错误

请注意,如果设置保留将来使用,即使应用程序更改了要使用的视频设备,也将应用于任何设备。

参数

dev_id - 视频设备ID。

format - 视频格式。

keep - 指定设置是否保留以备将来使用。

173)MediaFormatVideogetFormat( INT dev_id ) const

获取视频设备的视频格式功能。

如果视频设备当前处于活动状态,则将该请求转发给视频设备。如果视频设备当前处于非活动状态,并且如果应用程序以前设置了设置并将设置标记为已保留,那么该设置将被返回。否则,这种方法会引起错误。

该方法仅在设备在VideoDevInfo.caps标志中具有PJMEDIA_VID_DEV_CAP_FORMAT功能时有效,否则将抛出错误

返回

保持视频格式。

参数

dev_id - 视频设备ID。

174)void setInputScale( int dev_idconst MediaSizescale,bool keep 

这将配置视频设备的视频格式功能。

如果视频设备当前处于活动状态,则该方法会将设置转发到要立即应用的视频设备实例,如果它支持。

该方法仅在设备在VideoDevInfo.caps标志中具有PJMEDIA_VID_DEV_CAP_INPUT_SCALE功能时有效,否则将抛出错误

请注意,如果设置保留将来使用,即使应用程序更改了要使用的视频设备,也将应用于任何设备。

参数

dev_id - 视频设备ID。

scale - 视频比例。

keep - 指定设置是否保留以备将来使用。

175)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_idconst VideoSwitchParamparam 

这将配置快速切换到另一个视频设备。

如果视频设备当前处于活动状态,则该方法会将设置转发到要立即应用的视频设备实例,如果它支持。

该方法仅在设备在VideoDevInfo.caps标志中具有PJMEDIA_VID_DEV_CAP_SWITCH功能时有效,否则将抛出错误

参数

dev_id - 视频设备ID。

param - 视频切换参数

179) bool isCaptureActive( INT dev_id ) const

检查视频捕获设备当前是否处于活动状态,即

如果视频预览已经开始,或者使用该设备进行视频通话。

返回

如果它是活跃的,则为真。

参数

dev_id - 视频设备ID

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

这将配置视频捕获设备的视频方向。

如果设备当前处于活动状态(即如果使用该设备进行视频通话或视频预览已启动),则该方法会将设置转发到视频设备实例,以便立即应用于支持视频设备实例。

如果“保持”参数设置为true,该设置将被保存以供将来打开视频设备。如果视频设备当前处于非活动状态,并且“保持”参数为false,则此方法将抛出错误

参数

dev_id - 视频设备ID

orient - 视频方向。

keep - 指定设置是否保留以备将来使用。

181)私有函数

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

构造函数

(14)~VidDevManager()

析构器

182)私有变量

(15)VideoDevInfoVectorvideoDevList

friend

(16)friend pj::Endpoint

12.3.24 struct VideoDevInfo

#include <media.hpp>

视频设备信息结构。

公有函数

183)void fromPjconst pjmedia_vid_dev_info&dev_info 

从pjmedia_vid_dev_info构造。

184)~VideoDevInfo()

析构器

公有变量

185)pjmedia_vid_dev_index id

设备ID。

186) string name

设备名称。

187) string driver

底层的驱动程序名称。

188)pjmedia_dir dir

支持的视频设备方向,即

是否仅支持捕获,仅渲染或两者兼容。

189)unsigned caps

设备功能,作为#pjmedia_vid_dev_cap的位掩码组合。

190)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 startconst VideoPreviewOpParamparam 

启动指定捕获设备的视频预览窗口。

参数

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 fromPjconst pjsua_vid_preview_param&prm 

从pjsip转换

199)pjsua_vid_preview_param toPj() const

转换为pjsip。

公有变量

200)pjmedia_vid_dev_index rendId

用于渲染捕获流以进行预览的视频渲染器的设备ID。

如果使用本机预览,则忽略此参数。

默认:PJMEDIA_VID_DEFAULT_RENDER_DEV

201) bool show

最初显示窗口。

默认值:PJ_TRUE。

202)unsigned windowFlags

窗口标志

该值是pjmedia_vid_dev_wnd_flag的位掩码组合

默认值:0。

203)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 setPosconst MediaCoordinatepos 

设置视频窗口位置。

此操作对于本机窗口(VideoWindowInfo.isNative = true)无效,必须使用本机窗口API。

参数

pos - 窗口位置。

210)void setSizeconst MediaSizesize 

调整窗口大小。

此操作对于本机窗口(VideoWindowInfo.isNative = true)无效,必须使用本机窗口API。

参数

size - 新的窗口大小。

211)void rotate( int angle 

旋转视频窗口。

此功能将改变视频方向,也可能会改变视频窗口大小(宽度和高度被交换)。此操作对于本机窗口(VideoWindowInfo.isNative = true)无效,必须使用本机窗口API。

参数

angle - 旋转角度(以度为单位)必须为90度的倍数。指定顺时针旋转的正值或逆时针旋转的负值。

212)void setWindowconst VideoWindowHandlewin 

设置输出窗口。

此操作仅在底层视频设备支持PJMEDIA_VIDEO_DEV_CAP_OUTPUT_WINDOW功能并且允许输入窗口即时更改时才有效,否则将抛出错误。目前,它仅在Android上受支持。

参数

win - 新的输出窗口。

私有变量

pjsua_vid_win_id winId

struct VideoWindowHandle

#include <media.hpp>

视频窗口句柄。

公有变量

213)pjmedia_vid_dev_hwnd_type type

窗口句柄类型。

214)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>

Call

公有函数

5)CallAccountacc,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 setUserDataTokenuser_data 

将应用程序特定数据附加到呼叫。

应用程序可以通过调用getUserData()来检查此数据。

参数

user_data - 要附加到任意数据。

14)Token getUserData() const

获取附加到呼叫的用户数据,以前使用setUserData()设置。

返回

用户数据。

15)pj_stun_nat_type getRemNatType()

获取远程端点的NAT类型。

这是PJSUA-LIB的一个专有功能,当在UaConfig中设置natTypeInSdp时,它将其NAT类型发送到SDP 。

只有在从远程接收到SDP之后才能调用此功能,这意味着对于来电,只要来电包含SDP,就可以在收到呼叫时立即调用此功能,对于拨出呼叫,此功能只能被调用SDP接收后(通常为200 / OK响应INVITE)。作为一般情况,应用程序应该在onCallMediaState()回调之后或之后调用此函数。

返回

NAT类型。

参考Endpoint :: natGetType(),natTypeInSdp

16)void makeCallconst string&dst_uriconst CallOpParamprm 

拨出电话给指定的URI。

参数

dst_uri - 要放入To头的URI(通常与目标URI相同)。

prm.opt - 可选呼叫设置。

prm.txOption - 可选标题等待添加到发出的INVITE请求。

17)void answerconst CallOpParamprm 

通过呼叫设置参数发送对INVITE请求的响应。

根据指定为参数的状态码,此功能可能发送临时响应,建立呼叫或终止呼叫。有关通话设置的注意事项:

  • 如果在此功能的后续呼叫中更改呼叫设置,则仅应用提供的第一个呼叫设置。因此,一般来说,应用程序在从用户获得确认之前不会提供呼叫设置。
  • 如果SDP不能发送,则不提供呼叫设置,即:使用状态码183或2xx进行应答,将使用默认呼叫设置,检查CallSetting的默认值。

参数

prm.opt - 可选呼叫设置。

prm.statusCode - 状态码,(100-699)。

prm.reason - 可选原因短语。如果为空,将使用默认文本。

prm.txOption - 要添加到传出响应消息的标题等的可选列表。请注意,此消息数据将在此INVITE请求的所有下一个答案/响应中持续存在。

18)void hangupconst CallOpParamprm 

通过使用根据呼叫状态适当的方法挂断呼叫。

此功能与使用3xx-6xx响应(with answer()应答呼叫不同,因为该功能将挂断呼叫,而不管呼叫的状态和角色如何,而answer()仅适用于EARLY状态下的来电。

参数

prm.statusCode - 我们拒绝来电时可以发送的可选状态码。如果值为零,将发送“603 / Decline”。

prm.reason - 我们拒绝来电时可以选择发送的原因短语。如果为空,将使用默认文本。

prm.txOption - 要添加到传出请求/响应消息的标题等的可选列表。

19)void setHoldconst CallOpParamprm 

将指定的呼叫置于保持状态。

这将发送re-INVITE与适当的SDP通知遥控器呼叫被搁置。请求本身的最终状态将在onCallMediaState()回调中报告,该回调通知应用程序呼叫的媒体状态已更改。

参数

prm.options - pjsua_call_flag常量的位掩码。目前,只能使用标志PJSUA_CALL_UPDATE_CONTACT。

prm.txOption - 与请求一起发送的可选消息组件。

20)void reinviteconst CallOpParamprm 

发送re-INVITE。

请求本身的最终状态将在onCallMediaState()回调中报告,该回调通知应用程序呼叫的媒体状态已更改。

参数

prm.opt - 可选呼叫设置,如果为空,当前呼叫设置将保持不变。

prm.opt.flag - pjsua_call_flag常量的位掩码。在此指定PJSUA_CALL_UNHOLD将释放呼叫保持。

prm.txOption - 与请求一起发送的可选消息组件。

21)void updateconst CallOpParamprm 

发送UPDATE请求。

参数

prm.opt - 可选呼叫设置,如果为空,当前呼叫设置将保持不变。

prm.txOption - 与请求一起发送的可选消息组件。

22)void xferconst string&destconst CallOpParamprm 

启动呼叫转移到指定的地址。

该功能将发送REFER请求,指示远程呼叫方向指定的目的地/目标发起新的INVITE会话。

如果应用程序有兴趣监视传输请求的成功性和进度,它可以实现onCallTransferStatus()回调,它将报告呼叫转移请求的进度。

参数

dest - 要联系的新目标的URI。URI可以是名称地址或addr-spec格式。

prm.txOption - 与请求一起发送的可选消息组件。

23)void xferReplacesconst Calldest_callconst CallOpParamprm 

发起参加呼叫转移。

该功能将发送REFER请求,指示远程呼叫方向destCall的URL发起新的INVITE会话。dest_call的一方应该用“REFER”接收方的新呼叫“替换”我们的呼叫。

参数

dest_call - 呼叫被替换。

prm.options - 应用程序可以指定PJSUA_XFER_NO_REQUIRE_REPLACES以阻止在REFER请求创建的传出INVITE请求中包含“Require:replace”。

prm.txOption - 与请求一起发送的可选消息组件。

24)void processRedirect( pjsip_redirect_op cmd 

接受或拒绝重定向响应。

应用程序在onCallRedirected()回调函数中通知PJSIP_REDIRECT_PENDING后,必须调用此函数,以通知调用是接受还是拒绝重定向到当前目标。应用程序可以使用onCallRedirected()回调中的PJSIP_REDIRECT_PENDING命令的组合,并且此功能在重定向呼叫之前请求用户权限。

请注意,如果应用程序选择拒绝或停止重定向(通过分别使用PJSIP_REDIRECT_REJECT或PJSIP_REDIRECT_STOP),则此函数返回之前将调用呼叫断开回调。并且如果应用程序拒绝目标,如果还有另外一个目标要尝试,那么onCallRedirected()回调也可以在此函数返回之前被调用。

参数

cmd - 要应用于当前目标的重定向操作。该参数的语义与onCallRedirected()回调中的描述类似,不同之处在于PJSIP_REDIRECT_PENDING不被接受。

25)void dialDtmfconst string&digits 

使用RFC 2833有效载荷格式将DTMF数字发送到远程。

参数

digits - 要发送的DTMF字符串数字。

26)void sendInstantMessageconst SendInstantMessageParamprm 

在INVITE会话中发送即时消息。

参数

prm.contentType - MIME类型。

prm.content - 消息内容。

prm.txOption - 要包括在传出请求中的标题等的可选列表。txOption中的body描述符被忽略。

prm.userData - 可选的用户数据,在调用IM回调时将返回。

27)void sendTypingIndicationconst SendTypingIndicationParamprm 

在INVITE会话中发送IM打字指示。

参数

prm.isTyping - 确实是为了向远方指示当地人当前正在键入IM。

prm.txOption - 要包括在传出请求中的标题等的可选列表。

28)void sendRequestconst CallSendRequestParamprm 

发送任意请求与呼叫。

这对于发送INFO请求是有用的。请注意,应用程序不应该使用此函数发送将更改邀请会话状态的请求,例如re-INVITE,UPDATE,PRACK和BYE。

参数

prm.method - 请求的SIP方法。

prm.txOption - 可选消息体和/或要包括在传出请求中的头部列表。

29)string dump( bool with_mediaconst string indent 

将呼叫和媒体统计信息转储为字符串。

返回

调用转储和媒体统计字符串。

参数

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

indent - 左缩进的空格。

30)INT vidGetStreamIdx() const

获取通话中默认视频流的媒体流索引。

通常这将只是检索呼叫中第一个激活的视频流的流索引。如果没有活动,它将返回第一个不活动的视频流。

返回

Media流索引为-1,如果没有视频流存在于呼叫中。

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

确定指定呼叫的视频流当前是否正在运行(即,

已被创建,启动,不被暂停)。

返回

如果目前正在为指定的方向运行流,则为真。

参数

med_idx - 媒体流索引,或-1表示默认视频媒体。

dir - 要检查的方向。

32)void vidSetStream( pjsua_call_vid_strm_op opconst CallVidSetStreamParamparam 

为指定的呼叫添加,删除,修改和/或操纵视频媒体流。

这可能会触发重新启动或更新以发送呼叫。

参数

op - 要执行的视频流操作,可能的值是pjsua_call_vid_strm_op。

param - 视频流操作的参数(请参阅CallVidSetStreamParam)。

33)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 processMediaUpdateOnCallMediaStateParamprm 

内部函数(由端点调用(当调用媒体状态更改时处理更新以调用媒体。

37)void processStateChangeOnCallStateParamprm 

内部函数(由端点调用)处理调用状态更改。

38)virtual  void onCallStateOnCallStateParamprm 

呼叫状态发生变化时通知应用程序。

应用程序可以通过调用getInfo()函数来查询呼叫信息以获取详细调用状态。

参数

prm - 回调参数

39)virtual  void onCallTsxStateOnCallTsxStateParamprm 

这是一个通用回调,当呼叫中的一个事务已经改变状态时被调用。

例如,应用程序可以实现此回调,以监视传出请求的状态,或者以最终响应回答未处理的传入请求(如INFO)。

参数

prm - 回调参数

40)virtual  void onCallMediaStateOnCallMediaStateParamprm 

当通话中的媒体状态发生变化时通知应用程序。

正常应用需要实现这种回调,例如将呼叫的媒体连接到声音设备。当使用ICE时,也会调用此回调来报告ICE协商失败。

参数

prm - 回调参数

41)virtual  void onCallSdpCreatedOnCallSdpCreatedParamprm 

当呼叫刚刚创建本地SDP(用于初始或随后的SDP报价/答案)时通知应用程序。

应用程序可以在远程SDP发送和/或协商之前实施此回调来修改SDP,例如,以每个帐户/呼叫基础编解码器优先级应用或添加自定义/专有SDP属性。

参数

prm - 回调参数

42)virtual  void onStreamCreatedOnStreamCreatedParamprm 

在创建媒体会话之前,注册到会议桥之前通知应用程序。

如果已将媒体处理端口添加到流中,应用程序可能会返回不同的媒体端口。然后,这个媒体端口将被添加到会议桥。

参数

prm - 回调参数

43)virtual  void onStreamDestroyedOnStreamDestroyedParamprm 

Media会议从会议桥被注销并被销毁时通知应用程序。

参数

prm - 回调参数

44)virtual  void onDtmfDigitOnDtmfDigitParamprm 

传入DTMF数字时通知应用程序。

参数

prm - 回调参数

45)virtual  void onCallTransferRequestOnCallTransferRequestParamprm 

通知申请被转移(即

REFER被接收)。应用程序可以通过设置代码来决定接受/拒绝传输请求(默认为202)。当此回调未实现时,默认行为是接受转移。

参数

prm - 回调参数

46)virtual  void onCallTransferStatusOnCallTransferStatusParamprm 

通知应用以前发送的呼叫转移请求的状态。

应用程序可以监视呼叫转移请求的状态,例如决定是否终止现有呼叫。

参数

prm - 回调参数

47)virtual  void onCallReplaceRequestOnCallReplaceRequestParamprm 

通过替换标题通知有关INVITE的应用程序。

应用程序可以通过设置非2xx代码来拒绝该请求。

参数

prm - 回调参数

48)virtual  void onCallReplacedOnCallReplacedParamprm 

通知应用程序现有呼叫已被新呼叫替换。

当PJSUA-API使用Replaces标头接收到INVITE请求时,会发生这种情况。

调用此回调后,通常PJSUA-API将断开此调用并建立新的调用newCallId

参数

prm - 回调参数

49)virtual  void onCallRxOfferOnCallRxOfferParamprm 

当通话接收到来自遥控器的新报价时通知应用程序(即

接收到使用SDP的re-INVITE / UPDATE)。应用程序可以通过设置代码来决定接受/拒绝报价(默认为200)。如果报价被接受,应用程序可以更新应答的通话设置。当此回调未实现时,默认行为是接受使用当前通话设置的报价。

参数

prm - 回调参数

50)virtual  void onCallTxOfferOnCallTxOfferParamprm 

通话时通知应用程序接收到没有SDP报价的INVITE。

应用程序可以更新呼叫设置(例如:添加音频/视频),或启用/禁用编解码器,或者从回调内更新其他媒体会话设置,但是,如标准(RFC3261第14.2节)所规定的那样,它必须确保更新与需要对等体支持的现有媒体会话(编解码器,传输或其他参数)重叠,这是为了避免对等体拒绝该提议。

当不执行此回调时,默认行为是使用当前活动媒体会话发送SDP报价(每个媒体类型上都有所有启用的编解码器)。

参数

prm - 回调参数

51)virtual  void onInstantMessageOnInstantMessageParamprm 

通知输入MESSAGE请求的应用程序。

参数

prm - 回调参数

52)virtual  void onInstantMessageStatusOnInstantMessageStatusParamprm 

通知应用程序关于传出MESSAGE请求的传送状态。

参数

prm - 回调参数

53)virtual  void onTypingIndicationOnTypingIndicationParamprm 

通知应用程序打字指示。

参数

prm - 回调参数

54)virtual  pjsip_redirect_op onCallRedirectedOnCallRedirectedParamprm 

当呼叫即将重新发送INVITE请求到指定的目标时,调用此回调,遵循先前接收到的重定向响应。

应用程序可以接受重定向到指定的目标,仅拒绝此目标,并使会话继续尝试列表中的下一个目标,如果此类目标存在,则完全停止整个重定向过程,并导致会话断开或延迟决定要求用户确认。

此回调是可选的,默认行为是不遵循重定向响应。

返回

为目标执行的行动。将此参数设置为以下值之一:

  • PJSIP_REDIRECT_ACCEPT:立即接受重定向。设置后,呼叫将立即重新发送INVITE请求给目标。
  • PJSIP_REDIRECT_ACCEPT_REPLACE:立即接受重定向,并将To标题替换为当前目标。设置后,呼叫将立即重新发送INVITE请求给目标。
  • PJSIP_REDIRECT_REJECT:立即拒绝此目标。如果存在,则呼叫将继续重试下一个目标,如果没有更多目标尝试,则断开该呼叫。
  • PJSIP_REDIRECT_STOP:停止整个重定向过程,并立即断开通话。在此回调返回后,onCallState()回调将被调用PJSIP_INV_STATE_DISCONNECTED状态。
  • PJSIP_REDIRECT_PENDING:如果不能立即作出决定(例如要求用户确认),则设置为此值。应用程序必须调用processRedirect()来在获取用户决定之后接受或拒绝重定向。

参数

prm - 回调参数

55)virtual  void onCallMediaTransportStateOnCallMediaTransportStateParamprm 

当媒体传输状态更改时,将调用此回调。

参数

prm - 回调参数

56)virtual  void onCallMediaEventOnCallMediaEventParamprm 

有关媒体事件(例如视频通知)的通知。

这种回调很可能是从媒体线程调用的,所以应用程序不能在这个回调中执行大量的处理。特别是,应用程序不得在此回调中销毁呼叫或媒体。如果应用程序需要执行更复杂的任务来处理事件,则应将任务发布到另一个线程。

参数

prm - 回调参数

57)virtual  void onCreateMediaTransportOnCreateMediaTransportParamprm 

应用程序可以使用此回调来实现呼叫的自定义媒体传输适配器,或者使用完全全新的媒体传输替换媒体传输。

创建新呼叫时调用此回调。该库已经为该调用创建了一个媒体传输,并且作为该回调的mediaTp参数提供。回调可能会随媒体传输的实例而改变,以便呼叫使用。

参数

prm - 回调参数

58)virtual  void onCreateMediaTransportSrtpOnCreateMediaTransportSrtpParamprm 

当创建SRTP媒体传输时,将调用此回调。

应用程序可以修改SRTP设置srtpOpt来指定要使用的密码和密钥。请注意,应用程序不应修改字段pjmedia_srtp_setting.close_member_tp,并且只能修改初始INVITE 的字段pjmedia_srtp_setting.use

参数

prm - 回调参数

公共静态函数

59)static Call * lookup( int call_id 

获取指定呼叫ID 的呼叫类。

返回

呼叫实例或NULL,如果没有找到。

参数

call_id - 要查找的呼叫ID

60)私有变量

(18)Account &acc
(19)pjsua_call_id id
(20)Token userData
(21)std :: vector < Media *> medias

12.4.2 struct CallInfo

#include <call.hpp>

来电信息。

应用程序可以通过调用Call :: getInfo ()来查询呼叫信息。

公有函数

61)void fromPjconst pjsua_call_info&pci 

从pjsip转换

公有变量

62)pjsua_call_id id

呼叫识别。

63)pjsip_role_e role

初始调用角色(UAC == caller)

64)pjsua_acc_id accId

此呼叫所属的帐户ID。

65) string localUri

本地URI。

66) string localContact

本地联系人。

67) string remoteUri

远程URI。

68) string remoteContact

远程联系

69) string callIdString

Dialog Call-ID字符串。

70)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 fromPjconst pjsua_call_media_info&prm 

从pjsip转换

公有变量

84)unsigned index

SDP媒体指数

85)pjmedia_type type

媒体类型

86)pjmedia_dir dir

媒体方向。

87)pjsua_call_media_status status

呼叫媒体状态。

88)INT audioConfSlot

呼叫的会议端口号。

仅当媒体类型为音频时才有效。

89)pjsua_vid_win_id videoIncomingWindowId

传入视频的窗口ID(如果有)或PJSUA_INVALID_ID。

仅当媒体类型为视频时才有效。

90)VideoWindow videoWindow

用于传入视频的视频窗口实例。

仅当videoIncomingWindowId不是PJSUA_INVALID_ID且媒体类型是视频时才有效。

91)pjmedia_vid_dev_index videoCapDev

用于传出传输的视频捕获设备(如果有的话)或PJMEDIA_VID_INVALID_DEV。

仅当媒体类型为视频时才有效。

12.4.4 struct CallOpParam

#include <call.hpp>

此结构包含Call :: answer()Call :: hangup()Call :: reinvite()Call :: update()Call :: xfer()Call :: xferReplaces()Call :: setHold()

公有函数

92)CallOpParam( bool useDefaultCallSetting = false )

默认构造函数用零/空值初始化。

将useDefaultCallSetting设置为true将使用默认呼叫设置值初始化opt。

公有变量

93)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 fromPjconst pjsua_call_setting&prm 

从pjsip转换

103)pjsua_call_setting toPj() const

转换为pjsip。

公有变量

104)unsigned flag

pjsua_call_flag常量的位掩码。

默认值:PJSUA_CALL_INCLUDE_DISABLED_MEDIA

105)unsigned reqKeyframeMethod

此标志控制在呼叫中允许请求关键帧的方法。

值是pjsua_vid_req_keyframe_method的位掩码。

默认值:PJSUA_VID_REQ_KEYFRAME_SIP_INFO | PJSUA_VID_REQ_KEYFRAME_RTCP_PLI

106)unsigned audioCount

此呼叫的同时有效音频流数量。

将其设置为零将禁用此呼叫中的音频。

默认值:1

107)unsigned videoCount

此呼叫同时处于活动视频流的数量。

将此设置为零将禁用此呼叫中的视频。

默认值:1(如果启用了视频功能,否则为零)

12.4.7 struct CallVidSetStreamParam

#include <call.hpp>

此结构包含Call :: vidSetStream()的参数,

公有函数

108)CallVidSetStreamParam()

默认构造函数。

公有变量

109)INT medIdx

指定媒体流索引。

这可以设置为-1以表示呼叫中的默认视频流,即如果没有活动视频流是第一个活动视频流或任何第一个视频流。

除了PJSUA_CALL_VID_STRM_ADD外,此字段对所有视频流操作都有效。

默认值:-1(第一个活动视频流,或任何第一个视频流,如果没有活动)

110)pjmedia_dir dir

指定媒体流方向。

此字段对以下视频流操作有效:PJSUA_CALL_VID_STRM_ADD和PJSUA_CALL_VID_STRM_CHANGE_DIR。

默认值:PJMEDIA_DIR_ENCODING_DECODING

111)pjmedia_vid_dev_index capDev

指定视频捕获设备ID。

这可以设置为PJMEDIA_VID_DEFAULT_CAPTURE_DEV以指定帐户中配置的默认捕获设备。

此字段对以下视频流操作有效:PJSUA_CALL_VID_STRM_ADD和PJSUA_CALL_VID_STRM_CHANGE_CAP_DEV。

默认值:PJMEDIA_VID_DEFAULT_CAPTURE_DEV。

12.4.8 struct JbufState

#include <call.hpp>

此结构描述抖动缓冲状态。

公有函数

112)void fromPjconst pjmedia_jb_state&prm 

从pjsip转换

公有变量

113)unsigned frameSize

单个帧大小,以字节为单位。

114)unsigned minPrefetch

最小允许预取,以frms为单位。

115)unsigned maxPrefetch

最大允许预取,以frms为单位。

116)unsigned burst

当前突发级别,以帧为单位。

117)unsigned prefetch

当前预取值,以帧为单位。

118)unsigned size

当前缓冲区大小,以帧为单位。

119)unsigned avgDelayMsec

平均延迟(以ms为单位)

120)unsigned minDelayMsec

最小延迟(以ms为单位)

121)unsigned maxDelayMsec

最大延迟(以ms为单位)

122)unsigned devDelayMsec

延迟的标准偏差(ms)。

123)unsigned avgBurst

平均突发,以帧为单位。

124)unsigned lost

丢帧数

125)unsigned discard

丢弃帧数。

126)unsigned empty

GET事件上的空数。

12.4.9 struct LossType

#include <call.hpp>

检测到的损失类型。

公有变量

127)unsigned burst

检测到突发/顺序数据包丢失。

128)unsigned random

检测到随机数据包丢失。

12.4.10 struct MathStat

#include <call.hpp>

此结构描述统计状态。

公有函数

129)MathStat()

默认构造函数。

130)void fromPjconst pj_math_stat&prm 

从pjsip转换

公有变量

131)INT n

样品数量

132)INT max

最大值

133)INT min

最小值

134)INT last

最后的价值

135)INT mean

意思

12.4.11 struct MediaEvent

#include <call.hpp>

此结构描述媒体事件。

它对应于pjmedia_event结构。

公有函数

136)void fromPjconst pjmedia_event&ev 

从pjsip转换

公有变量

137)pjmedia_event_type type

事件类型。

138)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 fromPjconst 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

目前被试的目标。

SipEvente

导致此回调的事件被调用。

如果从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 fromPjconst pjmedia_rtcp_sdes&prm 

从pjsip转换

公有变量

186) string cname

RTCP SDES类型CNAME。

187) string name

RTCP SDES类型NAME。

188) string email

RTCP SDES类型EMAIL。

189) string phone

RTCP SDES类型电话。

190) string loc

RTCP SDES类型LOC。

191) string tool

RTCP SDES型工具。

192) string note

RTCP SDES类型注意。

12.4.34 struct RtcpStat

#include <call.hpp>

双向RTP流统计。

公有函数

193)void fromPjconst pjmedia_rtcp_stat&prm 

从pjsip转换

公有变量

194)timeval start

创建会话的时间

195)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 fromPjconst pjmedia_rtcp_stream_stat&prm 

从pjsip转换

公有变量

204)timeval update

上次更新的时间

205)unsigned updateCount

更新数(计算平均)

206)unsigned pkt

总数量。

207)unsigned bytes

总负载/字节数。

208)unsigned discard

丢弃数据包总数。

209)unsigned loss

丢包总数。

210)unsigned reorder

总数不合格的数据包。

211)unsigned dup

重复数据包总数。

212)MathStatlossPeriodUsec

损失期统计。

213)LossTypelossType

检测到的损失类型。

214)MathStatjitterUsec

抖动统计。

12.4.36 struct SdpSession

#include <call.hpp>

该结构描述了SDP会话描述。

它对应于pjmedia_sdp_session结构。

公有函数

215)void fromPjconst pjmedia_sdp_session&sdp 

从pjsip转换

公有变量

216) string wholeSdp

整个SDP作为一个字符串。

217)void * pjSdpSession

指向其原始的pjmedia_sdp_session。

只有当结构从PJSIP的pjmedia_sdp_session转换时才有效。

12.4.37 struct SrtpCrypto

#include <call.hpp>

SRTP加密

公有变量

218) string key

可选键

如果为空,随机密钥将被自动生成。

219) string name

加密名称。

220)unsigned flags

标志,位号从#pjmedia_srtp_crypto_option。

12.4.38 struct StreamInfo

#include <call.hpp>

媒体流信息。

公有函数

221)void fromPjconst pjsua_stream_info&info 

从pjsip转换

公有变量

222)pjmedia_type type

此流的媒体类型。

223)pjmedia_tp_proto proto

传输协议(RTP / AVP等)

224)pjmedia_dir dir

媒体方向。

225)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 fromPjconst 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 createAccountaccconst BuddyConfigcfg 

创建好友并将好友注册给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 sendInstantMessageconst SendInstantMessageParamprm 

发送即时消息外部对话框,使用该伙伴指定的帐户进行路由集和身份验证。

参数

prm - 发送即时消息参数。

5)void sendTypingIndication(const SendTypingIndicationParamprm 

在对话框外发送打字指示。

参数

prm - 发送即时消息参数。

6)virtual  void onBuddyState()

当好友状态发生变化时通知应用程序。

应用程序可能会查询好友信息以获取详细信息。

7)私有变量

(1)pjsua_buddy_id id

好友 ID。

(2)Account * acc

帐户

12.5.2 struct BuddyConfig

#include <presence.hpp>

Buddy :: create()将好友添加到好友列表时,此结构将描述好友配置。

pj :: PersistentObject继承

公有函数

8)virtual  void readObjectconst ContainerNodenode 

从容器节点读取此对象。

参数

node - 容器从中读取值。

9)virtual   void writeObjectContainerNodenode) const

将此对象写入容器节点。

参数

node - 容器将值写入。

公有变量

10) string uri

好友网址或名称地址。

11) bool subscribe

指定是否立即启动呈现订阅。

12.5.3 struct BuddyInfo

#include <presence.hpp>

此结构描述好友信息,可以通过Buddy :: getInfo ()检索。

公有函数

12)void fromPjconst pjsua_buddy_info&pbi 

从pjsip结构导入。

公有变量

13) string uri

伙伴的完整URI,如配置中所指定。

14) string contact

Buddy的联系人,只有在向好友建立了存在订阅时才可用。

15) bool presMonitorEnabled

标记表示我们应该监视此好友的存在信息(通常是,除非明确禁用)。

16)pjsip_evsub_state subState

如果presMonitorEnabled为true,则指定状态订阅的最后状态。

如果存在订阅会话当前处于活动状态,则该值将为PJSIP_EVSUB_STATE_ACTIVE。如果存在订阅请求被拒绝,则该值将为PJSIP_EVSUB_STATE_TERMINATED,并且将在subTermReason中指定终止原因。

17) string subStateName

订阅状态的字符串表示。

18)pjsip_status_code subTermCode

指定最后一次存在订阅终止代码。

这将返回SUBSCRIBE请求的最后一个状态。如果服务器使用NOTIFY终止订阅,则此值将设置为200,并在subTermReason字段中给出订阅终止原因。

19) string subTermReason

指定最后一次存在订阅终止原因。

如果现在订阅当前处于活动状态,则该值将为空。

20)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 readIntconst  string &name   = “” ) const

从文档读取整数值并返回值。

如果当前的元素不是数字,这将抛出错误。读取位置将提前到下一个元素。

返回

价值。

参数

name - 如果指定了,那么该函数将检查下一个元素的名称是否与指定的名称匹配,如果不匹配则抛出错误

7)float readNumberconst  string &name   = “” ) const

从文档读取数值并返回值。

如果当前的元素不是数字,这将抛出错误。读取位置将提前到下一个元素。

返回

价值。

参数

name - 如果指定了,那么该函数将检查下一个元素的名称是否与指定的名称匹配,如果不匹配则抛出错误

8) bool readBoolconst  string &name   = “” ) const

从容器读取一个布尔值并返回值。

如果当前元素不是布尔值,这将抛出错误。读取位置将提前到下一个元素。

返回

价值。

参数

name - 如果指定了,那么该函数将检查下一个元素的名称是否与指定的名称匹配,如果不匹配则抛出错误

9)string readStringconst  string &name   = “” ) const

从容器读取字符串值并返回值。

如果当前元素不是字符串,则会抛出错误。读取位置将提前到下一个元素。

返回

价值。

参数

name - 如果指定了,那么该函数将检查下一个元素的名称是否与指定的名称匹配,如果不匹配则抛出错误

10)StringVectorreadStringVectorconst  string &name   = “” ) const

从容器读取字符串数组。

如果当前元素不是字符串数组,这将抛出错误。读取位置将提前到下一个元素。

返回

价值。

参数

name - 如果指定了,那么该函数将检查下一个元素的名称是否与指定的名称匹配,如果不匹配则抛出错误

11) void readObject(PersistentObject&OBJ ) const

从容器读取指定的对象。

这等于调用PersistentObject.readObject(ContainerNode);

参数

obj - 要阅读的对象

12)ContainerNodereadContainerconst  string &name   = “” ) const

从容器中读取容器。

如果当前元素不是容器,这将抛出错误。读取位置将提前到下一个元素。

返回

容器对象。

参数

name - 如果指定了,那么该函数将检查下一个元素的名称是否与指定的名称匹配,如果不匹配则抛出错误

13)ContainerNodereadArrayconst  string &name   = “” ) const

从容器读取数组容器。

如果当前元素不是数组,这将抛出错误。读取位置将提前到下一个元素。

返回

容器对象。

参数

name - 如果指定了,那么该函数将检查下一个元素的名称是否与指定的名称匹配,如果不匹配则抛出错误

14)void writeNumberconst string&name,float num 

向容器写入一个数字值。

参数

name - 容器中值的名称。

num - 要写的价值

15)void writeIntconst string&name,int num 

向容器写入一个数字值。

参数

name - 容器中值的名称。

num - 要写的价值

16)void writeBoolconst string&name,bool value 

将一个布尔值写入容器。

参数

name - 容器中值的名称。

value - 要写的价值

17)void writeStringconst string&nameconst string&value 

将一个字符串值写入容器。

参数

name - 容器中值的名称。

value - 要写的价值

18)void writeStringVectorconst string&nameconst StringVectorarr 

将字符串vector写入容器。

参数

name - 容器中值的名称。

arr - 要写的vector

19)void writeObjectconst PersistentObjectobj 

将一个对象写入容器。

这等于调用PersistentObject.writeObject(ContainerNode);

参数

obj - 要写的对象

20)ContainerNodewriteNewContainerconst string&name 

创建并写入一个空的Object节点,该节点可以用作后续写入操作的父项。

返回

一个子容器。

参数

name - 容器中新容器的名称。

21)ContainerNodewriteNewArrayconst 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文档中说明的宏来读取/写入更详细的数据。

pj :: JsonDocument进行子类化

公有函数

24)virtual  ~PersistentDocument()

virtual 析构函数

25)virtual  void loadFileconst string&filename ) =

从文件加载此文档。

参数

filename - 文件名。

26)virtual  void loadStringconst string&input ) =

从字符串加载此文档。

参数

input - 字符串。

27)virtual  void saveFileconst string&filename ) =

将此文档写入文件。

参数

filename - 文件名。

virtual  string saveString() =

将此文档写入字符串。

返回

字符串文档。

28)virtual  ContainerNodegetRootContainer() const = 0

获取此文档的根容器节点。

返回

根节点。

29) bool hasUnread() const

确定是否有未读元素。

如果是,那么应用程序可以使用一个readXxx()函数来读取它。

返回

如果有的话。

30)string unreadName() const

获取下一个未读元素的名称。

如果没有更多的元素要读取,它将抛出错误

返回

下一个元素的名称。

31)INT readIntconst  string &name   = “” ) const

从文档读取整数值并返回值。

如果当前的元素不是数字,这将抛出错误。读取位置将提前到下一个元素。

返回

价值。

参数

name - 如果指定了,那么该函数将检查下一个元素的名称是否与指定的名称匹配,如果不匹配则抛出错误

32)float readNumberconst  string &name   = “” ) const

从文档读取一个浮点值并返回值。

如果当前的元素不是数字,这将抛出错误。读取位置将提前到下一个元素。

返回

价值。

参数

name - 如果指定了,那么该函数将检查下一个元素的名称是否与指定的名称匹配,如果不匹配则抛出错误

33) bool readBoolconst  string &name   = “” ) const

从容器读取一个布尔值并返回值。

如果当前元素不是布尔值,这将抛出错误。读取位置将提前到下一个元素。

返回

价值。

参数

name - 如果指定了,那么该函数将检查下一个元素的名称是否与指定的名称匹配,如果不匹配则抛出错误

34)string readStringconst  string &name   = “” ) const

从容器读取字符串值并返回值。

如果当前元素不是字符串,则会抛出错误。读取位置将提前到下一个元素。

返回

价值。

参数

name - 如果指定了,那么该函数将检查下一个元素的名称是否与指定的名称匹配,如果不匹配则抛出错误

35)StringVectorreadStringVectorconst  string &name   = “” ) const

从容器读取字符串数组。

如果当前元素不是字符串数组,这将抛出错误。读取位置将提前到下一个元素。

返回

价值。

参数

name - 如果指定了,那么该函数将检查下一个元素的名称是否与指定的名称匹配,如果不匹配则抛出错误

36) void readObjectPersistentObjectOBJ ) const

从容器读取指定的对象。

这等于调用PersistentObject.readObject(ContainerNode);

参数

obj - 要阅读的对象

37)ContainerNodereadContainerconst  string &name   = “” ) const

从容器中读取容器。

如果当前的元素不是一个对象,这将抛出错误。读取位置将提前到下一个元素。

返回

容器对象。

参数

name - 如果指定了,那么该函数将检查下一个元素的名称是否与指定的名称匹配,如果不匹配则抛出错误

38)ContainerNodereadArrayconst  string &name   = “” ) const

从容器读取数组容器。

如果当前元素不是数组,这将抛出错误。读取位置将提前到下一个元素。

返回

容器对象。

参数

name - 如果指定了,那么该函数将检查下一个元素的名称是否与指定的名称匹配,如果不匹配则抛出错误

39)void writeNumberconst string&name,float num 

向容器写入一个数字值。

参数

name - 容器中值的名称。

num - 要写的价值

40)void writeIntconst string&name,int num 

向容器写入一个数字值。

参数

name - 容器中值的名称。

num - 要写的价值

41)void writeBoolconst string&name,bool value 

将一个布尔值写入容器。

参数

name - 容器中值的名称。

value - 要写的价值

42)void writeStringconst string&nameconst string&value 

将一个字符串值写入容器。

参数

name - 容器中值的名称。

value - 要写的价值

43)void writeStringVectorconst string&nameconst StringVectorarr 

将字符串vector写入容器。

参数

name - 容器中值的名称。

arr - 要写的vector

44)void writeObjectconst PersistentObjectobj 

将一个对象写入容器。

这等于调用PersistentObject.writeObject(ContainerNode);

参数

obj - 要写的对象

45)ContainerNodewriteNewContainerconst string&name 

创建并写入一个空的Object节点,该节点可以用作后续写入操作的父项。

返回

一个子容器。

参数

name - 容器中新容器的名称。

46)ContainerNodewriteNewArrayconst string&name 

创建并写入一个空数组节点,可以将其用作后续写入操作的父节点。

返回

一个子容器。

参数

name - 数组的名称。

12.6.4 class PersistentObject

#include <persistent.hpp>

这是可以将序列化到/从持久性文档的对象的抽象基类。

pj :: AccountCallConfigpj :: AccountConfigpj :: AccountMediaConfigpj :: AccountMwiConfigpj :: AccountNatConfigpj :: AccountPresConfigpj :: AccountRegConfigpj :: AccountSipConfigpj :: AccountVideoConfigpj ::SubclassedAuthCredInfopj :: BuddyConfigpj :: EpConfigpj :: LogConfigpj :: MediaConfigpj :: TlsConfigpj :: TransportConfigpj :: UaConfig

公有函数

47)virtual   void readObjectconst  ContainerNodenode) = 0

从容器节点读取此对象。

参数

node - 容器从中读取值。

48)virtual   void writeObjectContainerNodenode) const = 0

将此对象写入容器节点。

参数

node - 容器将值写入。

  • json.hpp

 namespace pj

PJSUA2 API在pj命名空间内。

12.6.5 class JsonDocument

#include <json.hpp>

具有JSON格式的持久文档(文件)。

继承自pj :: PersistentDocument

公有函数

49)JsonDocument()

默认构造函数。

50)~JsonDocument()

析构器

51)virtual  void loadFileconst string&filename 

从文件加载此文档。

参数

filename - 文件名。

52)virtual  void loadStringconst string&input 

从字符串加载此文档。

参数

input - 字符串。

53)virtual  void saveFileconst string&filename 

将此文档写入文件。

参数

filename - 文件名。

54)virtual  string saveString()

将此文档写入字符串。

virtual  ContainerNodegetRootContainer() const

获取此文档的根容器节点。

55)pj_json_elem * allocElement() const

一个内部函数来创建JSON元素。

56)pj_pool_t * getPool()

一个内部函数来获取池。

57)私有函数

(3) void initRoot() const

58)私有变量

(4)pj_caching_pool cp
(5)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>

证明资料。

凭据包含用于对服务进行身份验证的信息。

pj :: PersistentObject继承

公有函数

3)AuthCredInfo()

默认构造函数。

4)AuthCredInfo(const string&scheme,const string&realm,const string&user_name,const int data_type,const string data )

使用指定的参数构造凭据。

5)virtual  void readObjectconst ContainerNodenode 

从容器节点读取此对象。

参数

node - 容器从中读取值。

6)virtual   void writeObjectContainerNodenode) const

将此对象写入容器节点。

参数

node - 容器将值写入。

公有变量

7) string scheme

认证方案(例如

“消化”)。

8) string realm

使用该凭证的领域。

使用“*”创建可用于对任何挑战进行身份验证的凭据。

9) string username

验证用户名。

10)INT dataType

“数据”字段中包含的数据类型。

如果数据包含纯文本密码,请使用0。

11) string data

数据,可以是纯文本密码或散列摘要。

12) string akaK

永久用户密钥。

13) string akaOp

操作员变体键。

14) string akaAmf

认证管理领域。

12.7.2 struct RxMsgEvent

#include <siptypes.hpp>

此结构描述消息到达事件。

公有变量

15)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 fromPjconst 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 fromPjconst pjsip_hdr * )

从PJSIP头开始。

36)pjsip_generic_string_hdr& () const toPj

转换为PJSIP标题。

公有变量

37) string hName

标题名称

38) string hValue

标题值。

39)私有变量

(8)pjsip_generic_string_hdr pjHdr

用于转换为PJSIP标头的Interal缓冲区。

12.7.8 struct SipMediaType

#include <siptypes.hpp>

SIP媒体类型包含类型和子类型。

例如,对于“application / sdp”,类型为“application”,子类型为“sdp”。

公有函数

40)void fromPjconst pjsip_media_type&prm 

从PJSIP的pjsip_media_type构造。

41)pjsip_media_type toPj() const

转换为PJSIP的pjsip_media_type。

公有变量

42) string type

媒体类型

43) string subType

媒体子类型。

12.7.9 struct SipMultipartPart

#include <siptypes.hpp>

这描述了每个多部分。

公有函数

44)void fromPjconst pjsip_multipart_part&prm 

从PJSIP的pjsip_multipart_part开始。

45)pjsip_multipart_part& () const toPj

转换为PJSIP的pjsip_multipart_part。

公有变量

46)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 fromPjconst pjsua_msg_data&prm 

从PJSUA的pjsua_msg_data开始。

73) void toPj( pjsua_msg_data&msg_data ) const

转换为PJSUA的pjsua_msg_data。

公有变量

74) string targetUri

可选远程目标URI(即

目标标题)。如果为空(“”),则将目标设置为远程URI(To头)。此时只有在发送初始INVITE和MESSAGE请求时才使用该字段。

75)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中指定

pj :: PersistentObject继承

公有函数

81)TlsConfig()

默认构造函数初始化为默认值。

82)pjsip_tls_setting toPj() const

转换为pjsip。

83)void fromPjconst pjsip_tls_setting&prm 

从pjsip转换

84)virtual  void readObjectconst ContainerNodenode 

从容器节点读取此对象。

参数

node - 容器从中读取值。

85)virtual   void writeObjectContainerNodenode) const

将此对象写入容器节点。

参数

node - 容器将值写入。

公有变量

86) string CaListFile

证书证书(CA)清单文件。

87) string certFile

公共端点证书文件,将用作传出TLS连接的客户端证书,以及用于传入TLS连接的服务器端证书。

88) string privKeyFile

要使用的端点证书的可选私钥。

89) string password

密码打开私钥。

90)pjsip_ssl_method method

TLS协议方法来自#pjsip_ssl_method。

在将来,这个领域可能不赞成使用原型领域。现在,此字段仅在原始字段设置为零时才适用。

默认值为PJSIP_SSL_UNSPECIFIED_METHOD(0),后者又将使用PJSIP_SSL_DEFAULT_METHOD,默认值为PJSIP_TLSV1_METHOD。

91)unsigned proto

TLS协议类型来自#pj_ssl_sock_proto。

使用此字段启用特定的协议类型。使用按位或运算组合协议类型。

默认为PJSIP_SSL_DEFAULT_PROTO。

92)intVector ciphers

密码和订单偏好。

Endpoint::utilSslGetAvailableCiphers()可以用来检查由后端支持的可用密码。如果数组为空,则将使用后端的默认密码列表。

93) bool verifyServer

在服务器上指定TLS传输行为TLS证书验证结果:

  • 如果verifyServer被禁用,TLS传输将通过pjsip_tp_state_callback通知应用程序,状态PJSIP_TP_STATE_CONNECTED不管TLS验证结果。
  • 如果启用了verifyServer,TLS传输将被关闭,每当有任何TLS验证错误时,应用程序将被通知状态PJSIP_TP_STATE_DISCONNECTED,否则将通知PJSIP_TP_STATE_CONNECTED。

在任何情况下,应用程序可以检查回调中的pjsip_tls_state_info以查看验证详细信息。

默认值为false。

94) bool verifyClient

指定客户端TLS证书验证结果的TLS传输行为:

  • 如果verifyClient被禁用,TLS传输将通过pjsip_tp_state_callback通知应用程序,状态为PJSIP_TP_STATE_CONNECTED,不管TLS验证结果。
  • 如果启用verifyClient,TLS传输将被关闭,每当有任何TLS验证错误时,应用程序将被通知状态为PJSIP_TP_STATE_DISCONNECTED,否则将通知PJSIP_TP_STATE_CONNECTED。

在任何情况下,应用程序可以检查回调中的pjsip_tls_state_info以查看验证详细信息。

默认值为PJ_FALSE。

95) bool requireClientCert

当作为服务器(传入TLS连接)时,如果客户端不提供TLS证书,则拒绝传入连接。

此设置对应于SSL_VERIFY_FAIL_IF_NO_PEER_CERT标志。默认值为PJ_FALSE。

96)unsigned msecTimeout

TLS协商超时应用于传出和传入连接,以毫秒为单位。

如果为0,则SSL协商没有超时。

默认值:零

97)pj_qos_type qosType

要在此传输上设置QoS流量类型。

当应用程序想要将QoS标记应用于传输时,最好设置此字段而不是qosParam字段,因为这更容易。

默认值为PJ_QOS_TYPE_BEST_EFFORT。

98)pj_qos_params qosParams

将低级QoS参数设置为传输。

这是比设置qosType字段更低级别的操作,可能在所有平台上都不支持。

默认情况下,此结构中的所有设置都被禁用。

99) bool qosIgnoreError

指定在设置QoS流量类型/参数时传输是否应该忽略任何错误。

默认值:PJ_TRUE

12.7.16 struct TransportConfig

#include <siptypes.hpp>

创建传输实例的参数。

pj :: PersistentObject继承

公有函数

100)TransportConfig()

默认构造函数初始化为默认值。

101)void fromPjconst pjsua_transport_config&prm 

从pjsip转换

102)pjsua_transport_config toPj() const

转换为pjsip。

103)virtual  void readObjectconst ContainerNodenode 

从容器节点读取此对象。

参数

node - 容器从中读取值。

104)virtual   void writeObjectContainerNodenode) const

将此对象写入容器节点。

参数

node - 容器将值写入。

公有变量

105)unsigned port

本地绑定的UDP端口号。

即使需要默认端口,也必须指定此设置。如果值为零,则传输将绑定到任何可用端口,应用程序可以通过查询传输信息来查询端口。

106)unsigned portRange

指定插座结合相对于在指定的起始端口号端口范围,端口

请注意,此设置仅适用于起始端口号不为零时。

默认值为零。

107) string publicAddress

可选地址作为此传输的地址进行广告宣传。

应用程序可以指定该字段的任何地址或主机名,例如它可以指向系统中的一个接口地址,也可以指向为该应用配置了端口映射的NAT路由器的公网地址。

注意:此选项也可以用于UDP和TCP两者!

108) string boundAddress

应该将套接字绑定到的可选地址。

该选项应该仅用于选择性地将套接字绑定到特定接口(而不是0.0.0.0),并且不应该用于设置传输的发布地址(public_addr字段应该用于此目的)。

请注意,与public_addr字段不同,这里的地址(或主机名)必须对应于主机中的实际接口地址,因为该地址将被指定为bind()参数。

109)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 fromPjconst 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 fromPjconst pj_time_val&prm 

从pjsip转换

公有变量

25) long sec

秒的时间部分。

26) long msec

时间的毫秒数。

12.8.5 struct Version

#include <types.hpp>

版本信息。

公有变量

27)INT major

主要号码。

28)INT minor

次要号码

29)INT rev

附加修订号。

30) string suffix

版本后缀(例如

“-svn”)

31) string full

完整版本信息(例如

“2.1.0-svn”)

32)unsigned numeric

PJLIB版本号为三个字节,格式如下:0xMMIIRR00,其中MM:主号,II:次号,RR:修订号,00:现在总是为零。

  • config.hpp

PJSUA2基本代理操作。

12.8.6 定义

33)PJSUA2_ERROR_HAS_EXTRA_INFO

指定错误异常信息是否包含操作和源文件信息。

PJSUA2开发文档--第十二章 PJSUA2 API 参考手册

上一篇:$HOME


下一篇:mysql数据库的安装与配置