os/mm/mmlibs/mmfw/tsrc/mmvalidationsuite/mmvalidationsuiteagents/inc/videoplayagent.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 // Part of the MVS Agents for TechView
    15 //
    16 
    17 #ifndef MVSVIDEOPLAYAGENT_H
    18 #define MVSVIDEOPLAYAGENT_H
    19 
    20 #include <f32file.h>
    21 #include <flogger.h>
    22 #include <ecam.h>
    23 
    24 #include <mmf/common/mmffourcc.h>
    25 #include <mmf/common/mmfstandardcustomcommands.h>  
    26 #include <mmf/common/mmfvideo.h>
    27 #include <mmf/server/mmfdes.h>
    28 #include <mmf/server/mmffile.h>
    29 #include <mmf/common/mmfcontroller.h>
    30 
    31 #include <videorecorder.h>
    32 #include <videoplayer.h>
    33 
    34 #include <mvs/agentsutility.h>
    35 
    36 
    37 // forward declaration
    38 #ifdef SYMBIAN_BUILD_GCE
    39 class CVideoPlayerUtility2;
    40 class MMMFSurfaceEventHandler;
    41 #endif
    42 
    43 /**
    44 @publishedPartner
    45 @prototype
    46 @test
    47 
    48 Provides Video playing functionality for the UI
    49 
    50 */
    51 class CMVSVideoPlayAgent : public CBase, MVideoPlayerUtilityObserver, MMMFAudioResourceNotificationCallback
    52 {
    53 public:
    54 	IMPORT_C static CMVSVideoPlayAgent* NewL(MMVSClientObserver& aObserver);
    55 	IMPORT_C ~CMVSVideoPlayAgent();
    56 	
    57 	//opens an video clip for playback
    58     IMPORT_C void OpenFileL(const TDesC& aFileName);	
    59 	IMPORT_C void OpenFileL(const TDesC& aFileName, TUid aControllerUid);
    60 	
    61 	//opens DRM protected source
    62 	IMPORT_C void OpenFileL(TMMSource &aSource);
    63 	
    64 	IMPORT_C void OpenDesL(const TDesC8 &aDescriptor); //For future support
    65 	
    66 	IMPORT_C void Prepare();
    67 	IMPORT_C void Close();
    68 	IMPORT_C void Play();
    69 	IMPORT_C void Play(const TTimeIntervalMicroSeconds &aStartPoint, const TTimeIntervalMicroSeconds &aEndPoint);
    70 	IMPORT_C TInt Stop();
    71 	IMPORT_C void PauseL();
    72 		
    73     //Setter Functions	
    74 	IMPORT_C void SetDisplayWindowL(RWsSession &aWs, CWsScreenDevice &aScreenDevice, RWindow &aWindow, const TRect &aWindowRect, const TRect &aClipRect);
    75 	IMPORT_C void SetVideoFrameRateL(TReal32 aFramesPerSecond);
    76 	IMPORT_C void SetVolumeL(TInt aVolume);
    77 	IMPORT_C void SetBalanceL(TInt aBalance);
    78 	IMPORT_C void SetPriorityL(TInt aPriority, TMdaPriorityPreference aPref);
    79 	IMPORT_C void SetPositionL(const TTimeIntervalMicroSeconds &aPosition);
    80 	IMPORT_C void SetRotationL(TVideoRotation aRotation);
    81 	IMPORT_C void SetScaleFactorL(TReal32 aWidthPercentage, TReal32 aHeightPercentage, TBool aAntiAliasFiltering);
    82 	IMPORT_C void SetCropRegionL(const TRect &aCropRegion);
    83 	IMPORT_C void SetVideoExtentL(const TRect& aVideoExtent);
    84 	IMPORT_C void SetWindowClipRectL(const TRect& aWindowClipRect);	
    85 	
    86 	IMPORT_C void GetFrameL(TDisplayMode aDisplayMode);
    87 	IMPORT_C void GetFrameL(TDisplayMode aDisplayMode, ContentAccess::TIntent aIntent);
    88 	IMPORT_C TReal32 VideoFrameRateL();
    89 	IMPORT_C void VideoFrameSizeL(TSize &aSize) ;
    90 	IMPORT_C const TDesC8 &VideoFormatMimeType() ;
    91 	IMPORT_C TInt VideoBitRateL() ; //No way to seek this information in HwDevice.
    92 	IMPORT_C TInt AudioBitRateL() ; //This is done in devsound using the custom interface.
    93 	IMPORT_C TFourCC AudioTypeL() ;
    94 	IMPORT_C TBool AudioEnabledL() ;
    95 	IMPORT_C TTimeIntervalMicroSeconds PositionL() ;
    96 	IMPORT_C TTimeIntervalMicroSeconds DurationL() ;
    97 	
    98 	IMPORT_C TInt Volume() ;
    99 	IMPORT_C void PriorityL(TInt &aPriority, TMdaPriorityPreference &aPref) ;
   100 	IMPORT_C TInt Balance() ;
   101 	
   102 	IMPORT_C TVideoRotation RotationL() ;
   103 	IMPORT_C void GetScaleFactorL(TReal32 &aWidthPercentage, TReal32 &aHeightPercentage, TBool &aAntiAliasFiltering) ;
   104 	IMPORT_C void GetCropRegionL(TRect &aCropRegion) ;
   105 
   106 	IMPORT_C TInt NumberOfMetaDataEntriesL();
   107     IMPORT_C void GetMetaDataArrayL(RPointerArray<CMMFMetaDataEntry>& aMetaData);
   108 	IMPORT_C const CMMFControllerImplementationInformation &ControllerImplementationInformationL();
   109 
   110 	IMPORT_C TMVSState GetState();
   111 
   112 	IMPORT_C void SetVideoOutputL(RWsSession& aWs,
   113                                   CWsScreenDevice& aScreenDevice,
   114                                   RWindow& aWindow,
   115                                   TRect& aScreenRect,
   116                                   TRect& aClipRect);
   117 
   118     IMPORT_C void AddDisplayWindowL(RWsSession& aWs,
   119                                     CWsScreenDevice& aScreenDevice,
   120                                     RWindow& aWindow,
   121                                     const TRect& aScreenRect,
   122                                     const TRect& aClipRect);
   123 
   124     IMPORT_C void AddDisplayWindowL(RWsSession& aWs,
   125                                     CWsScreenDevice& aScreenDevice,
   126                                     RWindow& aWindow);
   127 
   128 	IMPORT_C void AddDisplayL(RWsSession& aWs, TInt aDisplay, MMMFSurfaceEventHandler& aEventHandler);
   129 
   130     IMPORT_C void RemoveDisplayWindowL(RWindow& aWindow);
   131 	IMPORT_C void RemoveDisplay(TInt aDisplay);
   132 
   133     IMPORT_C TInt MaxVolume();
   134     IMPORT_C TInt SetScreenNumber(TInt aScreenNumber);
   135     IMPORT_C TInt RegisterForNotification();
   136     IMPORT_C TInt CancelNotification();
   137     IMPORT_C TInt WillResumePlay();
   138     IMPORT_C TBool SupportVideoPlayerUtility2() const; 
   139 
   140 	IMPORT_C void SetAutoScaleL(RWindow& aWindow, TAutoScaleType aScaleType, TInt aHorizPos, TInt aVertPos);
   141 	IMPORT_C void SetAutoScaleL(TAutoScaleType aScaleType, TInt aHorizPos, TInt aVertPos);
   142 	
   143 #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
   144 	IMPORT_C void DisableSubtitlesL();
   145 	IMPORT_C void EnableSubtitlesL();
   146 	IMPORT_C void RenderSubtitle(const TRect& aRect);
   147 	IMPORT_C TBool SubtitlesAvailable();
   148 #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
   149 	
   150 public: 
   151 	void MvpuoOpenComplete(TInt aError);
   152     void MvpuoPrepareComplete(TInt aError);
   153     void MvpuoFrameReady(CFbsBitmap& aFrame,TInt aError);
   154     void MvpuoPlayComplete(TInt aError);
   155     void MvpuoEvent(const TMMFEvent& aEvent);
   156     
   157     //From MMMFAudioResourceNotificationCallback
   158     void MarncResourceAvailable(TUid aNotificationEventId, const TDesC8& aNotificationData);        
   159 private:
   160 	void ConstructL();
   161     CMVSVideoPlayAgent(MMVSClientObserver& aObserver);
   162 
   163 private:
   164 	CVideoPlayerUtility*    iVideoPlayer;	
   165 #ifdef SYMBIAN_BUILD_GCE	
   166 	CVideoPlayerUtility2*   iVideoPlayer2;	
   167 #endif	
   168 
   169 	MMVSClientObserver& iObserver;
   170 	TMVSState iState;
   171 	TMMFEvent iEvent;
   172 	RFs iFs;
   173 	RFile iFile;
   174 	CWsScreenDevice* iScreen;
   175 	RWindow* iWindow;
   176 	RWsSession iWs;
   177 	RWindowGroup iRootWindow;
   178     RFileLogger iFileLogger;
   179     TInt iScreenNumber;
   180     TBool iSupportVideoPlayerUtility2;
   181     CVideoPlayerUtility*    iCurrentVideoPlayer;
   182     RBuf    iFileName;
   183     TUid    iControllerUid;
   184     TBool iRequestNotify;
   185 #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
   186     TBool iEnableSubtitlesOnAdd;
   187 #endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
   188 };
   189 
   190 
   191 
   192 
   193 #endif  // MVSVIDEOPLAYAGENT_H