webrtcstats: Unify 'packets-lost' data type to int64
authorSangchul Lee <sc11.lee@samsung.com>
Mon, 28 Mar 2022 12:25:50 +0000 (21:25 +0900)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Thu, 31 Mar 2022 05:37:39 +0000 (05:37 +0000)
Previously, 'packets-lost' member of RTCReceivedRtpStreamStats had
a value of G_TYPE_INT from rtpsource or a value of G_TYPE_UINT64
from rtpjitterbuffer.
Because of the negative value of estimated amount of packets lost
in rtpsource as well as the description in
https://www.w3.org/TR/webrtc-stats/#dom-rtcreceivedrtpstreamstats
it is fixed to set this value with G_TYPE_INT64.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2049>

subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c
subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcstats.c
subprojects/gst-plugins-bad/tests/check/elements/webrtcbin.c

index 0584e08a148caa0ade4829bcd6c89f21239e4504..c847c09e35fa1bea052837e46086c66977f9231f 100644 (file)
@@ -8316,7 +8316,7 @@ gst_webrtc_bin_class_init (GstWebRTCBinClass * klass)
    * RTCReceivedStreamStats supported fields (https://w3c.github.io/webrtc-stats/#receivedrtpstats-dict*)
    *
    *  "packets-received"    G_TYPE_UINT64               number of packets received (only for local inbound)
-   *  "packets-lost"        G_TYPE_UINT64               number of packets lost
+   *  "packets-lost"        G_TYPE_INT64                number of packets lost
    *  "packets-discarded"   G_TYPE_UINT64               number of packets discarded
    *  "packets-repaired"    G_TYPE_UINT64               number of packets repaired
    *  "jitter"              G_TYPE_DOUBLE               packet jitter measured in seconds
index 4931a42f17e0eebd414eedabc2f19cf94da4c473..10074b9547fd2522b03bffe73e8254f385971583 100644 (file)
@@ -142,7 +142,7 @@ _get_stats_from_remote_rtp_source_stats (GstWebRTCBin * webrtc,
   /* RTCReceivedRtpStreamStats */
 
   if (gst_structure_get_int (source_stats, "rb-packetslost", &lost))
-    gst_structure_set (r_in, "packets-lost", G_TYPE_INT, lost, NULL);
+    gst_structure_set (r_in, "packets-lost", G_TYPE_INT64, (gint64) lost, NULL);
 
   if (clock_rate && gst_structure_get_uint (source_stats, "rb-jitter", &jitter))
     gst_structure_set (r_in, "jitter", G_TYPE_DOUBLE,
@@ -359,8 +359,11 @@ _get_stats_from_rtp_source_stats (GstWebRTCBin * webrtc,
 
     if (gst_structure_get_uint64 (source_stats, "packets-received", &packets))
       gst_structure_set (in, "packets-received", G_TYPE_UINT64, packets, NULL);
-    if (jb_stats)
-      gst_structure_set (in, "packets-lost", G_TYPE_UINT64, jb_lost, NULL);
+    if (jb_stats) {
+      gint64 packets_lost = jb_lost > G_MAXINT64 ?
+          G_MAXINT64 : (gint64) jb_lost;
+      gst_structure_set (in, "packets-lost", G_TYPE_INT64, packets_lost, NULL);
+    }
     if (gst_structure_get_uint (source_stats, "jitter", &jitter))
       gst_structure_set (in, "jitter", G_TYPE_DOUBLE,
           CLOCK_RATE_VALUE_TO_SECONDS (jitter, clock_rate), NULL);
index 40cd6bdc95128aed80db16b813d37240fd968e7c..b1ce5b15379a518d3543fd1bb735a0639361e69b 100644 (file)
@@ -1453,7 +1453,7 @@ static void
 validate_inbound_rtp_stats (const GstStructure * s, const GstStructure * stats)
 {
   guint ssrc, fir, pli, nack;
-  gint packets_lost;
+  gint64 packets_lost;
   guint64 packets_received, bytes_received;
   double jitter;
   gchar *remote_id;
@@ -1470,8 +1470,8 @@ validate_inbound_rtp_stats (const GstStructure * s, const GstStructure * stats)
   fail_unless (gst_structure_get (s, "bytes-received", G_TYPE_UINT64,
           &bytes_received, NULL));
   fail_unless (gst_structure_get (s, "jitter", G_TYPE_DOUBLE, &jitter, NULL));
-  fail_unless (gst_structure_get (s, "packets-lost", G_TYPE_INT, &packets_lost,
-          NULL));
+  fail_unless (gst_structure_get (s, "packets-lost", G_TYPE_INT64,
+          &packets_lost, NULL));
   fail_unless (gst_structure_get (s, "remote-id", G_TYPE_STRING, &remote_id,
           NULL));
   fail_unless (gst_structure_get (stats, remote_id, GST_TYPE_STRUCTURE, &remote,
@@ -1487,7 +1487,7 @@ validate_remote_inbound_rtp_stats (const GstStructure * s,
     const GstStructure * stats)
 {
   guint ssrc;
-  gint packets_lost;
+  gint64 packets_lost;
   double jitter, rtt;
   gchar *local_id;
   GstStructure *local;
@@ -1496,8 +1496,8 @@ validate_remote_inbound_rtp_stats (const GstStructure * s,
 
   fail_unless (gst_structure_get (s, "ssrc", G_TYPE_UINT, &ssrc, NULL));
   fail_unless (gst_structure_get (s, "jitter", G_TYPE_DOUBLE, &jitter, NULL));
-  fail_unless (gst_structure_get (s, "packets-lost", G_TYPE_INT, &packets_lost,
-          NULL));
+  fail_unless (gst_structure_get (s, "packets-lost", G_TYPE_INT64,
+          &packets_lost, NULL));
   fail_unless (gst_structure_get (s, "round-trip-time", G_TYPE_DOUBLE, &rtt,
           NULL));
   fail_unless (gst_structure_get (s, "local-id", G_TYPE_STRING, &local_id,