diff -r 000000000000 -r 1bce908db942 multimediacommscontroller/mmcccontroller/inc/mccresources.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommscontroller/mmcccontroller/inc/mccresources.h Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,287 @@ +/* +* 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 MCCRESOURCES_H +#define MCCRESOURCES_H + +// INCLUDES +#include +#include "rtpdef.h" + +// CONSTANTS + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS +class MDataSink; +class MDataSource; +class TMccEvent; +class CMccMultiplexer; +class MMccTimerManager; +class CMMFBuffer; +class TMccVideoSinkSetting; + +// CLASS DECLARATION + +class TMccResourceParams + { +public: + + TMccResourceParams( TUint32 aSessionId, + TUint32 aLinkId, + TUint32 aStreamId, + TUint32 aIapId, + TBool aIsStandby, + TInt aStreamType ) : + iSessionId( aSessionId ), + iLinkId( aLinkId ), + iStreamId( aStreamId ), + iIapId( aIapId ), + iIsStandby( aIsStandby ), + iStreamType( aStreamType ), + iIsStopped( EFalse ) + { + } + +public: + + TUint32 iSessionId; + TUint32 iLinkId; + TUint32 iStreamId; + TUint32 iIapId; + TBool iIsStandby; + TInt iStreamType; + TBool iIsStopped; + + }; + +/** +* +*/ +class MMccResources + { + public: + + enum TResourceState + { + EConstructed, + EPrepared, + EStarted, + EResourcePaused, + EResourceStopped + }; + + public: + + /** + * Stores sink as candidate for next stream resource reservation. + * @param aSink + * @param aEndpointId id of the sink + */ + virtual void ReserveSinkL( MDataSink* aSink, TUint32 aEndpointId ) = 0; + + /** + * Stores source as candidate for next stream resource reservation. + * @param aSource + * @param aEndpointId id of the sink + */ + virtual void ReserveSourceL( MDataSource* aSource, TUint32 aEndpointId ) = 0; + + /** + * Prepares resources for removing certain endpoint. + * @param aEndpointId id of the endpoint to be removed + * @param aAffectedStreams information about streams which are using + * the endpoint which is in removal process + */ + virtual void PrepareEndpointRemovalL( TUint32 aEndpointId, + RArray& aAffectedStreams ) = 0; + + /** + * Removes endpoint from resources. + * @param aEndpointId + */ + virtual void RemoveEndpointL( TUint32 aEndpointId ) = 0; + + /** + * Reserves some stream specific resources if needed. May depend + * on state of the stream (e.g. camera resources are needed when live video + * upstream is in playing state). + * @param aParams resource parameters + */ + virtual void ReserveResourcesL( const TMccResourceParams& aParams ) = 0; + + /** + * Free resources of certain stream. + * @param aStreamId + */ + virtual void FreeResources( TUint32 aStreamId ) = 0; + + /** + * Checks whether stream can use resources it needs. + * @param aStreamId + * @return ETrue if resources can be used + */ + virtual TBool IsResourceUsageAllowed( TUint32 aStreamId ) = 0; + + /** + * Sets resource state. + * @param aStreamId + * @param aEndpointId + * @param aState + * @param aControlNetworkResources on return tells whether resource + * needs network resources + * @param aControlledEndpoint on return contains list of endpoint + * ids of which changed state because of this command + * @param aUncontrolledEndpoints on return contains list of endpoint + * ids of which didn't change state although command was pointed + * for those. + */ + virtual void SetResourceStateL( TUint32 aStreamId, + TUint32 aEndpointId, + TResourceState aState, + TBool& aControlNetworkResources, + RArray& aControlledEndpoints, + RArray& aUncontrolledEndpoints ) = 0; + + /** + * Should be called by user after state change has been completed + * successfully. + */ + virtual void ResourceStateSetL() = 0; + + /** + * Check if resources are affected becuase of event. + * @param aDiscardEvent on return ETrue if event should be discarded + * @param aEffectiveStandby on return ETrue if event was effective + * standby event + * @param aAdditionalEvent on return contains NULL or additional event + * which should be handled as well. Ownership of event is + * transferred. + * @return error code + */ + virtual TInt EventReceived( TMccEvent& aEvent, + TBool& aDiscardEvent, + TBool& aEffectiveStandby, + TMccEvent** aAdditionalEvent ) = 0; + + /** + * Get sinks. + * @param aOnlyInternals ETrue if only mcc internal sinks are fetched. + * @return list of sinks + */ + virtual const RPointerArray& Sinks( TBool aOnlyInternals ) = 0; + + /** + * Get sources. + * @param aOnlyInternals ETrue if only mcc internal sources are fetched. + * @return list of sources + */ + virtual const RPointerArray& Sources( TBool aOnlyInternals ) = 0; + + /** + * Get multiplexer for specific source + * @param aSource + * @return NULL or multiplexer, ownership is not transferred + */ + virtual CMccMultiplexer* MultiplexerL( MDataSource* aSource ) = 0; + + /** + * Find resource + * @param aLinkId search term + * @param aEndpointId search term + * @param aResourceUid search term + * @param aSource on return NULL or source, ownership is not transferred + * @param aSink on return NULL or sink, ownership is not transferred + * @return KErrNone if resource was found + */ + virtual TInt FindResource( TUint32 aLinkId, + TUint32 aEndpointId, + TUid aResourceUid, + MDataSource** aSource, + MDataSink** aSink ) = 0; + + /** + * Find network resource based on rtp stream id + * @param aMccSessionId MCC session id + * @param aRtpStreamId search term + * @param aSource on return NULL or source, ownership is not transferred + * @param aSink on return NULL or sink, ownership is not transferred + * @return KErrNone if resource was found + */ + virtual TInt FindNetworkResourceByRtpStreamId( + const TUint32 aMccSessionId, + const TRtpId& aRtpStreamId, + MDataSource** aSource, + MDataSink** aSink ) = 0; + + /** + * Find network resource based on rtp ssrc + * @param aRtpSsrc search term + * @param aSource on return NULL or source, ownership is not transferred + * @param aSink on return NULL or sink, ownership is not transferred + * @return KErrNone if resource was found + */ + virtual TInt FindNetworkResourceByRtpSsrc( + const TRtpSSRC& aRtpSsrc, + MDataSource** aSource, + MDataSink** aSink ) = 0; + + /** + * Timer services. + * @return timer + */ + virtual MMccTimerManager& TimerManager() = 0; + + /** + * Store information about keyframe, can be helpful when some other endpoint + * needs to know whether some buffer is keyframe as that information cannot + * be carried in CMMFBuffer. + * @param aEndpointId + * @param aKeyFrame + */ + virtual void StoreKeyFrameInfoL( TUint32 aEndpointId, CMMFBuffer& aKeyFrame ) = 0; + + /** + * Check whether buffer is keyframe. + * @param aEndpointId + * @param aBuffer + * @return ETrue if buffer contains keyframe + */ + virtual TBool IsKeyFrame( TUint32 aEndpointId, CMMFBuffer& aBuffer ) = 0; + + /** + * Enables viewfinder + */ + virtual void EnableViewFinderL( TMccVideoSinkSetting& aSetting ) = 0; + + /** + * Disables viewfinder + */ + virtual void DisableViewFinderL() = 0; + + }; + +#endif // MCCRESOURCES_H + +// End of File