forked from mirrors/linphone-iphone
Merge branch 'master' of git.linphone.org:linphone
This commit is contained in:
commit
f4d1fd0fe7
13 changed files with 113 additions and 106 deletions
|
|
@ -44,6 +44,7 @@ static void linphone_chat_room_delete_remote_composing_refresh_timer(LinphoneCha
|
|||
static void _linphone_chat_message_destroy(LinphoneChatMessage *msg);
|
||||
static void linphone_chat_room_notify_is_composing(LinphoneChatRoom *cr, const char *text);
|
||||
static void linphone_chat_room_notify_imdn(LinphoneChatRoom *cr, const char *text);
|
||||
static void linphone_chat_message_deactivate(LinphoneChatMessage *msg);
|
||||
|
||||
BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(LinphoneChatMessageCbs);
|
||||
|
||||
|
|
@ -310,6 +311,7 @@ void linphone_chat_room_release(LinphoneChatRoom *cr) {
|
|||
linphone_chat_room_delete_composing_idle_timer(cr);
|
||||
linphone_chat_room_delete_composing_refresh_timer(cr);
|
||||
linphone_chat_room_delete_remote_composing_refresh_timer(cr);
|
||||
bctbx_list_for_each(cr->weak_messages, (bctbx_list_iterate_func)linphone_chat_message_deactivate);
|
||||
cr->lc = NULL;
|
||||
linphone_chat_room_unref(cr);
|
||||
}
|
||||
|
|
@ -1619,12 +1621,16 @@ void linphone_chat_message_unref(LinphoneChatMessage *msg) {
|
|||
belle_sip_object_unref(msg);
|
||||
}
|
||||
|
||||
static void linphone_chat_message_release(LinphoneChatMessage *msg) {
|
||||
/*mark the chat msg as orphan (it has no chat room anymore), and unref it*/
|
||||
static void linphone_chat_message_deactivate(LinphoneChatMessage *msg){
|
||||
/*mark the chat msg as orphan (it has no chat room anymore)*/
|
||||
msg->chat_room = NULL;
|
||||
if (msg->file_transfer_information != NULL) {
|
||||
linphone_chat_message_cancel_file_transfer(msg);
|
||||
}
|
||||
}
|
||||
|
||||
static void linphone_chat_message_release(LinphoneChatMessage *msg) {
|
||||
linphone_chat_message_deactivate(msg);
|
||||
linphone_chat_message_unref(msg);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ static void linphone_chat_message_process_auth_requested_download(void *data, be
|
|||
static void linphone_chat_message_file_transfer_on_progress(belle_sip_body_handler_t *bh, belle_sip_message_t *m,
|
||||
void *data, size_t offset, size_t total) {
|
||||
LinphoneChatMessage *msg = (LinphoneChatMessage *)data;
|
||||
if (msg->http_request && !file_transfer_in_progress_and_valid(msg)) {
|
||||
if (!file_transfer_in_progress_and_valid(msg)) {
|
||||
ms_warning("Cancelled request for %s msg [%p], ignoring %s", msg->chat_room?"":"ORPHAN", msg, __FUNCTION__);
|
||||
_release_http_request(msg);
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -92,7 +92,7 @@ LINPHONE_PUBLIC int lime_getCachedRcvKeyByZid(xmlDocPtr cacheBuffer, limeKey_t *
|
|||
* @return 0 on success, error code otherwise
|
||||
*/
|
||||
|
||||
LINPHONE_PUBLIC int lime_setCachedKey(xmlDocPtr cacheBuffer, limeKey_t *associatedKey, const uint8_t role, uint64_t validityTimeSpan);
|
||||
LINPHONE_PUBLIC int lime_setCachedKey(xmlDocPtr cacheBuffer, limeKey_t *associatedKey, uint8_t role, uint64_t validityTimeSpan);
|
||||
|
||||
/**
|
||||
* @brief Free all allocated data in the associated keys structure
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
#include "mediastreamer2/mssndcard.h"
|
||||
#include "mediastreamer2/msrtt4103.h"
|
||||
|
||||
|
||||
static const char *EC_STATE_STORE = ".linphone.ecstate";
|
||||
#define EC_STATE_MAX_LEN 1048576 // 1Mo
|
||||
|
||||
|
|
@ -4086,12 +4087,16 @@ float linphone_call_get_average_quality(LinphoneCall *call){
|
|||
}
|
||||
|
||||
static void update_local_stats(LinphoneCallStats *stats, MediaStream *stream) {
|
||||
PayloadType *pt;
|
||||
RtpSession *session = stream->sessions.rtp_session;
|
||||
const MSQualityIndicator *qi = media_stream_get_quality_indicator(stream);
|
||||
if (qi) {
|
||||
stats->local_late_rate=ms_quality_indicator_get_local_late_rate(qi);
|
||||
stats->local_loss_rate=ms_quality_indicator_get_local_loss_rate(qi);
|
||||
}
|
||||
media_stream_get_local_rtp_stats(stream, &stats->rtp_stats);
|
||||
pt = rtp_profile_get_payload(rtp_session_get_profile(session), rtp_session_get_send_payload_type(session));
|
||||
stats->clockrate = pt ? pt->clock_rate : 8000;
|
||||
}
|
||||
|
||||
const LinphoneCallStats *linphone_call_get_audio_stats(LinphoneCall *call) {
|
||||
|
|
@ -4164,15 +4169,10 @@ float linphone_call_stats_get_receiver_loss_rate(const LinphoneCallStats *stats)
|
|||
return 100.0f * report_block_get_fraction_lost(rrb) / 256.0f;
|
||||
}
|
||||
|
||||
float linphone_call_stats_get_sender_interarrival_jitter(const LinphoneCallStats *stats, LinphoneCall *call) {
|
||||
const LinphoneCallParams *params;
|
||||
const PayloadType *pt;
|
||||
float linphone_call_stats_get_sender_interarrival_jitter(const LinphoneCallStats *stats) {
|
||||
const report_block_t *srb = NULL;
|
||||
|
||||
if (!stats || !call || !stats->sent_rtcp)
|
||||
return 0.0;
|
||||
params = linphone_call_get_current_params(call);
|
||||
if (!params)
|
||||
|
||||
if (!stats || !stats->sent_rtcp)
|
||||
return 0.0;
|
||||
/* Perform msgpullup() to prevent crashes in rtcp_is_SR() or rtcp_is_RR() if the RTCP packet is composed of several mblk_t structure */
|
||||
if (stats->sent_rtcp->b_cont != NULL)
|
||||
|
|
@ -4183,24 +4183,15 @@ float linphone_call_stats_get_sender_interarrival_jitter(const LinphoneCallStats
|
|||
srb = rtcp_RR_get_report_block(stats->sent_rtcp, 0);
|
||||
if (!srb)
|
||||
return 0.0;
|
||||
if (stats->type == LINPHONE_CALL_STATS_AUDIO)
|
||||
pt = linphone_call_params_get_used_audio_codec(params);
|
||||
else
|
||||
pt = linphone_call_params_get_used_video_codec(params);
|
||||
if (!pt || (pt->clock_rate == 0))
|
||||
if (stats->clockrate == 0)
|
||||
return 0.0;
|
||||
return (float)report_block_get_interarrival_jitter(srb) / (float)pt->clock_rate;
|
||||
return (float)report_block_get_interarrival_jitter(srb) / (float)stats->clockrate;
|
||||
}
|
||||
|
||||
float linphone_call_stats_get_receiver_interarrival_jitter(const LinphoneCallStats *stats, LinphoneCall *call) {
|
||||
const LinphoneCallParams *params;
|
||||
const PayloadType *pt;
|
||||
float linphone_call_stats_get_receiver_interarrival_jitter(const LinphoneCallStats *stats) {
|
||||
const report_block_t *rrb = NULL;
|
||||
|
||||
if (!stats || !call || !stats->received_rtcp)
|
||||
return 0.0;
|
||||
params = linphone_call_get_current_params(call);
|
||||
if (!params)
|
||||
if (!stats || !stats->received_rtcp)
|
||||
return 0.0;
|
||||
/* Perform msgpullup() to prevent crashes in rtcp_is_SR() or rtcp_is_RR() if the RTCP packet is composed of several mblk_t structure */
|
||||
if (stats->received_rtcp->b_cont != NULL)
|
||||
|
|
@ -4211,13 +4202,9 @@ float linphone_call_stats_get_receiver_interarrival_jitter(const LinphoneCallSta
|
|||
rrb = rtcp_RR_get_report_block(stats->received_rtcp, 0);
|
||||
if (!rrb)
|
||||
return 0.0;
|
||||
if (stats->type == LINPHONE_CALL_STATS_AUDIO)
|
||||
pt = linphone_call_params_get_used_audio_codec(params);
|
||||
else
|
||||
pt = linphone_call_params_get_used_video_codec(params);
|
||||
if (!pt || (pt->clock_rate == 0))
|
||||
if (stats->clockrate == 0)
|
||||
return 0.0;
|
||||
return (float)report_block_get_interarrival_jitter(rrb) / (float)pt->clock_rate;
|
||||
return (float)report_block_get_interarrival_jitter(rrb) / (float)stats->clockrate;
|
||||
}
|
||||
|
||||
const rtp_stats_t *linphone_call_stats_get_rtp_stats(const LinphoneCallStats *stats) {
|
||||
|
|
@ -4262,47 +4249,29 @@ void linphone_call_stop_recording(LinphoneCall *call){
|
|||
call->record_active=FALSE;
|
||||
}
|
||||
|
||||
static void report_bandwidth(LinphoneCall *call, MediaStream *as, MediaStream *vs, MediaStream *ts){
|
||||
bool_t as_active = as ? (media_stream_get_state(as) == MSStreamStarted) : FALSE;
|
||||
bool_t vs_active = vs ? (media_stream_get_state(vs) == MSStreamStarted) : FALSE;
|
||||
bool_t ts_active = ts ? (media_stream_get_state(ts) == MSStreamStarted) : FALSE;
|
||||
|
||||
call->stats[LINPHONE_CALL_STATS_AUDIO].download_bandwidth=(as_active) ? (float)(media_stream_get_down_bw(as)*1e-3) : 0.f;
|
||||
call->stats[LINPHONE_CALL_STATS_AUDIO].upload_bandwidth=(as_active) ? (float)(media_stream_get_up_bw(as)*1e-3) : 0.f;
|
||||
call->stats[LINPHONE_CALL_STATS_VIDEO].download_bandwidth=(vs_active) ? (float)(media_stream_get_down_bw(vs)*1e-3) : 0.f;
|
||||
call->stats[LINPHONE_CALL_STATS_VIDEO].upload_bandwidth=(vs_active) ? (float)(media_stream_get_up_bw(vs)*1e-3) : 0.f;
|
||||
call->stats[LINPHONE_CALL_STATS_TEXT].download_bandwidth=(ts_active) ? (float)(media_stream_get_down_bw(ts)*1e-3) : 0.f;
|
||||
call->stats[LINPHONE_CALL_STATS_TEXT].upload_bandwidth=(ts_active) ? (float)(media_stream_get_up_bw(ts)*1e-3) : 0.f;
|
||||
call->stats[LINPHONE_CALL_STATS_AUDIO].rtcp_download_bandwidth=(as_active) ? (float)(media_stream_get_rtcp_down_bw(as)*1e-3) : 0.f;
|
||||
call->stats[LINPHONE_CALL_STATS_AUDIO].rtcp_upload_bandwidth=(as_active) ? (float)(media_stream_get_rtcp_up_bw(as)*1e-3) : 0.f;
|
||||
call->stats[LINPHONE_CALL_STATS_VIDEO].rtcp_download_bandwidth=(vs_active) ? (float)(media_stream_get_rtcp_down_bw(vs)*1e-3) : 0.f;
|
||||
call->stats[LINPHONE_CALL_STATS_VIDEO].rtcp_upload_bandwidth=(vs_active) ? (float)(media_stream_get_rtcp_up_bw(vs)*1e-3) : 0.f;
|
||||
call->stats[LINPHONE_CALL_STATS_TEXT].rtcp_download_bandwidth=(ts_active) ? (float)(media_stream_get_rtcp_down_bw(ts)*1e-3) : 0.f;
|
||||
call->stats[LINPHONE_CALL_STATS_TEXT].rtcp_upload_bandwidth=(ts_active) ? (float)(media_stream_get_rtcp_up_bw(ts)*1e-3) : 0.f;
|
||||
/* If not ipV6, it's not necessary IpV4, should be UNSPEC, TODO */
|
||||
call->stats[LINPHONE_CALL_STATS_AUDIO].rtp_remote_family=(as_active)
|
||||
? ((ortp_stream_is_ipv6((OrtpStream*)&(as->sessions.rtp_session->rtp.gs))) ? LinphoneAddressFamilyInet6 : LinphoneAddressFamilyInet) : LinphoneAddressFamilyUnspec;
|
||||
call->stats[LINPHONE_CALL_STATS_VIDEO].rtp_remote_family=(vs_active)
|
||||
? ((ortp_stream_is_ipv6((OrtpStream*)&(vs->sessions.rtp_session->rtp.gs))) ? LinphoneAddressFamilyInet6 : LinphoneAddressFamilyInet) : LinphoneAddressFamilyUnspec;
|
||||
call->stats[LINPHONE_CALL_STATS_TEXT].rtp_remote_family=(ts_active)
|
||||
? ((ortp_stream_is_ipv6((OrtpStream*)&(ts->sessions.rtp_session->rtp.gs))) ? LinphoneAddressFamilyInet6 : LinphoneAddressFamilyInet) : LinphoneAddressFamilyUnspec;
|
||||
|
||||
static void report_bandwidth_for_stream(LinphoneCall *call, MediaStream *ms, LinphoneStreamType type){
|
||||
bool_t active = ms ? (media_stream_get_state(ms) == MSStreamStarted) : FALSE;
|
||||
LinphoneCallStats *stats = &call->stats[type];
|
||||
|
||||
stats->download_bandwidth=(active) ? (float)(media_stream_get_down_bw(ms)*1e-3) : 0.f;
|
||||
stats->upload_bandwidth=(active) ? (float)(media_stream_get_up_bw(ms)*1e-3) : 0.f;
|
||||
stats->rtcp_download_bandwidth=(active) ? (float)(media_stream_get_rtcp_down_bw(ms)*1e-3) : 0.f;
|
||||
stats->rtcp_upload_bandwidth=(active) ? (float)(media_stream_get_rtcp_up_bw(ms)*1e-3) : 0.f;
|
||||
stats->rtp_remote_family=(active)
|
||||
? (ortp_stream_is_ipv6(&ms->sessions.rtp_session->rtp.gs) ? LinphoneAddressFamilyInet6 : LinphoneAddressFamilyInet) : LinphoneAddressFamilyUnspec;
|
||||
|
||||
if (call->core->send_call_stats_periodical_updates){
|
||||
call->stats[LINPHONE_CALL_STATS_AUDIO].updated|=LINPHONE_CALL_STATS_PERIODICAL_UPDATE;
|
||||
linphone_core_notify_call_stats_updated(call->core, call, &call->stats[LINPHONE_CALL_STATS_AUDIO]);
|
||||
call->stats[LINPHONE_CALL_STATS_AUDIO].updated=0;
|
||||
if (as_active) update_local_stats(&call->stats[LINPHONE_CALL_STATS_AUDIO], as);
|
||||
|
||||
call->stats[LINPHONE_CALL_STATS_VIDEO].updated|=LINPHONE_CALL_STATS_PERIODICAL_UPDATE;
|
||||
linphone_core_notify_call_stats_updated(call->core, call, &call->stats[LINPHONE_CALL_STATS_VIDEO]);
|
||||
call->stats[LINPHONE_CALL_STATS_VIDEO].updated=0;
|
||||
if (vs_active) update_local_stats(&call->stats[LINPHONE_CALL_STATS_VIDEO], vs);
|
||||
|
||||
call->stats[LINPHONE_CALL_STATS_TEXT].updated|=LINPHONE_CALL_STATS_PERIODICAL_UPDATE;
|
||||
linphone_core_notify_call_stats_updated(call->core, call, &call->stats[LINPHONE_CALL_STATS_TEXT]);
|
||||
call->stats[LINPHONE_CALL_STATS_TEXT].updated=0;
|
||||
if (ts_active) update_local_stats(&call->stats[LINPHONE_CALL_STATS_TEXT], ts);
|
||||
if (active) update_local_stats(stats, ms);
|
||||
stats->updated |= LINPHONE_CALL_STATS_PERIODICAL_UPDATE;
|
||||
linphone_core_notify_call_stats_updated(call->core, call, stats);
|
||||
stats->updated=0;
|
||||
}
|
||||
}
|
||||
|
||||
static void report_bandwidth(LinphoneCall *call, MediaStream *as, MediaStream *vs, MediaStream *ts){
|
||||
report_bandwidth_for_stream(call, as, LinphoneStreamTypeAudio);
|
||||
report_bandwidth_for_stream(call, vs, LinphoneStreamTypeVideo);
|
||||
report_bandwidth_for_stream(call, ts, LinphoneStreamTypeText);
|
||||
|
||||
ms_message( "Bandwidth usage for call [%p]:\n"
|
||||
"\tRTP audio=[d=%5.1f,u=%5.1f], video=[d=%5.1f,u=%5.1f], text=[d=%5.1f,u=%5.1f] kbits/sec\n"
|
||||
|
|
|
|||
|
|
@ -2859,7 +2859,7 @@ void linphone_core_iterate(LinphoneCore *lc){
|
|||
linphone_core_run_hooks(lc);
|
||||
linphone_core_do_plugin_tasks(lc);
|
||||
|
||||
if (lc->sip_network_reachable && lc->netup_time!=0 && (current_real_time-lc->netup_time)>3){
|
||||
if (lc->sip_network_reachable && lc->netup_time!=0 && (current_real_time-lc->netup_time)>=2){
|
||||
/*not do that immediately, take your time.*/
|
||||
linphone_core_send_initial_subscribes(lc);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1372,7 +1372,7 @@ const char *linphone_core_get_tone_file(const LinphoneCore *lc, LinphoneToneID i
|
|||
}
|
||||
|
||||
void _linphone_core_set_tone(LinphoneCore *lc, LinphoneReason reason, LinphoneToneID id, const char *audiofile){
|
||||
LinphoneToneDescription *tone=linphone_core_get_call_error_tone(lc,reason);
|
||||
LinphoneToneDescription *tone = linphone_core_lookup_tone(lc,reason, id);
|
||||
if (tone){
|
||||
lc->tones=bctbx_list_remove(lc->tones,tone);
|
||||
linphone_tone_description_destroy(tone);
|
||||
|
|
@ -1589,7 +1589,10 @@ bool_t linphone_core_file_format_supported(LinphoneCore *lc, const char *fmt){
|
|||
}
|
||||
|
||||
bool_t linphone_core_symmetric_rtp_enabled(LinphoneCore*lc){
|
||||
return lp_config_get_int(lc->config,"rtp","symmetric",1);
|
||||
/* Clients don't really need rtp symmetric, unless they have a public IP address and want
|
||||
* to interoperate with natted client. This case is not frequent with client apps.
|
||||
*/
|
||||
return lp_config_get_int(lc->config,"rtp","symmetric",0);
|
||||
}
|
||||
|
||||
int linphone_core_set_network_simulator_params(LinphoneCore *lc, const OrtpNetworkSimulatorParams *params){
|
||||
|
|
|
|||
|
|
@ -52,23 +52,24 @@ typedef struct _LinphoneCallStats LinphoneCallStats;
|
|||
* At any time, the application can access last computed statistics using linphone_call_get_audio_stats() or linphone_call_get_video_stats().
|
||||
**/
|
||||
struct _LinphoneCallStats {
|
||||
LinphoneStreamType type; /**< Type of the stream which the stats refer to */
|
||||
jitter_stats_t jitter_stats; /**<jitter buffer statistics, see oRTP documentation for details */
|
||||
mblk_t *received_rtcp; /**<Last RTCP packet received, as a mblk_t structure. See oRTP documentation for details how to extract information from it*/
|
||||
mblk_t *sent_rtcp;/**<Last RTCP packet sent, as a mblk_t structure. See oRTP documentation for details how to extract information from it*/
|
||||
float round_trip_delay; /**<Round trip propagation time in seconds if known, -1 if unknown.*/
|
||||
LinphoneIceState ice_state; /**< State of ICE processing. */
|
||||
LinphoneUpnpState upnp_state; /**< State of uPnP processing. */
|
||||
float download_bandwidth; /**<Download bandwidth measurement of received stream, expressed in kbit/s, including IP/UDP/RTP headers*/
|
||||
float upload_bandwidth; /**<Download bandwidth measurement of sent stream, expressed in kbit/s, including IP/UDP/RTP headers*/
|
||||
float local_late_rate; /**<percentage of packet received too late over last second*/
|
||||
float local_loss_rate; /**<percentage of lost packet over last second*/
|
||||
int updated; /**< Tell which RTCP packet has been updated (received_rtcp or sent_rtcp). Can be either LINPHONE_CALL_STATS_RECEIVED_RTCP_UPDATE or LINPHONE_CALL_STATS_SENT_RTCP_UPDATE */
|
||||
float rtcp_download_bandwidth; /**<RTCP download bandwidth measurement of received stream, expressed in kbit/s, including IP/UDP/RTP headers*/
|
||||
float rtcp_upload_bandwidth; /**<RTCP download bandwidth measurement of sent stream, expressed in kbit/s, including IP/UDP/RTP headers*/
|
||||
rtp_stats_t rtp_stats; /**< RTP stats */
|
||||
bool_t rtcp_received_via_mux; /*private flag, for non-regression test only*/
|
||||
int rtp_remote_family; /* Ip adress family of the remote destination */
|
||||
LinphoneStreamType type; /**< Type of the stream which the stats refer to */
|
||||
jitter_stats_t jitter_stats; /**<jitter buffer statistics, see oRTP documentation for details */
|
||||
mblk_t *received_rtcp; /**<Last RTCP packet received, as a mblk_t structure. See oRTP documentation for details how to extract information from it*/
|
||||
mblk_t *sent_rtcp;/**<Last RTCP packet sent, as a mblk_t structure. See oRTP documentation for details how to extract information from it*/
|
||||
float round_trip_delay; /**<Round trip propagation time in seconds if known, -1 if unknown.*/
|
||||
LinphoneIceState ice_state; /**< State of ICE processing. */
|
||||
LinphoneUpnpState upnp_state; /**< State of uPnP processing. */
|
||||
float download_bandwidth; /**<Download bandwidth measurement of received stream, expressed in kbit/s, including IP/UDP/RTP headers*/
|
||||
float upload_bandwidth; /**<Download bandwidth measurement of sent stream, expressed in kbit/s, including IP/UDP/RTP headers*/
|
||||
float local_late_rate; /**<percentage of packet received too late over last second*/
|
||||
float local_loss_rate; /**<percentage of lost packet over last second*/
|
||||
int updated; /**< Tell which RTCP packet has been updated (received_rtcp or sent_rtcp). Can be either LINPHONE_CALL_STATS_RECEIVED_RTCP_UPDATE or LINPHONE_CALL_STATS_SENT_RTCP_UPDATE */
|
||||
float rtcp_download_bandwidth; /**<RTCP download bandwidth measurement of received stream, expressed in kbit/s, including IP/UDP/RTP headers*/
|
||||
float rtcp_upload_bandwidth; /**<RTCP download bandwidth measurement of sent stream, expressed in kbit/s, including IP/UDP/RTP headers*/
|
||||
rtp_stats_t rtp_stats; /**< RTP stats */
|
||||
int rtp_remote_family; /**< Ip adress family of the remote destination */
|
||||
int clockrate; /*RTP clockrate of the stream, provided here for easily converting timestamp units expressed in RTCP packets in milliseconds*/
|
||||
bool_t rtcp_received_via_mux; /*private flag, for non-regression test only*/
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -85,21 +86,23 @@ LINPHONE_PUBLIC float linphone_call_stats_get_receiver_loss_rate(const LinphoneC
|
|||
|
||||
/**
|
||||
* Gets the local interarrival jitter
|
||||
* @param[in] stats LinphoneCallStats object
|
||||
* @return The interarrival jitter at last emitted sender report
|
||||
* @FIXME this function shall not take a LinphoneCall parameter.
|
||||
**/
|
||||
LINPHONE_PUBLIC float linphone_call_stats_get_sender_interarrival_jitter(const LinphoneCallStats *stats, LinphoneCall *call);
|
||||
LINPHONE_PUBLIC float linphone_call_stats_get_sender_interarrival_jitter(const LinphoneCallStats *stats);
|
||||
|
||||
/**
|
||||
* Gets the remote reported interarrival jitter
|
||||
* @param[in] stats LinphoneCallStats object
|
||||
* @return The interarrival jitter at last received receiver report
|
||||
**/
|
||||
LINPHONE_PUBLIC float linphone_call_stats_get_receiver_interarrival_jitter(const LinphoneCallStats *stats, LinphoneCall *call);
|
||||
LINPHONE_PUBLIC float linphone_call_stats_get_receiver_interarrival_jitter(const LinphoneCallStats *stats);
|
||||
|
||||
LINPHONE_PUBLIC const rtp_stats_t *linphone_call_stats_get_rtp_stats(const LinphoneCallStats *statss);
|
||||
LINPHONE_PUBLIC const rtp_stats_t *linphone_call_stats_get_rtp_stats(const LinphoneCallStats *stats);
|
||||
|
||||
/**
|
||||
* Gets the cumulative number of late packets
|
||||
* @param[in] stats LinphoneCallStats object
|
||||
* @return The cumulative number of late packets
|
||||
**/
|
||||
LINPHONE_PUBLIC uint64_t linphone_call_stats_get_late_packets_cumulative_number(const LinphoneCallStats *stats);
|
||||
|
|
|
|||
2
oRTP
2
oRTP
|
|
@ -1 +1 @@
|
|||
Subproject commit bf36b4f63e987765a5463e350f3278f8b80dbacb
|
||||
Subproject commit 945ceb0b3ac0b6c87da8679ee6dbc2bedafdfabe
|
||||
|
|
@ -2972,7 +2972,7 @@ void check_media_direction(LinphoneCoreManager* mgr, LinphoneCall *call, bctbx_l
|
|||
break;
|
||||
}
|
||||
|
||||
BC_ASSERT_TRUE(wait_for_list(lcs, &mgr->stat.number_of_IframeDecoded,current_recv_iframe + expected_recv_iframe,3000));
|
||||
BC_ASSERT_TRUE(wait_for_list(lcs, &mgr->stat.number_of_IframeDecoded,current_recv_iframe + expected_recv_iframe,10000));
|
||||
}
|
||||
#endif
|
||||
if (audio_dir != LinphoneMediaDirectionInvalid){
|
||||
|
|
|
|||
|
|
@ -1255,6 +1255,9 @@ static void accept_call_in_send_only_base(LinphoneCoreManager* pauline, Linphone
|
|||
linphone_core_set_video_policy(marie->lc,&pol);
|
||||
linphone_core_set_video_device(marie->lc,liblinphone_tester_mire_id);
|
||||
|
||||
/*The send-only client shall set rtp symmetric in absence of media relay for this test.*/
|
||||
lp_config_set_int(marie->lc->config,"rtp","symmetric",1);
|
||||
|
||||
linphone_call_set_next_video_frame_decoded_callback(linphone_core_invite_address(pauline->lc,marie->identity)
|
||||
,linphone_call_iframe_decoded_cb
|
||||
,pauline->lc);
|
||||
|
|
@ -1303,7 +1306,6 @@ static void accept_call_in_send_base(bool_t caller_has_ice) {
|
|||
|
||||
accept_call_in_send_only_base(pauline,marie,lcs);
|
||||
|
||||
|
||||
end_call(marie,pauline);
|
||||
bctbx_list_free(lcs);
|
||||
linphone_core_manager_destroy(marie);
|
||||
|
|
@ -1540,7 +1542,11 @@ static void classic_video_entry_phone_setup(void) {
|
|||
if (ms_factory_get_encoder(linphone_core_get_ms_factory(callee_mgr->lc), "H264")->id == MS_VT_H264_ENC_ID){
|
||||
MSVideoSize vsize = MS_VIDEO_SIZE_VGA;
|
||||
linphone_core_set_preferred_video_size(callee_mgr->lc, vsize);
|
||||
linphone_core_set_preferred_video_size(callee_mgr->lc, vsize);
|
||||
linphone_core_set_preferred_video_size(caller_mgr->lc, vsize);
|
||||
linphone_core_set_download_bandwidth(callee_mgr->lc, 512);
|
||||
linphone_core_set_download_bandwidth(caller_mgr->lc, 512);
|
||||
linphone_core_set_upload_bandwidth(callee_mgr->lc, 512);
|
||||
linphone_core_set_upload_bandwidth(caller_mgr->lc, 512);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -162,7 +162,7 @@ static void subscriber_no_longer_reachable(void){
|
|||
linphone_core_send_initial_subscribes(lc);
|
||||
}
|
||||
*/
|
||||
wait_for_until(pauline1->lc, marie->lc, 0, 0, 3000);
|
||||
wait_for_until(pauline1->lc, marie->lc, 0, 0, 4000);
|
||||
|
||||
presence =linphone_presence_model_new_with_activity(LinphonePresenceActivityBusy,NULL);
|
||||
linphone_core_set_presence_model(pauline1->lc,presence);
|
||||
|
|
|
|||
|
|
@ -386,7 +386,7 @@ static void quality_reporting_interval_report_video_and_rtt(void) {
|
|||
|
||||
if (create_call_for_quality_reporting_tests(marie, pauline, &call_marie, &call_pauline, marie_params, pauline_params)) {
|
||||
linphone_reporting_set_on_report_send(call_marie, on_report_send_mandatory);
|
||||
linphone_proxy_config_set_quality_reporting_interval(call_marie->dest_proxy, 1);
|
||||
linphone_proxy_config_set_quality_reporting_interval(call_marie->dest_proxy, 3);
|
||||
|
||||
BC_ASSERT_TRUE(wait_for_until(marie->lc,pauline->lc,NULL,0,3000));
|
||||
BC_ASSERT_TRUE(linphone_call_params_video_enabled(linphone_call_get_current_params(call_pauline)));
|
||||
|
|
@ -396,8 +396,8 @@ static void quality_reporting_interval_report_video_and_rtt(void) {
|
|||
BC_ASSERT_PTR_NOT_NULL(linphone_core_get_current_call(pauline->lc));
|
||||
|
||||
// PUBLISH submission to the collector should be ok
|
||||
BC_ASSERT_TRUE(wait_for_until(marie->lc,pauline->lc,&marie->stat.number_of_LinphonePublishProgress,1,60000));
|
||||
BC_ASSERT_TRUE(wait_for_until(marie->lc,pauline->lc,&marie->stat.number_of_LinphonePublishOk,1,60000));
|
||||
BC_ASSERT_TRUE(wait_for_until(marie->lc,pauline->lc,&marie->stat.number_of_LinphonePublishProgress,1,5000));
|
||||
BC_ASSERT_TRUE(wait_for_until(marie->lc,pauline->lc,&marie->stat.number_of_LinphonePublishOk,1,10000));
|
||||
|
||||
pauline_chat_room = linphone_call_get_chat_room(call_pauline);
|
||||
BC_ASSERT_PTR_NOT_NULL(pauline_chat_room);
|
||||
|
|
@ -414,10 +414,10 @@ static void quality_reporting_interval_report_video_and_rtt(void) {
|
|||
}
|
||||
linphone_chat_room_send_chat_message(pauline_chat_room, rtt_message);
|
||||
}
|
||||
|
||||
|
||||
end_call(marie, pauline);
|
||||
/*wait for publish triggered by the end of call to be completed*/
|
||||
wait_for_until(marie->lc,pauline->lc,NULL,0,6000);
|
||||
/*wait that all publish complete*/
|
||||
BC_ASSERT_TRUE(wait_for_until(marie->lc,pauline->lc,&marie->stat.number_of_LinphonePublishOk,marie->stat.number_of_LinphonePublishProgress,15000));
|
||||
}
|
||||
|
||||
linphone_call_params_unref(marie_params);
|
||||
|
|
|
|||
|
|
@ -383,6 +383,25 @@ static void codec_setup(void){
|
|||
|
||||
}
|
||||
|
||||
static void custom_tones_setup(void){
|
||||
LinphoneCoreManager *mgr = linphone_core_manager_new2("empty_rc", FALSE);
|
||||
const char *tone;
|
||||
|
||||
linphone_core_set_tone(mgr->lc, LinphoneToneCallOnHold, "callonhold.wav");
|
||||
tone = linphone_core_get_tone_file(mgr->lc, LinphoneToneCallOnHold);
|
||||
BC_ASSERT_PTR_NOT_NULL(tone);
|
||||
if (tone){
|
||||
BC_ASSERT_STRING_EQUAL(tone, "callonhold.wav");
|
||||
}
|
||||
linphone_core_set_tone(mgr->lc, LinphoneToneCallOnHold, "callonhold2.wav");
|
||||
tone = linphone_core_get_tone_file(mgr->lc, LinphoneToneCallOnHold);
|
||||
BC_ASSERT_PTR_NOT_NULL(tone);
|
||||
if (tone){
|
||||
BC_ASSERT_STRING_EQUAL(tone, "callonhold2.wav");
|
||||
}
|
||||
linphone_core_manager_destroy(mgr);
|
||||
}
|
||||
|
||||
test_t setup_tests[] = {
|
||||
TEST_NO_TAG("Version check", linphone_version_test),
|
||||
TEST_NO_TAG("Linphone Address", linphone_address_test),
|
||||
|
|
@ -398,7 +417,8 @@ test_t setup_tests[] = {
|
|||
TEST_NO_TAG("Chat room", chat_room_test),
|
||||
TEST_NO_TAG("Devices reload", devices_reload_test),
|
||||
TEST_NO_TAG("Codec usability", codec_usability_test),
|
||||
TEST_NO_TAG("Codec setup", codec_setup)
|
||||
TEST_NO_TAG("Codec setup", codec_setup),
|
||||
TEST_NO_TAG("Custom tones setup", custom_tones_setup)
|
||||
};
|
||||
|
||||
test_suite_t setup_test_suite = {"Setup", NULL, NULL, liblinphone_tester_before_each, liblinphone_tester_after_each,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue