--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommscontroller/mmccrtpsourcesink/inc/mccjittercalculator.h Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,213 @@
+/*
+* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: MccJitterCalculator calculates jitter level and compares given
+* triggers.
+*
+*/
+
+
+
+
+#ifndef MCCJITTERCALCULATOR_H
+#define MCCJITTERCALCULATOR_H
+
+// INCLUDES
+#include <mmf/common/mmfcontrollerframework.h>
+#include <mmccinterfacedef.h>
+
+#ifdef FTD_ENABLED
+#include <e32msgqueue.h>
+#include <mccstreamstats.h>
+#include <mccjbufferstats.h>
+#endif
+
+
+// CLASS DECLARATION
+
+/**
+* Observer for jitter calculation event notification
+*
+* @lib MccRtpSourceSink.dll
+* @since Series 60 3.2
+*/
+class MRtpJitterObserver
+ {
+ public:
+ virtual void SendJitterEvent( TMccRtpEventData aEvent, TInt aError ) = 0;
+ };
+
+
+/**
+* Class which implements jittercalculations for received RTP packets
+*
+* @lib Mccrtpsourcesink.dll
+* @since Series 60 3.0
+*/
+class CMccJitterCalculator : public CBase
+ {
+ public: // Constructors and destructor
+
+ /**
+ * Two-phased constructor.
+ */
+ static CMccJitterCalculator* NewL( MRtpJitterObserver& aObserver );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CMccJitterCalculator( );
+
+ public: // New functions
+
+ /**
+ * Starts media quality observing
+ * @since Series 60 3.0
+ * @return Error code
+ */
+ TInt StartObserving();
+
+ /**
+ * Cancels media quality observing
+ * @since Series 60 3.0
+ * @return void
+ */
+ void CancelObserving();
+
+ /**
+ * Handles received packets and calculates jitter level
+ * @since Series 60 3.0
+ * @param "aHeaderInfo"
+ * RTP header from received packet
+ * @return void
+ */
+ void RtpPacketReceived( const TUint32 aTimeStamp, TBool aMarker );
+
+ /**
+ * Set media configurations
+ * @since Series 60 3.0
+ * @param "aMessage"
+ * message from client
+ * @return void
+ */
+ void SetMediaConfigsL( const TMMFMessage& aMessage );
+
+ /**
+ * Reset local counters
+ * @since Series 60 3.0
+ * @return void
+ */
+ void ResetCounters( );
+
+ /**
+ * Check the observing status
+ * @since Series 60 3.0
+ * @return iMediaQualityObservingStarted
+ */
+ TBool IsObserving() const;
+
+ private:
+ /**
+ * C++ default constructor.
+ */
+ CMccJitterCalculator( MRtpJitterObserver& aObserver );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL();
+
+ /**
+ * Jitter level observing routines
+ * @since Series 60 3.0
+ * @return void
+ */
+ void JitterObserving();
+
+ private:
+
+ // Number of packets received
+ TUint32 iPacketsReceived;
+
+ // Current jitter estimate
+ TUint64 iCurJitter;
+
+ // Holds the previous packet arrival time
+ TTime iPrevPacketArrival;
+
+ // Holds the previous packets transit time
+ TInt64 iPrevPacketTransit;
+
+ // Indicates reference jitter level from client
+ TUint iJitterLevelFromClient;
+
+ // Indicates current report type
+ TInt iReportType;
+
+ // Indicates report interval type
+ TInt iReportIntervalType;
+
+ // Indicates report interval
+ TInt iReportInterval;
+
+ // Flags for indicating jitter level observing state and frame loss rate
+ TBool iJitterObsOn;
+ TBool iFrameLossObsOn;
+
+ // Indicates observing state. Refer to IsObserving-method
+ TBool iMediaQualityObservingStarted;
+
+ // Indicates interval time
+ TTime iIntervalTime;
+
+ // Indicates packet loss rate from client
+ TInt iPacketLossFromClient;
+
+ // Indicates amount of received packets
+ TUint32 iReceivedPacketCounter;
+
+ // Media config buffer is filled with config data
+ TMccMediaQualityConfig iMediaConf;
+
+ // Indicates home time
+ TTime iHomeTime;
+
+ // Indicates current time
+ TTime iCurTime;
+
+ /**
+ * jitter observer
+ * Own.
+ */
+ MRtpJitterObserver* iObserver;
+
+ #ifdef FTD_ENABLED
+
+ // Message queue carrying stream statistics
+ RMsgQueue<TMccStreamStats> iStreamStatsQueue;
+
+ // Message queue carrying jitter buffer statistics
+ RMsgQueue<TMccJBufferStats> iJBufStatsQueue;
+
+ #endif
+
+ #ifdef TEST_EUNIT
+ public:
+ friend class UT_CMccRtpDataSource;
+ friend class UT_CMccJitterCalculator;
+ #endif
+ };
+
+#endif // MCCJITTERCALCULATOR_H
+
+// End of File