--- a/vtengines/videoteleng/Inc/Media/CVtEngRemoteVideo.h Tue Jan 26 12:01:21 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,441 +0,0 @@
-/*
-* Copyright (c) 2006 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: Remote video handling class.
-*
-*/
-
-
-
-#ifndef CVTENGREMOTEVIDEO_H
-#define CVTENGREMOTEVIDEO_H
-
-// INCLUDES
-#include <e32base.h>
-#include <w32std.h>
-#include "MVtEngImageScaler.h"
-#include "MVtEngDraw.h"
-#include "TVtEngRendering.h"
-#include "TVtEngRenderConfig.h"
-#include <mdisplaysink.h>
-#include <mvtprotocolhandler.h>
-
-// FORWARD DECLARATIONS
-class CDirectScreenAccess;
-class CFbsBitmap;
-class CVtEngStateManager;
-class MVtEngScalerObserver;
-
-class TVtEngRenderingOptionsDSA;
-class TVtEngRenderingOptionsDP;
-class TVtEngRenderingOptionsNGA;
-
-// Define image sizes.
-// QCIF.
-const TInt KVtEngResolutionQCIFWidth = 176;
-const TInt KVtEngResolutionQCIFHeight = 144;
-
-// SQCIF.
-const TInt KVtEngResolutionSQCIFWidth = 128;
-const TInt KVtEngResolutionSQCIFHeight = 96;
-
-// Default video screen width.
-const TInt KVtEngRemoteVideoDefaultWidth = 176;
-
-// Default video screen height.
-const TInt KVtEngRemoteVideoDefaultHeight = 144;
-
-// Watcher checks point time-out 400 ms.
-const TInt KVtEngWatcherTimeout = 400000;
-
-// When the watcher has timed out 15 times without new frame, send event to UI.
-const TInt KVtEngWatcherThreshold = 15;
-
-// CLASS DECLARATION
-
-/**
-* Class handling remote video.
-*
-* @lib videoteleng.lib
-* @since Series 60 2.6
-*/
-NONSHARABLE_CLASS( CVtEngRemoteVideo ) :
- public CBase,
- public MDisplaySinkObserver
- {
- public: // Constructors and destructor
-
- /**
- * Two-phased constructor.
- * @param aPv2Way a reference to PV instance.
- * @param aStateManager reference to VT state manager
- * @return instance of CVtEngRemoteVideo
- */
- static CVtEngRemoteVideo* NewL(
- MVtSessionCommand& aSessionCommand,
- CVtEngStateManager& aStateManager );
-
- /**
- * Destructor.
- */
- virtual ~CVtEngRemoteVideo();
-
- public: // From MDisplaySinkObserver
-
- /**
- * @see MDisplaySinkObserver
- */
- void VideoFrameSizeChangedL( const TSize& aFrom,
- const TSize& aTo );
-
- public: // New functions
-
- /**
- * Sets parameters used when rendering remote video.
- */
- void SetRenderingParametersL(
- const TVtEngRenderingOptionsNGA& aParams );
-
- /**
- * Sets parameters used when rendering remote video.
- * @param aParams direct screen access parameters
- */
- void SetRenderingParametersL(
- const TVtEngRenderingOptionsDSA& aParams );
-
- /**
- * Sets parameters used when rendering remote video.
- * @param aParams direct screen access parameters
- */
- void SetRenderingParametersL(
- const TVtEngRenderingOptionsDP& aParams );
-
- /**
- * Starts remote video rendering.
- */
- void StartVideoL();
-
- /**
- * Stops remote video rendering.
- */
- void StopVideoRendering();
-
- /**
- * Pauses remote video rendering.
- * @return command id from PV
- */
- TInt PauseVideoL();
-
- /**
- * Adds Display sink into PV.
- * @param Video channel logical channel ID number.
- * @return PV command ID
- */
- TInt AddVideoSinkL( TInt aChannelId );
-
- /**
- * Adds Audio sink into PV.
- * @param Audio channel logical channel ID number.
- * @return PV command ID
- */
- TInt AddAudioSinkL( TInt aChannelId );
-
- /**
- * Returns state of Direct Screen Access.
- * @return state of Direct Screen Access
- */
- TBool GetDsaState() const;
-
- /**
- * Returns the audiosink of nested CVtEngDraw class.
- * @return the audiosink of nested CVtEngDraw class
- */
- MVTAudioSink* AudioSink();
-
- /**
- * 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.
- * @exception May leave with KErrNotReady.
- */
- void SetUIForegroundL( TBool aForeground );
-
- /**
- * Request update last remote video frame through MVtEngFrameObserver::vtSetFrame
- */
- void RequestLastFrame();
-
- private:
-
- /**
- * C++ constructor.
- * @param aPv2Way a reference to PV instance
- * @param aStateManager reference to VT state manager
- */
- CVtEngRemoteVideo(
- MVtSessionCommand& aSessionCommand,
- CVtEngStateManager& aStateManager );
-
- /**
- * By default Symbian 2nd phase constructor is private.
- */
- void ConstructL();
-
-
- public:
-
- /**
- * Base rendering class
- */
- NONSHARABLE_CLASS( CVtEngDraw ) :
- public CActive,
- public MVtEngDraw,
- public MDirectScreenAccess
- {
-
- protected: // new methods
- /**
- * C++ constructor as private.
- * @param aObserver callback interface for Display Sink
- */
- CVtEngDraw( MDisplaySinkObserver* aObserver );
-
- /**
- * Destructor
- */
- ~CVtEngDraw();
-
- /**
- * By default Symbian 2nd phase constructor is private.
- */
- void ConstructL();
-
- /**
- * If not active, set iStatus to KRequestPending and calls
- * SetActive();
- */
- void Activate();
-
- /**
- * Creates DSA instance.
- */
- void CreateAndStartDSAL();
-
- public: // from MDirectScreenAccess
-
- /**
- * From MDirectScreenAccess, this function is called by the
- * window server when direct screen access must stop.
- * @see MDirectScreenAccess::AbortNow
- */
- virtual void AbortNow(
- RDirectScreenAccess::TTerminationReasons aReason );
-
- /**
- * From MDirectScreenAccess, this method is called by the direct
- * screen access instance as soon as direct screen access can
- * resume.
- * @see MDirectScreenAccess::Restart
- */
- virtual void Restart(
- RDirectScreenAccess::TTerminationReasons aReason );
-
- public: // new functions
-
- /**
- * Configuration was updated.
- */
- void ConfigUpdatedL();
-
- /**
- * Display Sink pointer.
- * @return instance of MDisplaySink
- */
- MDisplaySink* DisplaySink();
-
- /**
- * Returns state of Direct Screen Access.
- * @return true if rendering
- */
- TBool GetDsaState() const;
-
- /**
- * Checks frame watcher expiration.
- * @param aAny pointer to CVtEngDrawDSA
- * @return Symbian OS error code
- */
- static TInt WatcherExpired( TAny* aAny );
-
- /**
- * Handles frame watcher expiration.
- */
- void HandleWatcherExpired();
-
- /**
- * Sets certain flag on.
- * @param aFlags flags to turn on.
- */
- void SetFlag( TUint aFlags );
-
- /**
- * Clears certain flag.
- * @param aFlags flags to clear.
- */
- void ClearFlag( TUint aFlags );
-
- /**
- * Checks if certain flag is on.
- * @param aFlags flags to check.
- */
- TBool IsFlag( TUint aFlag ) const;
-
- /**
- * Called by CVtEngRemoteVideo, when video sink is added
- * to PV.
- */
- void VideoSinkAdded();
-
- private: // from CActive
-
- /**
- * Handles active object cancellation.
- * @see CActive::Cancel
- */
- void DoCancel();
-
- /**
- * Handles active object execution errors.
- * @see CActive::RunError
- */
- TInt RunError( TInt aError );
-
- protected:
-
- /**
- * Defines if drawing can be done
- * and if we have not received frames
- * for some time and observer is notified
- * (and no new frames since then).
- */
- enum TFlags
- {
- // Start the rendering.
- EStarted = ( 1 << 0 ),
- // Ready by window server.
- EReadyForeground = ( 1 << 1 ),
- // Ready by internal state.
- EReadyInternal = ( 1 << 2 ),
- // Ready to draw.
- EReady = EReadyInternal | EReadyForeground,
- // Watcher expired because no frames received in time.
- EFrameWatcherExpired= ( 1 << 3 ),
- // First frame has been received.
- EFirstFrameReceived = ( 1 << 4 ),
- // Drawing ongoing flag
- ERemoteVideoDrawing = ( 1 << 5 ),
- // VT UI foreground status (if set, UI is foreground)
- EFlagUIForeground = ( 1 << 6 ),
- // Components have been initialized
- EFlagInitialized = ( 1 << 7 ),
- // VT UI has been sent to background
- ESentToBackground = ( 1 << 8 ),
- // Frame buffer contains data when this flag is set (DP,NGA)
- EFrameBufferFilled = ( 1 << 9 ),
- // BaseConstructL() call is pending (DP,NGA)
- EBaseConstructCalled = ( 1 << 10 ),
- // BaseSetConfigL() call is pending (DP,NGA)
- EBaseSetConfigCalled = ( 1 << 11 ),
- // BaseStartDrawL() call is pending (DP,NGA)
- EBaseBaseStartDrawCalled = ( 1 << 12 ),
- // UpdateSinkParamsL() needs to be called (DP,NGA)
- ESinkParamUpdateRequired = ( 1 << 13 ),
- // Sink().Resume() needs to be called (DP,NGA)
- ESinkResumeRequired = ( 1 << 14 ),
- // InitializePostingSurfaceL() call is pending (DP), CreateSurfaceL call is pending (NGA)
- EInitializePostingSurfaceCalled = ( 1 << 15 ),
- // New frame buffer is store, not coverted and scaled yet
- EFrameBufferNeedsConvertAndScale = ( 1 << 16 ),
-
- // Bitmask for all pending calls (DP)
- EDelayedCallsMask = EBaseConstructCalled |
- EBaseSetConfigCalled |
- EBaseBaseStartDrawCalled |
- ESinkParamUpdateRequired |
- EInitializePostingSurfaceCalled
- };
-
- protected : // data
-
- // Direct Screen Access.
- CDirectScreenAccess* iDSA;
-
- // Display sink providing bitmaps.
- MDisplaySink* iDisplaySink;
-
- // @see TFlags
- TInt iFlags;
-
- // For checking if display sink stops feeding.
- // drawer with bitmaps
- CPeriodic* iWatcher;
-
- // to reduce watcher restarts do cancel it
- // only every 15 frames
- // Counter for frame expiration.
- TInt iCheckpoint;
-
- // DisplaySink callback interface.
- MDisplaySinkObserver* iObserver;
-
- // Frame watcher callback.
- TCallBack iCallback;
-
- // Container class as a friend.
- friend class CVtEngRemoteVideo;
-
- // Temporarily store image size when size changes on the fly.
- TSize iSourceSize;
-
- // DisplaySink status boolean.
- TBool iDSUpdated;
- };
-
- private: // Data
- // Packet Video interface.
- MVtSessionCommand& iSessionCommand;
-
- // State manager.
- CVtEngStateManager& iStateManager;
-
- // Draws remote video with DSA.
- CVtEngDraw* iDrawer;
-
- // Display sink.
- MDisplaySink* iDisplaySink;
-
- // Audio sink interface.
- MVTAudioSink* iAudioSink;
-
- // Information from PV regarding sink.
- TInt iTrackId;
-
- // @see TFlags
- TInt iStateFlags;
-
- TBool iEnableNGA;
- };
-
-#endif // CVTENGREMOTEVIDEO_H
-
-// End of File