Fixed RTCP statistic returning fraction lost instead of total lost

git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@537 74dad513-b988-da41-8d7b-12977e46ad98
diff --git a/pjmedia/include/pjmedia/rtcp.h b/pjmedia/include/pjmedia/rtcp.h
index 60ad19f..b515dac 100644
--- a/pjmedia/include/pjmedia/rtcp.h
+++ b/pjmedia/include/pjmedia/rtcp.h
@@ -156,10 +156,10 @@
     unsigned	    update_cnt;	/**< Number of updates (to calculate avg)   */
     pj_uint32_t	    pkt;	/**< Total number of packets		    */
     pj_uint32_t	    bytes;	/**< Total number of payload/bytes	    */
-    unsigned	    discard;	/**< Number of discarded packets.	    */
-    unsigned	    loss;	/**< Number of packets lost		    */
-    unsigned	    reorder;	/**< Number of out of order packets	    */
-    unsigned	    dup;	/**< Number of duplicates packets	    */
+    unsigned	    discard;	/**< Total number of discarded packets.	    */
+    unsigned	    loss;	/**< Total number of packets lost	    */
+    unsigned	    reorder;	/**< Total number of out of order packets   */
+    unsigned	    dup;	/**< Total number of duplicates packets	    */
 
     struct {
 	unsigned    count;	/**< Number of period samples(to calc avg)  */
diff --git a/pjmedia/src/pjmedia/rtcp.c b/pjmedia/src/pjmedia/rtcp.c
index 7c5b8d5..f96d818 100644
--- a/pjmedia/src/pjmedia/rtcp.c
+++ b/pjmedia/src/pjmedia/rtcp.c
@@ -207,13 +207,19 @@
 	rtcp_init_seq(sess);
     }
     
-    if (seq_st.status.flag.dup)
+    if (seq_st.status.flag.dup) {
 	sess->stat.rx.dup++;
-    if (seq_st.status.flag.outorder)
+	TRACE_((sess->name, "Duplicate packet detected"));
+    }
+
+    if (seq_st.status.flag.outorder) {
 	sess->stat.rx.reorder++;
+	TRACE_((sess->name, "Out-of-order packet detected"));
+    }
 
     if (seq_st.status.flag.bad) {
 	sess->stat.rx.discard++;
+	TRACE_((sess->name, "Bad packet discarded"));
 	return;
     }
 
@@ -233,6 +239,7 @@
 	 * outbound RTCP RR.
 	 */
 	sess->stat.rx.loss += (seq_st.diff - 1);
+	TRACE_((sess->name, "%d packet(s) lost", seq_st.diff - 1));
 
 	/* Update loss period stat */
 	if (sess->stat.rx.loss_period.count == 0 ||
@@ -541,10 +548,13 @@
     
     /* Total lost. */
     expected = pj_ntohl(rtcp_pkt->rr.last_seq) - sess->seq_ctrl.base_seq;
+
+    /* This is bug: total lost already calculated on each incoming RTP!
     if (expected >= sess->received)
 	sess->stat.rx.loss = expected - sess->received;
     else
 	sess->stat.rx.loss = 0;
+    */
 
     rtcp_pkt->rr.total_lost_2 = (sess->stat.rx.loss >> 16) & 0xFF;
     rtcp_pkt->rr.total_lost_1 = (sess->stat.rx.loss >> 8) & 0xFF;