multimediacommscontroller/mmcccontroller/inc/mccresourceitem.h
changeset 0 1bce908db942
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/multimediacommscontroller/mmcccontroller/inc/mccresourceitem.h	Tue Feb 02 01:04:58 2010 +0200
@@ -0,0 +1,222 @@
+/*
+* Copyright (c) 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:    
+*
+*/
+
+
+
+
+#ifndef MCCRESOURCEITEM_H
+#define MCCRESOURCEITEM_H
+
+//  INCLUDES
+#include <e32base.h>
+
+#include "mccresources.h"
+
+// CONSTANTS
+const TInt KMccMaxNumKeyFrames = 5;
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class MDataSink;
+class MDataSource;
+class CMccMultiplexer;
+class CMMFBuffer;
+class CMccCameraHandler;
+
+// CLASS DECLARATION
+
+/**
+*
+*/
+class CMccResourceItem : public CBase
+    {
+    public:  // Constructors and destructor
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CMccResourceItem* NewLC( TUint32 aCurrentUserStreamId,
+                                        MDataSink* aSink, 
+                                        MDataSource* aSource, 
+                                        TUint32 aEndpointId,
+                                        TBool aIsMultiplexer = EFalse );
+        
+        /**
+        * Two-phased constructor.
+        */
+        static CMccResourceItem* NewL( TUint32 aCurrentUserStreamId,
+                                       MDataSink* aSink, 
+                                       MDataSource* aSource, 
+                                       TUint32 aEndpointId,
+                                       TBool aIsMultiplexer = EFalse );
+        /**
+        * Destructor.
+        */
+        virtual ~CMccResourceItem();
+        
+    public: // New functions
+    
+        TInt IncreaseRefCount( const TMccResourceParams& aUser );
+        
+        TBool DecreaseRefCount( const TMccResourceParams& aUser ); 
+        
+        TInt RefCount() const;
+    
+        TUint32 EndpointId() const;
+        
+        TBool IsNetworkResource() const;
+        
+        TBool IsResourceActive() const;
+        
+        TBool IsSharedResource() const;
+        
+        TBool NeedsCamera( CMccCameraHandler& aCameraHandler );
+        
+        TBool SetResourceStateL( TUint32 aStreamId, 
+                                 MMccResources::TResourceState aState,
+                                 TBool aStandbyControl,
+                                 TBool aDtmfControl );
+                                 
+        TBool IsSink() const;
+        
+        TBool IsSource() const;
+        
+        TBool IsInternal() const;
+        
+        MDataSource* Source();
+        
+        MDataSink* Sink();
+        
+        CMccMultiplexer* MultiplexerL();
+        
+        CMccMultiplexer* GetMultiplexerL();
+        
+        static TBool UserSessionMatch( const TMccResourceParams& aUser1, 
+                                       const TMccResourceParams& aUser2 );
+        
+        static TBool UserMatch( const TMccResourceParams& aUser1, 
+                                const TMccResourceParams& aUser2 );
+                                
+        static TBool UserMatchNotStrict( const TMccResourceParams& aUser1, 
+                                         const TMccResourceParams& aUser2 );
+        
+        static TBool UserMatchActive( const TMccResourceParams& aUser1, 
+                                      const TMccResourceParams& aUser2 );
+                                                        
+        void UsersInfoL( RArray<TMccResourceParams>& aUsers );
+        
+        MMccResources::TResourceState CurrentState() const;
+        
+        TBool Match( const TMccResourceParams& aUser ) const;
+        
+        TBool MatchSession( const TUint32 aSessionId ) const;
+
+        void StoreKeyFrameInfoL( CMMFBuffer& aKeyFrame );
+                
+        TBool IsKeyFrame( CMMFBuffer& aBuffer );
+                                
+
+    public: // Functions from base classes
+              
+    protected:  // New functions
+
+    protected:  // Functions from base classes
+    
+    private:
+    
+        TBool IsCurrentUser( TUint32 aStreamId ) const;
+    
+        TBool NonSharableResource( TUid aUid ) const;
+        
+        TBool IsInternal( TUint32 aUid ) const;
+        
+        TBool IsStandbyResource() const;
+        
+        void SpecialStateChangeL( TUint32 aStreamId,
+                                  MMccResources::TResourceState aState,
+                                  TBool aStandbyControl,
+                                  TBool aDtmfControl,
+                                  TBool& aEffectiveStateChange );
+                                  
+        TBool UserStopL( TUint32 aStreamId );
+
+    private:
+    
+        CMccResourceItem( TUint32 aCurrentUserStreamId, 
+                          TUint32 aEndpointId,
+                          TBool aIsMultiplexer );
+        
+        void ConstructL( MDataSink* aSink, MDataSource* aSource );
+
+    public:     // Data
+    
+    protected:  // Data
+        
+    private: // Internal class
+        
+        class TMccKeyFrameInfo
+            {
+        public:
+            TUint iSeqNum;
+            TInt64 iTimestamp;
+            TUint iSize;
+            };
+
+    private:    // Data
+    
+        RArray<TMccResourceParams> iUsers;
+        
+        TUint32 iCurrentUserStreamId;
+
+        MDataSink* iSink;
+
+        MDataSource* iSource;
+        
+        TUint32 iEndpointId;
+        
+        MMccResources::TResourceState iState;
+        
+        CMccResourceItem* iMultiplexerItem;
+        
+        CMccMultiplexer* iMultiplexer;
+        
+        TBool iIsMultiplexer;
+        
+        TBool iPausedByUser;
+        
+        RArray<TMccKeyFrameInfo> iKeyFrameInfo;
+        
+    public:     // Friend classes
+
+    protected:  // Friend classes
+
+    private:    // Friend classes
+        #ifdef TEST_EUNIT
+            friend class UT_CMccResourceItem;
+            friend class UT_CMccResourceContainer;
+            friend class UT_CMccResourcePool;
+        #endif
+    };
+
+#endif      // MCCRESOURCEITEM_H   
+            
+// End of File