--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneapp/phoneuiview/inc/cphonevideoplayer.h Wed Sep 01 12:30:10 2010 +0100
@@ -0,0 +1,271 @@
+/*
+* Copyright (c) 2002-2005 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: Video ringing tone player.
+*
+*/
+
+
+#ifndef CPHONEVIDEOPLAYER_H
+#define CPHONEVIDEOPLAYER_H
+
+// INCLUDES
+
+#include <VideoPlayer.h>
+
+// CONSTANTS
+
+// MACROS
+
+// DATA TYPES
+
+// FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+class CFileMan;
+class CVideoPlayerUtility;
+class MPhoneVideoPlayerObserver;
+class CPhoneRingingTone;
+
+// CLASS DECLARATION
+
+/**
+* Video ringing tone player
+* Uses CVideoPlayerUtility to play video clips.
+*
+* @lib PhoneUIView.lib
+* @since Series 60 3.1
+*/
+class CPhoneVideoPlayer :
+ public CBase,
+ public MVideoPlayerUtilityObserver
+ {
+ public:
+ enum TVideoPlayerState // from MMF-VideoPlayer IF spec.
+ {
+ EVideoError = -1,
+ EVideoClosed,
+ EVideoOpening,
+ EVideoOpen,
+ EVideoPreparing,
+ EVideoReady, // player's stopped state
+ EVideoPlaying,
+ EVideoPaused
+ };
+
+ enum TRingingType
+ {
+ ETypeRinging,
+ ETypeRingingOnce,
+ ETypeAscending
+ };
+
+ enum TVideoResolution
+ {
+ EVideoQCIF,
+ EVideoSubQCIF
+ };
+
+ public: // Constructor and destructor
+
+ /**
+ * Two-phased constructor.
+ * @param aRingingTone The ringing tone
+ * @param aPriority The priority for the playing
+ * @param aPreference The preference value
+ * @param aObserver Video player observer
+ * @param aVideo Window for video
+ * @return The instance of the video player.
+ */
+ static CPhoneVideoPlayer* NewL(
+ const CPhoneRingingTone& aRingingTone,
+ TInt aPriority,
+ TUint aPreference,
+ MPhoneVideoPlayerObserver& aObserver,
+ RWindow& aVideoTarget,
+ TBool aExtSecNeeded = EFalse );
+
+ /**
+ * Two-phased constructor (non leaving).
+ * @param aFileName The ringing tone
+ * @param aPriority The priority for the playing
+ * @param aPreference The preference value
+ * @param aObserver Video player observer
+ * @param aVideo Window for video
+ * @return The instance of the video player. NULL is
+ * returned if creation failed.
+ */
+ static CPhoneVideoPlayer* New(
+ const CPhoneRingingTone& aRingingTone,
+ TInt aPriority,
+ TUint aPreference,
+ MPhoneVideoPlayerObserver& aObserver,
+ RWindow& aVideoTarget,
+ TBool aExtSecNeeded = EFalse );
+
+ /**
+ * Destructor.
+ */
+ virtual ~CPhoneVideoPlayer();
+
+ public:
+ /**
+ * Plays the loaded video.
+ * @since Series 60 3.1
+ * @param aRingingType Ringing type.
+ * @param aVolume take value from 1 to 10
+ */
+ void Play( TRingingType aRingType, TInt aVolume );
+
+ /**
+ * Stops video playback.
+ * @since Series 60 3.1
+ */
+ void StopPlaying();
+
+ /**
+ * Pauses video playback.
+ * @since Series 60 3.1
+ * @return KErrNone is successful.
+ */
+ TInt PausePlaying();
+
+ /**
+ * Resumes video playback.
+ * @since Series 60 3.1
+ */
+ void ResumePlaying();
+
+ /**
+ * Make video to play silent.
+ * @since Series 60 3.1
+ */
+ void MuteAudio();
+
+ /**
+ * Get the state of the phone video player.
+ * @since Series 60 3.1
+ * @return The status of video player
+ */
+ TVideoPlayerState State() const;
+
+ /**
+ * Get the resolution of the loaded video.
+ * @since Series 60 3.1
+ * @return The resolution.
+ */
+ TVideoResolution VideoResolution() const;
+
+ /**
+ * Scales and crops video to cover target window.
+ * @since Series 60 3.1
+ * @param aDisplayWindow Window for video.
+ * @param aUncropPane Rectangle for cropping control.
+ */
+ void AdjustToWindow( RWindow& aDisplayWindow,
+ const TRect& aUncropPane );
+
+ private: // Functions from MVideoPlayerUtilityObserver
+ /**
+ * MvpuoOpenComplete
+ */
+ void MvpuoOpenComplete( TInt aError );
+
+ /**
+ * MvpuoPrepareComplete
+ */
+ void MvpuoPrepareComplete( TInt aError );
+
+ /**
+ * MvpuoFrameReady
+ */
+ void MvpuoFrameReady( CFbsBitmap& aFrame ,TInt aError );
+
+ /**
+ * MvpuoPlayComplete
+ */
+ void MvpuoPlayComplete( TInt aError );
+
+ /**
+ * MvpuoEvent
+ */
+ void MvpuoEvent( const TMMFEvent& aEvent );
+
+ private: // Constructors
+
+ /**
+ * C++ default constructor.
+ */
+ CPhoneVideoPlayer();
+
+ /**
+ * C++ constructor.
+ */
+ CPhoneVideoPlayer( MPhoneVideoPlayerObserver& aObserver );
+
+ /**
+ * By default Symbian 2nd phase constructor is private.
+ */
+ void ConstructL(
+ const TDesC& aFileName,
+ TInt aPriority,
+ TUint aPreference,
+ RWindow& aVideoTarget );
+
+ private:
+ /**
+ * SetRingingType
+ */
+ void SetRingingType( TRingingType aRingingType );
+
+ /**
+ * SetVolume
+ */
+ void SetVolume( TInt aVolume );
+
+ /**
+ * VolumeRampTimerCallback
+ */
+ static TInt VolumeRampTimerCallback( TAny* aObj );
+
+ /**
+ * DoVolumeRamp
+ */
+ TInt DoVolumeRamp();
+
+ /**
+ * Frame size
+ */
+ TSize VideoFrameSize() const;
+
+ private: //Data
+
+ MPhoneVideoPlayerObserver& iObserver;
+ CVideoPlayerUtility* iVideoPlayer;
+ TVideoPlayerState iPlayerState;
+ TBool iToBePlayed;
+
+ // Ringing properties
+ TInt iVolume;
+ TRingingType iRingingType;
+
+ // Ascending volume
+ TInt iRampedVolume;
+ CPeriodic* iVolumeRampTimer;
+
+ // Ringing tone
+ RFile iFileHandle;
+
+ };
+
+#endif // CPHONEVIDEOPLAYER