From 6b441e0122bea618b5ff8d9ae3438b2773611316 Mon Sep 17 00:00:00 2001
From: Boris Grozev <boris@jitsi.org>
Date: Sat, 20 Oct 2012 07:47:29 +0000
Subject: [PATCH] Fixes a bug with the number of discarded packets not being
 logged correctly.

---
 .../jitsi/impl/neomedia/MediaStreamImpl.java  | 28 ++++++++++++-------
 1 file changed, 18 insertions(+), 10 deletions(-)

diff --git a/src/org/jitsi/impl/neomedia/MediaStreamImpl.java b/src/org/jitsi/impl/neomedia/MediaStreamImpl.java
index 222ca684..f2d92499 100644
--- a/src/org/jitsi/impl/neomedia/MediaStreamImpl.java
+++ b/src/org/jitsi/impl/neomedia/MediaStreamImpl.java
@@ -537,6 +537,12 @@ protected CsrcTransformEngine getCsrcEngine()
      */
     public void close()
     {
+        /* Some statistics cannot be taken from the RTP manager and have to
+         * be gathered from the ReceiveStream. We need to do this before
+         * calling stop(). */
+        if(logger.isInfoEnabled())
+            printReceiveStreamStatistics();
+
         stop();
         closeSendStreams();
 
@@ -2688,16 +2694,6 @@ private void printFlowStatistics(StreamRTPManager rtpManager)
                     .append("\n").append(StatisticsEngine.RTP_STAT_PREFIX)
                 .append("unknown types: ").append(rs.getUnknownTypes());
 
-            /* The number of discarded packets is not available in
-             * <tt>GlobalReceptionStats</tt>. Neither is the number of
-             * decoded using FEC. */
-            buff.append("\n").append(StatisticsEngine.RTP_STAT_PREFIX)
-                    .append("discarded RTP packets: ")
-                        .append(mediaStreamStatsImpl.getNbDiscarded())
-                .append("\n").append(StatisticsEngine.RTP_STAT_PREFIX)
-                    .append("decoded with FEC: ")
-                        .append(mediaStreamStatsImpl.getNbFec());
-
             logger.info(buff);
         }
         catch(Throwable t)
@@ -2706,6 +2702,18 @@ private void printFlowStatistics(StreamRTPManager rtpManager)
         }
     }
 
+    private void printReceiveStreamStatistics()
+    {
+        mediaStreamStatsImpl.updateStats();
+        StringBuilder buff = new StringBuilder("\nReceive stream stats: " +
+            "discarded RTP packets: ")
+                .append(mediaStreamStatsImpl.getNbDiscarded())
+                .append("\n").append("Receive stream stats: " +
+                    "decoded with FEC: ")
+                .append(mediaStreamStatsImpl.getNbFec());
+        logger.info(buff);
+    }
+
     /**
      * Sets the <tt>RTPTranslator</tt> which is to forward RTP and RTCP traffic
      * between this and other <tt>MediaStream</tt>s.
-- 
GitLab