natfw/natfwconnectionmultiplexer/src/cncmconnectionobserverhandler.cpp
changeset 28 434647e7f45b
parent 0 1bce908db942
--- a/natfw/natfwconnectionmultiplexer/src/cncmconnectionobserverhandler.cpp	Thu May 27 13:16:26 2010 +0300
+++ b/natfw/natfwconnectionmultiplexer/src/cncmconnectionobserverhandler.cpp	Fri Jun 11 14:03:38 2010 +0300
@@ -260,20 +260,25 @@
         const TInt KRtpRtcpDiffByteOffset( 1 );
         const TInt KLowestAssignedRtcpMsgType = 200;
         const TInt KHighestAssignedRtcpMsgType = 209;
+        TInt rtcpType = aMessage[KRtpRtcpDiffByteOffset];
         TBool isRtcp = 
-           ( KLowestAssignedRtcpMsgType <= aMessage[KRtpRtcpDiffByteOffset] &&
-            aMessage[KRtpRtcpDiffByteOffset] <= KHighestAssignedRtcpMsgType );
+           ( KLowestAssignedRtcpMsgType <= rtcpType &&
+        		   rtcpType <= KHighestAssignedRtcpMsgType );
         
-        // This offset refers either to SR RTP timestamp or RR highest 
-        // sequence number received. These are unique for a distinct 
-        // RTCP packet.
-        const TInt KRtcpDiffByteOffset( 19 );
+        // This offset refers to RR highest sequence number received.
+        const TInt KRRtcpDiffByteOffset( 19 );
+        
+        // This offset refers either to SR RTP packet count received.
+        const TInt KSRtcpDiffByteOffset( 23 );
         
         // This offset refers to lower byte of unique RTP sequence number.
         const TInt KRtpDiffByteOffset( 3 );
         TInt diffByteOffset 
-            = isRtcp ? KRtcpDiffByteOffset : KRtpDiffByteOffset;
+            = isRtcp ? KRRtcpDiffByteOffset : KRtpDiffByteOffset;
 
+        diffByteOffset = (rtcpType == KLowestAssignedRtcpMsgType)?
+        		KSRtcpDiffByteOffset : diffByteOffset;
+        
         if ( diffByteOffset < aMessage.Size() )
             {
             hash = aMessage[diffByteOffset];
@@ -294,14 +299,12 @@
             }
         else
             {
-            isDuplicate = EFalse;
-            }
-        
-        iLatestHashes.Append( hash );
-        const TInt KMaxHashCount( 5 );
-        if ( KMaxHashCount <= iLatestHashes.Count() )
-            {
-            iLatestHashes.Remove( 0 );
+            iLatestHashes.Append( hash );
+            const TInt KMaxHashCount( 5 );
+            if ( KMaxHashCount <= iLatestHashes.Count() )
+                {
+                iLatestHashes.Remove( 0 );
+                }
             }
         }
     else