Added more call stats (loss rate & jitter buffer)

This commit is contained in:
Sylvain Berfini 2024-10-15 14:13:03 +02:00
parent e3d356765d
commit 6d23402001
5 changed files with 99 additions and 3 deletions

View file

@ -32,10 +32,13 @@ import org.linphone.utils.AppUtils
class CallStatsModel @WorkerThread constructor() {
val audioCodec = MutableLiveData<String>()
val audioBandwidth = MutableLiveData<String>()
val lossRate = MutableLiveData<String>()
val jitterBuffer = MutableLiveData<String>()
val isVideoEnabled = MutableLiveData<Boolean>()
val videoCodec = MutableLiveData<String>()
val videoBandwidth = MutableLiveData<String>()
val videoLossRate = MutableLiveData<String>()
val videoResolution = MutableLiveData<String>()
val videoFps = MutableLiveData<String>()
@ -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(

View file

@ -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" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@{model.lossRate, default=@string/call_stats_loss_rate_label}"
android:textColor="@color/white"
android:maxLines="1"
android:ellipsize="end"
android:gravity="center" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:text="@{model.jitterBuffer, default=@string/call_stats_jitter_buffer_label}"
android:textColor="@color/white"
android:maxLines="1"
android:ellipsize="end"
android:gravity="center" />
</LinearLayout>
<LinearLayout
@ -132,6 +154,17 @@
android:ellipsize="end"
android:gravity="center" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@{model.videoLossRate, default=@string/call_stats_loss_rate_label}"
android:textColor="@color/white"
android:maxLines="1"
android:ellipsize="end"
android:gravity="center" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style"
android:layout_width="match_parent"

View file

@ -73,13 +73,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" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@{model.lossRate, default=@string/call_stats_loss_rate_label}"
android:textColor="@color/white"
android:maxLines="1"
android:ellipsize="end"
android:gravity="center" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:text="@{model.jitterBuffer, default=@string/call_stats_jitter_buffer_label}"
android:textColor="@color/white"
android:maxLines="1"
android:ellipsize="end"
android:gravity="center" />
</LinearLayout>
<LinearLayout
@ -129,6 +151,17 @@
android:ellipsize="end"
android:gravity="center" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@{model.videoLossRate, default=@string/call_stats_loss_rate_label}"
android:textColor="@color/white"
android:maxLines="1"
android:ellipsize="end"
android:gravity="center" />
<androidx.appcompat.widget.AppCompatTextView
style="@style/default_text_style"
android:layout_width="match_parent"

View file

@ -629,8 +629,10 @@
<string name="call_stats_audio_title">Audio</string>
<string name="call_stats_codec_label">Codec : %s</string>
<string name="call_stats_bandwidth_label">Bande passante : %s</string>
<string name="call_stats_loss_rate_label">Taux de perte : %s</string>
<string name="call_stats_jitter_buffer_label">Tampon de gigue : %s</string>
<string name="call_stats_video_title">Vidéo</string>
<string name="call_stats_resolution_label">Résolution : %s</string>
<string name="call_stats_resolution_label">Définition : %s</string>
<string name="call_stats_fps_label">FPS : %s</string>
<string name="call_stats_fec_title">FEC</string>
<string name="call_stats_fec_lost_packets_label">Paquets perdus : %s</string>

View file

@ -667,6 +667,8 @@
<string name="call_stats_audio_title">Audio</string>
<string name="call_stats_codec_label">Codec: %s</string>
<string name="call_stats_bandwidth_label">Bandwidth: %s</string>
<string name="call_stats_loss_rate_label">Loss rate: %s</string>
<string name="call_stats_jitter_buffer_label">Jitter buffer: %s</string>
<string name="call_stats_video_title">Video</string>
<string name="call_stats_resolution_label">Resolution: %s</string>
<string name="call_stats_fps_label">FPS: %s</string>