--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/videohelix/inc/mpxvideoplaybackstate.h Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,457 @@
+/*
+* 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: This class plays files with the Helix Engine
+ *
+*/
+
+// Version : %version: 16 %
+
+
+#ifndef _CMPXVIDEOPLAYBACKSTATE_H_
+#define _CMPXVIDEOPLAYBACKSTATE_H_
+
+//
+// INCLUDES
+//
+#include <e32def.h>
+#include <e32base.h>
+
+#include "mpxhelixplaybackplugindefs.h"
+#include "mpxvideo_debug.h"
+
+//
+// FORWARD DECLARATIONS
+//
+class CMPXVideoPlaybackController;
+
+//
+// CLASS DECLARATION
+//
+
+/*
+ * CMpxVideoPlaybackState class
+ *
+ * State Machine keeptrack of the state of the playback controller
+ * @lib mpxvideohelixplayback.lib
+ *
+ */
+NONSHARABLE_CLASS( CMPXVideoPlaybackState ) : public CBase
+{
+
+ public:
+ //
+ // Constructors and destructor
+ //
+
+ /*
+ * Destructor
+ * Destroy the object and release all memory objects
+ */
+ ~CMPXVideoPlaybackState();
+
+ //
+ // CMPXVideoPlaybackState Implementation
+ //
+
+ // Commands received from the Framework
+ virtual void HandlePlay();
+ virtual void HandlePause();
+ virtual void HandlePlayPause();
+ virtual void HandleStop();
+ virtual void HandleStartSeekL( TBool aForward );
+ virtual void HandleStopSeekL();
+ virtual void HandleClose();
+ virtual void HandleForeground();
+ virtual void HandleBackground();
+
+ virtual void HandleCustomPause();
+ virtual void HandleCustomPlay();
+
+
+ virtual void CommandHandleBackground();
+ virtual void CommandHandleForeground();
+
+ // Events received from the MMF
+ virtual void HandleOpenComplete(TInt aError);
+ virtual void HandlePrepareComplete(TInt aError);
+ virtual void HandleLoadingStarted();
+ virtual void HandleLoadingComplete(TInt aError);
+ virtual void HandlePlaybackComplete(TInt aError);
+ virtual void HandleUnexpectedError( TInt aError );
+
+ // general method
+ virtual void OpenFileL( const TDesC& aMediaFile );
+ virtual void OpenFileL( const RFile& aMediaFile );
+ virtual void HandleVolumeChange();
+ virtual void HandleSetPositionL(TInt aPosition);
+ virtual TInt RetrieveFileDetailsL(const TArray<TMPXAttribute>& aAttrs, CMPXMedia* aMedia);
+ void RetrieveGeneralAttributesL( CMPXMedia* aMedia, TUint attrG );
+ void RetrieveVideoAttributesL( CMPXMedia* aMedia, TUint attrV );
+ inline virtual TBool IsInitialized();
+ virtual void HandleEndOfClip();
+ virtual TInt RetrieveBufferingPercentage();
+
+ virtual void ResolveTimeoutError( TInt aError );
+
+ //
+ // Set aspect ratio to mmf controller
+ //
+ virtual void SetAspectRatioL( CMPXCommand& aCmd, TMMFScalingType aType );
+
+ virtual void SendErrorToViewL( TInt aError );
+
+ inline virtual TMPXVideoPlaybackState GetState();
+
+#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+ virtual void OpenFile64L( const RFile64& aMediaFile );
+#endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+
+ protected:
+ /*
+ * C++ default constructor
+ */
+ CMPXVideoPlaybackState();
+
+ /*
+ * the second phase constructor ConstructL to safely construct things
+ * that can leave
+ */
+ void ConstructL(CMPXVideoPlaybackController* aVideoPlaybackCtlr);
+
+ protected:
+ //
+ // Data
+ //
+ CMPXVideoPlaybackController* iVideoPlaybackCtlr; // not owned
+ RFs iFs;
+};
+
+
+/*******************************************************/
+/* SUB CLASS DECLARATIONS */
+/*******************************************************/
+
+////////////////////////////////////////////////////////
+/// Declaration of CMPXNotIntialisedState
+////////////////////////////////////////////////////////
+class CMPXNotInitialisedState : public CMPXVideoPlaybackState
+{
+ public:
+ static CMPXVideoPlaybackState* NewL(CMPXVideoPlaybackController* aVideoPlaybackCtlr);
+ virtual ~CMPXNotInitialisedState();
+
+ // general method
+ virtual void HandleVolumeChange();
+ virtual TInt RetrieveFileDetailsL(const TArray<TMPXAttribute>& aAttrs, CMPXMedia* aMedia);
+ virtual void HandleClose();
+ virtual void SetAspectRatioL( CMPXCommand& aCmd, TMMFScalingType aType );
+ inline virtual TBool IsInitialized();
+ virtual void HandleUnexpectedError( TInt aError );
+ virtual void HandleBackground();
+ virtual void HandleForeground();
+ virtual void HandlePlay();
+
+ inline virtual TMPXVideoPlaybackState GetState();
+
+};
+
+
+////////////////////////////////////////////////////////
+/// Declaration of CMPXIntialisingState
+////////////////////////////////////////////////////////
+class CMPXInitialisingState : public CMPXVideoPlaybackState
+{
+ public:
+ static CMPXVideoPlaybackState* NewL(CMPXVideoPlaybackController* aVideoPlaybackCtlr);
+ virtual ~CMPXInitialisingState();
+
+ virtual void OpenFileL( const TDesC& aMediaFile );
+ virtual void OpenFileL( const RFile& aMediaFile );
+
+ // Methods where video plabkack behavior varies for this state
+ virtual void HandleForeground();
+ virtual void HandleBackground();
+
+ // Events received from the MMF
+ virtual void HandleOpenComplete(TInt aError);
+ virtual void HandlePrepareComplete(TInt aError);
+
+ // general method
+ virtual void HandleVolumeChange();
+ virtual TInt RetrieveFileDetailsL(const TArray<TMPXAttribute>& aAttrs, CMPXMedia* aMedia);
+ virtual void SetAspectRatioL( CMPXCommand& aCmd, TMMFScalingType aType );
+ inline virtual TBool IsInitialized();
+ virtual void HandleUnexpectedError( TInt aError );
+
+ inline virtual TMPXVideoPlaybackState GetState();
+
+#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+ virtual void OpenFile64L( const RFile64& aMediaFile );
+#endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
+
+};
+
+////////////////////////////////////////////////////////
+/// Declaration of CMPXIntialisedState
+////////////////////////////////////////////////////////
+class CMPXInitialisedState : public CMPXVideoPlaybackState
+{
+ public:
+ static CMPXVideoPlaybackState* NewL(CMPXVideoPlaybackController* aVideoPlaybackCtlr);
+ virtual ~CMPXInitialisedState();
+
+ // Methods where video plabkack behavior varies for this state
+
+ // Commands received from the Framework
+ virtual void HandlePlay();
+ virtual void HandleStop();
+ virtual void HandleForeground();
+ virtual void HandleBackground();
+
+ // general method
+ virtual void HandleSetPositionL(TInt aPosition);
+
+ inline virtual TMPXVideoPlaybackState GetState();
+};
+
+////////////////////////////////////////////////////////
+/// Declaration of CMPXPlayingState
+////////////////////////////////////////////////////////
+class CMPXPlayingState : public CMPXVideoPlaybackState
+{
+ public:
+ static CMPXVideoPlaybackState* NewL(CMPXVideoPlaybackController* aVideoPlaybackCtlr);
+ virtual ~CMPXPlayingState();
+
+ // Methods where video plabkack behavior varies for this state
+
+ // Commands received from the Framework
+ virtual void HandlePause();
+ virtual void HandleStop();
+ virtual void HandleStartSeekL( TBool aForward );
+ virtual void HandlePlayPause();
+ virtual void HandleBackground();
+
+ virtual void HandleCustomPause();
+
+ // Events received from the MMF
+ virtual void HandleLoadingStarted();
+
+ // general method
+ virtual void HandleSetPositionL(TInt aPosition);
+ virtual void ResolveTimeoutError( TInt aError );
+
+ inline virtual TMPXVideoPlaybackState GetState();
+};
+
+
+////////////////////////////////////////////////////////
+/// Declaration of CMPXBufferingState
+////////////////////////////////////////////////////////
+class CMPXBufferingState : public CMPXVideoPlaybackState
+{
+ public:
+ static CMPXVideoPlaybackState* NewL(CMPXVideoPlaybackController* aVideoPlaybackCtlr);
+ virtual ~CMPXBufferingState();
+
+ // Methods where video plabkack behavior varies for this state
+
+ // Commands received from the Framework
+ //virtual void HandleStop();
+
+ virtual void HandleForeground();
+ virtual void HandleBackground();
+ virtual void HandleStop();
+ virtual void HandlePause();
+ virtual TInt RetrieveBufferingPercentage();
+
+ // Events received from the MMF
+ virtual void HandleLoadingStarted();
+ virtual void HandleLoadingComplete(TInt aError);
+
+ // Handle end of the clip situation, where we might get
+ // playbackcomplete before loadingcomplete
+
+ // general method
+ virtual void ResolveTimeoutError( TInt aError );
+
+ inline virtual TMPXVideoPlaybackState GetState();
+};
+
+////////////////////////////////////////////////////////
+/// Declaration of CMPXPausedState
+////////////////////////////////////////////////////////
+class CMPXPausedState : public CMPXVideoPlaybackState
+{
+ public:
+ static CMPXVideoPlaybackState* NewL( CMPXVideoPlaybackController* aVideoPlaybackCtlr );
+ virtual ~CMPXPausedState();
+
+ // Methods where video plabkack behavior varies for this state
+
+ // Commands received from the Framework
+ virtual void HandlePlay();
+ virtual void HandleStop();
+ virtual void HandleStartSeekL( TBool aForward );
+ virtual void HandlePlayPause();
+ virtual void HandleForeground();
+ virtual void HandleCustomPlay();
+
+ // general method
+ virtual void HandleSetPositionL( TInt aPosition );
+
+ inline virtual TMPXVideoPlaybackState GetState();
+};
+
+////////////////////////////////////////////////////////
+/// Declaration of CMPXSeekingState
+////////////////////////////////////////////////////////
+class CMPXSeekingState : public CMPXVideoPlaybackState
+{
+ public:
+ static CMPXVideoPlaybackState* NewL(CMPXVideoPlaybackController* aVideoPlaybackCtlr);
+ virtual ~CMPXSeekingState();
+
+ // Methods where video plabkack behavior varies for this state
+
+ // Commands received from the Framework
+ virtual void HandleStopSeekL();
+ virtual void HandleBackground();
+ virtual void HandlePause();
+ virtual void HandlePlay();
+ virtual void HandleSetPositionL( TInt aPosition );
+
+ virtual void HandleStop();
+
+ inline virtual TMPXVideoPlaybackState GetState();
+};
+
+
+////////////////////////////////////////////////////////
+/// Declaration of CMPXStoppedState
+////////////////////////////////////////////////////////
+class CMPXStoppedState : public CMPXVideoPlaybackState
+{
+ public:
+ static CMPXVideoPlaybackState* NewL(CMPXVideoPlaybackController* aVideoPlaybackCtlr);
+ virtual ~CMPXStoppedState();
+
+ // Methods where video plabkack behavior varies for this state
+
+ // Commands received from the Framework
+ virtual void HandlePlay();
+ virtual void HandleClose();
+
+ // general method
+ virtual void HandleSetPositionL(TInt aPosition);
+ virtual void ResolveTimeoutError( TInt aError );
+
+ inline virtual TMPXVideoPlaybackState GetState();
+};
+
+// INLINE METHODS
+
+inline
+TMPXVideoPlaybackState CMPXVideoPlaybackState::GetState()
+{
+ MPX_DEBUG(_L("CMPXVideoPlaybackState::GetState()"));
+
+ // sub-classes to return their respective value
+ return EMPXNumberOfStates;
+}
+
+inline
+TMPXVideoPlaybackState CMPXNotInitialisedState::GetState()
+{
+ MPX_DEBUG(_L("CMPXNotInitialisedState::GetState()"));
+
+ return EMPXVideoNotInitialized;
+}
+
+inline
+TMPXVideoPlaybackState CMPXInitialisingState::GetState()
+{
+ MPX_DEBUG(_L("CMPXInitialisingState::GetState()"));
+
+ return EMPXVideoInitializing;
+}
+
+inline
+TMPXVideoPlaybackState CMPXInitialisedState::GetState()
+{
+ MPX_DEBUG(_L("CMPXInitialisedState::GetState()"));
+
+ return EMPXVideoInitialized;
+}
+
+inline
+TMPXVideoPlaybackState CMPXPlayingState::GetState()
+{
+ MPX_DEBUG(_L("CMPXPlayingState::GetState()"));
+
+ return EMPXVideoPlaying;
+}
+
+inline
+TMPXVideoPlaybackState CMPXPausedState::GetState()
+{
+ MPX_DEBUG(_L("CMPXPausedState::GetState()"));
+
+ return EMPXVideoPaused;
+}
+
+inline
+TMPXVideoPlaybackState CMPXStoppedState::GetState()
+{
+ MPX_DEBUG(_L("CMPXStoppedState::GetState()"));
+ return EMPXVideoStopped;
+}
+
+inline
+TMPXVideoPlaybackState CMPXBufferingState::GetState()
+{
+ MPX_DEBUG(_L("CMPXBufferingState::GetState()"));
+
+ return EMPXVideoBuffering;
+}
+
+inline
+TMPXVideoPlaybackState CMPXSeekingState::GetState()
+{
+ MPX_DEBUG(_L("CMPXSeekingState::GetState()"));
+
+ return EMPXVideoSeeking;
+}
+
+inline
+TBool CMPXVideoPlaybackState::IsInitialized()
+{
+ return ETrue;
+}
+
+inline
+TBool CMPXNotInitialisedState::IsInitialized()
+{
+ return EFalse;
+}
+
+inline
+TBool CMPXInitialisingState::IsInitialized()
+{
+ return EFalse;
+}
+
+
+
+#endif //_CMPXVIDEOPLAYBACKSTATE_H_