mmlibs/mmfw/src/Client/Video/mmfclientvideoplayer2.cpp
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) 2007-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
#include <videoplayer.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    17
#include <videoplayer2.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    18
#include "mmfvideocallback.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    19
#include "VideoPlayerBody.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    20
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    21
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
Creates a new instance of the video player utility. Unlike CVideoPlayerUtility::NewL(), 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
the CVideoPlayerUtility2 factory does not require window handles and other video display 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
information as its arguments. The client can set up rendering later with 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
AddDisplayWindowL(), or optionally use the utility without a window, for example, for metadata 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
query purposes.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
@param  aObserver
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
        A client class to receive notifications from the video player.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
@param  aPriority
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
        The Priority Value - this client's relative priority. This is a value between EMdaPriorityMin and 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
        EMdaPriorityMax and represents a relative priority. A higher value indicates a more important request.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
@param  aPref
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
        The Priority Preference - an additional audio policy parameter. The suggested default is 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
        EMdaPriorityPreferenceNone. Further values are given by TMdaPriorityPreference, and additional 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
        values may be supported by given phones and/or platforms, but should not be depended upon by 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
        portable code.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
@return A pointer to the new video player utility object.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
@leave The method will leave if an error occurs. Typical error codes used:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
		* KErrNoMemory if out of memory. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
Note: The Priority Value and Priority Preference are used primarily when deciding what to do when
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
several audio clients attempt to play or record simultaneously. In addition to the Priority Value and Preference, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
the adaptation may consider other parameters such as the SecureId and Capabilities of the client process. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
Whatever, the decision  as to what to do in such situations is up to the audio adaptation, and may
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
vary between different phones. Portable applications are advised not to assume any specific behaviour. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
EXPORT_C CVideoPlayerUtility2* CVideoPlayerUtility2::NewL(MVideoPlayerUtilityObserver& aObserver,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
											  					TInt aPriority,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
											  					TInt aPref)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
	CVideoPlayerUtility2* s = new(ELeave) CVideoPlayerUtility2();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
	CleanupStack::PushL(s);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
	s->iBody = CVideoPlayerUtility::CBody::NewL(s, aObserver, aPriority, aPref);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
	CleanupStack::Pop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
	return s;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
Destructor. Closes any open video clips and frees any resources held by the Video Player.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
CVideoPlayerUtility2::~CVideoPlayerUtility2()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
Adds a new window for displaying the video picture. Client applications must use this method 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
instead of SetDisplayWindowL() when using CVideoPlayerUtility2.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
This method can only be called after opening the source is complete and the client has 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
received an MvpuoOpenComplete() callback.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
@param  aWs
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
       	The window server session for this window.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
@param  aScreenDevice
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
       	The screen device for the screen that the window is displayed on.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
@param  aWindow
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
       	The display window.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
@param  aVideoExtent
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
       	Video extent on the screen, relative to the window. Video picture position within 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
       	the extent depends on the scaled picture and content alignment or offset. The video 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
       	extent can be partially or completely outside the window.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
@param  aWindowClipRect
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
       	Window clipping rectangle, relative to the window. The clipping rectangle specifies 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
       	the part of the window used for video display. The rectangle must be contained 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
       	completely within the window.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
@leave	The method will leave if an error occurs. Typical error codes used:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
		* KErrNotReady if the source file, URL, or descriptor has not been opened.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
*/	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
EXPORT_C void CVideoPlayerUtility2::AddDisplayWindowL(RWsSession& aWs, CWsScreenDevice& aScreenDevice, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
														RWindow& aWindow, const TRect& aVideoExtent, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
														const TRect& aWindowClipRect)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
	iBody->AddDisplayWindowL(aWs, aScreenDevice, aWindow, aVideoExtent, aWindowClipRect);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
A simplified variant of AddDisplayWindowL(). When this variant is used, the video extent and 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
window clipping rectangle default to the whole window.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
This method can only be called after opening the source is complete and the client has 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
received an MvpuoOpenComplete() callback.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
@param  aWs
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
       	The window server session for this window.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
@param  aScreenDevice
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
       	The screen device for the screen that the window is displayed on.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
@param  aWindow
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
       	The display window.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
@leave	The method will leave if an error occurs. Typical error codes used:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
		* KErrNotReady if the source file, URL, or descriptor has not been opened.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
*/	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
EXPORT_C void CVideoPlayerUtility2::AddDisplayWindowL(RWsSession& aWs, CWsScreenDevice& aScreenDevice, RWindow& aWindow)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
	iBody->AddDisplayWindowL(aWs, aScreenDevice, aWindow);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
Removes a window that is currently being used to display the video picture. The window must
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
have previously been added with AddDisplayWindowL(). 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
Note Depending on underlying implementation it may also remove any graphics resources associated
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
with video playback on this window. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
This method cannot fail. If the window has not been added with AddDisplayWindowL(), the 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
method call will be ignored. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
@param  aWindow
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
       	The display window.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
*/	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
EXPORT_C void CVideoPlayerUtility2::RemoveDisplayWindow(RWindow& aWindow)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
	iBody->RemoveDisplayWindow(aWindow);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
Sets the video extent on the screen, relative to the window. The extent specifies the area 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
of screen in which the video picture is placed, and may be partially or completely outside of
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
the video window. Video picture position within the extent depends on the picture size and 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
content alignment or offset.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
This method can only be called after opening the source is complete and the client has 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
received an MvpuoOpenComplete() callback.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
@param  aWindow
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
		Window to set video extent for.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
@param  aVideoExtent
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151
       	The new video extent, relative to the video window.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   152
@leave	The method will leave if an error occurs. Typical error codes used:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   153
		* KErrNotReady if the source file, URL, or descriptor has not been opened.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   154
*/	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   155
EXPORT_C void CVideoPlayerUtility2::SetVideoExtentL(const RWindow& aWindow, const TRect& aVideoExtent)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   156
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   157
	iBody->SetVideoExtentL(aWindow, aVideoExtent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   158
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   159
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   160
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   161
Sets the window clipping rectangle, relative to the window. The clipping rectangle specifies 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   162
the part of the window used to display the video picture and must be fully contained within 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   163
the window.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   164
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   165
This method can only be called after opening the source is complete and the client has 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   166
received an MvpuoOpenComplete() callback.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   167
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   168
@param	aWindow
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   169
		Window to set clipping rectangle for.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   170
@param  aWindowClipRect
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   171
       	The clipping rectangle to use for this window.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   172
@leave	The method will leave if an error occurs. Typical error codes used:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   173
		* KErrArgument if the rectangle is not contained within the window. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   174
		* KErrNotReady if the source file, URL, or descriptor has not been opened.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   175
*/	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   176
EXPORT_C void CVideoPlayerUtility2::SetWindowClipRectL(const RWindow& aWindow, const TRect& aWindowClipRect)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   177
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   178
	iBody->SetWindowClipRectL(aWindow, aWindowClipRect);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   179
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   180
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   181
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   182
Rotates the video image within the window. This is the preferred method to use with CVideoPlayerUtility2.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   183
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   184
The rotation will replace any rotation set with CVideoPlayerUtility::SetRotationL. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   185
Likewise with setting the rotation with CVideoPlayerUtility::SetRotationL after a call to CVideoPlayerUtility2::SetRotationL has been
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   186
made, then the rotation specified will replace any rotation set with CVideoPlayerUtility2::SetRotationL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   187
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   188
@param aWindow Window to set rotation for.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   189
@param aRotation The video rotation to use for aWindow.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   190
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   191
@leave KErrNotFound if aWindow isn't currently added to CVideoPlayerUtility2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   192
@leave KErrNotReady if controller hasn't been opened.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   193
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   194
@see CVideoPlayerUtility::SetRotationL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   195
@see TVideoRotation
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   196
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   197
		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   198
EXPORT_C void CVideoPlayerUtility2::SetRotationL(const RWindow& aWindow, TVideoRotation aRotation)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   199
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   200
	iBody->SetRotationL(aWindow, aRotation);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   201
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   202
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   203
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   204
Retrieves the video rotation set for a window. This is the preferred method to use with CVideoPlayerUtility2.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   205
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   206
@param aWindow Window to retrieve rotation for.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   207
@return The video rotation.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   208
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   209
@leave KErrNotFound if aWindow isn't currently added to CVideoPlayerUtility2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   210
@leave KErrNotReady if controller hasn't been opened.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   211
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   212
@see TVideoRotation
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   213
@see CVideoPlayerUtility2::AddDisplayWindowL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   214
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   215
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   216
EXPORT_C TVideoRotation CVideoPlayerUtility2::RotationL(const RWindow& aWindow)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   217
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   218
	return iBody->RotationL(aWindow);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   219
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   220
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   221
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   222
Scales the video image to a specified percentage of its original size within the window. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   223
This is the preferred method to use with CVideoPlayerUtility2. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   224
Setting scale factor will set auto scale to EAutoScaleNone for the window.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   225
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   226
The scale factor will replace any scale factor set with CVideoPlayerUtility::SetScaleFactorL. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   227
Likewise with setting the scale factor with CVideoPlayerUtility::SetScaleFactorL after a call to CVideoPlayerUtility2::SetScaleFactorL has been
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   228
made, then the scale factor specified will replace any scale factor set with CVideoPlayerUtility2::SetScaleFactorL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   229
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   230
@param aWindow Window to set scale factor for.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   231
@param aWidthPercentage
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   232
        The percentage (100 = original size) to be used to scale the width of the video image
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   233
@param aHeightPercentage
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   234
        The percentage (100 = original size) to be used to scale the height of the video image. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   235
        If this is not equal to aWidthPercentage then the image may be distorted.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   236
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   237
@leave KErrNotFound if aWindow isn't currently added to CVideoPlayerUtility2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   238
@leave KErrNotReady if controller hasn't been opened.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   239
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   240
@see CVideoPlayerUtility::SetScaleFactorL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   241
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   242
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   243
EXPORT_C void CVideoPlayerUtility2::SetScaleFactorL(const RWindow& aWindow, TReal32 aWidthPercentage, TReal32 aHeightPercentage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   244
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   245
	iBody->SetScaleFactorL(aWindow, aWidthPercentage, aHeightPercentage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   246
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   247
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   248
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   249
Retrieves the scale factor currently set for a window. This is the preferred method to use with CVideoPlayerUtility2.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   250
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   251
@param aWindow Window to retrieve scale factor for.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   252
@param aWidthPercentage
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   253
        On function return, contains the current scaling percentage applied to the width of the
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   254
        video image (100 = original size).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   255
@param aHeightPercentage
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   256
        On function return, contains the current scaling percentage applied to the height
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   257
        of the video image (100 = original size).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   258
        
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   259
@leave KErrNotFound if aWindow isn't currently added to CVideoPlayerUtility2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   260
@leave KErrNotReady if controller hasn't been opened.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   261
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   262
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   263
EXPORT_C void CVideoPlayerUtility2::GetScaleFactorL(const RWindow& aWindow, TReal32& aWidthPercentage, TReal32& aHeightPercentage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   264
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   265
	iBody->GetScaleFactorL(aWindow, aWidthPercentage, aHeightPercentage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   266
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   267
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   268
/** 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   269
Set video automatic scaling. When automatic scaling is active, the
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   270
video picture is scaled automatically to match the video extent,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   271
based on the scaling type. This variant of SetAutoScaleL() will
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   272
always center the picture in the extent.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   273
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   274
This is the preferred method to use with CVideoPlayerUtility2.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   275
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   276
Calling SetAutoScaleL() will override any scaling factors set with
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   277
SetScaleFactorL(). Calling SetScaleFactorL() will disable automatic
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   278
scaling.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   279
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   280
@see TAutoScaleType, THorizontalAlign, TVerticalAlign
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   281
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   282
@param aWindow Window to set auto scaling options for.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   283
@param aScaleType Automatic scaling type
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   284
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   285
@pre The video clip has been opened by the client
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   286
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   287
@leave KErrNotFound if aWindow isn't currently added to CVideoPlayerUtility2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   288
@leave KErrNotReady if controller hasn't been opened.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   289
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   290
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   291
EXPORT_C void CVideoPlayerUtility2::SetAutoScaleL(const RWindow& aWindow, TAutoScaleType aScaleType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   292
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   293
	iBody->SetAutoScaleL(aWindow, aScaleType);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   294
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   295
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   296
/** 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   297
Set video automatic scaling. When automatic scaling is active, the
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   298
video picture is scaled automatically to match the video extent,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   299
based on the scaling type, and positioned according to the
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   300
parameters.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   301
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   302
This is the preferred method to use with CVideoPlayerUtility2.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   303
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   304
Calling SetAutoScaleL() will override any scaling factors set with
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   305
SetScaleFactorL(). Calling SetScaleFactorL() will disable automatic
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   306
scaling.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   307
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   308
@see TAutoScaleType, THorizontalAlign, TVerticalAlign
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   309
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   310
@param aWindow Window to set auto scaling options for.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   311
@param aScaleType Automatic scaling type
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   312
@param aHorizPos Video picture horizontal position, relative to the
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   313
                 video window. The value can be either a pixel offset
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   314
                 (positive or negative) from the top left corner of the
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   315
                 window to the top left corner of the picture, or an
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   316
                 alignment constant from enum THorizontalAlign.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   317
@param aVertPos Video picture vertical position, relative to the
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   318
                 video window. The value can be either a pixel offset
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   319
                 (positive or negative) from the top left corner of the
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   320
                 window to the top left corner of the picture, or an
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   321
                 alignment constant from enum TVerticalAlign.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   322
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   323
@pre The video clip has been opened by the client.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   324
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   325
@leave KErrNotFound if aWindow isn't currently added to CVideoPlayerUtility2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   326
@leave KErrNotReady if controller hasn't been opened.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   327
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   328
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   329
EXPORT_C void CVideoPlayerUtility2::SetAutoScaleL(const RWindow& aWindow, TAutoScaleType aScaleType, TInt aHorizPos, TInt aVertPos)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   330
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   331
	iBody->SetAutoScaleL(aWindow, aScaleType, aHorizPos, aVertPos);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   332
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   333
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   334
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   335
Adds the specified display to the list of surface rendering targets. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   336
This API can be used in conjunction with AddDisplayWindowL calls. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   337
The caller is responsible for handling surface events generated for the specific display. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   338
A single graphics surface is created and shared between all windows and displays.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   339
Surface registration and de-registration is managed by the MMF framework.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   340
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   341
@see AddDisplayWindowL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   342
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   343
@param aWs Window server session. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   344
@param aDisplay Display to create graphics surface on.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   345
@param aEventHandler Call-back interface for receiving surface specific events.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   346
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   347
@leave Any of the system wide error codes.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   348
@leave KErrNotReady if the source file, URL or descriptor has not been opened.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   349
@leave KErrInUse if the display has already been added by a previous AddDisplayL call.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   350
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   351
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   352
EXPORT_C void CVideoPlayerUtility2::AddDisplayL(RWsSession& /* aWs */, TInt aDisplay, MMMFSurfaceEventHandler& aEventHandler)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   353
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   354
	iBody->AddDisplayL(aDisplay, aEventHandler);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   355
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   356
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   357
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   358
Removes the specified display from the list of surface rendering targets. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   359
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   360
@param aDisplay Display id of display to remove
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   361
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   362
    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   363
EXPORT_C void CVideoPlayerUtility2::RemoveDisplay(TInt aDisplay)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   364
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   365
	iBody->RemoveDisplay(aDisplay);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   366
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   367
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   368
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   369
When enabled sets automatic switching of surface to/from external display when it is connected/disconnected from the device.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   370
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   371
Automatic switching is enabled by default, but only if the client thread that created this utility has an Active Scheduler
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   372
installed and the device supports external display switching.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   373
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   374
To use this function the client thread must have an Active Scheduler installed otherwise it will leave with KErrNotReady.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   375
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   376
@param  aControl
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   377
        ETrue to enable. EFalse to disable.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   378
@param  aDisplay
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   379
        Display id of display to enable external switching for.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   380
@leave  KErrNotSupported Device does not support external displays
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   381
@leave  KErrNotReady CActiveScheduler is not installed
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   382
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   383
EXPORT_C void CVideoPlayerUtility2::SetExternalDisplaySwitchingL(TInt aDisplay, TBool aControl)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   384
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   385
    iBody->SetExternalDisplaySwitchingL(aDisplay, aControl);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   386
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   387
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   388
#ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   389
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   390
Check to see if subtitles are available with the current video stream and controller.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   391
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   392
@return ETrue if subtitles can be enabled, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   393
	EFalse if subtitles are not available with the current video stream or video clip has not been opened
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   394
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   395
EXPORT_C TBool CVideoPlayerUtility2::SubtitlesAvailable()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   396
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   397
	return iBody->SubtitlesAvailable();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   398
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   399
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   400
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   401
Enable subtitles with the current video stream.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   402
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   403
@pre The video clip has been opened by the client and SubtitlesAvailable() return ETrue.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   404
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   405
@leave KErrNotReady if the video source file, URL, or descriptor has not been opened, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   406
	or no window has been added to CVideoPlayerUtility2.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   407
@leave KErrNotSupported if underlying video player controller does not support subtitles.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   408
@leave KErrNotFound if the opened video source has no associated subtitle data.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   409
@leave KErrInUse if subtitle is already enabled.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   410
@leave Otherwise leaves with any of the system wide error codes.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   411
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   412
@panic MMFVideoPlayUtil 1 In debug mode, if the video source file, URL, or descriptor has not been opened.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   413
@panic MMFVideoPlayUtil 2 In debug mode, if subtitle is not supported or not available.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   414
@panic MMFVideoPlayUtil 3 In debug mode, if no display window has been added.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   415
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   416
EXPORT_C void CVideoPlayerUtility2::EnableSubtitlesL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   417
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   418
	iBody->EnableSubtitlesL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   419
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   420
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   421
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   422
Disable subtitles.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   423
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   424
EXPORT_C void CVideoPlayerUtility2::DisableSubtitles()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   425
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   426
	iBody->DisableSubtitles();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   427
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   428
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   429
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   430
Get the current subtitle language.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   431
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   432
@pre Subtitle has been enabled.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   433
@return The current subtitle language, or ELangNone if no language information is available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   434
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   435
@leave KErrNotReady if subtitle has not been enabled.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   436
@leave Otherwise leaves with any of the system wide error codes.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   437
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   438
@panic MMFVideoPlayUtil 4 In debug mode, if subtitle has not been enabled.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   439
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   440
EXPORT_C TLanguage CVideoPlayerUtility2::SubtitleLanguageL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   441
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   442
	return iBody->SubtitleLanguageL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   443
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   444
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   445
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   446
Return the subtitle languages available.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   447
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   448
@pre Subtitles have been enabled.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   449
@return A array of the currently available languages, or an empty array if 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   450
	subtitle source does not contain any language information.  Array is valid 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   451
	until subtitles are disabled.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   452
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   453
@leave KErrNotReady if subtitles have not been enabled.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   454
@leave Otherwise leaves with any of the system wide error codes.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   455
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   456
@panic MMFVideoPlayUtil 4 In debug mode, if subtitles have not been enabled.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   457
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   458
EXPORT_C TArray<TLanguage> CVideoPlayerUtility2::SupportedSubtitleLanguagesL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   459
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   460
	return iBody->SupportedSubtitleLanguagesL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   461
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   462
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   463
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   464
Set the current subtitle language.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   465
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   466
@see CVideoPlayerUtility2::GetSupportedSubtitleLanguagesL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   467
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   468
@pre Subtitles have been enabled.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   469
@pre GetSupportedSubtitleLanguagesL() return a non empty array
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   470
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   471
@param aLanguage Language to be used for subtitle stream. 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   472
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   473
@leave KErrNotReady if subtitles have not been enabled.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   474
@leave KErrNotSupported if subtitle language is not supported
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   475
@leave Otherwise leaves with any of the system wide error codes.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   476
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   477
@panic MMFVideoPlayUtil 4 In debug mode, if subtitles have not been enabled.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   478
@panic MMFVideoPlayUtil 5 In debug mode, if subtitle language is not supported.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   479
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   480
EXPORT_C void CVideoPlayerUtility2::SetSubtitleLanguageL(TLanguage aLanguage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   481
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   482
	iBody->SetSubtitleLanguageL(aLanguage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   483
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   484
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   485
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   486
To be called when the video window is asked to redraw. E.g. For cone control, when CCoeControl::Draw() is called.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   487
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   488
@param aWindow Handle to the video window to be redrawn.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   489
@param aRect The region of the control to be redrawn from aRect in CCodControl::Draw().
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   490
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   491
EXPORT_C void CVideoPlayerUtility2::RedrawSubtitle(RWindow& aWindow, const TRect &aRect)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   492
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   493
	iBody->RedrawSubtitle(aWindow, aRect);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   494
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   495
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   496
#endif //SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT