diff --git a/app/src/main/java/org/linphone/ui/call/model/CallStatsModel.kt b/app/src/main/java/org/linphone/ui/call/model/CallStatsModel.kt index cef25e1b2..8ac74357f 100644 --- a/app/src/main/java/org/linphone/ui/call/model/CallStatsModel.kt +++ b/app/src/main/java/org/linphone/ui/call/model/CallStatsModel.kt @@ -32,10 +32,13 @@ import org.linphone.utils.AppUtils class CallStatsModel @WorkerThread constructor() { val audioCodec = MutableLiveData() val audioBandwidth = MutableLiveData() + val lossRate = MutableLiveData() + val jitterBuffer = MutableLiveData() val isVideoEnabled = MutableLiveData() val videoCodec = MutableLiveData() val videoBandwidth = MutableLiveData() + val videoLossRate = MutableLiveData() val videoResolution = MutableLiveData() val videoFps = MutableLiveData() @@ -76,6 +79,21 @@ class CallStatsModel @WorkerThread constructor() { "↑ $uploadBandwidth kbits/s ↓ $downloadBandwidth kbits/s" ) audioBandwidth.postValue(bandwidthLabel) + + val uploadLoss = stats.receiverLossRate.roundToInt() + val downloadLoss = stats.localLossRate.roundToInt() + val lossRateLabel = AppUtils.getFormattedString( + R.string.call_stats_loss_rate_label, + "↑ $uploadLoss% ↓ $downloadLoss%" + ) + lossRate.postValue(lossRateLabel) + + val jitterBufferSize = stats.jitterBufferSizeMs.roundToInt() + val jitterBufferLabel = AppUtils.getFormattedString( + R.string.call_stats_jitter_buffer_label, + "$jitterBufferSize ms" + ) + jitterBuffer.postValue(jitterBufferLabel) } StreamType.Video -> { val payloadType = call.currentParams.usedVideoPayloadType @@ -94,6 +112,14 @@ class CallStatsModel @WorkerThread constructor() { ) videoBandwidth.postValue(bandwidthLabel) + val uploadLoss = stats.receiverLossRate.roundToInt() + val downloadLoss = stats.localLossRate.roundToInt() + val lossRateLabel = AppUtils.getFormattedString( + R.string.call_stats_loss_rate_label, + "↑ $uploadLoss% ↓ $downloadLoss%" + ) + videoLossRate.postValue(lossRateLabel) + val sentResolution = call.currentParams.sentVideoDefinition?.name val receivedResolution = call.currentParams.receivedVideoDefinition?.name val resolutionLabel = AppUtils.getFormattedString( diff --git a/app/src/main/res/layout-land/call_stats_bottom_sheet.xml b/app/src/main/res/layout-land/call_stats_bottom_sheet.xml index a1893b2fd..a954444b2 100644 --- a/app/src/main/res/layout-land/call_stats_bottom_sheet.xml +++ b/app/src/main/res/layout-land/call_stats_bottom_sheet.xml @@ -75,13 +75,35 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" - android:layout_marginBottom="10dp" android:text="@{model.audioBandwidth, default=@string/call_stats_bandwidth_label}" android:textColor="@color/white" android:maxLines="1" android:ellipsize="end" android:gravity="center" /> + + + + + + + + + + + + Audio Codec : %s Bande passante : %s + Taux de perte : %s + Tampon de gigue : %s Vidéo - Résolution : %s + Définition : %s FPS : %s FEC Paquets perdus : %s diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bb5960641..c13578079 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -667,6 +667,8 @@ Audio Codec: %s Bandwidth: %s + Loss rate: %s + Jitter buffer: %s Video Resolution: %s FPS: %s