--- /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 <e32base.h>
+#include <e32cmn.h>
+#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<TFourCC>& 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<CMceComAudioCodec>& 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<CMceComVideoCodec>& 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<CMceSdpSession> iMceSdpSessions;
+
+ MMceMediaGeneralObserver* iObserver;
+
+ // List of SDP codecs
+ RPointerArray<CMceSdpCodec> iSdpCodecs;
+
+ RPointerArray<CMceComFileSource> 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