diff -r 41a7f70b3818 -r 5266b1f337bd phoneapp/phoneuiview/inc/cphonevideoplayer.h --- /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 + +// 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