diff -r 000000000000 -r 1bce908db942 multimediacommscontroller/mmcccontroller/inc/mccresourceitem.h --- /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 + +#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& 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 iUsers; + + TUint32 iCurrentUserStreamId; + + MDataSink* iSink; + + MDataSource* iSource; + + TUint32 iEndpointId; + + MMccResources::TResourceState iState; + + CMccResourceItem* iMultiplexerItem; + + CMccMultiplexer* iMultiplexer; + + TBool iIsMultiplexer; + + TBool iPausedByUser; + + RArray 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