vtengines/videoteleng/Inc/Media/CVtEngLocalVideo.h
changeset 18 d9b6a8729acd
parent 4 6dc066157ed4
child 23 c378a0498b84
child 27 dcbddbbaf8fd
--- a/vtengines/videoteleng/Inc/Media/CVtEngLocalVideo.h	Tue Jan 26 12:01:21 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1475 +0,0 @@
-/*
-* Copyright (c) 2004-2007 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:  Local video handler.
-*
-*/
-
-
-#ifndef CVTENGLOCALVIDEO_H
-#define CVTENGLOCALVIDEO_H
-
-//  INCLUDES
-#include <e32base.h>
-#include <capivideosource.h>
-#include "TVtEngRendering.h"
-#include "TVtEngRenderingDSA.h"
-#include "TVtEngRenderingDP.h"
-#include "TVtEngRenderingNGA.h"
-#include "VtEngEvents.h"
-#include "MVtEngMedia.h" //TMediaSource
-#include "MVtEngSettingPSObserver.h"
-#include "CVTEngPubSubsListener.h"
-#include "mvtengcamerapreferencesobserver.h"
-
-// FORWARD DECLARATIONS
-class CVSDataProvider;
-class CVtEngMediaHandler;
-class CVtEngCameraPreferences;
-
-// CLASS DECLARATION
-
-/**
-*  Local (uplink) video handling.
-*
-*  @lib videoteleng.lib
-*  @since Series 60 2.6
-*/
-NONSHARABLE_CLASS( CVtEngLocalVideo ) :
-    public CActive,
-    public MVSDataProviderObserver,
-    public MVSDataSourceObserver,
-    public MVSControllerObserver,
-	public MVtEngSettingPSObserver
-    {
-    public:  // Constructors and destructor
-
-        /**
-        * Symbian two-phase constructor.
-        * @param aObserver callback interface to Media Handler
-        * @return local video instance
-        */
-        static CVtEngLocalVideo* NewL(
-            CVtEngMediaHandler& aObserver );
-
-        /**
-        * Destructor.
-        */
-        virtual ~CVtEngLocalVideo();
-
-    public: // Public data structures
-        enum TVtEngProviderType
-            {
-            KVtEngProviderUndefined  = -1,
-            /** Blank imnage provider */
-            KVtEngProviderNone       = 0,
-            /** Primary camera provider */
-            KVtEngProviderCam1,
-            /** Secondary camera provider */
-            KVtEngProviderCam2,
-            /** GS image provider */
-            KVtEngProviderImage,
-            /** ? */
-            KVtEngProviderTempImage,
-            /** Still share provider */
-            KVtEngProviderShareImage,
-            /** Video share provider */
-            KVtEngProviderShareVideoClip,
-            /** Default image provider */
-            KVtEngProviderDefaultStillImage
-            };
-
-    public: // from MVSDataProviderObserver
-
-        /**
-        * @see MVSDataProviderObserver::vsProviderError
-        */
-        virtual void vsProviderError( TInt aError );
-
-        /**
-        * @see MVSDataProviderObserver::vsProviderReady
-        */
-        virtual void vsProviderReady();
-
-        /**
-        * @see MVSDataProviderObserver::vsViewFinderFrameReady
-        */
-        virtual void vsViewFinderFrameReady( CFbsBitmap& aFrame );
-
-    public: // from MVSDataSourceObserver
-
-        /**
-        * @see MVSDataSourceObserver::vsProviderSwitchDone
-        */
-        virtual void vsProviderSwitchDone( CVSDataProvider* aOldProvider );
-
-    public: // from MVSControllerObserver
-
-        /**
-        * @see MVSControllerObserver::vsProvidersChanged
-        */
-        void vsProvidersChanged( TBool aAttached );
-
-    public: // From MVtEngSettingPSObserver.
-
-        /** @see MVtEngSettingPSObserver */
-        virtual void HandleNotifyPSL( const TUid aUid,
-                const TInt& aKey, const TRequestStatus& aStatus );
-
-    public:  // New functions
-
-        /**
-        * Pauses frame sending from video source (this method is called when
-        * VT is initializing and video source has not yet been added to stack)
-        *
-        */
-        void PauseVideoSending();
-
-        /**
-        * Resumes frame sending from video source.
-        *
-        */
-        void ResumeVideoSending();
-
-        /**
-        * Tells if the provider has started viewfinder.
-        * @return ETrue if started
-        */
-        TBool ViewFinderStarted() const;
-
-        /**
-        * Tells if the provider has been frozen.
-        * @return ETrue if frozen
-        */
-        TBool IsFrozen() const;
-
-        /**
-        * Creates an audio source.
-        * @return an error code
-        */
-        TInt CreateAudioSource();
-
-        /**
-        * Sets configuration for view finder.
-        * @param aParams view finder configuration
-        */
-        void SetViewFinderParameters( const TVtEngRenderingOptions& aParams );
-
-        /**
-        * Sets DSA configuration for view finder.
-        * @param aDSA DSA configuration
-        */
-        void SetViewFinderParameters( const TVtEngRenderingOptionsDSA& aDSA );
-
-        /**
-        * Sets DP configuration for view finder.
-        * @param aDP DP configuration
-        */
-        void SetViewFinderParameters( const TVtEngRenderingOptionsDP& aDP );
-
-        /**
-        * Sets default still image.
-        */
-        void SetDefaultStillImageL();
-
-        /**
-        * Sets still image or none.
-        * @param aSetAsActive sets as active provider
-        */
-        void SetStillImageL( TBool aSetAsActive );
-
-        /**
-        * Initializes default blank provider.
-        */
-        void InitializeL();
-
-        /**
-        * Selects camera1, camera2, still image or none as source.
-        * @param aSource video source
-        * @return ETrue if selecting started
-        */
-        TBool SelectSourceL( TVtEngProviderType aSource );
-
-        /**
-        * Returns currently active video provider.
-        * @return provider type
-        */
-        TVtEngProviderType ActiveProvider( ) const;
-
-        /**
-        * Starts view finder if it was started earlier and current state is
-        * ELocReady.
-        */
-        void StartViewFinderIfWasStartedL();
-
-        /**
-        * Starts view finder. Uses either DSA or WS depending on
-        * which configuration is active.
-        * @param aClientRequest request issued by user
-        */
-        void StartViewFinderL( TBool aClientRequest = EFalse );
-
-        /**
-        * Stops view finder.
-        * @param aClientRequest request issued by user
-        */
-        void StopViewFinder( TBool aClientRequest = EFalse );
-
-        /**
-        * Freeze video sending (i.e. start sending last frame only).
-        */
-        void FreezeL();
-
-        /**
-        * Unfreeze video sending (i.e. resume sending).
-        */
-        void UnfreezeL();
-
-        /**
-        * Checks that all other providers don't have
-        * view finder active and stops if found.
-        * @param aProvider provider that should not be stopped
-        */
-        void CheckOthersStopped( const CVSDataProvider& aProvider );
-
-        /**
-        * Returns video source.
-        * @return video source
-        */
-        MVTVideoSource* Source() const;
-
-        /**
-        * Returns audio source.
-        * @return audio source
-        */
-        MVTAudioSource* AudioSource() const;
-
-        /**
-        * Gets media state.
-        * @param aActiveMedia returns active TMediaType
-        * @return Symbian OS error code
-        */
-        TInt GetMediaState( TInt& aActiveMedia );
-
-        /**
-        * Gets source type.
-        * @return media source type
-        */
-        MVtEngMedia::TMediaSource GetMediaSource();
-
-        /**
-        * Gets source capabilities.
-        * @param aCaps capability of providers
-        * @return Symbian OS error code
-        */
-        TInt GetSourceCaps( TInt& aCaps );
-
-        /**
-        * Sets boolean to indicate if the provider is to be initialized only.
-        * Selected camera is not necessary activated. If current media is
-        * other than camera, initialization can be done on the background.
-        * @param aInitOnly boolean value stating if to initialize only
-        */
-        void InitializeOnly( TBool aInitOnly = ETrue );
-
-        /**
-        * Sets boolean to indicate if the provider is to be initialized only.
-        * @param aInitOnly boolean value stating if to initialize only
-        */
-        void InitializeOnlyEx( TBool aInitOnly = ETrue );
-
-        /**
-        * Indicates if camera provider is initialized.
-        * @param aId provider ID
-        * @param aInitialized
-        * @return Symbian OS error code
-        */
-        TInt IsInitialized( MVtEngMedia::TCameraId aId, TBool& aInitialized );
-
-        /**
-        * Gets camera info.
-        * @param TCameraId camera ID
-        * @param aInfo camera info
-        * @return Symbian OS error code
-        */
-        TInt GetCameraInfo( MVtEngMedia::TCameraId aId,
-            MVtEngMedia::TCameraInfo& aInfo );
-
-        /**
-        * Gets current digital zoom step (Factor in VS camera terminology).
-        * @param aCurrentStep current zoom step
-        * @return Symbian OS error code
-        */
-        TInt GetDigitalZoomFactor( TInt& aCurrentStep );
-
-        /**
-        * Gets maximum digital zoom value that may be passed to camera.
-        * @param aMaxZoomStep maximum zoom step
-        * @return Symbian OS error code
-        */
-        TInt GetMaxDigitalZoomStep( TInt& aMaxZoomStep );
-
-        /**
-        * Gets number of major zoom level leaps.
-        * One to maximum digital zoom steps plus one.
-        * Less than or equal to maximum digital zoom steps plus one.
-        * @param aCount number of leaps
-        * @param aProviderSupplied use original or mapped
-        * @return Symbian OS error code
-        */
-        TInt GetMajorDigitalZoomStepCount( TInt& aCount,
-            TBool aProviderSupplied = EFalse );
-
-        /**
-        * Maps major zoom leap step to corresponding step index.
-        * @param aIndex major zoom step
-        * @param aStep zoom step
-        */
-        void GetMajorDigitalZoomStep( const TInt aIndex, TInt& aStep );
-
-        /**
-        * Sets video provider's digital zoom step.
-        * @param aDigitalZoomFactor step
-        */
-        void SetDigitalZoomFactorL( TInt aDigitalZoomFactor );
-
-        /**
-        * Gets video provider's freeze support.
-        * @param aFreezeSupported Freeze support status
-        * @return KErrNotReady if provider not initialized.
-        */
-        TInt GetFreezeSupported( TBool& aFreezeSupported ) const;
-
-        /**
-        * Returns ETrue if it is ok to freeze provider.
-        */
-        TBool OkToFreeze() const;
-
-        /**
-        * Returns ETrue if it is ok to unfreeze provider.
-        */
-        TBool OkToUnfreeze() const;
-
-        /**
-        * Sets audio as muted.
-        */
-        void Mute();
-
-        /**
-        * Resumes audio output.
-        */
-        void UnMute();
-
-        /**
-        * Sets UI foreground state (i.e. is the Application
-        * current active application or not).
-        * @param aForeground ETrue if the VT application is
-        * in foreground, EFalse otherwise.
-        */
-        void SetUIForeground( TBool aForeground );
-
-        /**
-        * Gets current media object sharing state. Only local video related
-        * checks do here. Connection issues have been checked by
-        * the caller.
-        * @param aObjectSharingState On return contains current media object
-        * sharing state. @see MVtEngMedia::TShareObjectState.
-        */
-        void GetObjectSharingState(
-            MVtEngMedia::TShareObjectState& aObjectSharingState ) const;
-
-        /**
-        * Start Image sharing initialization.
-        */
-        void InitializeShareImageL(
-            const MVtEngMedia::TShareObjectImageParameters& aParameters,
-            TBool& aFirstTime );
-
-        /**
-        * Cancel Image sharing initialization.
-        */        
-        void CancelInitializeShareImage();
-
-        /**
-        * Start Image sharing.
-        */
-        void StartShareImageL();
-
-        /**
-        * Stop Image sharing.
-        */
-        void StopShareImageL();
-
-        /**
-        * Report error.
-        */
-        void ShareError( TInt aError );
-
-        /**
-        * Returns share's stored media source.
-        */
-        TVtEngProviderType ShareStoredSource() const;
-
-        /**
-        * General settings changed.
-        */
-        void SettingsChanged();
-
-        /**
-        * Creates camera preferences extension
-        * @since S60 v3.2
-        * @return pointer to extension
-        * @exeption Leaves if creation fails
-        */
-        CVtEngCameraPreferences* CreateCameraPreferencesL();
-
-        /**
-        * Called when prepare camera has been handled in media handler.
-        */
-        void SetIsPrepareCameraCalled( TBool aCalled );
-
-        /**
-        * Returns ETrue if prepare camera has been handled in media handler,
-        * EFalse otherwise.
-        */
-        TBool IsPrepareCameraCalled() const;
-
-        /**
-        * Reinitializes camera if onboard camera is being used as a provider.
-        */
-        void HandleLayoutChangeL();
-
-        /**
-        * Returns ETrue if delayed select is pending.
-        */
-        TBool IsDelayedSelectPending() const;
-
-        /**
-        * Completes operation to mediahandler.
-        */
-        void CompleteOperation( const TInt aResult );
-
-        /**
-        * Called when video channel is opened.
-        */
-        void VideoChannelOpenedL();
-
-     private: // constructors
-
-        /**
-        * C++ constructor.
-        * @param aObserver callback interface to Media Handler
-        */
-        CVtEngLocalVideo(
-            CVtEngMediaHandler& aObserver );
-
-        /**
-        * By default Symbian 2nd phase constructor is private.
-        */
-        void ConstructL( );
-
-        /**
-        * Async callback method
-        */
-        static TInt CallBackFunc( TAny* aPtr );
-
-        /**
-        * Returns result.
-        */
-        TInt Result() const;
-
-        /**
-        * Sets result.
-        */
-        void SetResult( const TInt aResult );
-
-    private:  // Rendering configuration
-
-        /**
-        * Options for window server rendering.
-        *   iObserver callback interface
-        *   iSize VF image size
-        */
-        struct TOptions
-            {
-            MVtEngFrameObserver* iObserver;
-            TSize iSize;
-            };
-
-        /**
-        * Direct screen access options.
-        *   iWsSession windor server session
-        *   iWsSD screen device
-        *   iWindow handle to server based window
-        *   iRect iRect window size
-        *   iClipRect drawing size
-        */
-        struct TDsaOptions
-            {
-            RWsSession*      iWs;
-            CWsScreenDevice* iWsSD;
-            RWindowBase*     iWindow;
-            TRect            iRect;
-            TRect            iClipRect;
-            };
-
-        /**
-        * Internal state of a video provider.
-        */
-        enum TProviderState
-            {
-            /** initial state */
-            EUndefined = KErrNone,
-            /** never deleted */
-            EPermanent,
-            /** to be deleted when another provider selected */
-            EFading,
-            /** waiting for blank provider switch */
-            EWaiting,
-            /** changing still image */
-            ERefreshing
-            };
-
-        /**
-        * Provider information.
-        */
-        NONSHARABLE_CLASS( TProviderItem ) :
-            public MVtEngCameraPreferencesObserver
-            {
-            public:
-
-                /**
-                * C++ constructor
-                */
-                TProviderItem();
-
-                /**
-                * Destructor
-                */
-                ~TProviderItem();
-
-                /**
-                * Sets zoom factor to resetted state.
-                */
-                void ResetStoredValues();
-
-                /**
-                * Tries to restore preferences.
-                */
-                TInt RestoreZoomFactor();
-
-                /**
-                * Tries to restore preferences.
-                */
-                TInt RestorePreferences();
-
-            public:
-                // pointer to provider
-                CVSDataProvider*   iProvider;
-
-                // provider type
-                TVtEngProviderType iType;
-
-                // provider initialized
-                TBool              iInitialized;
-
-                // provider has errors
-                TInt               iErrorCode;
-
-                // state of a provider
-                TProviderState     iProviderState;
-
-                // Stored zoom value
-                TInt               iStoredZoomFactor;
-
-                // Error code setting zoom factor
-                TInt iZFErr;
-
-            public: // MVtEngCameraPreferencesObserver
-
-                /**
-                * @see MVtEngCameraPreferencesObserver::Attach
-                */
-                void Attach( MVtEngCameraPreferences& aCamPrefs );
-
-                /**
-                * @see MVtEngCameraPreferencesObserver::ColorToneUpdated
-                */
-                void ColorToneUpdated(
-                    MVtEngCameraPreferences::TColorTone aColorTone );
-
-                /**
-                * @see MVtEngCameraPreferencesObserver::WhiteBalanceUpdated
-                */
-                void WhiteBalanceUpdated(
-                    MVtEngCameraPreferences::TWhiteBalance aWhiteBalance );
-
-                /**
-                * @see MVtEngCameraPreferencesObserver::BrightnessUpdated
-                */
-                void BrightnessUpdated( TInt aBrightness );
-
-                /**
-                * @see MVtEngCameraPreferencesObserver::ContrastUpdated
-                */
-                void ContrastUpdated( TInt aContrast );
-
-                /**
-                * @see MVtEngCameraPreferencesObserver::Detach
-                */
-                void Detach( MVtEngCameraPreferences& aCamPrefs );
-
-            public:
-
-                /**
-                * Detach from preference and reset pointer.
-                */
-                void DetachFromCameraPreferences();
-
-            private:
-
-                // Pointer to camera preferences object this provider item is
-                // attached to
-                MVtEngCameraPreferences* iCamPrefs;
-
-                // Stored color tone value
-                MVtEngCameraPreferences::TColorTone iColorTone;
-
-                // Error code reading color tone value
-                TInt iCtErr;
-
-                // Stored white balance
-                MVtEngCameraPreferences::TWhiteBalance iWhiteBalance;
-
-                // Error code reading white balance value
-                TInt iWbErr;
-
-                // Stored brightness
-                TInt iBrightness;
-
-                // Error code reading brightness value
-                TInt iBrErr;
-
-                // Stored contrast
-                TInt iContrast;
-
-                // Error code reading contrast value
-                TInt iCrErr;
-
-                // ETrue if Attach is called first time
-                TBool iFirstTime;
-
-            };
-
-    /**
-    * Inner class for hiding image sharing details.
-    */
-    NONSHARABLE_CLASS( CVtEngShareImage ) : public CBase
-        {
-        private: // enumerations
-
-            /**
-            * Media object sharing internal state.
-            */
-            enum TState
-                {
-                EStopped,
-                EInitializing,
-                ESharing
-                };
-
-        public: // New public methods
-
-            /**
-            * Constructor.
-            */
-            static CVtEngShareImage* NewL( CVtEngLocalVideo& aLocalVideo );
-
-            /**
-            * C++ destructor.
-            */
-            ~CVtEngShareImage();
-
-            /**
-            * Start initialization of image sharing.
-            * @param aParameters Image sharing parameters (from UI)
-            * @param aCurrent Currently active provider's type.
-            * @param aFirstTime After call ETrue if this call was first to
-            * share initialize, EFalse otherwise.
-            * @exception May leave with KErrNotReady already initializing. May
-            * also leave with system wide error code if something goes wrong
-            * during provider initialization.
-            */
-            void InitializeL(
-                const MVtEngMedia::TShareObjectImageParameters& aParameters,
-                TVtEngProviderType aCurrent,
-                TBool& aFirstTime );
-
-            /**
-            * Cancel sharing initialized image.
-            */            
-            void CancelInitialize();
-
-            /**
-            * Start sharing initialized image.
-            * @exception May leave with KErrNotReady if not initialized. May
-            * also leave with system wide error code if something goes wrong
-            * during provider swap.
-            */
-            void ShareL();
-
-            /**
-            * Stop sharing image.
-            * @exception May leave with KErrNotReady if not sharing. May also
-            * leave with system wide error code if something goes wrong during
-            * provider swap.
-            */
-            void StopL();
-
-            /**
-            * An error happened during initialization, sharing or stopping.
-            * @param aError Error reason.
-            */
-            void Error( TInt aError );
-
-            /**
-            * Returns stored source from sharer.
-            * @return Stored source (source that was selected before share).
-            */
-            TVtEngProviderType StoredSource() const;
-
-            /**
-            * Get sharing state.
-            * @param aObjectSharingState On return contains current object
-            * sharing state.
-            */
-            void GetObjectSharingState(
-                MVtEngMedia::TShareObjectState& aObjectSharingState ) const;
-
-            /**
-            * Check whether share is being initialized or not.
-            * @return ETrue if share is being initialized EFalse otherwise.
-            */
-            TBool IsInitializingShare() const;
-
-            /**
-            * Called when General settings have been changed.
-            */
-            void SettingsChanged();
-
-            /**
-            * Called when vsProviderSwitchDone() is called to local video.
-            */
-            void ProviderSwitchDone( CVSDataProvider* aOldProvider );
-
-            /**
-            * Called when camera change event is received from PS.
-            */
-            void NotifyCameraChanged( const TVtEngProviderType& aProviderType );
-
-        private: // New private methods
-
-            /**
-            * C++ constructor.
-            */
-            CVtEngShareImage( CVtEngLocalVideo& aLocalVideo );
-
-            /**
-            * 2nd constructor, may leave.
-            */
-            void ConstructL();
-
-            /**
-            * Get image sharing parameters.
-            * @return Constant reference to image sharing parameters.
-            */
-            const MVtEngMedia::TShareObjectImageParameters& Parameters() const;
-
-            /**
-            * Get initialization state.
-            * @return ETrue if sharing is being initialized, EFalse otherwise.
-            */
-            TBool IsInitializing() const;
-
-            /**
-            * Set sharing state.
-            * @param aNewState New image sharing state.
-            */
-            void SetState( const TState aNewState );
-
-            /**
-            * Fetches next available provider item pointer.
-            * @return Pointer to next available provider item or NULL if none
-            * could be found.
-            */
-            TProviderItem* FetchProviderItem() const;
-
-            /**
-            * Creates provider.
-            */
-            void CreateProviderL( TProviderItem& aProviderItem );
-
-            /**
-            * Initializes provider.
-            */
-            void InitializeProviderL( TProviderItem& aProviderItem );
-
-            /**
-            * Deletes provider.
-            */
-            void DeleteProvider( TVtEngProviderType aProviderType );
-
-            /**
-            * Deletes all precreated providers.
-            */
-            void DeleteProviders();
-
-        private: // Data
-
-            // Pointer to local video instance
-            CVtEngLocalVideo* iLocalVideo;
-
-            // Current state
-            TState iState;
-
-            // Previous state
-            TState iPreviousState;
-
-            // Copy of image sharing parameters
-            MVtEngMedia::TShareObjectImageParameters iParameters;
-
-            // Type of provider that was active before image sharing
-            TVtEngProviderType iStoredType;
-
-            // Type of provider that was originally active before image sharing
-            // This is needed because iStoredType may change according to PS
-            // events.
-            TVtEngProviderType iOriginalStoredType;
-
-            // Currently active provider
-            TProviderItem* iActiveProvider;
-
-            // Currently initialized provider
-            TProviderItem* iInitializingProvider;
-
-            // Buffered items
-            RPointerArray< TProviderItem > iBuffered;
-
-            // General settings were changed while sharing
-            TBool iSettingsChanged;
-        };
-
-    /**
-    * Inner class for handling delayed provider switches (e.g. PS signalled
-    * camera changes)
-    */
-    NONSHARABLE_CLASS( TVtEngDelayedSelect )
-        {
-    public:
-
-        /**
-        * Constructor
-        */
-        TVtEngDelayedSelect();
-
-       /**
-        * Called when camera change event is received from PS.
-        */
-        void NotifyDelayedSelect( const TVtEngProviderType& aProviderType );
-
-        /**
-        * Returns ETrue if delayed select is pending, EFalse otherwise.
-        */
-        TBool IsDelayedSelectPending() const;
-
-        /**
-        * Returns delayed select target and resets stored value.
-        */
-        TVtEngProviderType DelayedSelectTarget();
-
-    private: // data
-
-        TVtEngProviderType iDelayedProviderType;
-        };
-
-    /**
-    * Inner class for handling layout change reinitialization.
-    */
-    NONSHARABLE_CLASS( TVtEngLayoutChangeHandler )
-        {
-
-    public:
-
-        /**
-        * Constructor
-        */
-        TVtEngLayoutChangeHandler( CVtEngLocalVideo& aLocalVideo );
-
-        /**
-        * Called when layout change has happened
-        */
-        void HandleLayoutChangeL();
-
-        /**
-        * Called when layout change needs to be cancelled
-        */
-        void CancelHandleLayoutChange();
-
-        /**
-        * Called when provider is unfrozen.
-        * @return ETrue if unfreeze was handled by the layout change handler,
-        * EFalse otherwise.
-        */
-        TBool UnfreezeL();
-
-        /**
-        * Called by the local video when provider error happens.
-        * @param aError Type of error
-        * @return ETrue If error was handled by the layout change handler
-        */
-        TBool ProviderError( TInt aError );
-
-        /**
-        * Called by the local video when provider is ready after initialization.
-        * @return ETrue If callback was handled by the layout change handler.
-        */
-        TBool ProviderReady();
-
-        /**
-        * Called by the local video when provider has been switched.
-        * @param CVSDataProvider Pointer of old provider instance.
-        * @return ETrue If callback was handled by the layout change handler.
-        */
-        TBool ProviderSwitchDone( CVSDataProvider* aOldProvider );
-
-    private:
-
-        /**
-        * 2nd constructor
-        */
-        void ConstructL();
-
-        /**
-        * Does the layout change handling.
-        */
-        void DoHandleLayoutChangeL();
-
-        /**
-        * Call to CompleteL() that is trapped.
-        */
-        TInt Complete( const TInt aError );
-
-        /**
-        * Completes handling and resets state to EIdle.
-        */
-        void CompleteL( const TInt aError );
-
-        /**
-        * Completes asynchronous request.
-        */
-        void CompleteOperation( const TInt aError );
-
-    private: // data
-
-        // Pointer to local video instance
-        CVtEngLocalVideo* iLocalVideo;
-
-        /**
-        * Layout change handler internal state.
-        */
-        enum TState
-            {
-            /** Layout change handler is ready to be called */
-            EIdle,
-            /** Layout change handler has been called, but layout update is
-                pending */
-            ELayoutChangePending,
-            /** Layout change handler is switching blank provider */
-            ESwitchingBlank,
-            /** Layout change handler is initializing camera provider */
-            EInitializingCamera,
-            /** Layout change handler is switching camera provider */
-            ESwitchingCamera
-            };
-
-        // Handler's internal state
-        TState iState;
-
-        // Stored provider type
-        TVtEngProviderType iStored;
-
-        };
-
-        private:
-
-        /**
-        * Rendering method.
-        */
-        enum TRenderingMethod
-            {
-            // Unspecified
-            EUnspecified,
-            // Through window server
-            EWindowServer,
-            // Direct screen access
-            EDSA,
-            // Display posting
-            EDP
-            };
-
-        /**
-        * View finder state.
-        */
-        enum TViewFinderState
-            {
-            // View finder not active.
-            EVFNone,
-            // View finder started to reveive bitmaps.
-            EVFReceivingBitmaps,
-            // View finder started to render with DSA.
-            EVFRenderingDsa
-            };
-
-        /**
-        * Internal state.
-        */
-        enum TState
-            {
-            // Initial and state when error occurred.
-            ELocNone,
-            // Provider initialization ongoing.
-            ELocInitializing,
-            // Switch to another provider ongoing.
-            ELocSwichingProvider,
-            // Provider initialization or switch completed.
-            ELocReady
-            };
-
-    public:
-
-        /**
-        * Deletes provider.
-        * @param aItem provider to delete
-        */
-        void DeleteProvider( TProviderItem& aItem );
-
-        /**
-        * Deletes provider.
-        * @param aType type of provider to delete.
-        */
-        void DeleteProvider( TVtEngProviderType aType );
-
-        /**
-        * Resets local video after a video call.
-        */
-        void Reset();
-
-    private:  // New functions
-
-        /**
-        * Sets current camera id.
-        */
-        void SetCurrentCameraId( MVtEngMedia::TCameraId aCamId );
-
-    	/**
-    	 * Configures provider item for outwards camera in
-    	 * construction phase.
-    	 */
-    	void ConfigureOutwardsCameraItem(
-    		TProviderItem& aItem,
-    		const TInt aCurrentIndex );
-
-        /**
-        * Calculater digital zoom steps.
-        * @param aProvider the used provider in counting
-        * @return amount of major zoom steps
-        */
-        TInt CalculateMajorDigitalZoomStepCount(
-            CVSDataProvider* aProvider );
-
-        /**
-        * Calculater digital zoom steps.
-        * @param aInfo provider info structure from which zoom steps will be
-        * calculated
-        * @return amount of major zoom steps
-        */
-        TInt CalculateMajorDigitalZoomStepCount(
-            const TVSDataProviderInfo& aInfo ) const;
-
-        /**
-        * Deletes audio source.
-        */
-        void DeleteAudioSource();
-
-        /**
-        * Gets a provider for a given type.
-        * @param aType type to search for
-        * @param aItem returned provider item
-        * @return index in provider array or KErrNotFound
-        */
-        TInt GetProviderByType(
-            TVtEngProviderType aType, TProviderItem& aItem );
-
-        /**
-        * Gets a provider for a given type.
-        * @param aType type to search for
-        * @param aItem returned provider item
-        * @return index in provider array or KErrNotFound
-        */
-        TInt GetProviderByType(
-            TVtEngProviderType aType, TProviderItem*& aItem );
-
-        /**
-        * Gets a provider for a given provider instance.
-        * @param aInstance Instance to search for
-        * @param aItem returned provider item
-        * @return index in provider array or KErrNotFound
-        */
-        TInt GetProviderByInstance(
-            const CVSDataProvider* aInstance,
-            TProviderItem*& aItem ) const;
-
-        /**
-        * Initializes provider.
-        * @param aProviderItem provider
-        */
-        void InitializeProviderL( TProviderItem& aProviderItem );
-
-        /**
-        * Initializes provider for sharing.
-        */
-        void InitializeShareProviderL( TProviderItem& aProviderItem,
-            const TDesC8& aParams );
-
-        /**
-        * Re-creates provider. First deletes old instance inside provider
-        * item structure and then creates a new instance, using given
-        * provider type.
-        * @param aProviderItem Provider to be recreated.
-        * @param aType Type of the new provider to be created.
-        */
-        void ReCreateProviderL(
-            TProviderItem& aProviderItem, const TVtEngProviderType aType );
-
-        /**
-        * Provider index by provider type.
-        * @param aType Type of provider
-        */
-        TInt ProviderIndex( TVtEngProviderType aType ) const;
-
-        /**
-        * Gets a provider index by state.
-        * @param aState state of returned provider
-        * @return Index of provider
-        */
-        TInt ProviderIndexByState( TProviderState aState ) const;
-
-        /**
-        * Gets a provider index by provider instance.
-        * @param aInstance instance of provider to be found
-        * @return Index of provider or KErrNotFound if given provider item
-        * is not found
-        */
-        TInt ProviderIndexByInstance( const CVSDataProvider* aInstance ) const;
-
-        /**
-        * Creates VideoSource provider by type.
-        * @param aType Engine provider type
-        * @return CVSDataProvider pointer
-        */
-        CVSDataProvider* CreateDataProviderL( TVtEngProviderType aType );
-
-        /**
-        * Maps camera orientation to provider type.
-        * @param aOrientation camera orientation
-        * @return provider type
-        */
-        static TVtEngProviderType
-            OrientationToType( TCameraInfo::TCameraOrientation aOrientation );
-
-        /**
-        * Maps camera ID to provider type.
-        * @param aId camera ID
-        * @return provider type
-        */
-        static TVtEngProviderType CameraIdToType( MVtEngMedia::TCameraId aId );
-
-        /**
-        * Creates blank still image provider.
-        * @param aIndex index of still image provider
-        */
-        void CreateBlankProviderL( const TInt aIndex );
-
-        /**
-        * Creates default still image provider.
-        * @param aIndex index of default still image provider
-        */
-        void CreateDefaultStillImageProviderL( const TInt aIndex );
-
-        /**
-        * Updates available camera providers.
-        * @return primary provider
-        */
-        TVtEngProviderType UpdateAvailableProvidersL();
-
-        /**
-        * Switches to active provider.
-        */
-        void SwitchProvider( TProviderItem* aProviderItem );
-
-        /**
-        * Overloaded SwitchProvider() that takes new provider as a parameter.
-        */
-        void SwitchProvider( TProviderItem& aProviderItem );
-
-        /**
-        * Uninitializes non-permanent provider.
-        */
-        void UninitializeProviderL();
-
-        /**
-        * Updates iState if view finder is active.
-        */
-        void UpdateState();
-
-        /**
-        * Checks if initialization or provider switch is pending.
-        * @return ETrue if either one is pending
-        */
-        TBool InitializingOrSwitching() const;
-
-        /**
-        * Resets provider info index variables.
-        */
-        void ResetIndices();
-
-        /**
-        * Sets active camera tracking.
-        * @param aProviderIndex current camera in use
-        * @return error code
-        */
-        TInt SetCameraTrackingL( TInt& aProviderIndex );
-
-        /**
-        * Maps pubsub provided camera id to internal indexes.
-        * @param aCameraId id to map
-        * @return internally mapped id
-        */
-        MVtEngMedia::TCameraId MapCameraInternally( TInt aCameraId );
-
-        /**
-        * Checks if desired camera is available.
-        * @param aType provider type to return
-        */
-        void CameraAvailable( CVtEngLocalVideo::TVtEngProviderType &aType );
-
-        /**
-        * checks if given provider type is already waiting for initialization
-        * or switch.
-        * @param aType Provider type.
-        * @return ETrue if given provider type is in waiting state, EFalse
-        * otherwise.
-        */
-        TBool IsProviderWaiting( TVtEngProviderType aType ) const;
-
-        /**
-        * Returns highest provider type which is available for selection.
-        * Priority is following:
-        *    KVtEngProviderCam1         << highest
-        *    KVtEngProviderCam2
-        *    KVtEngProviderImage
-        *    KVtEngProviderNone
-        * If eg. cam2 is designated as preferred, possible returns values are
-        * Cam2, Image and None.
-        *
-        * @param aType in/out argument. In  => preferred provider which
-        *        caller of the method wishes to select
-        *                               Out => highest available provider
-        * @return ETrue if preferred == highest i.e. aPreferred is intact
-        *
-        */
-        TBool GetHighestSelectableProvider( TVtEngProviderType& aPreferred ) const;
-
-        /**
-        * checks if given provider type is acitven
-        * @param aType Provider type.
-        * @return ETrue if given provider is already active, EFalse
-        * otherwise.
-        */
-        TBool IsActiveProvider( TVtEngProviderType aType ) const;
-
-
-    private: // From CActive.
-
-        /**
-        * Handles sync operations as async.
-        * @see CActive::RunL
-        */
-        virtual void RunL();
-
-        /**
-        * @see CActive::DoCancel()
-        */
-        virtual void DoCancel();
-
-    private:
-
-        // Local video flags
-        enum TVtEngLocalVideoFlags
-            {
-            // Camera 1 is available (inwards)
-            EFlagCamera1Available = 0x00000001,
-            // Camera 2 is available (outwards)
-            EFlagCamera2Available = 0x00000002,
-            // video call ongoing
-            EFlagInitialized      = 0x00000004,
-            // view finder enabled from UI
-            EFlagVFEnabled        = 0x00000008,
-            // Non-user orginated switch
-            EFlagAutomaticSwitchCallback = 0x00000010,
-            // Audio muted
-            EFlagAudioMuted       = 0x00000020,
-            // Only initialize a provider (no switch when initialized)
-            EFlagInitializeOnly   = 0x00000040,
-            // Signal observer when switch is complete
-            EFlagSignalSourceSelection = 0x00000080,
-            // Provider event received while switch ongoing.
-            // When this is set and switch completes it
-            // is checked if revert to previous is needed.
-            EFlagCheckRevertToPrevious = 0x00000100,
-            // Avoid calculating the step count by using flag.
-            EFlagZoomStepCountNeedsMapping = 0x00000200,
-            // VT application foreground state
-            EFlagUIForeground           = 0x00000400,
-            // VT application background state ( notification purpose)
-            EFlagUIBackground           = 0x00000800,
-            // Provider is frozen
-            EFlagFrozen                 = 0x00001000
-            };
-
-        /**
-        * Sets a flag on.
-        * @param aFlag flag to set
-        */
-        void SetFlag( const TInt aFlag );
-
-        /**
-        * Removes a flag.
-        * @param aFlag flag to remove
-        */
-        void ClearFlag( const TInt aFlag );
-
-        /**
-        * Checks if a flag has been set.
-        * @param aFlag flag to check
-        * @return ETsrue if set
-        */
-        TBool IsFlag( const TInt aFlag ) const;
-
-    private:    // Data
-
-        // Options for window server rendering.
-        TOptions                iOptions;
-
-        // Options for DSA rendering.
-        TDsaOptions             iDsaOptions;
-
-        // Video source controller.
-        CVSController*          iSourceController;
-
-        // Video source.
-        CVSDataSource*          iSource;
-
-        // Audio source.
-        MVTAudioSource*          iAudioSource;
-
-        // Video providers (cameras and still image).
-        CArrayFixFlat<TProviderItem>* iVideoProviders;
-
-        // Currently active provider.
-        TProviderItem*          iActiveProvider;
-
-        // Provider item we're switching away from.
-        TProviderItem*          iFadingProvider;
-
-        // Provider that is selected as next one and
-        // is initializing or switching.
-        TProviderItem*          iSelectedProvider;
-
-        // DSA or window server.
-        TRenderingMethod        iRenderingMethod;
-
-        // Local video status.
-        TState                  iState;
-
-        // View finder state.
-        TViewFinderState        iViewFinderState;
-
-        // Callback interface to Media Handler.
-        CVtEngMediaHandler&     iObserver;
-
-        // Still image file name.
-        TFileName               iStillImage;
-
-        // Local video state flags.
-        TInt                    iFlags;
-
-        // Friend declaration provides extended access.
-        friend class TProviderItem;
-
-        // Member variables to use in referencing to
-        // provider information
-        TInt iProviderInfoIndexCam1;
-        TInt iProviderInfoIndexCam2;
-        TInt iProviderInfoIndexStill;
-
-        // Used for default camera notifications.
-        CVtEngPubSubsListener* iCameraListener;
-
-        // Camera received from pubsub.
-        MVtEngMedia::TCameraId iCurrentCamera;
-
-        // Contains logics for image sharing.
-        CVtEngShareImage* iShareImage;
-
-        // Pointer to camera preferences extension
-        CVtEngCameraPreferences* iCameraPref;
-
-        // Logics for delayed provider selection
-        TVtEngDelayedSelect iDelayedSelect;
-
-        // Active provider's info
-        TVSDataProviderInfo iProviderInfo;
-
-        // ETrue if prepare camera has been handled in media handler
-        TBool iPrepareCameraCalled;
-
-        // Layout change handler
-        TVtEngLayoutChangeHandler iLayoutChangeHandler;
-
-        // ASync callback
-        CAsyncCallBack* iAsyncCallBack;
-
-        // Result
-        TInt iResult;
-
-        // Pointer to provider item that is being initialized
-        TProviderItem* iInitializingProvider;
-
-        // Number of cameras in the device
-        TInt iNumSupportedCameras;
-    };
-
-#endif      // CVTENGLOCALVIDEO_H
-
-// End of File