mmlibs/mmfw/src/Client/Video/VideoPlayerBody.h
author hgs
Tue, 02 Nov 2010 12:28:51 +0000
changeset 6 fe9d1bf55678
parent 0 b8ed18f6c07b
permissions -rw-r--r--
2010wk46_02
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     1
// Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     2
// All rights reserved.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     7
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     8
// Initial Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    10
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    11
// Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    12
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    13
// Description:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    14
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    15
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    16
#ifndef VIDEOPLAYERBODY_H
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    17
#define VIDEOPLAYERBODY_H
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    18
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    19
#include <fbs.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    20
#include <w32std.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    21
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
#ifdef SYMBIAN_BUILD_GCE
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
#include <mmf/common/mmfvideosurfacecustomcommands.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
#include <mmf/common/mmfbase.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
#include <mmf/common/mmfcontroller.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
#include <mmf/common/mmfaudio.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
#include <mmf/common/mmfstandardcustomcommands.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
#include <mmf/common/mmfdrmcustomcommands.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
#include <mda/common/base.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
#include <mmf/common/mmfutilities.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
#include <mmf/common/mmfcontrollerframeworkbase.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
#include "mmf/common/mmcaf.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
#include "mmfclientutility.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
#ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
#include "mmfsubtitleutility.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
#endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
#ifdef SYMBIAN_BUILD_GCE
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
#include "mediaclientvideodisplaybody.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
class CMMFVideoPlayerCallback;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
class MMMFDRMCustomCommand;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
class CVideoPlayerUtility;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
class MMMFSurfaceEventHandler;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
#ifdef SYMBIAN_BUILD_GCE
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
	class TWindowData;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
	class CMediaClientVideoDisplayBody;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
#endif // SYMBIAN_BUILD_GCE
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
NONSHARABLE_CLASS( CVideoPlayerUtility::CBody ): public CBase, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
								   				 public MDirectScreenAccess, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
								   				 public MMMFControllerEventMonitorObserver,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
								   				 public MMMFFindAndOpenControllerObserver
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
public:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
	~CBody();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
	static CBody* NewL(CVideoPlayerUtility* aParent,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
					   MVideoPlayerUtilityObserver& aObserver,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
					   TInt aPriority,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
					   TInt aPref,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
					   RWsSession& aWs,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
					   CWsScreenDevice& aScreenDevice,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
					   RWindowBase& aWindow,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
					   const TRect& aScreenRect,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
					   const TRect& aClipRect);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
#ifdef SYMBIAN_BUILD_GCE
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
	static CBody* NewL(CVideoPlayerUtility2* aParent,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
					   MVideoPlayerUtilityObserver& aObserver,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
					   TInt aPriority,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
					   TInt aPref);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
	void OpenFileL(const TDesC& aFileName,TUid aControllerUid = KNullUid);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
	void OpenFileL(const RFile& aFile, TUid aControllerUid = KNullUid);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
	void OpenFileL(const TMMSource& aSource, TUid aControllerUid = KNullUid);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
	void OpenDesL(const TDesC8& aDescriptor,TUid aControllerUid = KNullUid);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
	void OpenUrlL(const TDesC& aUrl, TInt aIapId, const TDesC8& aMimeType=KNullDesC8, TUid aControllerUid = KNullUid);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
	void Prepare();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
	void Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
	void Play();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
	void Play(const TTimeIntervalMicroSeconds& aStartPoint, const TTimeIntervalMicroSeconds& aEndPoint);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
	TInt Stop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
	void PauseL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
	void SetPriorityL(TInt aPriority, TInt aPref);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
	void PriorityL(TInt& aPriority, TMdaPriorityPreference& aPref) const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
	void SetDisplayWindowL(RWsSession& aWs, CWsScreenDevice& aScreenDevice, RWindowBase& aWindow,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
						   const TRect& aScreenRect, const TRect& aClipRect);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
	void RegisterForVideoLoadingNotification(MVideoLoadingObserver& aObserver);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
	void GetFrameL(TDisplayMode aDisplayMode, TBool aUseIntentAPI = EFalse, ContentAccess::TIntent aIntent = ContentAccess::EPeek );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
	void RefreshFrameL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
	TReal32 VideoFrameRateL() const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
	void VideoFrameSizeL(TSize& aSize) const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
	const TDesC8& VideoFormatMimeType() const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
	TInt VideoBitRateL() const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
	TInt AudioBitRateL() const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
	TFourCC AudioTypeL() const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
	TBool AudioEnabledL() const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
	void SetPositionL(const TTimeIntervalMicroSeconds& aPosition);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
	TTimeIntervalMicroSeconds PositionL() const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
	TTimeIntervalMicroSeconds DurationL() const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
	void SetVolumeL(TInt aVolume);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
	TInt Volume() const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
	TInt MaxVolume() const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
	void SetBalanceL(TInt aBalance);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
	TInt Balance()const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
	void SetRotationL(TVideoRotation aRotation);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
	TVideoRotation RotationL() const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
	void SetScaleFactorL(TReal32 aWidthPercentage, TReal32 aHeightPercentage, TBool aAntiAliasFiltering);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
	void GetScaleFactorL(TReal32& aWidthPercentage, TReal32& aHeightPercentage, TBool& aAntiAliasFiltering) const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
	void SetCropRegionL(const TRect& aCropRegion);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
	void GetCropRegionL(TRect& aCropRegion) const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
	TInt NumberOfMetaDataEntriesL() const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
	CMMFMetaDataEntry* MetaDataEntryL(TInt aIndex) const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
	void GetVideoLoadingProgressL(TInt& aPercentageProgress);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
	TInt CustomCommandSync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TDes8& aDataFrom);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
	TInt CustomCommandSync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
	void CustomCommandAsync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TDes8& aDataFrom, TRequestStatus& aStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
	void CustomCommandAsync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TRequestStatus& aStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
	void SetVideoFrameRateL(TReal32 aFramesPerSecond);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
	const CMMFControllerImplementationInformation& ControllerImplementationInformationL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
	MMMFDRMCustomCommand* GetDRMCustomCommand();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
	void StopDirectScreenAccessL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
	void StartDirectScreenAccessL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151
	TInt RegisterAudioResourceNotification(MMMFAudioResourceNotificationCallback& aCallback, TUid aNotificationEventUid, const TDesC8& aNotificationRegistrationData = KNullDesC8);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   152
	TInt CancelRegisterAudioResourceNotification(TUid aNotificationEventId);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   153
	TInt WillResumePlay();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   154
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   155
	TInt SetInitScreenNumber(TInt aScreenNumber);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   156
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   157
    void SetPlayVelocityL(TInt aVelocity);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   158
    TInt PlayVelocityL() const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   159
    void StepFrameL(TInt aStep);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   160
    void GetPlayRateCapabilitiesL(TVideoPlayRateCapabilities& aCapabilities) const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   161
    void SetVideoEnabledL(TBool aVideoEnabled);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   162
    TBool VideoEnabledL() const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   163
    void SetAudioEnabledL(TBool aAudioEnabled);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   164
    void SetAutoScaleL(TAutoScaleType aScaleType);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   165
    void SetAutoScaleL(TAutoScaleType aScaleType, TInt aHorizPos, TInt aVertPos);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   166
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   167
#ifdef SYMBIAN_BUILD_GCE
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   168
	void AddDisplayWindowL(RWsSession& aWs, CWsScreenDevice& aScreenDevice, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   169
							RWindow& aWindow, const TRect& aVideoExtent, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   170
							const TRect& aWindowClipRect);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   171
	void AddDisplayWindowL(RWsSession& aWs, CWsScreenDevice& aScreenDevice, RWindow& aWindow);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   172
 	void RemoveDisplayWindow(RWindowBase& aWindow);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   173
 	void SetVideoExtentL(const RWindowBase& aWindow, const TRect& aVideoExtent);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   174
	void SetWindowClipRectL(const RWindowBase& aWindow, const TRect& aWindowClipRect);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   175
    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   176
   	void SetAutoScaleL(const RWindowBase& aWindow, TAutoScaleType aScaleType);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   177
    void SetAutoScaleL(const RWindowBase& aWindow, TAutoScaleType aScaleType, TInt aHorizPos, TInt aVertPos);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   178
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   179
	void SetRotationL(const RWindowBase& aWindow, TVideoRotation aRotation);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   180
	TVideoRotation RotationL(const RWindowBase& aWindow) const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   181
	void SetScaleFactorL(const RWindowBase& aWindow, TReal32 aWidthPercentage, TReal32 aHeightPercentage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   182
	void GetScaleFactorL(const RWindowBase& aWindow, TReal32& aWidthPercentage, TReal32& aHeightPercentage) const;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   183
	void AddDisplayL(TInt aDisplay, MMMFSurfaceEventHandler& aEventHandler);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   184
	void RemoveDisplay(TInt aDisplay);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   185
	void ConvertFromRelativeToDisplayToRelativeToWindow(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   186
	        const RWindowBase& aWindow,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   187
	        const TRect& aFromWindowRect,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   188
	        const TRect& aFromClipRect,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   189
	        TRect& aToWindowRect,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   190
	        TRect& aToClipRect);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   191
	void SetExternalDisplaySwitchingL(TInt aDisplay, TBool aControl);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   192
#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   193
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   194
#ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   195
	TBool SubtitlesAvailable();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   196
	void EnableSubtitlesL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   197
	void DisableSubtitles();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   198
	TArray<TLanguage> SupportedSubtitleLanguagesL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   199
	TLanguage SubtitleLanguageL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   200
	void SetSubtitleLanguageL(TLanguage aLanguage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   201
	void RedrawSubtitle(RWindow& aWindow, const TRect &aRect);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   202
	static RWindow* FindWindowWithWsHandle(const RPointerArray<CMediaClientVideoDisplayBody>& aDisplays, TInt aWsHandle);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   203
	TInt EnableSubtitles(CMediaClientVideoDisplayBody& aDisplay);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   204
	TInt AddSubtitleConfig(CMediaClientVideoDisplayBody::TWindowData& aWindowData);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   205
	void GetSubtitleConfigFromWindowData(CMediaClientVideoDisplayBody::TWindowData& aWindowData, TMMFSubtitleWindowConfig& aConfig);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   206
#endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   207
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   208
private:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   209
	void ConstructL(RWsSession& aWs, CWsScreenDevice& aScreenDevice, RWindowBase& aWindow,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   210
					const TRect& aWindowRect, const TRect& aClipRect);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   211
	CBody(CVideoPlayerUtility* aParent,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   212
		  MVideoPlayerUtilityObserver& aObserver,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   213
		  TInt aScreenNumber,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   214
		  TInt aPriority=EMdaPriorityNormal,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   215
		  TInt aPref=EMdaPriorityPreferenceTimeAndQuality);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   216
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   217
	void CommonConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   218
	void SetAndUpdateWindow();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   219
	void PrepareDSAL(RWsSession& aWs, CWsScreenDevice& aScreenDevice, RWindowBase& aWindow);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   220
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   221
#ifdef SYMBIAN_BUILD_GCE	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   222
	CBody(CVideoPlayerUtility2* aParent,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   223
		  MVideoPlayerUtilityObserver& aObserver,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   224
		  TInt aPriority=EMdaPriorityNormal,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   225
		  TInt aPref=EMdaPriorityPreferenceTimeAndQuality);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   226
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   227
	void ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   228
	TInt CheckSurfaceSupported();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   229
	TBool RectContains(const TRect& aLeft, const TRect& aRight);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   230
	void DoAddDisplayWindowL(RWsSession& aWs, TInt aDisplay, RWindowBase& aWindow,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   231
								const TRect& aClipRect, const TRect& aVideoExtent, RWindow* aWindow2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   232
	void DoUpdateDisplayWindowL(RWsSession& aWs, RWindowBase& aWindow,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   233
	              const TRect& aClipRect, const TRect& aVideoExtent, RWindow* aWindow2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   234
	TInt SurfaceCreated();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   235
	TInt SurfaceParametersChanged();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   236
	TInt RemoveSurface(TBool aControllerEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   237
	TInt SetAllBackgroundSurfaces();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   238
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   239
#endif // SYMBIAN_BUILD_GCE
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   240
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   241
	// from MMMFControllerEventMonitorObserver
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   242
	virtual void HandleEvent(const TMMFEvent& aEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   243
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   244
	//from MDirectScreenAccess
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   245
	virtual void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   246
	virtual void Restart(RDirectScreenAccess::TTerminationReasons aReason);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   247
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   248
	// from MMMFFindAndOpenControllerObserver 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   249
	virtual void MfaocComplete(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   250
		TInt& aError, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   251
		RMMFController* aController, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   252
		TUid aControllerUid, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   253
		TMMFMessageDestination* aSourceHandle, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   254
		TMMFMessageDestination* aSinkHandle);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   255
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   256
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   257
	void OpenComplete(TInt aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   258
	void FrameReady(TInt aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   259
	void PlayComplete(TInt aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   260
	void Reset();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   261
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   262
private:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   263
	//Source and sink handle info
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   264
	TMMFMessageDestination iSourceHandle;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   265
	TMMFMessageDestination iSinkHandle;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   266
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   267
	RMMFController iController;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   268
	RMMFVideoControllerCustomCommands iVideoControllerCustomCommands;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   269
	RMMFVideoPlayControllerCustomCommands iVideoPlayControllerCustomCommands;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   270
	RMMFAudioPlayDeviceCustomCommands iAudioPlayDeviceCustomCommands;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   271
	RMMFAudioRecordDeviceCustomCommands iAudioRecordDeviceCustomCommands;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   272
	RMMFVideoDRMExtCustomCommands iVideoDRMExtCustomCommands;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   273
	RMMFDRMCustomCommands iDRMCustomCommands;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   274
	RMMFVideoPlayControllerExtCustomCommands iVideoPlayControllerExtCustomCommands;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   275
	RMMFResourceNotificationCustomCommands iNotificationRegistrationCommands;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   276
	MMMFAudioResourceNotificationCallback* iAudioResourceNotificationCallBack;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   277
#ifdef SYMBIAN_BUILD_GCE
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   278
	RMMFVideoPlaySurfaceSupportCustomCommands iVideoPlaySurfaceSupportCustomCommands;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   279
#endif	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   280
	//for audio resource notification
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   281
	TUid iArnEventHolder;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   282
	TBuf8<TMMFAudioConfig::KNotificationDataBufferSize> iNotificationDataHolder;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   283
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   284
	RMMFVideoSetInitScreenCustomCommands iVideoSetInitScreenCustomCommands;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   285
	MVideoPlayerUtilityObserver& iObserver;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   286
	CMMFControllerEventMonitor* iControllerEventMonitor;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   287
	CVideoPlayerUtility::TMMFVideoPlayerState iState;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   288
	TTimeIntervalMicroSeconds iDuration;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   289
	TMMFPrioritySettings iPrioritySettings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   290
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   291
	MVideoLoadingObserver *iVideoLoadingObserver;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   292
	CDirectScreenAccess * iDirectScreenAccess;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   293
	HBufC8* iMimeType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   294
	CMMFVideoPlayerCallback* iAsyncCallback;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   295
	CMMFVideoPlayerCallback* iFrameCallback;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   296
	CMMFControllerImplementationInformation* iControllerImplementationInformation;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   297
	TUid iControllerUid;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   298
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   299
	CVideoPlayerUtility* iParent;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   300
	CFbsBitmap* iFrameBitmap;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   301
	RFbsSession iFbsSession;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   302
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   303
	TRect iWindowRect;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   304
	TRect iClipRect;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   305
	TBool iControllerOpen;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   306
	TBool iFbsSessionConnected;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   307
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   308
	// utility class to find and open a suitable controller asynchronously
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   309
	CMMFFindAndOpenController* iFindAndOpenController;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   310
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   311
	// received a KMMFEventCategoryVideoOpenComplete event
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   312
	TBool iEventOpenReceived;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   313
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   314
	// received a MfaocComplete() callback
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   315
	TBool iCallbackOpenReceived;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   316
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   317
	TInt iOpenError;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   318
	TInt iScreenNumber;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   319
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   320
	// flag indicating DSA abort in StopDirectScreenAccess() - to be used in SetDisplayWindowL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   321
	TBool iDirectScreenAccessAbort;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   322
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   323
#ifdef SYMBIAN_BUILD_GCE
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   324
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   325
	TSurfaceId iSurfaceId;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   326
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   327
	//video graphics surface supported
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   328
	TBool iGraphicsSurfaceSupported;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   329
	TBool iUsingVPU2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   330
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   331
	// store scale factor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   332
	TReal32 iGlobalScaleWidth;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   333
	TReal32 iGlobalScaleHeight;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   334
	TBool iAntiAliasFiltering;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   335
	TRect iCropRegion;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   336
	TVideoRotation iGlobalRotation;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   337
	TRect iSurfaceCropRect;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   338
	TVideoAspectRatio iAspectRatio;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   339
	// for storing window added during NewL,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   340
	// i.e. DSA
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   341
	RWsSession* iWs;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   342
	TInt iDisplayId;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   343
	RWindowBase* iWindow;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   344
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   345
	RPointerArray<CMediaClientVideoDisplayBody> iActiveDisplays;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   346
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   347
	// Autoscale info
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   348
	TAutoScaleType iGlobalAutoScaleType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   349
	TInt iGlobalHorizPos;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   350
	TInt iGlobalVertPos;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   351
#endif // SYMBIAN_BUILD_GCE
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   352
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   353
#ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   354
	CMMFSubtitleUtility* iSubtitleUtility;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   355
#endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   356
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   357
	friend class CMMFVideoPlayerCallback;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   358
	friend class CTestStepUnitMMFVidClient;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   359
	friend class CTestView;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   360
	friend class CVideoPlayerUtility;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   361
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   362
#ifdef SYMBIAN_BUILD_GCE
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   363
	friend class CVideoPlayerUtility2;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   364
#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   365
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   366
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   367
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   368
#endif // VIDEOPLAYERBODY_H