vtuis/lcvtplugin/src/base/clcvtsession.cpp
branchRCL_3
changeset 35 779871d1e4f4
parent 34 f15ac8e65a02
child 37 590f6f022902
--- a/vtuis/lcvtplugin/src/base/clcvtsession.cpp	Tue Aug 31 15:16:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2372 +0,0 @@
-/*
-* Copyright (c) 2008 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:  LiveComm Videotelephony Plugin session Class
-*
-*/
-
-#include <e32base.h>
-#include <e32std.h>
-#include <e32cmn.h>
-#include <featmgr.h>
- 
-#include <w32std.h>
-#include <coecntrl.h>
-#include <eikenv.h>
-#include <eikappui.h>
-#include <apgcli.h>
-#include <centralrepository.h> 
-
-#include "clcvtsession.h"
-
-#include "cvtengmodel.h"
-
-#include "clcvtvideoplayerbase.h"
-#include "clcvtlocalvideoplayer.h"
-#include "clcvtremotevideoplayer.h"
-#include "tlcvtstates.h"
-#include "clcvtcmdexecutor.h"
-#include "mlcvtenginecommandmanager.h"
-#include "lcvtplugincommand.h"
-#include "lcvtutility.h"
-
-// User selectable Call answer status values
-const TInt KAllwaysQuery = 0;
-const TInt KAllwaysAllow = 2;
-
-// Default call index.
-const TInt KVtUiDefaultCallId = 1;
-
-// Granularity of command observer array.
-const TInt KLcVtCommandObserverArrayGranularity = 5;
-
-
-
-// Enumerates states for CLcVtActiveExec.
-enum
-    {    
-    // Operation finished. Must equal to zero.
-    EVtSessionNone,
-    
-    // Active execution states for iActiveExec:
-    
-    //     Startup (prepare engine):
-    EVtSessionStartup = 100,                                    // 100
-    //     Initialise engine.
-    EVtSessionStartupInitEngine = EVtSessionStartup,            // 100
-    //     Prepare viewfinder.
-    EVtSessionStartupPrepareViewfinder,                         // 101
-    //     Prepare remote render.
-    EVtSessionStartupPrepareRemoteRender,                       // 102
-    //     Startup Finish 
-    EVtSessionStartupFinish,                                    // 103
-    
-    //     Shutdown (reset engine):
-    EVtSessionShutdown = 300,                                   // 300
-    //     Hide application.
-    EVtSessionShutdownHideApplication = EVtSessionShutdown,     // 300
-    //     Reset engine.
-    EVtSessionShutdownResetEngine,                              // 301
-    
-        
-    //     Answered:
-    EVtSessionAnswered = 500,                                   // 500    
-    //     Start remote render.
-    EVtSessionAnsweredStartRemoteRender = EVtSessionAnswered,   // 500    
-    //     Prepare Camere
-    EVtSessionAnsweredDoPrepareCamera,                          // 501
-    //     Select camera as source.
-    EVtSessionAnsweredSetlectCamera,                            // 502
-    //     Select blank image as source.
-    EVtSessionAnsweredSetlectNone,
-    //     Start view finder
-    EVtSessionAnsweredStartViewFinder,                          // 504
-    //     Show Application 
-    EVtSessionAnsweredBringToForeground,                        // 505
-    
-    //EVtSessionAnswered = 500,                                   // 500
-    //EVtSessionAnsweredBringToForeground = EVtSessionAnswered,                        // 505
-    
-    //     Finish.
-    EVtSessionAnsweredFinish                                    // 506    
-    };
-
-
-/**
- * Encapsulates event handling.
- * @since Series 60 2.6
- */    
-class CLcVtSession::CEventObserver
-    : public CBase,
-      public MLcVtEngineCommandManager,
-      public MVtEngEventObserver,
-#ifndef NGA_VIDEO_RENDER
-      public MVtEngFrameObserver,
-#endif
-      public MVtEngCommandObserver
-    {    
-    public: // Constructors and destructors
-     
-        /**
-        * Two-phased constructor.
-        * @param aSession plugin session.
-        */        
-        static CEventObserver* NewL(CLcVtSession& aSession);
-        
-        /**
-        * Destructor.
-        */        
-        ~CEventObserver();
-
-    public: // Functions from base classes
-
-        /**
-        * @see MLcVtEngineCommandManager::AddObserverL.
-        */
-        void AddObserverL( MVtEngCommandObserver& aObserver );
-
-        /**
-        * @see MLcVtEngineCommandManager::RemoveObserver.
-        */
-        void RemoveObserver( MVtEngCommandObserver& aObserver );
-        
-        /**
-        * @see MVtEngEventObserver::HandleVtEventL.
-        */        
-        void HandleVtEventL( TInt aEvent );
-        
-        /**
-        * @see MVtEngCommandObserver::HandleVTCommandPerformedL.
-        */        
-        void HandleVTCommandPerformedL(
-                TVtEngCommandId aCommand,
-                const TInt aError );
-#ifndef NGA_VIDEO_RENDER        
-        /**
-        * @see MVtEngFrameObserver::vtHandleFrameL.
-        */        
-        void vtHandleFrameL( TFrameType aType, CFbsBitmap* aBitmap );
-        
-        /**
-        * @see MVtEngFrameObserver::vtSetFrame
-        */        
-        void vtSetFrame( TFrameType aType, CFbsBitmap* aBitmap );                 
-#endif                                       
-    private:
-        
-        /**
-        * Constructor.
-        * @param aSession plugin session.
-        */
-        CEventObserver(CLcVtSession& aSession );
-        
-        /**
-        * Symbian OS constructor.
-        */        
-        void ConstructL();        
-          
-    private:        
-        
-        // Ref to plugin session.
-        CLcVtSession& iSession;    
-        
-        // ETrue when command events are being sent.
-        TBool iInCommandPerformed;
-
-        // Owned array of observers.
-        RPointerArray< MVtEngCommandObserver > iCommandObservers;
-        
-    };
-
-         
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CLcVtSession* CLcVtSession::NewL()
-    {
-    CLcVtSession* self = new ( ELeave ) CLcVtSession();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;
-    }     
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CLcVtSession::CLcVtSession( ) 
-    {
-    }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ConstructL()
-    {
-    
-    __VTPRINTENTER( "CLcVtSession.ConstructL" )  
-      
-    __VTPRINT( DEBUG_MEDIA , "FeatureManager::InitializeLibL()" )
-    FeatureManager::InitializeLibL(); 
-        
-    __VTPRINT( DEBUG_MEDIA , "iCameraHandler.SetSession(this)" )
-    iCameraHandler.SetSession(this);
-    __VTPRINT( DEBUG_MEDIA , "iRemoteVideoPlayer = CLcVtRemoteVideoPlayer_NewL" )
-    iRemoteVideoPlayer = CLcVtRemoteVideoPlayer::NewL(this, *this);
-    __VTPRINT( DEBUG_MEDIA , "iLocalVideoPlayer  = CLcVtLocalVideoPlayer_NewL" )
-    iLocalVideoPlayer  = CLcVtLocalVideoPlayer::NewL(this, *this, iCameraHandler);  
-
-#ifndef NGA_VIDEO_RENDER 
-    iFbsStarted = EFalse;   
-            
-    __VTPRINT( DEBUG_MEDIA , "iWsSession = &(CCoeEnv::Static()->WsSession())" )
-    iWsSession = &(CCoeEnv::Static()->WsSession());
-    __VTPRINT( DEBUG_MEDIA , "iWsSessionScreenDev = CCoeEnv::Static()->ScreenDevice()" )
-    iWsSessionScreenDev = CCoeEnv::Static()->ScreenDevice();
-    __VTPRINT( DEBUG_MEDIA , "iRootWin = &(CCoeEnv::Static()->RootWin())" )
-    iRootWin = &(CCoeEnv::Static()->RootWin());
-    
-    __VTPRINT( DEBUG_MEDIA , "ConnectFbsServerL()" )
-    ConnectFbsServerL();    
-#endif
-    __VTPRINT( DEBUG_MEDIA , "iEventObserver = CEventObserver_NewL" )
-    iEventObserver = CEventObserver::NewL( *this );
-
-    iModel = CVtEngModel::NewL( *iEventObserver, *iEventObserver );
-
-    __VTPRINT( DEBUG_MEDIA , "iLcVtStates_new" )
-    iLcVtStates = new ( ELeave ) TLcVtStates( *iModel );
-    __VTPRINT( DEBUG_MEDIA , "iLcVtStates->Update()" )
-    iLcVtStates->Update();    
-    
-    __VTPRINT( DEBUG_MEDIA , "new_iActiveExec" )
-    iActiveExec =
-        new ( ELeave ) CLcVtActiveExec( CActive::EPriorityHigh );  
-        
-    __VTPRINT( DEBUG_MEDIA , "SetCallIdL( KVtUiDefaultCallId )" )
-    SetCallIdL( KVtUiDefaultCallId );
-    
-    __VTPRINT( DEBUG_MEDIA , "iAsyncCallback" )
-    iAsyncCallback =
-        new ( ELeave ) CAsyncCallBack (
-            TCallBack( &DoExit, this ),
-            CActive::EPriorityStandard );   
-#if 0    
-    __VTPRINT( DEBUG_MEDIA , "iLayoutChangeCallback" )
-    iLayoutChangeCallback =
-        new ( ELeave ) CAsyncCallBack(
-            TCallBack( &DelayedHandleLayoutChanged, this ),
-            CActive::EPriorityStandard );   
-#endif    
-    CRepository* repository = CRepository::NewL( KCRUidTelephonySettings );
-
-    if ( repository->Get( KSettingsVTVideoSending, VideoSendingKey ) == KErrNone )
-        {
-        __VTPRINT2( DEBUG_GEN, "CLcVtSession.IsFeatureSupported get key=%d", VideoSendingKey )
-        }
-    else
-        {
-        __VTPRINT( DEBUG_GEN, "CLcVtSession.IsFeatureSupported set key to default KAllwaysAllow" )
-        VideoSendingKey = KAllwaysAllow;
-        }
-    delete repository;
-    
-    iIndicatorCtr = new  ( ELeave ) LcVtIndicatorController();
-    __VTPRINTEXIT( "CLcVtSession.ConstructL" )
-    
-    }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CLcVtSession::~CLcVtSession()
-    {
-    __VTPRINTENTER( "CLcVtSession.~CLcVtSession" )  
-
-    //delete iLayoutChangeCallback;
-    delete iAsyncCallback;
-
-#ifndef NGA_VIDEO_RENDER    
-    DisconnectFbsServer();
-#endif
-    delete iActiveExec;
-    delete iLcVtStates;
-
-    delete iModel;
-    
-    delete iEventObserver;
-    iEventObserver = NULL;
-    
-#ifdef NGA_VIDEO_RENDER
-    DestroyVideoWindows();
-#endif
-
-    delete iLocalVideoPlayer;
-    delete iRemoteVideoPlayer;
-    
-    delete iRemoteDisplayName;
-    delete iRemoteDetails;
-    if (iIndicatorCtr) {
-        iIndicatorCtr->disableActiveCallIndicator();
-        delete iIndicatorCtr;
-    }    
-    __VTPRINTEXIT( "CLcVtSession.~CLcVtSession" )
-    FeatureManager::UnInitializeLib();  
-    }
-
-#ifndef NGA_VIDEO_RENDER
-void CLcVtSession::ConnectFbsServerL()
-    {
-    // VT use bitmaps viewfinder now, So we start FBS server for proto demo  
-    // and later we will use Qt image object to implement bitmaps view finder or we will use direct view finder    
-    TInt err( KErrNone );
-    // Start Font&Bitmap server    
-    err = FbsStartup();
-    if ( err == KErrNone )
-        {
-       err = RFbsSession::Connect();
-       if( err == KErrNone )
-           {
-           iFbsStarted = ETrue;
-           }            
-        }
-    
-    iDummy = new ( ELeave ) CFbsBitmap();  
-    //CleanupStack::PushL( iDummy );
-    User::LeaveIfError( iDummy->Create( TSize( 4096, 1 ), EColor64K ) );      
-    
-    iGc = new (ELeave) CWindowGc( iWsSessionScreenDev );
-    //CleanupStack::PushL( iGc );
-    User::LeaveIfError( iGc->Construct());
-    
-    //CleanupStack::Pop(2);
-    }
-
-
-void CLcVtSession::DisconnectFbsServer()
-    {
-    delete iGc;
-    delete iDummy;    
-    if ( iFbsStarted )
-        {
-        RFbsSession::Disconnect();
-        iFbsStarted = EFalse;        
-        }    
-    }
-#endif
-#ifdef NGA_VIDEO_RENDER
-
-_LIT(KVTWindowGroupName,"32VTPluginVideoWindow");
-
-void CLcVtSession::CreateVideoWindowsL()
-    {
-    __VTPRINTENTER( "CLcVtSession.CreateVideoWindowsL" ) 
-    User::LeaveIfError( iRwSession.Connect() );  
-
-    iRwGroup = new (ELeave) RWindowGroup( iRwSession ) ;        
-    iRwGroup->Construct( (TUint32)iRwGroup, EFalse );
-    
-    iRwGroup->SetName( KVTWindowGroupName );
-    iRwGroup->SetOrdinalPosition( 1 , ECoeWinPriorityNeverAtFront );
-    iRwGroup->AutoForeground(EFalse);
-    
-    iDev = new (ELeave) CWsScreenDevice( iRwSession );
-    iDev->Construct( ); 
-    
-    iRemoteVideoWindow = new (ELeave) RWindow( iRwSession );
-    iRemoteVideoWindow->Construct( *iRwGroup, (TUint32)iRemoteVideoWindow );
-    
-    TRect RMRect = RemoteVideoPlayer()->LcWindow()->LcWindowRect();
-    iRemoteVideoWindow->SetExtent( RMRect.iTl, RMRect.Size() );
-    iRemoteVideoWindow->SetOrdinalPosition( 1, ECoeWinPriorityNeverAtFront );
-    iRemoteVideoWindow->Activate();
-    
-    iLocalVideoWindow = new (ELeave) RWindow( iRwSession );
-    iLocalVideoWindow->Construct( *iRwGroup, (TUint32)iLocalVideoWindow );
-    
-    TRect VFRect = LocalVideoPlayer()->LcWindow()->LcWindowRect();
-    iLocalVideoWindow->SetExtent( VFRect.iTl, VFRect.Size() );
-    iLocalVideoWindow->SetOrdinalPosition( 1, ECoeWinPriorityNeverAtFront );
-    iLocalVideoWindow->Activate();   
-        
-    iRwSession.Flush();  
-
-    __VTPRINTEXIT( "CLcVtSession.CreateVideoWindowsL" )
-    }
-
-void CLcVtSession::DestroyVideoWindows()
-    {
-    
-    delete iDev;
-    iDev = NULL;
-    delete iRemoteVideoWindow;
-    iRemoteVideoWindow = NULL;
-    delete iLocalVideoWindow;
-    iLocalVideoWindow = NULL;
-    delete iRwGroup;
-    iRwGroup = NULL;
-    iRwSession.Close();
-    }
-
-#endif
-
-
-void CLcVtSession::SetLcSessionObserver( MLcSessionObserver* aObserver )
-    {
-    iObserver = aObserver;
-    }
-
-void CLcVtSession::SetLcUiProvider( MLcUiProvider* aUiProvider )
-    {
-    iUiProvider = aUiProvider;
-    }
-    
-TBool CLcVtSession::IsBackgroundStartup()
-    {
-    return ETrue;
-    }
-  
-TBool CLcVtSession::SendDialTone( TChar aKey )
-    {
-    iDtmfTone = aKey;
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.SendDialTone: %d", iDtmfTone() )
-    if ( Execute( KVtEngStartDtmfTone, &iDtmfTone ) != KErrNone )
-        {
-        return EFalse;
-        }
-    else
-        {
-        return ETrue;
-        }
-    }
-
-void CLcVtSession::EstablishLcSessionL()
-    {
-    __VTPRINTENTER( "CLcVtSession.EstablishLcSessionL" )
-    
-    TLcVtStateBase::SetInitialStateL( *this, *iLcVtStates );
-    
-    __VTPRINTEXIT( "CLcVtSession.EstablishLcSessionL" )
-    }
-
-void CLcVtSession::TerminateLcSessionL()
-    {
-    __VTPRINTENTER( "CLcVtSession.TerminateLcSessionL" )    
-    HandleCommandL( EPluginCmdEndActiveCall );
-    __VTPRINTEXIT( "CLcVtSession.TerminateLcSessionL" )
-    }
-
-MLcVideoPlayer* CLcVtSession::RemoteVideoPlayer()
-    {
-    return iRemoteVideoPlayer;
-    }
-
-MLcVideoPlayer* CLcVtSession::LocalVideoPlayer()
-    {
-    return iLocalVideoPlayer;
-    }
-
-MLcSession::TLcSessionState CLcVtSession::LcSessionState() const
-    {
-    return iSessionState;
-    }
-
-const TDesC& CLcVtSession::LocalDisplayName()
-    {
-    return KNullDesC;
-    }
-const TDesC& CLcVtSession::RemoteDisplayName()
-    {
-    if ( iRemoteDisplayName )
-        {
-        return *iRemoteDisplayName;
-        }
-    return KNullDesC;
-    }
-    
-TInt CLcVtSession::SetParameter( TInt aId, TInt aValue )
-    {
-     if (aId == 0)
-         iMainWindow = reinterpret_cast<RWindow*>(aValue);
-         
-    return 0;
-    }
-
-TInt CLcVtSession::ParameterValue( TInt aId )
-    {
-    return 0;
-    }
-
-const TDesC& CLcVtSession::RemoteDetails()
-    {
-    if ( iRemoteDetails )
-        {
-        return *iRemoteDetails;
-        }
-    return KNullDesC;
-    }
-
-void CLcVtSession::UpdateLcSessionL()
-    {     
-    __VTPRINTENTER( "CLcVtSession.UpdateLcSessionL" )
-    
-    if(iLcVtStates->ExecState() != TLcVtStates::EExecStateRunning )
-        {
-        __VTPRINTEXIT( "CLcVtSession.UpdateLcSessionL -- State Not OK" )
-        return;
-        }
-#if 0    
-    if(iLocalVideoPlayer->IsOrientationChanged())
-        HandleLayoutChanged();
-    else
-        UpdateRenderingParametersL();
-#endif
-    UpdateRenderingParametersL();
-    __VTPRINTEXIT( "CLcVtSession.UpdateLcSessionL" )
-    }
-    
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtSession::IsLcAudioMutedL()
-    {
-    return EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::MuteLcAudioL( TBool aMute )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtSession::IsLcMicMutedL()
-    {    
-    TBool result = !(iLcVtStates->AudioState().IsAudio());
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.IsLcMicMutedL = %d", result )
-    return result;  
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::MuteLcMicL( TBool aMute )
-    {   
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.MuteLcMicL aMute =  %d", aMute )
-
-    if(aMute)
-        {      
-        HandleCommandL(EPluginCmdDisableAudio);
-        }
-    else
-        {
-        HandleCommandL(EPluginCmdEnableAudio);     
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtSession::IsEnablingLcLoudspeakerAllowed()
-    {
-    return ETrue;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::EnableLcLoudspeakerL( TBool aEnabled )
-    {
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.EnableLcLoudspeakerL aEnabled =  %d", aEnabled )    
-    
-    if(aEnabled)
-        {
-        HandleCommandL(EPluginCmdActivateLoudspeaker);
-        }
-    else
-        {
-        HandleCommandL(EPluginCmdDeactivateLoudspeaker);
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtSession::IsLcLoudspeakerEnabled()
-    {
-    TBool result = !(iLcVtStates->AudioState().CanActivateLoudspeaker());
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.IsLcLoudspeakerEnabled = %d", result )
-    return result;    
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-TInt CLcVtSession::LcVolumeL()
-    {
-    MVtEngAudio& audio = iModel->Audio();
-    MVtEngAudio::TAudioRoutingState audioRouting;
-    User::LeaveIfError( audio.GetRoutingState( audioRouting ) );
-    const TInt volume( audio.OutputVolume(
-        !( audioRouting == MVtEngAudio::EAudioLoudspeaker ) ) );
-    
-    return volume;
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::SetLcVolumeL( TInt aValue )
-    {   
-    __VTPRINTENTER( "CLcVtSession.SetLcVolumeL" )
-    MVtEngAudio& audio = iModel->Audio();
-    const TInt HandsetVolume( audio.OutputVolume(ETrue) );    
-    const TInt HandsfreeVolume( audio.OutputVolume(EFalse) );    
-    MVtEngAudio::TVtEngOutputVolume volume;
-    volume.iHandsetVolume = HandsetVolume;
-    volume.iHandsfreeVolume = HandsfreeVolume;
-
-    MVtEngAudio::TAudioRoutingState audioRouting;
-    User::LeaveIfError( audio.GetRoutingState( audioRouting ) );    
-    if(audioRouting == MVtEngAudio::EAudioHandset)
-        volume.iHandsetVolume = aValue;
-    else
-        volume.iHandsfreeVolume = aValue;    
-    
-    ExecuteCmdL( KVtEngSetAudioVolume, volume );
-    __VTPRINTEXIT( "CLcVtSession.SetLcVolumeL" )
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::IncreaseLcVolumeL()
-    {
-    ExecuteCmdL( KVtEngIncreaseAudioVolume );
-    }
-
-// -----------------------------------------------------------------------------
-// From MLcAudioControl
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::DecreaseLcVolumeL()
-    {
-    ExecuteCmdL( KVtEngDecreaseAudioVolume );
-    }
-
-CVtEngModel& CLcVtSession::Model()
-    {
-    return *iModel;
-    }
-
-
-void CLcVtSession::HandleCommandL(const TInt aCommand)
-    {
-    
-    __VTPRINTENTER( "CLcVtSession.HandleCommandL" )
-    
-    if ( iLcVtStates->ExecState() != TLcVtStates::EExecStateRunning )
-        {
-        __VTPRINTEXIT( "CLcVtSession.HandleCommandL NOT ready" )
-        return;
-        }
-    
-    if (  iState->HandleCommandL( aCommand ) == TLcVtStateBase::EEventHandled )
-        {
-        __VTPRINTEXIT( "CLcVtSession.HandleCommandL <silently ignoring> 0" )
-        return;
-        }   
-        
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.HandleCommandL command =  %d", aCommand )
-    
-    switch ( aCommand )
-        {
-        case EPluginCmdEnableAudio:
-            CmdEnableAudioL();
-            break;
-            
-        case EPluginCmdDisableAudio:
-            CmdDisableAudioL();
-            break;
-            
-        case EPluginCmdUsePrimaryCamera:
-            CmdUseCameraL( ETrue );
-            break;
-            
-        case EPluginCmdUseSecondaryCamera:
-            CmdUseCameraL( EFalse );
-            break;
-            
-        case EPluginCmdEnableVideo:
-            CmdEnableVideoL();
-            break;
-            
-        case EPluginCmdDisableVideo:
-            CmdDisableVideoL();
-            break;
-            
-        case EPluginCmdActivateLoudspeaker:
-            CmdActivateLoudspeakerL();
-            break;
-            
-        case EPluginCmdDeactivateLoudspeaker:
-            CmdDeactivateLoudspeakerL();
-            break;
-            
-        }
-    
-    __VTPRINTEXIT( "CLcVtSession.HandleCommandL" )
-    
-    iLcVtStates->Update();
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CmdEnableAudioL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CmdEnableAudioL()
-    {
-    ExecuteCmdL( KVtEngUnmuteOutgoingAudio );
-    iLcVtStates->Update();
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CmdDisableAudioL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CmdDisableAudioL()
-    {
-    ExecuteCmdL( KVtEngMuteOutgoingAudio );
-    iLcVtStates->Update();
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CmdUseCameraL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CmdUseCameraL( const TBool aPrimaryCamera )
-    {
-
-    MVtEngMedia& media = iModel->Media();
-
-    MVtEngMedia::TMediaSource selectedSource =
-        ( aPrimaryCamera ) ?
-            MVtEngMedia::EMediaCameraPri : MVtEngMedia::EMediaCameraSec;
-
-    TInt available = 0;
-    LcVtUtility::GetOutgoingMediaState( media, available );
-    if ( available & MVtEngMedia::EMediaVideo )
-        {
-        ExecuteCmdL( KVtEngStopViewFinder );
-        
-        TRAPD( err, ExecuteCmdL( KVtEngSetSource, selectedSource ) );
-
-        if ( err == KErrNone )
-            {
-            ExecuteCmdL( KVtEngStartViewFinder );
-            }
-        else
-            {
-            //ShowOtherCameraNotUsableNoteL();
-            }
-        }
-    else
-        {
-        /*
-        MVtEngMedia::TPrepareCameraParams params;
-        params.iMediaSource = selectedSource;
-        params.iInitialize = EFalse;
-        TRAPD( err, ExecuteCmdL( KVtEngPrepareCamera, params ) );
-        if ( err != KErrNone )
-            {
-            ShowOtherCameraNotUsableNoteL();
-            }
-            */
-        }
-    
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CmdEnableVideoL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CmdEnableVideoL()
-    {
-    // if outgoing video is frozen
-    MVtEngMedia& media = iModel->Media();
-    if ( LcVtUtility::GetFreezeState( media ) )
-        {
-        ExecuteCmdL( KVtEngUnfreeze );
-        // swap images if needed
-        //RestoreViewFinderL();
-        }
-    else
-        {
-        ExecuteCmdL( KVtEngStopViewFinder );
-        //iUplinkWindow->SetStreamBitmap( NULL );
-        MVtEngMedia::TMediaSource source = MVtEngMedia::EMediaCamera;
-        ExecuteCmdL( KVtEngSetSource, source );
-        MVtEngMedia::TCameraId id;
-        if ( iModel->Media().GetCurrentCameraId( id ) == KErrInUse )
-            {
-            //ShowCameraInUseNoteL();
-            }
-        ExecuteCmdL( KVtEngStartViewFinder );
-        }
-    // update VB settings
-    //UpdateVBSettingL();
-    iLcVtStates->Update();
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CmdDisableVideoL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CmdDisableVideoL()
-    {
-    ExecuteCmdL( KVtEngStopViewFinder );
-
-    //iUplinkWindow->SetStreamBitmap( NULL );
-
-    TInt err = KErrNotFound;
-    if ( LcVtUtility::HasStillImage( iModel->Media() ) )
-        {
-        __VTPRINT( DEBUG_GEN, "CLcVtSession.CmdDisableVideoL.HasStill" )
-        MVtEngMedia::TMediaSource source = MVtEngMedia::EMediaStillImage;
-        TRAP( err, ExecuteCmdL( KVtEngSetSource, source ) );
-        }
-    if ( ( err != KErrNone ) )
-        {
-        __VTPRINT( DEBUG_GEN, "CLcVtSession.CmdDisableVideoL.MediaNone" )
-        MVtEngMedia::TMediaSource source = MVtEngMedia::EMediaNone;
-        ExecuteCmdL( KVtEngSetSource, source );
-        }
-
-    ExecuteCmdL( KVtEngStartViewFinder );
-    iLcVtStates->Update();
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CmdActivateLoudspeakerL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CmdActivateLoudspeakerL()
-    {
-    MVtEngAudio::TVtEngRoutingSetting audioSetting =
-        MVtEngAudio::EActivateHandsfree;
-    ExecuteCmdL( KVtEngSetAudioRouting, audioSetting );
-    iLcVtStates->Update();
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CmdDeactivateLoudspeakerL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CmdDeactivateLoudspeakerL()
-    {
-    MVtEngAudio::TVtEngRoutingSetting audioSetting =
-        MVtEngAudio::EDeactivateHansfree;
-    ExecuteCmdL( KVtEngSetAudioRouting, audioSetting );
-    iLcVtStates->Update();
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::SetZoomFactorL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::SetZoomFactorL( TInt aZoomStep )
-    {
-    __VTPRINTENTER( "CLcVtSessionCLcVtSession.SetZoomFactorL" )
-    MVtEngMedia& media = iModel->Media();
-    if ( LcVtUtility::IsZoomAllowed( media ) )
-        {
-        ExecuteCmdL( KVtEngSetZoomStep, aZoomStep );
-        }
-    __VTPRINTEXIT( "CLcVtSession.SetZoomFactorL" )
-    }
-
-#ifndef NGA_VIDEO_RENDER
-//local video display, VT use bitmaps vf now, and maybe replace by direct vf later
-void CLcVtSession::vtHandleFrameL( CFbsBitmap* aBitmap )
-    {
-    __VTPRINTENTER( "CLcVtSession.vtHandleFrameL" )   
-    
-    /*    
-    TRect VFRect = LocalVideoPlayer()->LcWindow()->LcWindowRect();
-    const TPoint KVFcordinate( VFRect.iTl.iX,  VFRect.iTl.iY );    
-    iMainWindow->Invalidate();
-    iMainWindow->BeginRedraw();
-    iGc->Activate( *iMainWindow );
-    aBitmap->BeginDataAccess();
-    aBitmap->EndDataAccess();
-    iGc->BitBlt( KVFcordinate , aBitmap );
-    iGc->Deactivate();
-    iMainWindow->EndRedraw();
-    */
-    
-    /*
-    TRect VFRect = LocalVideoPlayer()->LcWindow()->LcWindowRect();    
-    const TPoint KVFcordinate( VFRect.iTl.iX -2 ,  VFRect.iTl.iY - 168 );
-    iLocalVideoWindow->Invalidate();
-    iLocalVideoWindow->BeginRedraw();
-    iGc->Activate( *iLocalVideoWindow );
-    iGc->BitBlt( KVFcordinate , aBitmap );
-    iGc->Deactivate();
-    iLocalVideoWindow->EndRedraw();
-    */   
-        
-    __VTPRINTEXIT("CLcVtSession.vtHandleFrameL")     
-    }
-#endif
-
-TInt CLcVtSession::SetForegroundStatus( TBool aIsForeground )
-{
-    __VTPRINTENTER( "CLcVtSession.SetForegroundStatus" )
-    __VTPRINT2( DEBUG_MEDIA , "    foreground: %d", aIsForeground )
-
-    if ( iRwGroup )
-        {
-        TInt priority = aIsForeground ? ECoeWinPriorityNormal : ECoeWinPriorityNeverAtFront;
-        iRwGroup->SetOrdinalPosition( 1 , priority );
-        iRemoteVideoWindow->SetOrdinalPosition( 1 , priority );
-        iLocalVideoWindow->SetOrdinalPosition( 1 , priority );
-        iRwSession.Flush();
-        }
-    if ( aIsForeground )
-       {
-       iIndicatorCtr->disableActiveCallIndicator();
-       }
-    else {
-       iIndicatorCtr->enableActiveCallIndicator();
-       }
-
-    __VTPRINTEXIT( "CLcVtSession.SetForegroundStatus" )
-    
-    return KErrNone;   
-}
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ShutdownL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ShutdownL()
-    {
-    __VTPRINTENTER( "CLcVtSession.ShutdownL" )
-    iActiveExec->Start( EVtSessionShutdown, *this );
-    __VTPRINTEXIT( "CLcVtSession.ShutdownL" )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::StartupPhase1L
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::StartupPhase1L()
-    {
-    __VTPRINTENTER( "CLcVtSession.StartupPhase1L" )
-    iActiveExec->Start( EVtSessionStartup, *this );
-    __VTPRINTEXIT( "CLcVtSession.StartupPhase1L" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::StartupPhase2L
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::StartupPhase2L()
-    {
-    __VTPRINTENTER( "CLcVtSession.StartupPhase2L" )
-    iActiveExec->Start( EVtSessionAnswered, *this );
-    __VTPRINTEXIT( "CLcVtSession.StartupPhase2L" )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecExecuteL
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtSession::ActiveExecExecuteL(
-        CLcVtActiveExec& /*aActiveExec*/,
-        const TInt aState,
-        TInt& aNextState,
-        TRequestStatus& aRequest )
-    {
-    return ActiveExecInitExecuteL(
-            aState,
-            aNextState,
-            aRequest );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecContinue
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtSession::ActiveExecContinue(
-        CLcVtActiveExec& /*aActiveExec*/,
-        TInt& aState,
-        const TInt aError )
-    {
-    return ActiveExecInitContinue( aState, aError );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecCancel
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ActiveExecCancel(
-        CLcVtActiveExec& /*aActiveExec*/,
-        TInt aState )
-    {
-    ActiveExecInitCancel( aState );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecDone
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ActiveExecDone(
-        CLcVtActiveExec& /*aActiveExec*/,
-        const TInt aInitialState )
-    {    
-    ActiveExecInitDone( aInitialState );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecInitCancel
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ActiveExecInitCancel(
-        const TInt /*aState*/ )
-    {
-    __VTPRINTENTER( "CLcVtSession.InitExecCancel" )
-    
-    delete iCmdExecutor;
-
-    if ( iShutdownRequest )
-        {
-        User::RequestComplete( iShutdownRequest, KErrCancel );
-        iShutdownRequest = NULL;
-        }
-    __VTPRINTEXIT( "CLcVtSession.InitExecCancel" )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecInitDone
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ActiveExecInitDone(
-        const TInt aInitialState )
-    {
-    __VTPRINTENTER( "CLcVtSession.ExecInitDone" )
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.InitExecDone.ini=%d", aInitialState )
-    // Operation succeeded
-    
-    // Now we have finished.
-    if ( iState )
-        {
-        if ( aInitialState == EVtSessionAnswered )
-            {
-            TRAP_IGNORE( iState->LcVtStartupPhase2DoneL() );
-			iSessionState = EOpen;
-            iObserver->StateChanged( *this );             
-            }
-        else if ( aInitialState == EVtSessionShutdown )
-            {
-            TRAP_IGNORE( iState->ShutdownDoneL() );
-            }
-        else // EVtSessionStartup
-            {
-            TRAP_IGNORE( iState->LcVtStartupPhase1DoneL() );
-            }
-        }
-    __VTPRINTEXIT( "CLcVtSession.ExecInitDone" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecInitExecuteL
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtSession::ActiveExecInitExecuteL(
-        const TInt aState,
-        TInt& aNextState,
-        TRequestStatus& aRequest )
-    {
-    __VTPRINTENTER( "CLcVtSession.ActiveExecInitExecuteL" )
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.ActiveExecInitExecuteL.st=%d", aState )
-
-    TBool synch = EFalse;
-
-    switch ( aState )
-        {
-        // Startup chain:
-        case EVtSessionStartupInitEngine:
-            //ChangeApplicationFocus(ETrue);
-#if defined (__WINS__)
-            ActiveExecInitExecuteCommandL( KVtEngInitializeEngineDiag, aRequest );
-#else            
-            ActiveExecInitExecuteCommandL( KVtEngInitializeEngine, aRequest );
-#endif            
-            aNextState = EVtSessionStartupPrepareViewfinder; 
-            //aNextState = EVtSessionStartupFinish;            
-            break;
-            
-        case EVtSessionStartupPrepareViewfinder:
-            //iSessionState = EOpen;
-            //iObserver->StateChanged( *this );          
-                        
-#ifdef NGA_VIDEO_RENDER
-            CreateVideoWindowsL();
-#endif           
-            ActiveExecInitPrepareViewFinderL( aRequest );            
-            aNextState = EVtSessionStartupPrepareRemoteRender;
-            break;
-
-        case EVtSessionStartupPrepareRemoteRender:
-            ActiveExecInitPrepareRemoteRenderL( aRequest );
-            aNextState = EVtSessionStartupFinish;
-            break;
-            
-        case EVtSessionStartupFinish:
-            aNextState = EVtSessionNone;
-            synch = ETrue;
-            break;
-            
-            
-        // Shutdown chain:    
-        case EVtSessionShutdownHideApplication:
-            ChangeApplicationFocus( EFalse );
-            synch = ETrue;
-            aNextState = EVtSessionShutdownResetEngine;            
-            break;
-        case EVtSessionShutdownResetEngine:
-            {
-            aRequest = KRequestPending;
-
-            MVtEngCommandHandler& command = iModel->CommandHandler();
-            // There should not be any commands ongoing because
-            // we have canceled all dialogs (and this should
-            // be the only command without dialog).
-            command.CancelCommand( command.PendingCommand() ); // ignore error
-            command.ExecuteL( KVtEngResetEngine, NULL );
-            iShutdownRequest = &aRequest;
-
-            aNextState = EVtSessionNone;
-            }            
-            break;
-        
-        
-            
-        // Answered chain:  
-        case EVtSessionAnsweredStartRemoteRender:            
-            {
-            ActiveExecInitExecuteCommandL( KVtEngStartRenderRemote, aRequest );
-            //TRequestStatus* status = &aRequest;
-            //User::RequestComplete( status, KErrNone );            
-
-            MVtEngSessionInfo::TDirection direction;
-            if ( iModel->Session().GetDirection( direction ) != KErrNone )
-                {
-                direction = MVtEngSessionInfo::EDirectionMT;
-                }
-            
-            MVtEngMedia& media = iModel->Media();    
-            if ( LcVtUtility::HasCameras( media ) )
-                {
-                if ( direction == MVtEngSessionInfo::EDirectionMT )
-                    {
-                        if ( VideoSendingKey == KAllwaysAllow)
-                            {
-                            aNextState = EVtSessionAnsweredDoPrepareCamera;
-                            }
-                        else
-                            {
-                            aNextState = EVtSessionAnsweredSetlectNone;
-                            }
-                    }
-                else
-                    {
-                    //MVtEngSessionInfo::EDirectionMO
-                    aNextState = EVtSessionAnsweredDoPrepareCamera;
-                    }
-                }
-            else
-                {
-                aNextState = EVtSessionAnsweredSetlectNone;
-                }
-            }
-            break;
-            
-        case EVtSessionAnsweredSetlectNone:
-            {
-            ActiveExecInitSetSourceL( MVtEngMedia::EMediaNone, aRequest );
-            aNextState = EVtSessionAnsweredStartViewFinder;            
-            }
-            break;
-        case EVtSessionAnsweredDoPrepareCamera:
-            {
-            MVtEngMedia& media = iModel->Media();
-            MVtEngMedia::TMediaSource source = MVtEngMedia::EMediaCamera;
-            ActiveExecInitPrepareCameraL( source, aRequest );
-            aNextState = EVtSessionAnsweredSetlectCamera;
-            }
-            break;
-            
-        case EVtSessionAnsweredSetlectCamera:
-            ActiveExecInitSetSourceL( MVtEngMedia::EMediaCamera, aRequest );
-            aNextState = EVtSessionAnsweredStartViewFinder;
-            break;
-            
-        case EVtSessionAnsweredStartViewFinder:
-            ActiveExecInitExecuteCommandL( KVtEngStartViewFinder, aRequest );
-            aNextState = EVtSessionAnsweredBringToForeground;            
-            break;
-            
-        case EVtSessionAnsweredBringToForeground:
-            {
-            //CreateVideoWindowsL();
-            
-            ChangeApplicationFocus(ETrue);
-            TRequestStatus* status = &aRequest;
-            User::RequestComplete( status, KErrNone );            
-            aNextState = EVtSessionAnsweredFinish;
-            }
-            break;
-            
-        case EVtSessionAnsweredFinish:
-            {          
-            //iRwGroup->SetOrdinalPosition( 1 , ECoeWinPriorityNormal );
-            
-            TBool handleAsForeground( ETrue );
-            TPtrC8 params( reinterpret_cast< TUint8* >( &handleAsForeground ), sizeof( TBool ) );
-            MVtEngCommandHandler& command = iModel->CommandHandler();            
-            TRAPD( err, command.ExecuteL( KVtEngSetUIForeground, &params ));
-            if(err != KErrNone)
-                {
-                err = KErrNone;
-                }
-            
-            iLcVtStates->Update();
-            
-            iObserver->StateChanged( *iLocalVideoPlayer );
-            iObserver->StateChanged( *iRemoteVideoPlayer );            
-            
-            synch = ETrue;
-            aNextState = EVtSessionNone;
-            }
-            break;
-        }
-    
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.ActiveExecInitExecuteL.sync=%d", synch )
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.ActiveExecInitExecuteL.next=%d", aNextState )
-    __VTPRINTEXITR( "CLcVtSession.ActiveExecInitExecuteL %d", synch )
-    return synch;
-    
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecInitContinue
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtSession::ActiveExecInitContinue(
-        TInt& aState,
-        const TInt /*aError*/ )
-    {
-    __VTPRINTENTER( "CLcVtSession.InitExecCont" )
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.InitExecCont.st=%d", aState ) 
-
-    const TBool cont = EFalse;
-    __VTPRINT2( DEBUG_GEN, "VtUi.InitExecCont.cont=%d", cont )
-
-    if ( !cont )
-        {
-        // Operation failed.
-        if ( iState )
-            {
-            TRAP_IGNORE( iState->LcVtStartupFailedL() );
-            }
-        }
-    __VTPRINTEXITR( "VtUi.InitExecCont %d", cont )
-    return cont;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecInitExecuteCommandL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ActiveExecInitExecuteCommandL(
-        const TVtEngCommandId aCommand,
-        TRequestStatus& aRequest )
-    {
-    iCmdExecutor =
-        ExecuteCmdAsyncL(
-        &iCmdExecutor,
-        aCommand,
-        aRequest );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecInitPrepareViewFinderL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ActiveExecInitPrepareViewFinderL(
-        TRequestStatus& aRequest )
-    {
-    
-    __VTPRINTENTER( "CLcVtSession.ActiveExecInitPrepareViewFinderL" )
-        
-    TRect VFRect = LocalVideoPlayer()->LcWindow()->LcWindowRect();    
-    TSize size (VFRect.Size());
-    
-#ifdef NGA_VIDEO_RENDER  
-    
-    __VTPRINT3(DEBUG_GEN,  "CLcVtSession.ActiveExecInitPrepareViewFinderL size(%d,%d)", size.iWidth, size.iHeight )    
-    
-    iLocalVideoWindow->SetPosition( VFRect.iTl );    
-    iLocalVideoWindow->SetSize( VFRect.Size() ); 
-    
-    iRwSession.Flush(); 
-        
-    __VTPRINT2( DEBUG_MEDIA , "    LocalVideoPlayer.VFRect.iTl.iX: %d", VFRect.iTl.iX )
-    __VTPRINT2( DEBUG_MEDIA , "    LocalVideoPlayer.VFRect.iTl.iY: %d", VFRect.iTl.iY )
-    __VTPRINT2( DEBUG_MEDIA , "    LocalVideoPlayer.VFRect.iWidth: %d", VFRect.Width() )
-    __VTPRINT2( DEBUG_MEDIA , "    LocalVideoPlayer.VFRect.iHeight: %d", VFRect.Height() )  
-                   
-    TVtEngRenderingOptionsNGA configViewfinder( *iLocalVideoWindow, iRwSession );
-    iCmdExecutor =
-          ExecuteCmdAsyncL(
-              &iCmdExecutor,
-              KVtEngPrepareViewFinder,
-              configViewfinder,
-              aRequest );   
-    
-    
-    /*
-    TPoint point( 0, 0 );
-    TRect vfRect( point, size ); 
-     
-    TVtEngRenderingOptionsDSA configViewfinder(*iEventObserver, iRwSession ,*iDev, *iLocalVideoWindow, vfRect, vfRect);    
-
-    iCmdExecutor =
-          ExecuteCmdAsyncL(
-              &iCmdExecutor,
-              KVtEngPrepareViewFinderDSA,
-              configViewfinder,
-              aRequest );
-              */                  
-    
-#else
-    
-    __VTPRINT3(DEBUG_GEN,  "CLcVtSession.ActiveExecInitPrepareViewFinderL size(%d,%d)", size.iWidth, size.iHeight )    
-    
-    TVtEngRenderingOptions configViewfinder(*iEventObserver, size);
-
-    iCmdExecutor =
-          ExecuteCmdAsyncL(
-              &iCmdExecutor,
-              KVtEngPrepareViewFinder,
-              configViewfinder,
-              aRequest );   
-    
-#endif    
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecInitPrepareRemoteRenderL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ActiveExecInitPrepareRemoteRenderL(
-        TRequestStatus& aRequest )
-    {
-    
-    TRect RMRect = RemoteVideoPlayer()->LcWindow()->LcWindowRect();    
-    const TSize KRMsize( RMRect.Size());
-    TRect screen( KRMsize );
-    TRect clip( KRMsize );        
-    
-#ifdef NGA_VIDEO_RENDER 
-        
-    iRemoteVideoWindow->SetPosition( RMRect.iTl );
-    iRemoteVideoWindow->SetSize( RMRect.Size() );    
-    
-    iRwSession.Flush(); 
-    
-    __VTPRINT2( DEBUG_MEDIA , "    RemoteVideoPlayer.RMRect.iTl.iX: %d", RMRect.iTl.iX )
-    __VTPRINT2( DEBUG_MEDIA , "    RemoteVideoPlayer.RMRect.iTl.iY: %d", RMRect.iTl.iY )
-    __VTPRINT2( DEBUG_MEDIA , "    RemoteVideoPlayer.RMRect.iWidth: %d", RMRect.Width() )
-    __VTPRINT2( DEBUG_MEDIA , "    RemoteVideoPlayer.RMRect.iHeight: %d", RMRect.Height() )   
-       
-       
-    TVtEngRenderingOptionsNGA configRemoteRender( *iRemoteVideoWindow, iRwSession );    
-    iCmdExecutor =
-        ExecuteCmdAsyncL(
-            &iCmdExecutor,
-            KVtEngPrepareRemoteRenderNGA,
-            configRemoteRender,
-            aRequest );
-    
-#else
-
-    const TPoint KRMcordinate( RMRect.iTl.iX,  RMRect.iTl.iY );
-    
-    TVtEngRenderingOptionsDP configRemoteRender(*iEventObserver, *iWsSession ,*iWsSessionScreenDev, *iMainWindow, screen, clip, KRMcordinate );  
-
-    iCmdExecutor =
-        ExecuteCmdAsyncL(
-            &iCmdExecutor,
-            KVtEngPrepareRemoteRenderDP,
-            configRemoteRender,
-            aRequest );
-    
-#endif
-    
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecInitPrepareCameraL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ActiveExecInitPrepareCameraL(
-        const MVtEngMedia::TMediaSource aSource,
-        TRequestStatus& aRequest )
-    {
-    MVtEngMedia::TPrepareCameraParams params;
-    params.iMediaSource = aSource;
-    params.iInitialize = ETrue;
-    iCmdExecutor =
-        ExecuteCmdAsyncL(
-            &iCmdExecutor,
-            KVtEngPrepareCamera,
-            params,
-            aRequest );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ActiveExecInitSetSourceL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ActiveExecInitSetSourceL(
-        const MVtEngMedia::TMediaSource aSource,
-        TRequestStatus& aRequest )
-    {
-    MVtEngMedia::TMediaSource source =
-        aSource;
-    iCmdExecutor =
-        ExecuteCmdAsyncL(
-            &iCmdExecutor,
-            KVtEngSetSource,
-            source,
-            aRequest );
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ExecuteCmdAsyncL
-// -----------------------------------------------------------------------------
-//
-CLcVtCmdExecutor* CLcVtSession::ExecuteCmdAsyncL(
-        CLcVtCmdExecutor** aDialogPtr,
-        const TVtEngCommandId aCommand,
-        TRequestStatus& aStatus )
-    {
-    return DoExecuteCmdAsyncL( aDialogPtr, aCommand, NULL, aStatus );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ExecuteCmdAsyncL
-// -----------------------------------------------------------------------------
-//
-template< class T >
-CLcVtCmdExecutor* CLcVtSession::ExecuteCmdAsyncL(
-        CLcVtCmdExecutor** aDialogPtr,
-        const TVtEngCommandId aCommand,
-        T& aParam,
-        TRequestStatus& aStatus )
-    {
-    TPtrC8 params( reinterpret_cast< TUint8* >( &aParam ), sizeof( T ) );
-    return DoExecuteCmdAsyncL( aDialogPtr, aCommand, &params, aStatus );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::DoExecuteCmdAsyncL
-// -----------------------------------------------------------------------------
-//
-CLcVtCmdExecutor* CLcVtSession::DoExecuteCmdAsyncL(
-        CLcVtCmdExecutor** aDialogPtr,
-        const TVtEngCommandId aCommand,
-        TDesC8* aParams,
-        TRequestStatus& aStatus )
-    {
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.DoExecAsync.cmd=%d", aCommand )
-    MVtEngCommandHandler& command = iModel->CommandHandler();
-    const TInt caps = command.GetCommandCaps( aCommand );
-
-    if ( caps >= KErrNone )
-        {
-        const TBool asynchronous =
-            ( caps & MVtEngCommandHandler::EAttribAsync );
-
-        if ( asynchronous  )
-            {
-            CLcVtCmdExecutor* executor =
-                new ( ELeave ) CLcVtCmdExecutor(
-                    aDialogPtr,
-                    iModel->CommandHandler(),
-                    *iEventObserver );
-            executor->ExecuteCmdL( aCommand, aParams, &aStatus );
-            return executor;
-            }
-        else
-            {
-            command.ExecuteL( aCommand, aParams );
-            RefreshStatesL();
-            TRequestStatus* status = &aStatus;
-            User::RequestComplete( status, KErrNone );
-            }
-        }
-    else
-        {
-        // Failed.
-        User::Leave( caps );
-        }
-    
-    return NULL;
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ExecuteCmdL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ExecuteCmdL( const TVtEngCommandId aCommand )
-    {
-    DoExecuteCmdL( aCommand, NULL );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ExecuteCmdL
-// -----------------------------------------------------------------------------
-//
-template< class T >
-void CLcVtSession::ExecuteCmdL(
-        const TVtEngCommandId aCommand,
-        T& aParam )
-    {
-    TPtrC8 params( reinterpret_cast< TUint8* >( &aParam ), sizeof( T ) );
-    DoExecuteCmdL( aCommand, &params );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::DoExecuteCmdL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::DoExecuteCmdL(
-        const TVtEngCommandId aCommand,
-        TDesC8* aParams )
-    {
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.DoExec.cmd=%d", aCommand )
-    MVtEngCommandHandler& command = iModel->CommandHandler();
-    const TInt caps = command.GetCommandCaps( aCommand );
-
-    if ( caps >= KErrNone )
-        {
-        const TBool asynchronous =
-            ( caps & MVtEngCommandHandler::EAttribAsync );
-
-        if ( asynchronous  )
-            {            
-            CLcVtCmdExecutor* executor =
-                new ( ELeave ) CLcVtCmdExecutor(
-                    NULL,
-                    iModel->CommandHandler(),
-                    *iEventObserver );
-            iUiProvider->BlockUi(ETrue);
-            //executor->ExecuteCmdL( aCommand, aParams, NULL );
-            TRAPD( err, executor->ExecuteCmdL( aCommand, aParams, NULL ) );
-            iUiProvider->BlockUi(EFalse);
-            if(err != KErrNone)
-                User::Leave(err);
-            
-            }
-        else
-            {
-            command.ExecuteL( aCommand, aParams );
-            RefreshStatesL();
-            }
-        }
-    else
-        {
-        // Failed.
-        User::Leave( caps );
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::Execute
-// -----------------------------------------------------------------------------
-//
-TInt CLcVtSession::Execute( const TVtEngCommandId aCommand, TDesC8* aParam )
-    {
-    MVtEngCommandHandler& command = iModel->CommandHandler();
-    TRAPD( err, command.ExecuteL( aCommand, aParam ) );
-#ifdef VTDEBUG
-    if ( err != KErrNone )
-        {
-        __VTPRINT3( DEBUG_GEN, "CLcVtSession.Execute.Nok.cmd=%d,err=%d", aCommand, err )
-        }
-#endif // VTDEBUG
-    return err;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ChangeApplicationFocus
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ChangeApplicationFocus( const TBool aForeground )
-    {
-    __VTPRINTENTER( "CLcVtSession.ChangeApplicationFocus" )
-    if ( iUiProvider ){
-        iUiProvider->HandleForegroundStatus(aForeground);
-    }
-    __VTPRINTEXIT( "CLcVtSession.ChangeApplicationFocus" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::ChangeState
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::ChangeState( TLcVtStateBase* aState )
-    {
-    __VTPRINTENTER( "CLcVtSession.ChangeState" )
-    iState = aState;
-    __VTPRINTEXIT( "CLcVtSession.ChangeState" )
-    }
-
-#if 0
-// -----------------------------------------------------------------------------
-// CLcVtSession::StartDtmfTone
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::StartDtmfTone( const TChar& aTone )
-    {
-    // should be called only through current application state
-    iDtmfTone = aTone;
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.DTMF.Start.%d", iDtmfTone() )
-    if ( Execute( KVtEngStartDtmfTone, &iDtmfTone ) != KErrNone )
-        {
-        iDtmfTone = 0;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::StopDtmfTone
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::StopDtmfTone()
-    {
-    // should be called only through current application state
-    if ( iDtmfTone() )
-        {
-        __VTPRINT( DEBUG_GEN, "CLcVtSession.DTMF.STOP" )
-        (void) Execute( KVtEngStopDtmfTone, NULL );
-        iDtmfTone = 0;
-        }
-    }
-#endif
-// -----------------------------------------------------------------------------
-// CLcVtSession::SetCallIdL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::SetCallIdL( const TInt aCallId )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::SetCallNameL
-// -----------------------------------------------------------------------------
-//
-TBool CLcVtSession::SetCallNameL( const TDesC& aName )
-    {
-    HBufC* name = aName.AllocL();
-    delete iRemoteDisplayName;
-    iRemoteDisplayName = name;
-    return ETrue;
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::SetCallNameL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::SetCallNumberL( const TDesC& aNumber )
-    {
-    HBufC* number = aNumber.AllocL();
-    delete iRemoteDetails;
-    iRemoteDetails = number;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::StartShutdown
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::StartShutdown()
-    {
-    __VTPRINTENTER( "CLcVtSession.StartShutdown" )
-    iSessionState = EClosing;
-    if ( iObserver != NULL )
-        {
-        iObserver->StateChanged( *this ); 
-        }
-    //iUiProvider->BlockUi(ETrue);
-    __VTPRINTEXIT( "CLcVtSession.StartShutdown" )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::NumberSource
-// -----------------------------------------------------------------------------
-//
-TDesC* CLcVtSession::NumberSource() const
-    {
-    return NULL;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::RefreshL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::RefreshL( const TInt aRefreshFlags )
-    {
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::RefreshStatesL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::RefreshStatesL()
-    {
-    __VTPRINTENTER( "CLcVtSession.RefreshStatesL" )
-    // If transaction (set of commands) is pending refresh in delayed until
-    // all of them are processed.
-    __VTPRINTEXIT( "CLcVtSession.RefreshStatesL" )
-    }
-
-#if 0
-// -----------------------------------------------------------------------------
-// CLcVtSession::HandleLayoutChanged
-// -----------------------------------------------------------------------------
-//
-TInt CLcVtSession::HandleLayoutChanged()
-    {
-    __VTPRINTENTER( "CLcVtSession.HandleLayoutChanged" )
-    iLayoutChangeCallback->CallBack();
-    __VTPRINTEXIT( "CLcVtSession.HandleLayoutChanged" )
-    return KErrNone;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::DelayedHandleLayoutChanged
-// -----------------------------------------------------------------------------
-//
-TInt CLcVtSession::DelayedHandleLayoutChanged( TAny* aPtr )
-    {
-    __VTPRINTENTER( "CLcVtSession.DelayedHandleLayoutChanged" )
-    CLcVtSession* self = reinterpret_cast< CLcVtSession* > ( aPtr );
-    //self->iUiStates->SetDisableBlindSetting( ETrue );
-    TRAPD( err, self->HandleLayoutChangedL() );
-    //self->iUiStates->SetDisableBlindSetting( EFalse );
-    //self->RefreshBlind();
-    __VTPRINTENTER( "CLcVtSession.DelayedHandleLayoutChanged" )
-    return err;
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::HandleLayoutChangedL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::HandleLayoutChangedL()
-    {
-    __VTPRINTENTER( "CLcVtSession.LayoutChg" )
-    
-    if ( iState )
-    {
-    iState->HandleLayoutChangedL();
-    }
-    
-    /*
-    if ( !iAllowVideoDlgShowed )
-        {
-        if ( iState )
-            {
-            iState->HandleLayoutChangedL();
-            }
-        }
-    else
-        {
-        iUiStates->SetLayoutChangeNeeded( EFalse );
-        DoHandleLayoutChangedL();
-        }
-        */
-    __VTPRINTEXIT( "CLcVtSession.LayoutChg" )
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::DoHandleLayoutChangedL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::DoHandleLayoutChangedL()
-    {
-    __VTPRINTENTER( "CLcVtSession.DoLayoutChg" )
-    
-    // Fully update rendering parameters
-    UpdateRenderingParametersL();
-    // Notify engine about layout change
-    //iLayoutChg = ETrue;
-    TRAPD( error, ExecuteCmdL( KVtEngHandleLayoutChange ) );
-    //iLayoutChg = EFalse;
-
-    // Not ready error is allowed to happen (e.g. when sharing)
-    if ( error && ( error != KErrNotReady ) )
-        {
-        User::Leave( error );
-        }
-    else
-        {
-        __VTPRINT( DEBUG_GEN,
-            "CLcVtSession.DoLayoutChg KVtEngHandleLayoutChange == KErrNotReady (ok)" )
-        }
-        
-    __VTPRINTEXIT( "CLcVtSession.DoLayoutChg" )
-    }
-#endif
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::UpdateRenderingParametersL
-// -----------------------------------------------------------------------------
-//
-#ifdef NGA_VIDEO_RENDER
-
-void CLcVtSession::UpdateRenderingParametersL()
-    {
-    __VTPRINTENTER( "CLcVtSession.UpdateRenderingParametersL" )
-    
-    iRwGroup->SetOrdinalPosition( 1 , ECoeWinPriorityNormal );
-    
-    TRect RMRect = RemoteVideoPlayer()->LcWindow()->LcWindowRect();
-    iRemoteVideoWindow->SetExtent( RMRect.iTl, RMRect.Size() ); 
-    iRemoteVideoWindow->SetOrdinalPosition( 1 , ECoeWinPriorityNeverAtFront );
-    iRemoteVideoWindow->SetTransparencyAlphaChannel();
-    
-    __VTPRINT2( DEBUG_MEDIA , "    RemoteVideoPlayer.RMRect.iTl.iX: %d", RMRect.iTl.iX )
-    __VTPRINT2( DEBUG_MEDIA , "    RemoteVideoPlayer.RMRect.iTl.iY: %d", RMRect.iTl.iY )
-    __VTPRINT2( DEBUG_MEDIA , "    RemoteVideoPlayer.RMRect.iWidth: %d", RMRect.Width() )
-    __VTPRINT2( DEBUG_MEDIA , "    RemoteVideoPlayer.RMRect.iHeight: %d", RMRect.Height() )    
-    
-    
-    TRect VFRect = LocalVideoPlayer()->LcWindow()->LcWindowRect();
-    iLocalVideoWindow->SetExtent( VFRect.iTl, VFRect.Size() );
-    iLocalVideoWindow->SetOrdinalPosition( 1, ECoeWinPriorityNeverAtFront );
-    iLocalVideoWindow->SetTransparencyAlphaChannel();
-    
-    __VTPRINT2( DEBUG_MEDIA , "    LocalVideoPlayer.VFRect.iTl.iX: %d", VFRect.iTl.iX )
-    __VTPRINT2( DEBUG_MEDIA , "    LocalVideoPlayer.VFRect.iTl.iY: %d", VFRect.iTl.iY )
-    __VTPRINT2( DEBUG_MEDIA , "    LocalVideoPlayer.VFRect.iWidth: %d", VFRect.Width() )
-    __VTPRINT2( DEBUG_MEDIA , "    LocalVideoPlayer.VFRect.iHeight: %d", VFRect.Height() )    
-    
-    iRwSession.Flush();    
-
-    __VTPRINTEXIT( "CLcVtSession.UpdateRenderingParametersL" )
-    
-    }
-
-
-#else
-
-void CLcVtSession::UpdateRenderingParametersL()
-    {
-    
-    __VTPRINTENTER( "CLcVtSession.UpdateRenderingParametersL" )
-    
-    MVtEngMedia& media = iModel->Media();
-    const TBool viewFinderStarted =
-        media.RenderingStarted( MVtEngMedia::EMediaOutgoing );
-    const TBool remoteRenderStarted =
-        media.RenderingStarted( MVtEngMedia::EMediaIncoming );
-
-    // Stop viewfinder & remote render.
-    if( viewFinderStarted )
-        {
-        ExecuteCmdL( KVtEngStopViewFinder );
-        }
-    ExecuteCmdL( KVtEngStopRenderRemote );
-
-    TRect VFRect = LocalVideoPlayer()->LcWindow()->LcWindowRect();    
-    TSize size (VFRect.Size());  
-    
-    TVtEngRenderingOptions configViewfinder(*iEventObserver,size);
-
-    ExecuteCmdL( KVtEngPrepareViewFinder, configViewfinder );
-
-    // Prepare remote render.
-    TRect RMRect = RemoteVideoPlayer()->LcWindow()->LcWindowRect();    
-    const TSize KRMsize( RMRect.Size());
-    TRect screen( KRMsize );
-    TRect clip( KRMsize );
-    const TPoint KRMcordinate( RMRect.iTl.iX,  RMRect.iTl.iY );   
-    
-    TVtEngRenderingOptionsDP configRemoteRender(*iEventObserver, *iWsSession ,*iWsSessionScreenDev, *iMainWindow, screen, clip, KRMcordinate );  
-
-    TRAPD ( err, ExecuteCmdL(
-        KVtEngPrepareRemoteRenderDP,
-        configRemoteRender ) );    
-    
-     if ( err != KErrNone )
-        {
-        if ( viewFinderStarted )
-            {
-            // Start viewfinder.
-            ExecuteCmdL( KVtEngStartViewFinder );
-            }
-        User::Leave ( err );
-        } 
-
-    // Start remote render.
-    TRAP_IGNORE( ExecuteCmdL( KVtEngStartRenderRemote ) );
-
-    if ( viewFinderStarted )
-        {
-        // Start viewfinder.
-        ExecuteCmdL( KVtEngStartViewFinder );
-        }
-
-    __VTPRINTEXIT( "CLcVtSession.UpdateRenderingParametersL" )
-    
-    }
-
-#endif
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::HandleEngineResetL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::HandleEngineResetL()
-    {
-    __VTPRINTENTER( "CLcVtSession.HandleEngineResetL" )
-    if ( iShutdownRequest )
-        {
-        __VTPRINT( DEBUG_GEN, "  CLcVtSession.HandleEngineResetL shutdown" )
-        User::RequestComplete( iShutdownRequest, KErrNone );
-        iShutdownRequest = NULL;
-        }
-    __VTPRINTEXIT( "CLcVtSession.HandleEngineResetL" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::HandleShutdownReady
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::HandleShutdownReady()
-    {
-    __VTPRINTENTER( "CLcVtSession.HandleShutdownReady" )
-
-    if(iAsyncCallback->IsActive())
-        {
-        iAsyncCallback->Cancel();
-        }
-
-    iAsyncCallback->Set(
-        TCallBack( &DoExit, this ) );
-    iAsyncCallback->CallBack();
-    __VTPRINTEXIT( "CLcVtSession.HandleShutdownReady" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::DoExit
-// -----------------------------------------------------------------------------
-//
-TInt CLcVtSession::DoExit( TAny* aSession )
-    {
-    __VTPRINTENTER( "CLcVtSession.DoExit" )
-    CLcVtSession* self = static_cast< CLcVtSession* >( aSession );
-    self->iAsyncCallback->Cancel();
-    // Before exiting ensure there are no pending actions.
-    self->ActiveExecInitCancel( 0 );  
-    self->CloseApp();    
-    __VTPRINTEXIT( "CLcVtSession.DoExit" )
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CloseApp
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CloseApp()
-    {
-    __VTPRINTENTER( "CLcVtSession.CloseApp" )
-    //iUiProvider->BlockUi(EFalse);
-#if 0
-    if(iEventObserver)
-        {
-         delete iEventObserver;
-         iEventObserver = NULL;
-        }
-#endif
-    iSessionState = EClosed;
-    iObserver->StateChanged( *this ); 
-    __VTPRINTEXIT( "CLcVtSession.CloseApp" )
-    }
-
-// Implementation of CLcVtSession::CEventObserver
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CEventObserver::CEventObserver
-// -----------------------------------------------------------------------------
-//
-CLcVtSession::CEventObserver::CEventObserver( CLcVtSession& aSession )
-    :iSession(aSession),
-    iCommandObservers( KLcVtCommandObserverArrayGranularity )
-    {        
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CEventObserver::ConstructL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CEventObserver::ConstructL()
-    {                
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CEventObserver::NewL
-// -----------------------------------------------------------------------------
-//
-CLcVtSession::CEventObserver* CLcVtSession::CEventObserver::NewL( CLcVtSession& aSession )
-   {
-   CEventObserver* self = new ( ELeave ) CEventObserver(aSession  );
-   CleanupStack::PushL( self );
-   self->ConstructL();
-   CleanupStack::Pop( self );
-   return self;
-   }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CEventObserver::~CEventObserver
-// -----------------------------------------------------------------------------
-//
-CLcVtSession::CEventObserver::~CEventObserver()
-   {
-   iCommandObservers.Close();        
-   }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CEventObserver::AddObserverL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CEventObserver::AddObserverL(
-       MVtEngCommandObserver& aObserver )
-    {
-    User::LeaveIfError(
-    iCommandObservers.Append( &aObserver ) );
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::CEventObserver::RemoveObserver
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::CEventObserver::RemoveObserver(
-        MVtEngCommandObserver& aObserver )
-    {
-    const TInt pos = iCommandObservers.Find( &aObserver );
-    if ( pos != KErrNotFound )
-        {
-        if ( !iInCommandPerformed )
-            {
-            iCommandObservers.Remove( pos );
-            }
-        else
-            {
-            iCommandObservers[ pos ] = NULL;
-            }
-        }
-    }
-    
-
-void CLcVtSession::CEventObserver::HandleVtEventL( TInt aEvent )
-    {
-    __VTPRINTENTER( "CEventObserver.HandleVtEventL" )
-    __VTPRINT2( DEBUG_GEN, "CEventObserver.HandleVtEventL event=%d ",aEvent );
-    
-    /** Allow application state to handle event first. It may also deny further
-      * handling by indicating the event was handled */
-    if ( iSession.iState &&
-            iSession.iState->HandleVtEventL( aEvent )
-            == TLcVtStateBase::EEventHandled )
-        {
-        __VTPRINTEXITR( "CEventObserver.HandleVtEventL %d", 0 )
-        return;
-        }
-    
-    iSession.iLcVtStates->Update();
-    
-    iSession.iObserver->Updated(*(iSession.iLocalVideoPlayer));
-    iSession.iObserver->Updated(*(iSession.iRemoteVideoPlayer));    
-    
-    __VTPRINTEXIT( "CEventObserver.HandleVtEventL" )
-    }
-        
-void CLcVtSession::CEventObserver::HandleVTCommandPerformedL(
-        TVtEngCommandId aCommand,
-        const TInt aError )
-    {         
-     __VTPRINTENTER( "CEventObserver.HandleVTCommandPerformedL" )
-     __VTPRINT3( DEBUG_GEN, "CEventObserver.HandleVTCommandPerformedL cmd=%d , result=%d",aCommand, aError );   
-     
-     if ( iSession.iState &&
-             iSession.iState->HandleVTCommandPerformedL( aCommand, aError ) ==
-          TLcVtStateBase::EEventHandled )
-         {
-         // state didn't allow further processing of command completion
-         __VTPRINTEXITR( "CEventObserver.HandleVTCommandPerformedL %d", 0 )
-         return;
-         }
-     
-     iSession.RefreshStatesL();
-
-     iSession.iLcVtStates->Update();
-     
-     const TInt count = iCommandObservers.Count();
-     TInt nullPosition = KErrNotFound;
-
-     iInCommandPerformed = ETrue;
-
-     // iInCommandPerformed equals ETrue while inside the following loop;
-     // Exceptions must not be raised.
-     for ( TInt index = 0; index < count; index++ )
-         {
-         MVtEngCommandObserver* obs = iCommandObservers[ index ];
-         if ( obs )
-             {
-             TRAP_IGNORE( obs->HandleVTCommandPerformedL( aCommand, aError ) );
-             }
-         else
-             {
-             // We store only one position; eventually all NULL elements of the
-             // array will be removed.
-             nullPosition = index;
-             }
-         }
-     iInCommandPerformed = EFalse;
-
-     if ( nullPosition != KErrNotFound )
-         {
-         iCommandObservers.Remove( nullPosition );
-         }
-
-     
-     // Specific handling of some commands:
-     if ( aCommand == KVtEngResetEngine ) // Engine has been reset
-         {
-         //__ASSERT_ALWAYS( !aError, VtUiPanic::Panic( EVtUiPanicResetFailed ) );
-         iSession.HandleEngineResetL();
-         }
-         
-     
-     __VTPRINTEXITR( "CEventObserver.HandleVTCommandPerformedL %d", 1 )
-                  
-    }
-
-#ifndef NGA_VIDEO_RENDER
-void CLcVtSession::CEventObserver::vtHandleFrameL(
-         TFrameType aType,
-         CFbsBitmap* aBitmap )
-    {
-    iSession.vtHandleFrameL( aBitmap);
-    }
-
-void CLcVtSession::CEventObserver::vtSetFrame(
-        TFrameType aType,
-        CFbsBitmap* aBitmap )
-    {
-    }
-#endif
-
-TBool CLcVtSession::IsFeatureSupported( CLcEngine::TLcFeature aLcFeature )
-{
-    __VTPRINT2( DEBUG_GEN, "CLcVtSession.IsFeatureSupported feature=%d", aLcFeature)
-    TBool flag = EFalse;
-
-    switch ( aLcFeature )
-        {
-        case CLcEngine::ELcSendVideoQuery:
-            {
-            //MO call: return false; MT call: return true if key = Ask first, return false if key = No or Yes.
-            MVtEngSessionInfo::TDirection direction;
-            if ( iModel->Session().GetDirection( direction ) != KErrNone )
-                {
-                direction = MVtEngSessionInfo::EDirectionMT;
-                }
-            __VTPRINT2( DEBUG_GEN, "CLcVtSession.IsFeatureSupported direction=%d", direction )
-
-            if ( direction == MVtEngSessionInfo::EDirectionMT 
-                 && VideoSendingKey == KAllwaysQuery )
-                {
-                flag = ETrue;
-                }
-            }
-            break;
-
-        default:
-            break;
-        }
-
-    // return feature not supported if not handled
-    return flag;
-}
-
-// End of file
-
-/*
- * 
-// -----------------------------------------------------------------------------
-// CLcVtSession::UpdateLocalVideoRenderParamL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::UpdateLocalVideoRenderParamL()
-    { 
-    __VTPRINTENTER( "CLcVtSession.UpdateLocalVideoRenderParamL" )
-    
-    if(iLcVtStates->ExecState() != TLcVtStates::EExecStateRunning )
-        {
-        __VTPRINTEXIT( "CLcVtSession.UpdateLocalVideoRenderParamL -- not running state" )
-        return;
-        }
-    
-    MVtEngMedia& media = Model().Media();                
-    const TBool viewFinderStarted =
-        media.RenderingStarted( MVtEngMedia::EMediaOutgoing );
-    
-    if( viewFinderStarted )
-        {
-        ExecuteCmdL( KVtEngStopViewFinder );
-        }  
-    
-    TRect VFRect = LocalVideoPlayer()->LcWindow()->LcWindowRect();    
-    TSize size (VFRect.Size());  
-    
-    TVtEngRenderingOptions configViewfinder(*iEventObserver,size);
-
-    ExecuteCmdL( KVtEngPrepareViewFinder, configViewfinder );
-    
-    if ( viewFinderStarted )
-        {
-        // Start viewfinder.
-        ExecuteCmdL( KVtEngStartViewFinder );
-        }    
-    
-    __VTPRINTEXIT( "CLcVtSession.UpdateLocalVideoRenderParamL" )    
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::UpdateRemoteVideoRenderParamL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::UpdateRemoteVideoRenderParamL()
-    {    
-    __VTPRINTENTER( "CLcVtSession.UpdateRemoteVideoRenderParamL" )
-    
-    if(iLcVtStates->ExecState() != TLcVtStates::EExecStateRunning )
-        {
-        __VTPRINTEXIT( "CLcVtSession.UpdateRemoteVideoRenderParamL -- not running state" )
-        return;
-        }    
-    
-    MVtEngMedia& media = Model().Media();
-    const TBool remoteRenderStarted =
-        media.RenderingStarted( MVtEngMedia::EMediaIncoming );
-    
-    ExecuteCmdL( KVtEngStopRenderRemote );
-    
-    TRect RMRect = RemoteVideoPlayer()->LcWindow()->LcWindowRect();    
-    const TSize KRMsize( RMRect.Size());
-    TRect screen( KRMsize );
-    TRect clip( KRMsize );
-    const TPoint KRMcordinate( RMRect.iTl.iX,  RMRect.iTl.iY );    
-    
-    __VTPRINT2( DEBUG_MEDIA , "    RMRect.iTl.iX: %d", RMRect.iTl.iX)
-    __VTPRINT2( DEBUG_MEDIA , "    RMRect.iTl.iY: %d", RMRect.iTl.iY )
-    __VTPRINT2( DEBUG_MEDIA , "    RMRect.iWidth: %d", RMRect.Width() )
-    __VTPRINT2( DEBUG_MEDIA , "    RMRect.iHeight: %d", RMRect.Height() )    
-    
-    TVtEngRenderingOptionsDP configRemoteRender(*iEventObserver, *iWsSession ,*iWsSessionScreenDev, *iMainWindow, screen, clip, KRMcordinate );  
-
-    ExecuteCmdL(
-        KVtEngPrepareRemoteRenderDP,
-        configRemoteRender );    
-    
-    TRAP_IGNORE( ExecuteCmdL( KVtEngStartRenderRemote ) );
-    
-    __VTPRINTEXIT( "CLcVtSession.UpdateRemoteVideoRenderParamL" )
-
-    }
-
-// -----------------------------------------------------------------------------
-// CLcVtSession::LayoutChangedL
-// -----------------------------------------------------------------------------
-//
-void CLcVtSession::LayoutChangedL()
-    {    
-    __VTPRINTENTER( "CLcVtSession.LayoutChangedL" )
-    
-    if(iLcVtStates->ExecState() != TLcVtStates::EExecStateRunning )
-        {
-        __VTPRINTEXIT( "CLcVtSession.LayoutChangedL -- not running state" )
-        return;
-        }    
-    
-    TRAPD( error, ExecuteCmdL( KVtEngHandleLayoutChange ) );
-    
-    __VTPRINTEXIT( "CLcVtSession.LayoutChangedL" )
-    }
- 
- */