videoplayback/videohelix/inc/mpxvideoplaybackmode.h
changeset 0 96612d01cf9f
child 20 b9e04db066d4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/videohelix/inc/mpxvideoplaybackmode.h	Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,232 @@
+/*
+* 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: 14 %
+
+
+#ifndef _CMPXVIDEOPLAYBACKMODE_H_
+#define _CMPXVIDEOPLAYBACKMODE_H_
+
+//
+//  INCLUDES
+//
+#include <e32def.h>
+#include <e32base.h>
+
+#include "mpxhelixplaybackplugindefs.h"
+#include "mpxvideodlmgrif.h"
+#include "mpxvideo_debug.h"
+
+//
+//  FORWARD DECLARATIONS
+//
+class CMPXVideoPlaybackController;
+class CMPXVideoDlMgrIf;
+
+
+//
+//  CLASS DECLARATION
+//
+
+/*
+ *  CMpxVideoPlaybackMode class
+ */
+NONSHARABLE_CLASS( CMPXVideoPlaybackMode ) : public CBase
+{
+    public:
+        //
+        //  Constructors and destructor
+        //
+
+        /*
+         *  Destructor
+         *  Destroy the object and release all memory objects
+         */
+        ~CMPXVideoPlaybackMode();
+
+        inline virtual TInt GetMode();
+        virtual void ConnectToDownloadL( CMPXCommand& aCmd );
+        virtual void HandleOpenComplete();
+        virtual void GetPdlStatusL( CMPXCommand& aCmd );
+        virtual void UpdateSeekPosition( TInt64& aPosition );
+        inline virtual TBool IsDownloadPaused();
+        virtual void HandlePause();
+        virtual void HandleBackground();
+        virtual TBool IsNetworkMode2GL();
+        virtual TBool CanPlayNow();
+        virtual TBool IsTvOutAllowedL();
+        virtual void OpenFileL( const TDesC& aMediaFile );
+        virtual void OpenFileL( const RFile& aMediaFile );
+
+#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
+         */
+        CMPXVideoPlaybackMode();
+
+        /*
+         *  the second phase constructor ConstructL to safely construct things
+         *  that can leave
+         */
+        virtual void ConstructL( CMPXVideoPlaybackController* aVideoPlaybackCtlr );
+
+
+    protected:
+        //
+        //  Data
+        //
+        CMPXVideoPlaybackController*        iVideoPlaybackCtlr;   // not owned
+
+};
+
+/*******************************************************/
+/*         SUB CLASS DECLARATIONS                      */
+/*******************************************************/
+
+////////////////////////////////////////////////////////
+///     Declaration of CMPXLocalPlaybackMode
+////////////////////////////////////////////////////////
+class CMPXLocalPlaybackMode : public CMPXVideoPlaybackMode
+{
+    public:
+        static CMPXVideoPlaybackMode* NewL(CMPXVideoPlaybackController* aVideoPlaybackCtlr);
+        virtual ~CMPXLocalPlaybackMode();
+
+        // Methods where video plabkack behavior varies for local media
+        inline virtual TInt GetMode();
+};
+
+
+////////////////////////////////////////////////////////
+///     Declaration of CMPXStreamingPlaybackMode
+////////////////////////////////////////////////////////
+class CMPXStreamingPlaybackMode : public CMPXVideoPlaybackMode
+{
+    public:
+        static CMPXVideoPlaybackMode* NewL(CMPXVideoPlaybackController* aVideoPlaybackCtlr);
+        virtual ~CMPXStreamingPlaybackMode();
+
+        // Methods where video plabkack behavior varies for streaming media
+        inline virtual TInt GetMode();
+        virtual TBool CanPlayNow();
+        virtual void HandleOpenComplete();
+        TBool IsTvOutAllowedL();
+        void OpenFileL( const TDesC& aMediaFile );
+        virtual void HandlePause();
+};
+
+////////////////////////////////////////////////////////////
+///     Declaration of CMPXLiveStreamingPlaybackMode
+///
+///     live streaming is a specialized streaming case
+////////////////////////////////////////////////////////////
+class CMPXLiveStreamingPlaybackMode : public CMPXStreamingPlaybackMode
+{
+    public:
+        static CMPXVideoPlaybackMode* NewL(CMPXVideoPlaybackController* aVideoPlaybackCtlr);
+        virtual ~CMPXLiveStreamingPlaybackMode();
+
+        // Methods where video plabkack behavior varies for live streaming media
+        inline virtual TInt GetMode();
+        virtual void HandlePause();
+        virtual void HandleBackground();
+};
+
+////////////////////////////////////////////////////////////////////////////////
+//
+//     Declaration of CMPXProgressiveDLPlaybackMode
+//
+//     Progressive Download is a specialized local playback case
+//
+////////////////////////////////////////////////////////////////////////////////
+class CMPXProgressiveDLPlaybackMode : public CMPXLocalPlaybackMode
+{
+    public:
+        static CMPXVideoPlaybackMode* NewL( CMPXVideoPlaybackController* aVideoPlaybackCtlr );
+        virtual ~CMPXProgressiveDLPlaybackMode();
+
+        inline virtual TInt GetMode();
+        void ConnectToDownloadL( CMPXCommand& aCmd );
+        void HandleOpenComplete();
+        void GetPdlStatusL( CMPXCommand& aCmd );
+        void UpdateSeekPosition( TInt64& aPosition );
+        inline TBool IsDownloadPaused();
+
+    private:
+
+        void ConstructL( CMPXVideoPlaybackController* aVideoPlaybackCtlr );
+
+    private:
+        CMPXVideoDlMgrIf*  iDlMgrIf;   // owned
+};
+
+// INLINE METHODS
+
+inline
+TInt CMPXVideoPlaybackMode::GetMode()
+{
+    MPX_DEBUG(_L("CMPXVideoPlaybackMode::GetMode()"));
+    // sub-classes to return their respective value
+    return EMPXNumberOfModes;
+}
+
+inline
+TInt CMPXLocalPlaybackMode::GetMode()
+{
+    MPX_DEBUG(_L("CMPXLocalPlaybackMode::GetMode()"));
+    return EMPXVideoLocal;
+}
+
+inline
+TInt CMPXStreamingPlaybackMode::GetMode()
+{
+    MPX_DEBUG(_L("CMPXStreamingPlaybackMode::GetMode()"));
+    return EMPXVideoStreaming;
+}
+
+inline
+TInt CMPXLiveStreamingPlaybackMode::GetMode()
+{
+    MPX_DEBUG(_L("CMPXLiveStreamingPlaybackMode::GetMode()"));
+    return EMPXVideoLiveStreaming;
+}
+
+inline
+TInt CMPXProgressiveDLPlaybackMode::GetMode()
+{
+    MPX_DEBUG(_L("CMPXProgressiveDLPlaybackMode::GetMode()"));
+    return EMPXVideoProgressiveDownload;
+}
+
+inline
+TBool CMPXVideoPlaybackMode::IsDownloadPaused()
+{
+    return EFalse;
+}
+
+inline
+TBool CMPXProgressiveDLPlaybackMode::IsDownloadPaused()
+{
+    return iDlMgrIf->IsDownloadPaused();
+}
+
+#endif  //_CMPXVIDEOPLAYBACKMODE_H_