diff -r 000000000000 -r 40261b775718 mmlibs/mmfw/tsrc/mmvalidationsuite/mmvalidationsuiteagents/inc/videoplayagent.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmlibs/mmfw/tsrc/mmvalidationsuite/mmvalidationsuiteagents/inc/videoplayagent.h Tue Feb 02 01:56:55 2010 +0200 @@ -0,0 +1,193 @@ +// Copyright (c) 2005-2009 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: +// Part of the MVS Agents for TechView +// + +#ifndef MVSVIDEOPLAYAGENT_H +#define MVSVIDEOPLAYAGENT_H + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + + +// forward declaration +#ifdef SYMBIAN_BUILD_GCE +class CVideoPlayerUtility2; +class MMMFSurfaceEventHandler; +#endif + +/** +@publishedPartner +@prototype +@test + +Provides Video playing functionality for the UI + +*/ +class CMVSVideoPlayAgent : public CBase, MVideoPlayerUtilityObserver, MMMFAudioResourceNotificationCallback +{ +public: + IMPORT_C static CMVSVideoPlayAgent* NewL(MMVSClientObserver& aObserver); + IMPORT_C ~CMVSVideoPlayAgent(); + + //opens an video clip for playback + IMPORT_C void OpenFileL(const TDesC& aFileName); + IMPORT_C void OpenFileL(const TDesC& aFileName, TUid aControllerUid); + + //opens DRM protected source + IMPORT_C void OpenFileL(TMMSource &aSource); + + IMPORT_C void OpenDesL(const TDesC8 &aDescriptor); //For future support + + IMPORT_C void Prepare(); + IMPORT_C void Close(); + IMPORT_C void Play(); + IMPORT_C void Play(const TTimeIntervalMicroSeconds &aStartPoint, const TTimeIntervalMicroSeconds &aEndPoint); + IMPORT_C TInt Stop(); + IMPORT_C void PauseL(); + + //Setter Functions + IMPORT_C void SetDisplayWindowL(RWsSession &aWs, CWsScreenDevice &aScreenDevice, RWindow &aWindow, const TRect &aWindowRect, const TRect &aClipRect); + IMPORT_C void SetVideoFrameRateL(TReal32 aFramesPerSecond); + IMPORT_C void SetVolumeL(TInt aVolume); + IMPORT_C void SetBalanceL(TInt aBalance); + IMPORT_C void SetPriorityL(TInt aPriority, TMdaPriorityPreference aPref); + IMPORT_C void SetPositionL(const TTimeIntervalMicroSeconds &aPosition); + IMPORT_C void SetRotationL(TVideoRotation aRotation); + IMPORT_C void SetScaleFactorL(TReal32 aWidthPercentage, TReal32 aHeightPercentage, TBool aAntiAliasFiltering); + IMPORT_C void SetCropRegionL(const TRect &aCropRegion); + IMPORT_C void SetVideoExtentL(const TRect& aVideoExtent); + IMPORT_C void SetWindowClipRectL(const TRect& aWindowClipRect); + + IMPORT_C void GetFrameL(TDisplayMode aDisplayMode); + IMPORT_C void GetFrameL(TDisplayMode aDisplayMode, ContentAccess::TIntent aIntent); + IMPORT_C TReal32 VideoFrameRateL(); + IMPORT_C void VideoFrameSizeL(TSize &aSize) ; + IMPORT_C const TDesC8 &VideoFormatMimeType() ; + IMPORT_C TInt VideoBitRateL() ; //No way to seek this information in HwDevice. + IMPORT_C TInt AudioBitRateL() ; //This is done in devsound using the custom interface. + IMPORT_C TFourCC AudioTypeL() ; + IMPORT_C TBool AudioEnabledL() ; + IMPORT_C TTimeIntervalMicroSeconds PositionL() ; + IMPORT_C TTimeIntervalMicroSeconds DurationL() ; + + IMPORT_C TInt Volume() ; + IMPORT_C void PriorityL(TInt &aPriority, TMdaPriorityPreference &aPref) ; + IMPORT_C TInt Balance() ; + + IMPORT_C TVideoRotation RotationL() ; + IMPORT_C void GetScaleFactorL(TReal32 &aWidthPercentage, TReal32 &aHeightPercentage, TBool &aAntiAliasFiltering) ; + IMPORT_C void GetCropRegionL(TRect &aCropRegion) ; + + IMPORT_C TInt NumberOfMetaDataEntriesL(); + IMPORT_C void GetMetaDataArrayL(RPointerArray& aMetaData); + IMPORT_C const CMMFControllerImplementationInformation &ControllerImplementationInformationL(); + + IMPORT_C TMVSState GetState(); + + IMPORT_C void SetVideoOutputL(RWsSession& aWs, + CWsScreenDevice& aScreenDevice, + RWindow& aWindow, + TRect& aScreenRect, + TRect& aClipRect); + + IMPORT_C void AddDisplayWindowL(RWsSession& aWs, + CWsScreenDevice& aScreenDevice, + RWindow& aWindow, + const TRect& aScreenRect, + const TRect& aClipRect); + + IMPORT_C void AddDisplayWindowL(RWsSession& aWs, + CWsScreenDevice& aScreenDevice, + RWindow& aWindow); + + IMPORT_C void AddDisplayL(RWsSession& aWs, TInt aDisplay, MMMFSurfaceEventHandler& aEventHandler); + + IMPORT_C void RemoveDisplayWindowL(RWindow& aWindow); + IMPORT_C void RemoveDisplay(TInt aDisplay); + + IMPORT_C TInt MaxVolume(); + IMPORT_C TInt SetScreenNumber(TInt aScreenNumber); + IMPORT_C TInt RegisterForNotification(); + IMPORT_C TInt CancelNotification(); + IMPORT_C TInt WillResumePlay(); + IMPORT_C TBool SupportVideoPlayerUtility2() const; + + IMPORT_C void SetAutoScaleL(RWindow& aWindow, TAutoScaleType aScaleType, TInt aHorizPos, TInt aVertPos); + IMPORT_C void SetAutoScaleL(TAutoScaleType aScaleType, TInt aHorizPos, TInt aVertPos); + +#ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT + IMPORT_C void DisableSubtitlesL(); + IMPORT_C void EnableSubtitlesL(); + IMPORT_C void RenderSubtitle(const TRect& aRect); + IMPORT_C TBool SubtitlesAvailable(); +#endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT + +public: + void MvpuoOpenComplete(TInt aError); + void MvpuoPrepareComplete(TInt aError); + void MvpuoFrameReady(CFbsBitmap& aFrame,TInt aError); + void MvpuoPlayComplete(TInt aError); + void MvpuoEvent(const TMMFEvent& aEvent); + + //From MMMFAudioResourceNotificationCallback + void MarncResourceAvailable(TUid aNotificationEventId, const TDesC8& aNotificationData); +private: + void ConstructL(); + CMVSVideoPlayAgent(MMVSClientObserver& aObserver); + +private: + CVideoPlayerUtility* iVideoPlayer; +#ifdef SYMBIAN_BUILD_GCE + CVideoPlayerUtility2* iVideoPlayer2; +#endif + + MMVSClientObserver& iObserver; + TMVSState iState; + TMMFEvent iEvent; + RFs iFs; + RFile iFile; + CWsScreenDevice* iScreen; + RWindow* iWindow; + RWsSession iWs; + RWindowGroup iRootWindow; + RFileLogger iFileLogger; + TInt iScreenNumber; + TBool iSupportVideoPlayerUtility2; + CVideoPlayerUtility* iCurrentVideoPlayer; + RBuf iFileName; + TUid iControllerUid; + TBool iRequestNotify; +#ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT + TBool iEnableSubtitlesOnAdd; +#endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT +}; + + + + +#endif // MVSVIDEOPLAYAGENT_H