diff -r 33a5d2bbf6fc -r 73a1feb507fb tsrc/musenginestub/inc/musengtwowaysession.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tsrc/musenginestub/inc/musengtwowaysession.h Tue Aug 31 15:12:07 2010 +0300 @@ -0,0 +1,172 @@ +/* +* Copyright (c) 2005 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 MUSHENGTWOWAYSESSION_H +#define MUSHENGTWOWAYSESSION_H + +// USER +#include "musenglivesession.h" +#include "musunittesting.h" +#include "mussettings.h" + +// SYSTEM +#include + +// FORWARD DECLARATIONS +class MMusEngLiveSessionObserver; +class CMceDisplaySink; +class MMusEngTwoWaySessionObserver; + +class CMusEngTwoWaySession : public CMusEngLiveSession + { + MUS_UNITTEST( UT_CMusEngOutSession ) + MUS_UNITTEST( UT_CMusEngTwoWaySession ) + + + public: + /** + * Creates new MultimediaSharing Live session. + * + * @param aRect UI drawing area. It is allowed handle from engine + * @param aSessionObserver Interface for session specific callbacks + * @param aOutSessionObserver Interface for outsession specific callbacks + * @param aLiveSessionObserver interface for live session specific + * callbacks + * @return CMusEngTwoWaySession* New instanse of specified class + */ + IMPORT_C static CMusEngTwoWaySession* NewL( + const TRect& aRemoteRect, + const TRect& aLocalRect, + MMusEngSessionObserver& aSessionObserver, + MMusEngOutSessionObserver& aOutSessionObserver, + MMusEngLiveSessionObserver& aLiveSessionObserver, + MMusEngTwoWaySessionObserver& aTwoWayObserver ); + + + public: + + /** + * Destructor + */ + ~CMusEngTwoWaySession(); + + public: + + void EnableDisplayL( TBool aEnable ); + + void SetOrientationL( TDisplayOrientation aOrientation ); + + public: + + /** + * Starts or pauses recording + */ + void RecordL( TBool aRecord ); + + /** + * Tells whether recording is paused or not + */ + TBool IsRecording(); + + /** + * Sets both remote (receiving video) and local (viewfinder) rects. + * + */ + IMPORT_C void SetRectsL( const TRect& aRemoteRect, + const TRect& aLocalRect ); + + /** + * Sets local rect (viewfinder). + * + */ + IMPORT_C void SetLocalRectL( const TRect& aLocalRect ); + + /** + * Gets local rect (viewfinder). + * + */ + IMPORT_C TRect LocalRect() const; + + protected: // inherited from CMusEngMceOutSession + + void RectChangedL(); + + /** + * @param aLocalBundle All local streams are supposed to be added to + * this bundle + */ + void CompleteSessionStructureL( CMceStreamBundle& aLocalBundle ); + + void AddDisplayL( CMceMediaStream& aStream ); + + + protected: // overrides ancestor class versions + + /** + * The state of the session has changed + * @param aSession, the session that has changed. + */ + virtual void HandleSessionStateChanged( CMceSession& aSession, + TInt aStatusCode, + const TDesC8& aReasonPhrase ); + + private: // from MMceStreamObserver, + // overrides the function in CMusEngMceSession + + void StreamStateChanged( CMceMediaStream& aStream ); + + void InactivityTimeout( CMceMediaStream& aStream, + CMceRtpSource& aSource ); + + private: + + /** + * Constructor + */ + CMusEngTwoWaySession( MMusEngSessionObserver& aSessionObserver, + MMusEngOutSessionObserver& aOutSessionObserver, + MMusEngLiveSessionObserver& aLiveSessionObserver, + MMusEngTwoWaySessionObserver& aTwoWayObserver, + const TRect& aRemoteRect, + const TRect& aLocalRect ); + + /** + * Second-phase constructor + */ + void ConstructL(); + + private: + + void ReceivingStarted(); + + void ReceivingStopped(); + + private: + + MMusEngTwoWaySessionObserver& iTwoWayObserver; + + TRect iLocalRect; + + TBool iReceiving; + + TBool iBuffered; + + }; + +#endif +