mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-05-07 05:53:06 +00:00
Add estimated download bandwith stat for video calls
This commit is contained in:
parent
6fab784445
commit
9dbf7e36de
6 changed files with 33 additions and 2 deletions
|
|
@ -3438,6 +3438,10 @@ extern "C" jfloat Java_org_linphone_core_LinphoneCallStatsImpl_getUploadBandwidt
|
|||
LinphoneCallStats *stats = (LinphoneCallStats *)stats_ptr;
|
||||
return (jfloat)linphone_call_stats_get_upload_bandwidth(stats);
|
||||
}
|
||||
extern "C" jfloat Java_org_linphone_core_LinphoneCallStatsImpl_getEstimatedDownloadBandwidth(JNIEnv *env, jobject thiz, jlong stats_ptr) {
|
||||
LinphoneCallStats *stats = (LinphoneCallStats *)stats_ptr;
|
||||
return (jfloat)linphone_call_stats_get_estimated_download_bandwidth(stats);
|
||||
}
|
||||
extern "C" jfloat Java_org_linphone_core_LinphoneCallStatsImpl_getSenderLossRate(JNIEnv *env, jobject thiz, jlong stats_ptr) {
|
||||
LinphoneCallStats *stats = (LinphoneCallStats *)stats_ptr;
|
||||
return (jfloat) linphone_call_stats_get_sender_loss_rate(stats);
|
||||
|
|
|
|||
|
|
@ -191,6 +191,13 @@ LINPHONE_PUBLIC float linphone_call_stats_get_jitter_buffer_size_ms (const Linph
|
|||
*/
|
||||
LINPHONE_PUBLIC float linphone_call_stats_get_round_trip_delay (const LinphoneCallStats *stats);
|
||||
|
||||
/**
|
||||
* Get the estimated bandwidth measurement of the received stream, expressed in kbit/s, including IP/UDP/RTP headers.
|
||||
* @param[in] stats LinphoneCallStats object
|
||||
* @return The estimated bandwidth measurement of the received stream in kbit/s.
|
||||
*/
|
||||
LINPHONE_PUBLIC float linphone_call_stats_get_estimated_download_bandwidth(const LinphoneCallStats *stats);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -139,6 +139,12 @@ public interface LinphoneCallStats {
|
|||
* @return The upload bandwidth
|
||||
*/
|
||||
public float getUploadBandwidth();
|
||||
|
||||
/**
|
||||
* Get the estimated download bandwidth in kbit/s
|
||||
* @return The estimated download bandwidth
|
||||
*/
|
||||
public float getEstimatedDownloadBandwidth();
|
||||
|
||||
/**
|
||||
* Get the local loss rate since last report
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ class LinphoneCallStatsImpl implements LinphoneCallStats {
|
|||
private int iceState;
|
||||
private float downloadBandwidth;
|
||||
private float uploadBandwidth;
|
||||
private float estimatedDownloadBandwidth;
|
||||
private float senderLossRate;
|
||||
private float receiverLossRate;
|
||||
private float senderInterarrivalJitter;
|
||||
|
|
@ -39,6 +40,7 @@ class LinphoneCallStatsImpl implements LinphoneCallStats {
|
|||
private native int getIceState(long nativeStatsPtr);
|
||||
private native float getDownloadBandwidth(long nativeStatsPtr);
|
||||
private native float getUploadBandwidth(long nativeStatsPtr);
|
||||
private native float getEstimatedDownloadBandwidth(long nativeStatsptr);
|
||||
private native float getSenderLossRate(long nativeStatsPtr);
|
||||
private native float getReceiverLossRate(long nativeStatsPtr);
|
||||
private native float getSenderInterarrivalJitter(long nativeStatsPtr);
|
||||
|
|
@ -57,6 +59,7 @@ class LinphoneCallStatsImpl implements LinphoneCallStats {
|
|||
iceState = getIceState(nativeStatsPtr);
|
||||
downloadBandwidth = getDownloadBandwidth(nativeStatsPtr);
|
||||
uploadBandwidth = getUploadBandwidth(nativeStatsPtr);
|
||||
estimatedDownloadBandwidth = getEstimatedDownloadBandwidth(nativeStatsPtr);
|
||||
senderLossRate = getSenderLossRate(nativeStatsPtr);
|
||||
receiverLossRate = getReceiverLossRate(nativeStatsPtr);
|
||||
senderInterarrivalJitter = getSenderInterarrivalJitter(nativeStatsPtr);
|
||||
|
|
@ -81,6 +84,10 @@ class LinphoneCallStatsImpl implements LinphoneCallStats {
|
|||
public float getUploadBandwidth() {
|
||||
return uploadBandwidth;
|
||||
}
|
||||
|
||||
public float getEstimatedDownloadBandwidth() {
|
||||
return estimatedDownloadBandwidth;
|
||||
}
|
||||
|
||||
public float getSenderLossRate() {
|
||||
return senderLossRate;
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ struct _LinphoneCallStats {
|
|||
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*/
|
||||
float estimated_download_bandwidth; /**<Estimated download bandwidth measurement of received stream, expressed in kbit/s, including IP/UDP/RTP headers*/
|
||||
};
|
||||
|
||||
BELLE_SIP_DECLARE_VPTR_NO_EXPORT(LinphoneCallStats);
|
||||
|
|
@ -354,3 +355,7 @@ float linphone_call_stats_get_jitter_buffer_size_ms (const LinphoneCallStats *st
|
|||
float linphone_call_stats_get_round_trip_delay (const LinphoneCallStats *stats) {
|
||||
return stats->round_trip_delay;
|
||||
}
|
||||
|
||||
float linphone_call_stats_get_estimated_download_bandwidth(const LinphoneCallStats *stats) {
|
||||
return stats->estimated_download_bandwidth;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2297,7 +2297,9 @@ void MediaSessionPrivate::handleStreamEvents (int streamIndex) {
|
|||
telephoneEventReceived(evd->info.telephone_event);
|
||||
} else if (evt == ORTP_EVENT_NEW_VIDEO_BANDWIDTH_ESTIMATION_AVAILABLE) {
|
||||
lInfo() << "Video bandwidth estimation is " << (int)(evd->info.video_bandwidth_available / 1000.) << " kbit/s";
|
||||
// TODO
|
||||
/* If this event happens then it should be a video stream */
|
||||
if (stream_index == call->main_video_stream_index)
|
||||
stats->estimated_download_bandwidth = (float)(evd->info.video_bandwidth_available)*1e-3;
|
||||
}
|
||||
ortp_event_destroy(ev);
|
||||
}
|
||||
|
|
@ -3426,7 +3428,7 @@ void MediaSessionPrivate::reportBandwidth () {
|
|||
|
||||
lInfo() << "Bandwidth usage for CallSession [" << q << "]:\n" << fixed << setprecision(2) <<
|
||||
"\tRTP audio=[d=" << linphone_call_stats_get_download_bandwidth(audioStats) << ",u=" << linphone_call_stats_get_upload_bandwidth(audioStats) <<
|
||||
"], video=[d=" << linphone_call_stats_get_download_bandwidth(videoStats) << ",u=" << linphone_call_stats_get_upload_bandwidth(videoStats) <<
|
||||
"], video=[d=" << linphone_call_stats_get_download_bandwidth(videoStats) << ",u=" << linphone_call_stats_get_upload_bandwidth(videoStats) << ",ed=" << linphone_call_stats_get_estimated_download_bandwidth(videoStats) <<
|
||||
"], text=[d=" << linphone_call_stats_get_download_bandwidth(textStats) << ",u=" << linphone_call_stats_get_upload_bandwidth(textStats) << "] kbits/sec\n" <<
|
||||
"\tRTCP audio=[d=" << linphone_call_stats_get_rtcp_download_bandwidth(audioStats) << ",u=" << linphone_call_stats_get_rtcp_upload_bandwidth(audioStats) <<
|
||||
"], video=[d=" << linphone_call_stats_get_rtcp_download_bandwidth(videoStats) << ",u=" << linphone_call_stats_get_rtcp_upload_bandwidth(videoStats) <<
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue