diff -r 000000000000 -r 1bce908db942 multimediacommsengine/mmcesrv/mmcemediamanager/inc/mcemediamanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/multimediacommsengine/mmcesrv/mmcemediamanager/inc/mcemediamanager.h Tue Feb 02 01:04:58 2010 +0200 @@ -0,0 +1,956 @@ +/* +* Copyright (c) 2004 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 CMCEMEDIAMANAGER_H +#define CMCEMEDIAMANAGER_H + +// INCLUDES +#include +#include +#include "mcemediadefs.h" +#include "mcedefs.h" +#include "mcesip.h" +#include "mcesrv.h" +#include "mcecomfilesource.h" +#include "mcesrvstream.h" +#include "mcesecuremediasession.h" + +// FORWARD DECLARATIONS +class MMceMediaGeneralObserver; +class CMceComSession; +class CMceComAudioStream; +class CMceComAudioCodec; +class CMceComMediaStream; +class CMceSdpSession; +class CSdpDocument; +class CMceComMediaSink; +class CMceComMediaSource; +class CMceComRtpSource; +class CMceComRtpSink; +class CMceComSpeakerSink; +class CMceComDisplaySink; +class CMceComCameraSource; +class CMceComAMRCodec; +class CSdpMediaField; +class CMceSdpCodec; +class RStringF; +class CMccInterface; +class CMccSecureInterface; +class CMceNatPluginManager; +// Constants + +const TInt KRtcpRR = 1; +const TInt KRtcpSR = 2; +const TInt KRtcpUndefined = 3; + + + +/** +* Media negotiator for encoding and decoding SDP according to +* offer/answer model defined in RFC 3264 and managing the MCC interface +*/ +class CMceMediaManager : public CBase, public MMccCtrlObserver + { + + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + static CMceMediaManager* NewL( MMceMediaGeneralObserver& aObserver ); + + /** + * Two-phased constructor. + */ + static CMceMediaManager* NewLC( MMceMediaGeneralObserver& aObserver ); + + /** + * Destructor. + */ + ~CMceMediaManager(); + + + public: // new API for server + + CMceNatPluginManager& NatPluginManager(); + + CSdpDocument* EncodeL( CMceComSession& aSession ); + + TMceSipWarningCode DecodeL( CMceComSession& aSession, + CSdpDocument& aSdpDocument ); + + TMceReturnStatus UpdateL( CMceComSession& aSession ); + + TMceReturnStatus ReserveL( CMceComSession& aSession, const TDesC8& aToken ); + + TBool ReservationNeeded( CMceComSession& aSession ); + + TBool NeedToNegotiate( CMceComSession& aSession, CSdpDocument* aSdpDocument = NULL ); + + TBool ConfirmationNeeded( CMceComSession& aSession ); + + TMceNegotiationRole GetRole( CMceComSession& aSession ); + + + public: // API for server + + + /** + * Creates a rejected SDP answer with all media lines set to 0. + * + * @param aSession, server session + * @return none. + */ + void CreateRejectedAnswer( CMceComSession& aSession ); + + /** + * Pauses the sink + * + * @param aSink, server sink + * @leaves with a system-wide error code + */ + void PauseL( CMceComMediaSink& aSink ); + + /** + * Pauses the source + * + * @param aSource, server source + * @leaves with a system-wide error code + */ + void PauseL( CMceComMediaSource& aSource ); + + /** + * Resumes the sink + * + * @param aSink, server sink + * @leaves with a system-wide error code + */ + void ResumeL( CMceComMediaSink& aSink ); + + /** + * Stops the source + * + * @param aSource, server source + * @leaves with a system-wide error code + */ + void ResumeL( CMceComMediaSource& aSource ); + + /** + * Closes the session + * + * @param aSession, server session + * @return One of the standard system-wide error codes. + */ + TInt CloseSession( CMceComSession& aSession ); + + /** + * Starts inactivity timer for the given RTP source + * @param aRtpSource + * @param aInactivityTimeout inactivity timeout + * @leaves with a system-wide error code + */ + void StartInactivityTimerL( const CMceComRtpSource& aRtpSource, + TUint32 aInactivityTimeout ); + + /** + * Stops inactivity timer for the given RTP source + * @param aRtpSource + * @leaves with a system-wide error code + */ + void StopInactivityTimerL( const CMceComRtpSource& aRtpSource ); + + /** + * Sends RTCP any data + * @param aMediaStream, stream + * @param aData, data payload + * @leaves with a system-wide error code + */ + void SendRTCPAnyDataL( const CMceComMediaStream& aMediaStream, + const TDesC8& aData ); + + /** + * Sends RTCP receiver report to uplink if possible. + * @param aRtpSink, rtp source + * @leaves with a system-wide error code + */ + void SendRTCPReceiverReportL( const CMceComRtpSource& aRtpSource ); + + /** + * Sends RTCP sender report to uplink if possible. + * @param aRtpSink, rtp sink + * @leaves with a system-wide error code + */ + void SendRTCPSenderReportL( const CMceComRtpSink& aRtpSink ); + + /** + * Gets current maximum volume supported. + * @param aMaxVolume - [output] maximum volume supported + * @leaves with a system-wide error code + */ + void GetMaxVolumeL( TInt& aMaxVolume ); + + /** + * Gets current volume. + * @param aSink, sink + * @param aVolume - [output] After completion, current volume + * @leaves with a system-wide error code + */ + void GetVolumeL( const CMceComMediaSink& aSink, + TInt& aVolume ); + + /** + * Sets playback volume. + * @param aSink, sink + * @param aVolume - [input] Volume value to set + * @leaves with a system-wide error code + */ + void SetVolumeL( const CMceComMediaSink& aSink, + TInt aVolume ); + + + /** + * Gets audio routing. + * @param aSpeaker - [input] speaker sink + * @param aRoutingDestination on return contains destination where audio + * is currently routed. Usable values are defined in + * mmccinterfacedef.h (e.g. KMccAudioToPublic). + * @leaves with a system-wide error code + */ + void GetAudioRoutingL( const CMceComSpeakerSink& aSpeaker, + TInt& aRoutingDestination ); + + /** + * Sets audio routing. + * @param aSpeaker - [input] speaker sink + * @param aRoutingDestination destination into which audio is routed. + * Usable values are defined in mmccinterfacedef.h + * (e.g. KMccAudioToPublic). + */ + void SetAudioRoutingL( const CMceComSpeakerSink& aSpeaker, + TInt aRoutingDestination ); + + + /** + * Sets balance of a given sink. + * @param aSink, sink + * @param aBalance - [input] Balance value to set + * @leaves with a system-wide error code + */ + void SetBalanceL( const CMceComMediaSink& aSink, + TInt aBalance ); + + /** + * Sets balance of a given source. + * @param aSource, source + * @param aBalance - [input] Balance value to set + * @leaves with a system-wide error code + */ + void SetBalanceL( const CMceComMediaSource& aSource, + TInt aBalance ); + + /** + * Gets current gain used in recording. + * @param aSource, source + * @param aGain - [output] After completion, current gain + * @leaves with a system-wide error code + */ + void GetGainL( const CMceComMediaSource& aSource, + TInt& aGain ); + + /** + * Gets current maximum gain supported. + * @param aMaxGain - [output] After completion, current gain + * @leaves with a system-wide error code + */ + void GetMaxGainL( TInt& aMaxGain ); + + /** + * Sets uplink/record gain to all ongoing sessions. + * @param aSource, source + * @param aGain - [input] Gain value to set + * @leaves with a system-wide error code + */ + void SetGainL( const CMceComMediaSource& aSource, + TInt aGain ); + + + /** + * Gets number of displays available + * @param aDisplaysAvailable, return value + * @return One of the standard system-wide error codes. + */ + void GetDisplaysAvailableL( TInt& aDisplaysAvailable ); + + /** + * Gets display size + * @param aSink, sink + * @param aDisplayRect, return value + * @leaves with a system-wide error code + */ + void GetDisplayRectL( CMceComDisplaySink& aSink, + TRect& aDisplayRect ); + + /** + * Sets display size + * @param aSink, sink + * @param aDisplayRect, input value + * @leaves with a system-wide error code + */ + void SetDisplayRectL( CMceComDisplaySink& aSink, + TRect aDisplayRect ); + + /** + * Gets display priority + * @param aSink, sink + * @param aDisplayPriority, return value + * @leaves with a system-wide error code + */ + void GetDisplayPriorityL( CMceComDisplaySink& aSink, + TInt& aDisplayPriority ); + + + /** + * Gets display rotation + * @param aSink, sink + * @param aDisplayRotation, return value + * @leaves with a system-wide error code + */ + void GetDisplayRotationL( CMceComDisplaySink& aSink, + TInt& aDisplayRotation ); + + /** + * Sets display priority + * @param aSink, sink + * @param aDisplayPriority, input value + * @leaves with a system-wide error code + */ + void SetDisplayPriorityL( CMceComDisplaySink& aSink, + TInt aDisplayPriority ); + + /** + * Sets display index + * @param aSink, sink + * @param aDisplayIndex, input value + * @leaves with a system-wide error code + */ + void SetDisplayIndexL( CMceComDisplaySink& aSink, + TInt aDisplayIndex ); + + /** + * Sets display rotation + * @param aSink, sink + * @param aDisplayRotation, input value + * @leaves with a system-wide error code + */ + void SetDisplayRotationL( CMceComDisplaySink& aSink, + TInt aDisplayRotation ); + + + /** + * Gets camera info + * @param aCameraIndex, input value + * @param aCameraInfo, return value + * @leaves with a system-wide error code + */ + void GetCameraInfoL( TInt aCameraIndex, + TCameraInfo& aCameraInfo ); + + /** + * Gets available cameras + * @param aCamerasAvailable, return value + * @leaves with a system-wide error code + */ + void GetCamerasAvailableL( TInt& aCamerasAvailable ); + + /** + * Gets zoom factor of camera + * @param aSource, source + * @param aZoomFactor, return value + * @leaves with a system-wide error code + */ + void GetZoomFactorL( CMceComCameraSource& aSource, + TInt& aZoomFactor ); + + /** + * Gets digital zoom factor of camera + * @param aSource, source + * @param aDigitalZoomFactor, return value + * @leaves with a system-wide error code + */ + void GetDigitalZoomFactorL( CMceComCameraSource& aSource, + TInt& aDigitalZoomFactor ); + + /** + * Gets contrast of camera + * @param aSource, source + * @param aContrast, return value + * @leaves with a system-wide error code + */ + void GetContrastL( CMceComCameraSource& aSource, + TInt& aContrast ); + + /** + * Gets brightness of camera + * @param aSource, source + * @param aBrightness, return value + * @leaves with a system-wide error code + */ + void GetBrightnessL( CMceComCameraSource& aSource, + TInt& aBrightness ); + + /** + * Gets exposure of camera + * @param aSource, source + * @param aExposure, return value + * @leaves with a system-wide error code + */ + void GetExposureL( CMceComCameraSource& aSource, + TInt& aExposure ); + + /** + * Gets white balance of camera + * @param aSource, source + * @param aWhiteBalance, return value + * @leaves with a system-wide error code + */ + void GetWhiteBalanceL( CMceComCameraSource& aSource, + TInt& aWhiteBalance ); + + /** + * Sets camera index of camera + * @param aSource, source + * @param aCameraIndex, input value + * @param aCameraInfo, return value + * + * @leaves with a system-wide error code + */ + void SetCameraIndexL( CMceComCameraSource& aSource, + TInt aCameraIndex, + TCameraInfo& aCameraInfo ); + + /** + * Sets zoom factor of camera + * @param aSource, source + * @param aZoomFactor, input value + * @leaves with a system-wide error code + */ + void SetZoomFactorL( CMceComCameraSource& aSource, + TInt aZoomFactor ); + + /** + * Sets digital zoom factor of camera + * @param aSource, source + * @param aDigitalZoomFactor, input value + * @leaves with a system-wide error code + */ + void SetDigitalZoomFactorL( CMceComCameraSource& aSource, + TInt aDigitalZoomFactor ); + + /** + * Sets contrast of camera + * @param aSource, source + * @param aContrast, input value + * @leaves with a system-wide error code + */ + void SetContrastL( CMceComCameraSource& aSource, + TInt aContrast ); + + /** + * Sets brightness of camera + * @param aSource, source + * @param aBrightness, input value + * @leaves with a system-wide error code + */ + void SetBrightnessL( CMceComCameraSource& aSource, + TInt aBrightness ); + + /** + * Sets exposure of camera + * @param aSource, source + * @param aExposure, input value + * @leaves with a system-wide error code + */ + void SetExposureL( CMceComCameraSource& aSource, + TInt aExposure ); + + /** + * Sets white balance of camera + * @param aSource, source + * @param aWhiteBalance, input value + * @leaves with a system-wide error code + */ + void SetWhiteBalanceL( CMceComCameraSource& aSource, + TInt aWhiteBalance ); + + /** + * Gets file info + * @param aSource, source + * @param aFileInfo, return value + * @leaves with a system-wide error code + */ + void GetFileInfoL( CMceComFileSource& aSource, + TMceFileInfo& aFileInfo ); + + + /** + * Gets file info + * @param aFileInfo, return value + * @leaves with a system-wide error code + */ + void GetFileInfoL( TMceFileInfo& aFileInfo ); + + + /** + * Sets file info + * @param aSource, source + * @param aFileInfo, return value + * @leaves with a system-wide error code + */ + void SetFileInfoL( CMceComFileSource& aSource, + TMceFileInfo& aFileInfo ); + + + /** + * Gets file position + * @param aSource, source + * @param aFilePosition, return value + * @leaves with a system-wide error code + */ + void GetFilePositionL( CMceComFileSource& aSource, + TTimeIntervalMicroSeconds& aFilePosition ); + + /** + * Sets file position + * @param aSource, source + * @param aFilePosition, input value + * @leaves with a system-wide error code + */ + void SetFilePositionL( CMceComFileSource& aSource, + TTimeIntervalMicroSeconds& aFilePosition ); + + /** + * Sets FF + * @param aSource, source + * @param aOnOff, inout value + * @leaves with a system-wide error code + */ + void FastForwardL( CMceComFileSource& aSource, + TBool& aOnOff ); + + /** + * Sets RW + * @param aSource, source + * @param aOnOff, inout value + * @leaves with a system-wide error code + */ + void FastRewindL( CMceComFileSource& aSource, + TBool& aOnOff ); + + + /** + * Transcodes file + * @param aFile, source + * @return transcoding session id + * @leaves with a system-wide error code + */ + TUint32 TranscodeFileL( CMceComFileSource* aFile ); + + /** + * Cancels transcoding + * @param aSessionId, transcoding session id + * @leaves with a system-wide error code + */ + void CancelTranscodeFileL( TUint32 aSessionId ); + + /** + * Get supported codecs. + * @param aCodecs - [output] An array to be filled with FourCC codes + * @return One of the standard system-wide error codes. + */ + TInt GetSupportedCodecs( RArray& aCodecs ); + + /** + * Returns array of audio capabilities in aCapabilities. Note that data that + * the aCapabilities contains before calling this function will be + * lost during the excecution of this function. Note also that the CLIENT + * is responsible for the destruction of the objects contained in the + * parameter array. + * @param aCapabilities Codec capabilities + * @return None + */ + void GetCapabilitiesL( RPointerArray& aCapabilities ); + + /** + * Returns array of video capabilities in aCapabilities. Note that data that + * the aCapabilities contains before calling this function will be + * lost during the excecution of this function. Note also that the CLIENT + * is responsible for the destruction of the objects contained in the + * parameter array. + * @param aCapabilities Codec capabilities + * @return None + */ + void GetCapabilitiesL( RPointerArray& aCapabilities ); + + /** + * Handles dtmf sending. + * @param aMediaSource + * @param aEvent + * @param aSequence + * @return None + */ + void DtmfL( CMceComMediaSource& aSource, + TMceComEvent& aEvent, + const TDesC8& aSequence = KNullDesC8 ); + + /** + * Sets CName used in RTP session + * @param aEndpoint + * @param aCName + */ + void SetCNameL( const CMceComEndpoint& aEndpoint, const TDesC8& aCName ); + + /** + * Updates configuration key fetched from camera to all endpoints + * within the same session which might need configuration key information, + * @param aSource + */ + void UpdateConfigKeyL( const CMceComMediaSource& aSource ); + + private: // + + /** + * Callback function to receive media link created prepared event. + * @param aSessionId Session ID + * @param aLinkId Link ID + * @param aNetSettings network settings + */ + void MccMediaLinkCreated( TUint32 aSessionId, + TUint32 aLinkId, + const TDesC8& aNetSettings ); + + + private: // from MMccCtrlObserver + + /** + * Callback function to receive media signalling + * @param aEvent Received media signal + */ + void MccEventReceived( const TMccEvent& aEvent ); + + + /** + * Callback function to receive media prepared event. + * @param aSessionId Session ID + * @param aLinkId Link ID + * @param aStreamId Stream ID + * @param aSinkSourceId Sink or source ID + */ + void MccMediaPrepared( TUint32 aSessionId, + TUint32 aLinkId, + TUint32 aStreamId, + TUint32 aSinkSourceId ); + + /** + * Callback function to receive media started event. + * @param aSessionId Session ID + * @param aLinkId Link ID + * @param aStreamId Stream ID + * @param aSinkSourceId Sink or source ID + */ + void MccMediaStarted( TUint32 aSessionId, + TUint32 aLinkId, + TUint32 aStreamId, + TUint32 aSinkSourceId ); + + /** + * Callback function to receive media stopped event. + * @param aSessionId Session ID + * @param aLinkId Link ID + * @param aStreamId Stream ID + * @param aSinkSourceId Sink or source ID + */ + void MccMediaStopped( TUint32 aSessionId, + TUint32 aLinkId, + TUint32 aStreamId, + TUint32 aSinkSourceId ); + + /** + * Callback function to receive media paused event. + * @param aSessionId Session ID + * @param aLinkId Link ID + * @param aStreamId Stream ID + * @param aSinkSourceId Sink or source ID + */ + void MccMediaPaused( TUint32 aSessionId, + TUint32 aLinkId, + TUint32 aStreamId, + TUint32 aSinkSourceId ); + + /** + * Callback function to receive media resumed event. + * @param aSessionId Session ID + * @param aLinkId Link ID + * @param aStreamId Stream ID + * @param aSinkSourceId Sink or source ID + */ + void MccMediaResumed( TUint32 aSessionId, + TUint32 aLinkId, + TUint32 aStreamId, + TUint32 aSinkSourceId ); + + + /** + * Callback function to receive media inactivity event. + * @param aSessionId Session ID + * @param aLinkId Link ID + * @param aStreamId Stream ID + * @param aSinkSourceId Sink or source ID + */ + void MccMediaInactive( TUint32 aSessionId, + TUint32 aLinkId, + TUint32 aStreamId, + TUint32 aSinkSourceId ); + + /** + * Callback function to receive media activity event. The + * function is called when the first RTP packet is received + * by a downlink stream. + * @param aSessionId Session ID + * @param aLinkId Link ID + * @param aStreamId Stream ID + * @param aSinkSourceId Sink or source ID + */ + void MccMediaActive( TUint32 aSessionId, + TUint32 aLinkId, + TUint32 aStreamId, + TUint32 aSinkSourceId ); + + /** + * Callback function to receive error event. + * @param aError Error code + * @param aSessionId Session ID + * @param aLinkId Link ID + * @param aSinkSourceId Sink or source ID + */ + void MccCtrlError( TInt aError, + TUint32 aSessionId, + TUint32 aLinkId, + TUint32 aStreamId, + TUint32 aSinkSourceId ); + + + public: // new functions + + + CMceSdpSession& CreateSessionL( CMceComSession& aSession ); + CMceSdpSession* SdpSession( CMceComSession& aSession ); + + void CreateMccSessionL( CMceComSession& aSession ); + + void InitializeMccStreamL( CMceSrvStream& aStream ); + void CreateMccLinkL( CMceSrvStream& aStream ); + void CreateMccStreamL( CMceSrvStream& aStream, + TMceNegotiationRole aRole ); + void PrepareMccStreamL( CMceSrvStream& aStream, + TMceNegotiationRole aRole ); + void StartMccStreamL( CMceSrvStream& aStream ); + void AdjustMccStreamL( CMceSrvStream& aStream ); + void ValidateMccStreamL( CMceSrvStream& aStream ); + void StopMccStream( CMceSrvStream& aStream ); + + void SetRemoteAddressL( CMceSrvStream& aStream ); + + void PrepareUpdateL( CMceSdpSession& aSession ); + + void CleanupL( CMceComSession& aSession ); + + void DisposeMediaStreamL( CMceComMediaStream* aStream ); + void DisposeCodecL( CMceComCodec* aCodec ); + + + CMceSdpCodec* SdpCodec( const CSdpMediaField& aMedia ); + CMceSdpCodec* SdpCodec( CMceComMediaStream& aStream ); + + void SynchronizeMccStreamL( CMceSrvStream& aStream, + TMceNegotiationRole aRole, + TBool aSyncCodecOnly = EFalse ); + + void SynchronizeMccStreamL( CMceSrvStream& aStream, + TUint32 aForceEnableEndpoint = 0, + TUint32 aForceDisableEndpoint = 0 ); + + TUint32 GetSSRCL( CMceSrvStream& aStream ); + void EnableViewFinderL( const CMceComMediaSink& aMediaSink, const TDesC8& aParam ); + void DisableViewFinderL( const CMceComMediaSink& aMediaSink ); + + TBool ReuseLink( CMceSrvStream& aStream ); + TBool ReuseSource( CMceSrvStream& aStream ); + TBool ReuseSink( CMceSrvStream& aStream ); + + TBool CanReleaseEndpoint( CMceSrvStream& aStream, TUint32 aEndpointId ); + TInt ReleaseSink( CMceSrvStream& aStream, TUint32 aEndpointId ); + TInt ReleaseSource( CMceSrvStream& aStream, TUint32 aEndpointId ); + + + void SetMccParameterL( TUint32 aParam, + const TDesC8& aValue ) const; + + void GetMccParameterL( TUint32 aParam, + TDes8& aValue ) const; + + void SetMccParameterL( const CMceComMediaSink& aMediaSink, + TUint32 aParam, + const TDesC8& aValue, + TBool aAllowNonPrepared = EFalse ) const; + void SetMccParameterL( const CMceComMediaSource& aMediaSource, + TUint32 aParam, + const TDesC8& aValue, + TBool aAllowNonPrepared = EFalse ) const; + void GetMccParameterL( const CMceComMediaSink& aMediaSink, + TUint32 aParam, + TDes8& aValue, + TBool aAllowNonPrepared = EFalse ) const; + void GetMccParameterL( const CMceComMediaSource& aMediaSource, + TUint32 aParam, + TDes8& aValue, + TBool aAllowNonPrepared = EFalse ) const; + + void UpdateMccSourceL( CMceComCameraSource& aMediaSource ); + + + private: // for private usage only + + CMccCodecInformation* CreateMccCodecLC( CMceSrvStream& aStream, + TMceNegotiationRole aRole ); + + + void UpdateAcceptedL( CMceSdpSession& aSdpSession ); + + void UpdateRejectedL( CMceSdpSession& aSdpSession ); + + + TInt RequireSignallingL( CMceComSession& aSession, + CMceComSession& aBackup ); + + + + void CleanupSessionL( CMceComSession& aSession ); + + + /** + * Gets Sdp session + * @param aMccSessionId. + * @return session if found, NULL otherwise + */ + CMceComSession* Session( TUint32 aSessionId ); + + /** + * Removes corresponding Sdp session(s), which is no longer needed + */ + void RemoveSession( CMceSdpSession* sdpSession ); + + CMceComFileSource* TranscodingSession( const CMceComFileSource& aFile ) const; + + CMceComFileSource* TranscodingSession( TUint32 aTcSessionId ) const; + + + void MccTranscodeEventReceived( const TMccEvent& aEvent ); + + TBool UseRtcp( CMceSrvStream& aStream ); + + void FillMceFileInfoL( TMccFileSourceSetting& aMccFileInfo, + TMceFileInfo& aMceFileInfo ) const; + + TBool DoStartEndpointsL( CMceSrvStream& aStream, + TUint32 aForceEnableEndpoint, + TUint32 aForceDisableEndpoint ); + + TBool DoResumeEndpointsL( CMceSrvStream& aStream, TUint32 aForceEnableEndpoint ); + + TBool DoPauseEndpointsL( CMceSrvStream& aStream, + TUint32 aForceDisableeEndpoint ); + + void SetPendingState( CMceSrvStream& aStream, + TUint32 aEndpointId, + CMceSrvStream::TState aState ); + + TBool DoDtmfL( CMceComMediaSource& aSource, + TMceComEvent& aEvent, + const TDesC8& aSequence, + TBool aUseBoundStream = EFalse ); + + CMceComCodec* DoAdjustMccStreamL( CMceSrvStream& aStream ); + + void DoConfigKeyUpdateL( CMceComMediaStream& aStream, HBufC8* aConfigKey ); + + void CreateTranscodingOutputCodecsL( CMccCodecInformation** aAudioCodec , + CMccCodecInformation** aVideoCodec, + CMceComFileSource* aFile ); + + private: + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL( MMceMediaGeneralObserver& aObserver ); + + + /** + * C++ default constructor + */ + CMceMediaManager(); + + public : // Data + + CMccSecureInterface* iMccSecureInterface; + + private: // Data + + // Pointer to MCCInterface, owned + CMccInterface* iMccInterface; + + // Pointer to CMceNatPluginManager, owned + CMceNatPluginManager* iNatPluginManager; + + RPointerArray iMceSdpSessions; + + MMceMediaGeneralObserver* iObserver; + + // List of SDP codecs + RPointerArray iSdpCodecs; + + RPointerArray iTranscodeSessions; + + + + private: + + friend class CMceSdpSession; + + //definitions for unit testing + MCEMM_UT_DEFINITIONS + friend class UT_CMceSecureDesStream; + friend class UT_CMceSecureMediaSession; + }; + +#endif // CMCEMEDIAMANAGER_H + +// End of File