Obtaining information about a running call: sound volumes, quality indicators
获取关于正在通话的电话信息:音量,质量指标
结构体
struct _LinphoneCallStats
宏
#define LINPHONE_CALL_STATS_AUDIO ((int)LinphoneStreamTypeAudio)
#define LINPHONE_CALL_STATS_VIDEO ((int)LinphoneStreamTypeVideo)
#define LINPHONE_CALL_STATS_TEXT ((int)LinphoneStreamTypeText)
#define LINPHONE_CALL_STATS_RECEIVED_RTCP_UPDATE (1<<0)
#define LINPHONE_CALL_STATS_SENT_RTCP_UPDATE (1<<1)
#define LINPHONE_CALL_STATS_PERIODICAL_UPDATE (1<<2)
#define LINPHONE_VOLUME_DB_LOWEST (-120)
自定义
typedef struct _LinphoneCallStats LinphoneCallStats
函数
详细说明
当一个电话正在通话,它可以实时获取当前的测量的音量和质量指标
宏定义文档
#define LINPHONE_CALL_STATS_PERIODICAL_UPDATE (1 << 2)
每秒更新LinphoneCallStats对象
#define LINPHONE_CALL_STATS_RECEIVED_RTCP_UPDATE (1<<0)
LinphoneCallStats对象的received_rtcp域已经更新
#define LINPHONE_CALL_STATS_SENT_RTCP_UPDATE (1<<1)
LinphoneCallStats对象的sent_rtcp域已经更新
#define LINPHONE_VOLUME_DB_LOWEST (-120)
最低音量,可以在完全沉默的情况下,由linphone_call_get_play_volume()或linphone_call_get_record_volume()返回
自定义文档
typedef struct _LinphoneCallStats LinphoneCallStats
定期接受这些信息,一旦他们被计算出。应用程序需要设置一个LinphoneCoreCallStatsUpdatedCb 回调函数在LinphoneCoreVTable结构体(它被用来实例化LinphoneCore对象)(参见 linphone_core_new()).
在任何时候,应用程序可以访问最新计算的统计数据,通过使用linphone_call_get_audio_stats()或linphone_call_get_video_stats().
函数文档
const LinphoneCallStats* linphone_call_get_audio_stats(LinphoneCall * call)
访问指定通话的已知的关于视频流的统计数据
float linphone_call_get_average_quality(LinphoneCall* call)
返回整个通话过程中平均的通话质量
参见linphone_call_get_current_quality()了解关于质量测量的更多细节
float linphone_call_get_current_quality(LinphoneCall* call)
获取实时通话质量评级
基于本地的RTP统计和RTCP反馈,在通话的期间,质量评级被计算和更新.该函数返回质量评级的值.将每5秒左右更新评级.评级是0到5之间的一个浮动数.
4-5 = 好
3-4 = 一般
2-3 = 差
1-2 = 非常差
0-1 = 最差
返回
如果没有质量统计返回-1,例如如果没有有效的视频流存在.否则返回质量评级
float linphone_call_get_microphone_volume_gain(const LinphoneCall* call)
获取麦克风音量的增益.如果声卡驱动支持,返回的增益等同于系统音量合成器设置的增益
参数
call LinphoneCall对象
返回
支持的最大音量增益的双精度百分数.有效值为[0.0:1.0].如果失败,将返回一个负值
float linphone_call_get_play_volume(LinphoneCall* call)
返回本地播放的音量(接收来自远端).它使用dbm0来表示(dbm0为单位)
float linphone_call_get_record_volume(LinphoneCall* call)
返回本地播放的音量(发送到远程).它使用dbm0来表示
float linphone_call_get_speaker_volume_gain(const LinphoneCall* call)
获得扬声器音量增益.如果声卡驱动支持,返回的增益等同于系统音量合成器设置的增益
参数
call LinphoneCall对象
返回
支持的最大音量增益的双精度百分数.有效值为[0.0:1.0].如果失败,将返回一个负值
const LinphoneCallStats* linphone_call_get_text_stats(LinphoneCall* call)
访问指定通话已知的关于文本的数据统计
const LinphoneCallStats* linphone_call_get_video_stats(LinphoneCall* call)
访问指定通话已知的关于音频流的数据统计
bool_t linphone_call_media_in_progress(LinphoneCall* call)
判断在媒体方面时候有一个操作正在处理.在媒体正忙着建立连接的时候(通常是ICE连接线检查),启动信令操作(添加视频/暂停通话/删除视频/改变视频参数)是个坏主意.它可能导致故障发生,通话操作延时.在每次通话状态变化后,应用程序需要检查这个函数来决定是否允许某些操作
参数
call LinphoneCall对象
返回
如果媒体正忙着建立连接,返回TRUE,否则返回FALSE
void linphone_call_set_microphone_volume_gain(LinphoneCall* call, float volume)
设置麦克风音量增益。如果声卡驱动支持,新的增益将会和系统声音混合器同步.
参数
call LinphoneCall对象
volume 支持最大的增益的百分数,有效值为[0.0:1.0]
void linphone_call_set_speaker_volume_gain(LinphoneCall* call, float volume)
设置扬声器音量增益.如果声卡驱动支持,新的增益将和系统声音混合器同步
参数
call LinphoneCall对象
volume 支持最大的增益的百分数,有效值为[0.0:1.0]
void linphone_call_start_recording(LinphoneCall* call)
开始通话录音. 音频输出文件保存路径必须由linphone_call_params_set_record_file()预先指定
float linphone_call_stats_get_download_bandwidth(const LinphoneCallStats* stats)
获取关于接收流的带宽测量值,用kbit/s表示,包括IP/UDP/RTP报头
参数
[in] stats LinphoneCallStats对象
返回
关于接收流的带宽测量值,用kbit/s表示
LinphoneIceState linphone_call_stats_get_ice_state(const LinphoneCallStats* stats)
获取ICE处理的状态
参数
[in]stats LinphoneCallStats对象
返回
ICE处理的状态
uint64_t linphone_call_stats_get_late_packets_cumulative_number(const LinphoneCallStats* stats, LinphoneCall* call)
获取最近数据包的累积数量
参数
stats LinphoneCallStats 对象
call LinphoneCall对象
返回
最近数据包累积的数量
float linphone_call_stats_get_receiver_interarrival_jitter(const LinphoneCallStats* stats, LinphoneCall* call)
获取远程报告的抖动时间
返回
最后收到接收方报告的抖动时间
float linphone_call_stats_get_receiver_loss_rate(const LinphoneCallStats* stats)
获取远程报告的丢失率,从最近一次报告算起
返回
接收者丢失率
float linphone_call_stats_get_sender_interarrival_jitter(const LinphoneCallStats stats,LinphoneCall* call)
获取本地的抖动时间
返回
最后发送的发送方报告的抖动时间
float linphone_call_stats_get_sender_loss_rate(const LinphoneCallStats* stats)
获取本地丢失率,从最近的报告算起
返回
发送方的丢失率
float linphone_call_stats_get_upload_bandwidth(const LinphoneCallStats* stats)
获取发送流的带宽测量值,用kbit/s表示,包括 IP/UDP/RTP报头
参数
[in] stats LinphoneCallStats对象
返回
发送流的带宽测量值, 用kbit/s表示
LinphoneUpnpState linphone_call_stats_get_upnp_state(const LinphoneCallStats* stats)
获取uPnP处理的状态
参数
[in] stats LinphoneCallStats对象
返回
uPnP处理的状态
void linphone_call_stop_recording(LinphoneCall* call)
停止电话录音