epoc32/include/mmf/common/mmfcontrollerpluginresolver.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@2
     1
// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@4
     4
// under the terms of "Eclipse Public License v1.0"
williamr@2
     5
// which accompanies this distribution, and is available
williamr@4
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@2
    14
// mmf\common\mmfcontrollerpluginresolver.h
williamr@2
    15
// 
williamr@2
    16
//
williamr@2
    17
williamr@2
    18
#ifndef MMF_COMMON_MMFCONTROLLERPLUGINRESOLVER_H
williamr@2
    19
#define MMF_COMMON_MMFCONTROLLERPLUGINRESOLVER_H
williamr@2
    20
williamr@2
    21
#include <ecom/ecom.h>
williamr@2
    22
#include <e32base.h>
williamr@2
    23
#include <apmstd.h>
williamr@2
    24
williamr@2
    25
/**
williamr@2
    26
@publishedAll
williamr@2
    27
@released
williamr@2
    28
williamr@2
    29
Default heap size for the controller thread
williamr@2
    30
*/
williamr@2
    31
const TUint KMMFDefaultControllerThreadHeapSize = 0x100000; //1MB
williamr@2
    32
williamr@2
    33
williamr@2
    34
class CMMFFormatImplementationInformation;
williamr@2
    35
williamr@2
    36
/**
williamr@2
    37
@publishedAll
williamr@2
    38
@released
williamr@2
    39
williamr@2
    40
Array of CMMFFormatImplementationInformation 
williamr@2
    41
*/
williamr@2
    42
typedef RPointerArray<CMMFFormatImplementationInformation> RMMFFormatImplInfoArray;
williamr@2
    43
williamr@2
    44
class CMMFControllerImplementationInformation;
williamr@2
    45
williamr@2
    46
/**
williamr@2
    47
@publishedAll
williamr@2
    48
@released
williamr@2
    49
williamr@2
    50
Array of CMMFControllerImplementationInformation 
williamr@2
    51
*/
williamr@2
    52
typedef RPointerArray<CMMFControllerImplementationInformation> RMMFControllerImplInfoArray;
williamr@2
    53
williamr@2
    54
class CMatchData;
williamr@2
    55
williamr@2
    56
class CDesC8Array;
williamr@2
    57
williamr@2
    58
/**
williamr@2
    59
@publishedAll
williamr@2
    60
williamr@2
    61
Abstract class that contains basic information about ECom Multimedia plugins.
williamr@2
    62
williamr@2
    63
@released
williamr@2
    64
@since 7.0s
williamr@2
    65
*/
williamr@2
    66
class CMMFPluginImplementationInformation : public CBase
williamr@2
    67
	{
williamr@2
    68
public:
williamr@2
    69
williamr@2
    70
	/**
williamr@2
    71
	Returns the uid of this particular plugin implementation.
williamr@2
    72
	This is the UID used to instantiate this multimedia plugin.
williamr@2
    73
williamr@2
    74
	@return The implementation uid.
williamr@2
    75
williamr@2
    76
	@since  7.0s
williamr@2
    77
	*/
williamr@2
    78
	IMPORT_C TUid Uid() const;
williamr@2
    79
williamr@2
    80
	/**
williamr@2
    81
	Returns the display name of this plugin implementation.
williamr@2
    82
williamr@2
    83
	@return The display name.
williamr@2
    84
williamr@2
    85
	@since  7.0s
williamr@2
    86
	*/
williamr@2
    87
	IMPORT_C const TDesC& DisplayName() const;
williamr@2
    88
williamr@2
    89
	/**
williamr@2
    90
	Returns the name of the supplier of this plugin implementation, e.g. "Symbian".
williamr@2
    91
williamr@2
    92
	@return The plugin supplier.
williamr@2
    93
williamr@2
    94
	@since  7.0s
williamr@2
    95
	*/
williamr@2
    96
	IMPORT_C const TDesC& Supplier() const;
williamr@2
    97
williamr@2
    98
	/**
williamr@2
    99
	Returns the version number of this plugin.
williamr@2
   100
williamr@2
   101
	@return The version number.
williamr@2
   102
williamr@2
   103
	@since 7.0s
williamr@2
   104
	*/
williamr@2
   105
	IMPORT_C TInt Version() const;
williamr@2
   106
williamr@2
   107
	/**
williamr@2
   108
	Returns the array of media IDs supported by this plugin.
williamr@2
   109
	
williamr@2
   110
	The media ID can be used by clients to determine whether the plugin supports audio or
williamr@2
   111
	video data (or both). A UID is used for the media ID to provide future extensibility.
williamr@2
   112
williamr@2
   113
	@return The array of media IDs.
williamr@2
   114
williamr@2
   115
	@since  7.0s
williamr@2
   116
	*/
williamr@2
   117
	IMPORT_C const RArray<TUid>& SupportedMediaIds() const;
williamr@2
   118
williamr@2
   119
	/**
williamr@2
   120
	Tests whether this plugin was supplied by aSupplier.
williamr@2
   121
williamr@2
   122
	@param  aSupplier
williamr@2
   123
	        The required supplier.
williamr@2
   124
williamr@2
   125
	@return A boolean indicating if this plugin was supplied by aSupplier. ETrue if this plugin was supplied 
williamr@2
   126
	        by aSupplier, EFalse if not.
williamr@2
   127
williamr@2
   128
	@since 7.0s
williamr@2
   129
	*/
williamr@2
   130
	IMPORT_C TBool SupportsSupplier(const TDesC& aSupplier) const;
williamr@2
   131
williamr@2
   132
	/**
williamr@2
   133
	Tests whether this plugin supports aMediaId.
williamr@2
   134
williamr@2
   135
	@param  aMediaId
williamr@2
   136
	        The required media id.
williamr@2
   137
williamr@2
   138
	@return A boolean indicating if the plugin supports aMediaId. ETrue if this plugin supports aMediaId, EFalse if not.
williamr@2
   139
williamr@2
   140
	@since 7.0s
williamr@2
   141
	*/
williamr@2
   142
	IMPORT_C TBool SupportsMediaId(TUid aMediaId) const;
williamr@2
   143
williamr@2
   144
	/**
williamr@2
   145
	Destructor.
williamr@2
   146
	*/
williamr@2
   147
	virtual ~CMMFPluginImplementationInformation();
williamr@2
   148
williamr@2
   149
protected:
williamr@2
   150
williamr@2
   151
	/**
williamr@2
   152
	Constructor.
williamr@2
   153
	*/
williamr@2
   154
	CMMFPluginImplementationInformation();
williamr@2
   155
williamr@2
   156
	/** 
williamr@2
   157
	Sets the supplier. Takes a copy of aData.
williamr@2
   158
	*/
williamr@2
   159
	void SetSupplierL(const TDesC8& aData);
williamr@2
   160
williamr@2
   161
	/**
williamr@2
   162
	Adds a media id. aData is parsed to find the uid of the media id to be added.
williamr@2
   163
	*/
williamr@2
   164
	void AddMediaIdL(const TDesC8& aData);
williamr@2
   165
	
williamr@2
   166
protected:
williamr@2
   167
williamr@2
   168
	/** 
williamr@2
   169
	The UID of this plugin. 
williamr@2
   170
	*/
williamr@2
   171
	TUid iUid;
williamr@2
   172
williamr@2
   173
	/** 
williamr@2
   174
	The display name of this plugin. 
williamr@2
   175
	*/
williamr@2
   176
	HBufC* iDisplayName;
williamr@2
   177
williamr@2
   178
	/** 
williamr@2
   179
	The supplier of this plugin. 
williamr@2
   180
	*/
williamr@2
   181
	HBufC* iSupplier;
williamr@2
   182
williamr@2
   183
	/** 
williamr@2
   184
	The version number of this plugin. 
williamr@2
   185
	*/
williamr@2
   186
	TInt iVersion;
williamr@2
   187
williamr@2
   188
	/**
williamr@2
   189
	The media ids supported by this plugin.
williamr@2
   190
	*/
williamr@2
   191
	RArray<TUid> iMediaIds;
williamr@2
   192
	};
williamr@2
   193
williamr@4
   194
#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
williamr@4
   195
#include <mmf/common/taggeddataparser.h>
williamr@4
   196
#endif
williamr@4
   197
williamr@4
   198
/**
williamr@4
   199
@publishedAll
williamr@4
   200
williamr@4
   201
Interface to be implemented by customers of the class TaggedDataParser.
williamr@4
   202
*/
williamr@4
   203
class MTaggedDataParserClient
williamr@4
   204
	{
williamr@4
   205
public:
williamr@4
   206
	virtual void ProcessTaggedDataL(const TDesC8& aTag, const TDesC8& aData) = 0;
williamr@4
   207
	};
williamr@4
   208
williamr@2
   209
/**
williamr@2
   210
@publishedAll
williamr@2
   211
@released
williamr@2
   212
williamr@2
   213
Contains format support information retrieved from the ECom registry.
williamr@2
   214
williamr@2
   215
An object of this type may describe either a concrete format plugin (ie a CMMFFormatEncode or a
williamr@2
   216
CMMFFormatDecode implementation) or a format supported by a controller plugin.
williamr@2
   217
williamr@2
   218
The object is created using a CImplementationInformation object retrieved from the ECom registry.
williamr@2
   219
All relevant data is copied out of the CImplementationInformation object, and its opaque data is
williamr@2
   220
parsed to provide the supplier, supported media ids, supported mime types, supported file extensions,
williamr@2
   221
and supported header data matches.
williamr@2
   222
williamr@2
   223
Notes for Format Plugin developers:
williamr@2
   224
@code
williamr@2
   225
The opaque data section of the ECom plugin resource file must be in the format:
williamr@2
   226
williamr@2
   227
opaque_data = "<?>Data 1<?>Data 2<?>Data 3<?>Data 4[...]<?>Data N";
williamr@2
   228
williamr@2
   229
The <?> preceding the data determines the meaning of the data.  The following are the possible tags:
williamr@2
   230
williamr@2
   231
	<s> - Supplier
williamr@2
   232
	<i> - Media Id
williamr@2
   233
	<m> - Mime Type
williamr@2
   234
	<e> - File Extension
williamr@2
   235
	<h> - Header Data
williamr@2
   236
	<c> - Custom Interfaces
williamr@2
   237
williamr@2
   238
UIDs must always be in hex in the format '0x12345678', must include the '0x' and be 10 characters long
williamr@2
   239
@endcode
williamr@2
   240
williamr@2
   241
@since 7.0s
williamr@2
   242
*/
williamr@2
   243
class CMMFFormatImplementationInformation : public CMMFPluginImplementationInformation, MTaggedDataParserClient
williamr@2
   244
	{
williamr@2
   245
public:
williamr@2
   246
	/**
williamr@2
   247
	Constructs a new format implementation information object.
williamr@2
   248
williamr@2
   249
	@param  aImplInfo
williamr@2
   250
	        The ECOM implementation information
williamr@2
   251
williamr@2
   252
	@return The new object created.
williamr@2
   253
williamr@2
   254
	@since 7.0s
williamr@2
   255
	*/
williamr@2
   256
	static CMMFFormatImplementationInformation* NewL(const CImplementationInformation& aImplInfo);
williamr@2
   257
williamr@2
   258
	/**
williamr@2
   259
	Constructs a new format implementation information object.
williamr@2
   260
williamr@2
   261
	@param  aImplInfo
williamr@2
   262
	        The ECOM implementation information
williamr@2
   263
williamr@2
   264
	@return The new object created. Note that this will be on the cleanup stack.
williamr@2
   265
williamr@2
   266
	@since  7.0s
williamr@2
   267
	*/
williamr@2
   268
	static CMMFFormatImplementationInformation* NewLC(const CImplementationInformation& aImplInfo);
williamr@2
   269
williamr@2
   270
	/** 
williamr@2
   271
	Destructor 
williamr@2
   272
	*/
williamr@2
   273
	virtual ~CMMFFormatImplementationInformation();
williamr@2
   274
williamr@2
   275
	/**
williamr@2
   276
	Returns the array of supported file extensions.
williamr@2
   277
williamr@2
   278
	@return The array of file extensions.
williamr@2
   279
	@since  7.0s
williamr@2
   280
	*/
williamr@2
   281
	IMPORT_C const CDesC8Array& SupportedFileExtensions() const;
williamr@2
   282
williamr@2
   283
	/**
williamr@2
   284
	Returns the array of supported mime types.
williamr@2
   285
williamr@2
   286
	@return The array of mime types.
williamr@2
   287
williamr@2
   288
	@since  7.0s
williamr@2
   289
	*/
williamr@2
   290
	IMPORT_C const CDesC8Array& SupportedMimeTypes() const;
williamr@2
   291
williamr@2
   292
	/**
williamr@2
   293
	Returns the array of supported header data matches.
williamr@2
   294
williamr@2
   295
	@return The array of header data.
williamr@2
   296
	@since 7.0s
williamr@2
   297
	*/
williamr@2
   298
	IMPORT_C const CDesC8Array& SupportedHeaderData() const;
williamr@2
   299
williamr@2
   300
	/**
williamr@2
   301
	Tests whether this format provides support for the specified file extension, aFileExtension.
williamr@2
   302
williamr@2
   303
	@param  aFileExtension
williamr@2
   304
	        The requested file extension. Must be the extension only, and contain the dot '.'
williamr@2
   305
williamr@2
   306
	@return A boolean indicating if the specified file extension is supported. ETrue if this format provides 
williamr@2
   307
	        the required support, EFalse if it does not.
williamr@2
   308
williamr@2
   309
	@since  7.0s
williamr@2
   310
	*/
williamr@2
   311
	IMPORT_C TBool SupportsFileExtension(const TDesC8& aFileExtension) const;
williamr@2
   312
williamr@2
   313
	/**
williamr@2
   314
	Tests whether this format provides support for aMimeType.
williamr@2
   315
williamr@2
   316
	@param  aMimeType
williamr@2
   317
	        The requested mime type.
williamr@2
   318
williamr@2
   319
	@return A boolean indicating if the format is supported. ETrue if this format provides the required support, EFalse if not.
williamr@2
   320
williamr@2
   321
	@since 7.0s
williamr@2
   322
	*/
williamr@2
   323
	IMPORT_C TBool SupportsMimeType(const TDesC8& aMimeType) const;
williamr@2
   324
williamr@2
   325
	/**
williamr@2
   326
	Tests whether this format provides support for aHeaderData.
williamr@2
   327
	aHeaderData is searched for each chunk supported by this format.
williamr@2
   328
williamr@2
   329
	@param	aHeaderData
williamr@2
   330
	        The requested header data.
williamr@2
   331
	        
williamr@2
   332
	@return A boolean indicating if aHeaderData is supported. ETrue if this format provides the required support, EFalse if not.
williamr@2
   333
williamr@2
   334
	@since  7.0s
williamr@2
   335
	*/
williamr@2
   336
	IMPORT_C TBool SupportsHeaderDataL(const TDesC8& aHeaderData) const;
williamr@2
   337
williamr@2
   338
	/**
williamr@2
   339
	Tests whether this format provides support for Custom Interfaces.
williamr@2
   340
        
williamr@2
   341
	@return A boolean indicating if Custom Interfaces are supported. ETrue if this format provides the required support, EFalse if not.
williamr@2
   342
	*/
williamr@2
   343
	IMPORT_C TBool SupportsCustomInterfaces() const;
williamr@2
   344
williamr@2
   345
protected:
williamr@2
   346
williamr@2
   347
	/** 
williamr@2
   348
	Constructor 
williamr@2
   349
	*/
williamr@2
   350
	CMMFFormatImplementationInformation();
williamr@2
   351
williamr@2
   352
	/** 
williamr@2
   353
	2nd phase constructor 
williamr@2
   354
	*/
williamr@2
   355
	void ConstructL(const CImplementationInformation& aImplInfo);
williamr@2
   356
williamr@2
   357
	/** 
williamr@2
   358
	Adds a file extension to the array of extensions supported by this format. 
williamr@2
   359
	*/
williamr@2
   360
	void AddFileExtensionL(const TDesC8& aData);
williamr@2
   361
williamr@2
   362
	/**
williamr@2
   363
	Adds a mime type to the array of types supported by this format.
williamr@2
   364
	*/
williamr@2
   365
	void AddMimeTypeL(const TDesC8& aData);
williamr@2
   366
williamr@2
   367
	/** 
williamr@2
   368
	Adds a chunk of header data to the array of chunks supported by this format.
williamr@2
   369
	*/
williamr@2
   370
	void AddHeaderDataL(const TDesC8& aData);
williamr@2
   371
williamr@2
   372
	/** 
williamr@2
   373
	from MTaggedDataParserClient 
williamr@2
   374
	*/
williamr@2
   375
	void ProcessTaggedDataL(const TDesC8& aTag, const TDesC8& aData);
williamr@2
   376
williamr@2
   377
private:
williamr@2
   378
	class CBody;
williamr@2
   379
	/** 
williamr@2
   380
	CMMFFormatImplementationInformation body
williamr@2
   381
	*/
williamr@2
   382
	CBody* iBody;
williamr@2
   383
	};
williamr@2
   384
williamr@2
   385
williamr@2
   386
/**
williamr@2
   387
@publishedAll
williamr@2
   388
@released
williamr@2
   389
williamr@2
   390
Contains controller plugin information retrieved from the ECom registry.
williamr@2
   391
williamr@2
   392
The object is created using a CImplementationInformation object retrieved from the ECom registry.
williamr@2
   393
All relevant data is copied out of the CImplementationInformation object, and its opaque data is
williamr@2
   394
parsed to provide the supplier, supported media IDs.
williamr@2
   395
williamr@2
   396
Notes for Format Plugin developers:
williamr@2
   397
The exact formats supported by the controller plugin are calculated by:
williamr@2
   398
williamr@2
   399
1. The formats supported by the controller plugin itself must be declared in separate entries in the
williamr@2
   400
controller plugin resource file.  Two interface UIDs should be defined by the plugin writer - one
williamr@2
   401
for the play formats supported, the other for the record formats supported.  The play formats are
williamr@2
   402
then listed as implementations of the play format interface uid, and likewise the record formats.
williamr@2
   403
williamr@2
   404
2. Format plugins (CMMFFormatEncode and CMMFFormatDecode) declare which controller plugin they
williamr@2
   405
extend.  ECom is search for the format plugins that extend the controller plugin, and they
williamr@2
   406
are added to the list.
williamr@2
   407
williamr@2
   408
The opaque data section of the ECom plugin resource file must be in the format:
williamr@2
   409
@code
williamr@2
   410
williamr@2
   411
opaque_data = "<?>Data 1<?>Data 2<?>Data 3<?>Data 4[...]<?>Data N";
williamr@2
   412
williamr@2
   413
The <?> preceding the data determines the meaning of the data.  The following are the possible tags:
williamr@2
   414
williamr@2
   415
	<s> - Supplier - must be only one
williamr@2
   416
	<i> - Media Id
williamr@2
   417
	<p> - UID of play format 'interface' - must be only one
williamr@2
   418
	<r> - UID of record format 'interface' - must be only one
williamr@2
   419
williamr@2
   420
UIDs must always be in hex in the format '0x12345678', must include the '0x' and be 10 characters long.
williamr@2
   421
@endcode
williamr@2
   422
williamr@2
   423
@since 7.0s
williamr@2
   424
*/
williamr@2
   425
class CMMFControllerImplementationInformation : public CMMFPluginImplementationInformation, MTaggedDataParserClient
williamr@2
   426
	{
williamr@2
   427
public:
williamr@2
   428
williamr@2
   429
	/**
williamr@2
   430
	Constructs a new controller implementation information object.
williamr@2
   431
williamr@2
   432
	@param  aImplInfo
williamr@2
   433
	        The ECOM implementation information.
williamr@2
   434
williamr@2
   435
	@return The new object created.
williamr@2
   436
	
williamr@2
   437
	@internalTechnology
williamr@2
   438
williamr@2
   439
	@since  7.0s
williamr@2
   440
	*/
williamr@2
   441
	static CMMFControllerImplementationInformation* NewL(const CImplementationInformation& aImplInfo);
williamr@2
   442
williamr@2
   443
	/**
williamr@2
   444
	Constructs a new controller implementation information object.
williamr@2
   445
williamr@2
   446
	Note: 
williamr@2
   447
	The new object will be on the cleanup stack.
williamr@2
   448
williamr@2
   449
	@param  aImplInfo
williamr@2
   450
	        The ECOM implementation information
williamr@2
   451
williamr@2
   452
	@return The new object created.
williamr@2
   453
	
williamr@2
   454
	@internalTechnology
williamr@2
   455
williamr@2
   456
	@since  7.0s
williamr@2
   457
	*/
williamr@2
   458
	static CMMFControllerImplementationInformation* NewLC(const CImplementationInformation& aImplInfo);
williamr@2
   459
williamr@2
   460
	/**
williamr@2
   461
	Constructs a new controller implementation information object.
williamr@2
   462
williamr@2
   463
	@param  aUid
williamr@2
   464
	        The Uid of the controller to obtain controller implementation information
williamr@2
   465
williamr@2
   466
	@return The new object created.
williamr@2
   467
williamr@2
   468
	@since  7.0s
williamr@2
   469
	*/
williamr@2
   470
	IMPORT_C static CMMFControllerImplementationInformation* NewL(TUid aUid);
williamr@2
   471
williamr@2
   472
	/**
williamr@2
   473
	Destructor.
williamr@2
   474
	
williamr@2
   475
	@internalTechnology
williamr@2
   476
	*/
williamr@2
   477
	~CMMFControllerImplementationInformation();
williamr@2
   478
williamr@2
   479
	/**
williamr@2
   480
	Returns the array of play formats supported by this controller.
williamr@2
   481
williamr@2
   482
	@return The play formats supported.
williamr@2
   483
williamr@2
   484
	@since  7.0s
williamr@2
   485
	*/
williamr@2
   486
	IMPORT_C const RMMFFormatImplInfoArray& PlayFormats() const;
williamr@2
   487
williamr@2
   488
	/**
williamr@2
   489
	Returns the array of record formats supported by this controller.
williamr@2
   490
williamr@2
   491
	@return The record formats supported.
williamr@2
   492
williamr@2
   493
	@since  7.0s
williamr@2
   494
	*/
williamr@2
   495
	IMPORT_C const RMMFFormatImplInfoArray& RecordFormats() const;
williamr@2
   496
williamr@2
   497
	/**
williamr@2
   498
	Returns the heap space required by this controller.
williamr@2
   499
williamr@2
   500
	@return The heap space required.
williamr@2
   501
williamr@2
   502
	@since  7.0s
williamr@2
   503
	*/
williamr@2
   504
	IMPORT_C TUint HeapSpaceRequired() const;
williamr@4
   505
williamr@2
   506
	/**
williamr@2
   507
	Queries the ECom registry for the play formats supported. 
williamr@2
   508
	
williamr@2
   509
	@internalTechnology
williamr@2
   510
	*/
williamr@2
   511
	void GetPlayFormatsL();
williamr@2
   512
williamr@2
   513
	/** 
williamr@2
   514
	Queries the ECom registry for the record formats supported.
williamr@2
   515
	
williamr@2
   516
	@internalTechnology
williamr@2
   517
	*/
williamr@2
   518
	void GetRecordFormatsL();
williamr@2
   519
	
williamr@2
   520
	/**
williamr@2
   521
	Returns the uri schemes of this plugin.
williamr@2
   522
williamr@2
   523
	@return The array of uri schemes.
williamr@2
   524
williamr@2
   525
	@internalTechnology
williamr@2
   526
	*/
williamr@2
   527
	IMPORT_C const CDesC8Array& SupportedUriSchemes() const;
williamr@2
   528
	
williamr@2
   529
	/**
williamr@2
   530
	Tests whether the plugin supports aUriScheme.
williamr@2
   531
	
williamr@2
   532
	@param  aUriScheme
williamr@2
   533
	        The required Uri Scheme.
williamr@2
   534
williamr@2
   535
	@return A boolean indicating if the plugin supports aUriScheme. ETrue if this plugin supports aUriScheme, EFalse if not.
williamr@2
   536
williamr@2
   537
	@internalTechnology
williamr@2
   538
	*/
williamr@2
   539
	IMPORT_C TBool SupportsUriScheme(const TDesC8& aUriScheme) const;
williamr@2
   540
	
williamr@2
   541
	/**
williamr@2
   542
	Tests whether the controller plugin supports url
williamr@2
   543
		
williamr@2
   544
	@return A boolean indicating if the plugin supports url. ETrue for uri supporting controller, EFalse if not.
williamr@2
   545
	
williamr@2
   546
	@internalTechnology
williamr@2
   547
	*/
williamr@2
   548
	IMPORT_C TBool SupportsNetworkCapability() const;
williamr@2
   549
	
williamr@2
   550
	/**
williamr@2
   551
	Sets the uri priority of this controller
williamr@2
   552
	
williamr@2
   553
	@param  aUriPriority
williamr@2
   554
	        The Uri priority to be assigned.
williamr@2
   555
	        
williamr@2
   556
	@internalTechnology
williamr@2
   557
	*/
williamr@2
   558
	IMPORT_C void SetUriPriority(TInt aUriPriority);
williamr@2
   559
	
williamr@2
   560
	/**
williamr@2
   561
	Retrieves the uri priority of this controller. 
williamr@2
   562
	Higher priority implies greater number. ie UriPriority() returning 3 
williamr@2
   563
	has higher prioirty than UriPriority() returning 1.
williamr@2
   564
	
williamr@2
   565
	@return  The assigned Uri priority.
williamr@2
   566
	
williamr@2
   567
	@internalTechnology
williamr@2
   568
	*/
williamr@2
   569
	IMPORT_C TInt UriPriority() const;
williamr@2
   570
	
williamr@2
   571
	/**
williamr@2
   572
	Check whether the controller plugin supports secure DRM process mode
williamr@2
   573
		
williamr@2
   574
	@return A boolean indicating if the plugin supports secure DRM process mode. 
williamr@2
   575
	ETrue for secure DRM process mode supporting controller, EFalse if not.
williamr@2
   576
	
williamr@2
   577
	@internalTechnology
williamr@2
   578
	*/
williamr@2
   579
	IMPORT_C TBool SupportsSecureDRMProcessMode() const;
williamr@4
   580
williamr@4
   581
	/**
williamr@4
   582
	Returns the stack space required by this controller.
williamr@4
   583
williamr@4
   584
	@return The stack space required.
williamr@4
   585
	
williamr@4
   586
	@internalTechnology
williamr@4
   587
	*/
williamr@4
   588
	IMPORT_C TUint StackSize() const;
williamr@2
   589
	
williamr@2
   590
protected:
williamr@2
   591
williamr@2
   592
	/**
williamr@2
   593
	Constructor.
williamr@2
   594
	
williamr@2
   595
	@internalTechnology
williamr@2
   596
	*/
williamr@2
   597
	CMMFControllerImplementationInformation();
williamr@2
   598
williamr@2
   599
	/**
williamr@2
   600
	2nd phase constructor.
williamr@2
   601
	
williamr@2
   602
	@internalTechnology
williamr@2
   603
	*/
williamr@2
   604
	void ConstructL(const CImplementationInformation& aImplInfo);
williamr@2
   605
williamr@2
   606
	/**
williamr@2
   607
	Parses aData to get the collection UID of the play formats supported by this controller.
williamr@2
   608
	
williamr@2
   609
	@internalTechnology
williamr@2
   610
	*/
williamr@2
   611
	void SetPlayFormatCollectionUidL(const TDesC8& aData);
williamr@2
   612
williamr@2
   613
	/**
williamr@2
   614
	Parses aData to get the collection UID of the record formats supported by this controller.
williamr@2
   615
	
williamr@2
   616
	@internalTechnology
williamr@2
   617
	*/
williamr@2
   618
	void SetRecordFormatCollectionUidL(const TDesC8& aData);
williamr@2
   619
williamr@2
   620
	/**
williamr@2
   621
	Parses aData to get the size of the stack the controller requires.
williamr@2
   622
	
williamr@2
   623
	@internalTechnology
williamr@2
   624
	*/
williamr@2
   625
	void SetHeapSizeL(const TDesC8& aData);
williamr@2
   626
williamr@2
   627
	/**
williamr@2
   628
	From MTaggedDataParserClient.
williamr@2
   629
	*/
williamr@2
   630
	void ProcessTaggedDataL(const TDesC8& aTag, const TDesC8& aData);
williamr@2
   631
williamr@2
   632
	/**
williamr@2
   633
	Queries the ECom registry for:
williamr@2
   634
		- all registry entries with an interface UID of aFormatCollectionUid
williamr@2
   635
		- all format plugins with an interface UID of aFormatPluginCollectionUid (ie CMMFFormatEncode
williamr@2
   636
		  or CMMFFormatDecode) that have the UID of this controller plugin in the default_data field
williamr@2
   637
		  of their ECom resource file.
williamr@2
   638
williamr@2
   639
	CMMFFormatImplementationInformation objects are created for each entry returned, and appended to
williamr@2
   640
	aFormatArray.
williamr@2
   641
williamr@2
   642
	@param  aFormatCollectionUid
williamr@2
   643
	        See above.
williamr@2
   644
	@param  aFormatPluginCollectionUid
williamr@2
   645
	        See above.
williamr@2
   646
	@param  aFormatArray
williamr@2
   647
	        See above.
williamr@2
   648
	        
williamr@2
   649
	@internalTechnology
williamr@2
   650
williamr@2
   651
	@since  7.0s
williamr@2
   652
	*/
williamr@2
   653
	void GetFormatsL(TUid aFormatCollectionUid, TUid aFormatPluginCollectionUid, RMMFFormatImplInfoArray& aFormatArray);
williamr@2
   654
williamr@2
   655
	/**
williamr@2
   656
	Creates CMMFFormatImplementationInformation objects for all CImplementationInformation objects
williamr@2
   657
	in aEcomArray.  Any corrupt objects are ignored.  The objects created are added to aFormatArray.
williamr@2
   658
williamr@2
   659
	@param  aEcomArray
williamr@2
   660
	        See above.
williamr@2
   661
	@param  aFormatArray
williamr@2
   662
	        See above.
williamr@2
   663
	        
williamr@2
   664
	@internalTechnology
williamr@2
   665
williamr@2
   666
	@since  7.0s
williamr@2
   667
	*/
williamr@2
   668
	void AddFormatsSwallowCorruptL(RImplInfoPtrArray& aEcomArray, RMMFFormatImplInfoArray& aFormatArray);
williamr@2
   669
	
williamr@2
   670
	/**
williamr@2
   671
	Sets the Uri Scheme found in opaque data
williamr@2
   672
	
williamr@2
   673
	@param  aUriScheme
williamr@2
   674
			Gives the uri scheme supported by the controller
williamr@2
   675
	
williamr@2
   676
	@internalTechnology
williamr@2
   677
	*/
williamr@2
   678
	void SetUriSchemeL(const TDesC8& aUriScheme);
williamr@2
   679
	
williamr@2
   680
	/**
williamr@2
   681
	Sets the Network capability found in opaque data
williamr@2
   682
	
williamr@2
   683
	@param  aNetworkCapable
williamr@2
   684
			Declares the incapability to support uri if matches to 'yes'. 
williamr@2
   685
			If this is the case, iIsNetworkCtrl is set to EFalse
williamr@2
   686
	
williamr@2
   687
	@internalTechnology
williamr@2
   688
	*/
williamr@2
   689
	void SetNetworkCapabilityL(const TDesC8& aNetworkCapable);
williamr@2
   690
williamr@4
   691
	/**
williamr@4
   692
	Parses aData to get the size of the stack the controller requires.
williamr@4
   693
		
williamr@4
   694
	@internalTechnology
williamr@4
   695
	*/
williamr@4
   696
	void SetStackSizeL(const TDesC8& aData);
williamr@4
   697
williamr@4
   698
williamr@2
   699
private:
williamr@2
   700
williamr@2
   701
	/**
williamr@2
   702
	The play formats supported by this controller.
williamr@2
   703
	*/
williamr@2
   704
	RMMFFormatImplInfoArray iPlayFormats;
williamr@2
   705
williamr@2
   706
	/**
williamr@2
   707
	The record formats supported by this controller.
williamr@2
   708
	*/
williamr@2
   709
	RMMFFormatImplInfoArray iRecordFormats;
williamr@2
   710
williamr@2
   711
	/**
williamr@2
   712
	The interface uid of the resource file definitions of the play formats supported directly by this controller.
williamr@2
   713
	*/
williamr@2
   714
	TUid iPlayFormatCollectionUid;
williamr@2
   715
williamr@2
   716
	/**
williamr@2
   717
	The interface uid of the resource file definitions of the record formats supported directly by this controller.
williamr@2
   718
	*/
williamr@2
   719
	TUid iRecordFormatCollectionUid;
williamr@2
   720
	
williamr@2
   721
	/**
williamr@2
   722
	The heap space required by this controller
williamr@2
   723
	*/
williamr@2
   724
	TUint iHeapSpaceRequired;
williamr@4
   725
		
williamr@2
   726
	/**
williamr@2
   727
	The Uri scheme supported by this plugin
williamr@2
   728
	*/
williamr@2
   729
	CDesC8Array* iUriSchemes;
williamr@2
   730
	
williamr@2
   731
	/**
williamr@2
   732
	The uri priority acquired by this controller
williamr@2
   733
	*/
williamr@2
   734
	TInt iUriPriority;  
williamr@2
   735
	
williamr@2
   736
	/**
williamr@2
   737
	The uri support provided by this controller
williamr@2
   738
	*/
williamr@2
   739
	TBool iIsNetworkCtrl;
williamr@2
   740
	
williamr@2
   741
	/**
williamr@2
   742
	Secure DRM process model supported by this controller
williamr@2
   743
	*/
williamr@2
   744
	TBool  iSupportsSecureDRMProcessMode;
williamr@4
   745
	/**
williamr@4
   746
	The stack space required by this controller
williamr@4
   747
	*/
williamr@4
   748
	TUint iStackSize;		
williamr@2
   749
	};
williamr@2
   750
williamr@2
   751
williamr@2
   752
/**
williamr@2
   753
@publishedAll
williamr@2
   754
williamr@2
   755
Contains the parameters used to select mmf plugins from the ECOM registry.
williamr@2
   756
williamr@2
   757
@released
williamr@2
   758
@since 7.0s
williamr@2
   759
*/
williamr@2
   760
class CMMFPluginSelectionParameters : public CBase
williamr@2
   761
	{
williamr@2
   762
public:
williamr@2
   763
williamr@2
   764
/**
williamr@2
   765
Describes the type of preferred supplier match to be performed on the plugins return from
williamr@2
   766
the ECOM registry.
williamr@2
   767
*/
williamr@2
   768
enum TPreferredSupplierMatchType
williamr@2
   769
	{
williamr@2
   770
williamr@2
   771
	/**	No preferred supplier match will be performed.
williamr@2
   772
	*/
williamr@2
   773
	ENoPreferredSupplierMatch,
williamr@2
   774
williamr@2
   775
	/** Plugins from all suppliers will be returned, but those from the preferred supplier will be first in the list.
williamr@2
   776
	*/
williamr@2
   777
	EPreferredSupplierPluginsFirstInList,
williamr@2
   778
williamr@2
   779
	/** Only plugins from the preferred supplier will be returned.
williamr@2
   780
	*/
williamr@2
   781
	EOnlyPreferredSupplierPluginsReturned
williamr@2
   782
	};
williamr@2
   783
/**
williamr@2
   784
Describes the type of media ID match to be performed on the plugins return from
williamr@2
   785
the ECOM registry.
williamr@2
   786
*/
williamr@2
   787
enum TMediaIdMatchType
williamr@2
   788
	{
williamr@2
   789
williamr@2
   790
	/** No media ID match will be performed.
williamr@2
   791
	*/
williamr@2
   792
	ENoMediaIdMatch,
williamr@2
   793
williamr@2
   794
	/** All plugins that support the media ID supplied will be returned, even those that support
williamr@2
   795
	other media IDs.  For example, if an audio plugin is requested, plugins that support
williamr@2
   796
	audio and video will also be returned.
williamr@2
   797
	*/
williamr@2
   798
	EAllowOtherMediaIds,
williamr@2
   799
williamr@2
   800
	/** Only plugins that support the exact media IDs supplied will be returned.  For example, if an
williamr@2
   801
	audio plugin is requested, plugins that only support audio will be returned
williamr@2
   802
	(ie. no audio/video plugins).
williamr@2
   803
	*/
williamr@2
   804
	EAllowOnlySuppliedMediaIds
williamr@2
   805
	};
williamr@2
   806
williamr@2
   807
public:
williamr@2
   808
williamr@2
   809
	/**
williamr@2
   810
	Destructor.  Resets and destroys all member data.
williamr@2
   811
williamr@2
   812
	@since 7.0s
williamr@2
   813
	*/
williamr@2
   814
	virtual ~CMMFPluginSelectionParameters();
williamr@2
   815
williamr@2
   816
williamr@2
   817
	/**
williamr@2
   818
	Sets the preferred supplier of the plugin.
williamr@2
   819
williamr@2
   820
	@param  aPreferredSupplier
williamr@2
   821
	        The preferred supplier of the plugin.
williamr@2
   822
	@param  aMatchType
williamr@2
   823
	        The type of match to be made.
williamr@2
   824
williamr@2
   825
	@since  7.0s
williamr@2
   826
	*/
williamr@2
   827
	IMPORT_C void SetPreferredSupplierL(const TDesC& aPreferredSupplier, TPreferredSupplierMatchType aMatchType);
williamr@2
   828
williamr@2
   829
	/**
williamr@2
   830
	Sets the media IDs that must be supported by the plugin, for example audio, video etc.
williamr@2
   831
williamr@2
   832
	@param  aMediaIds
williamr@2
   833
	        An array of the media IDs that the selected plugins must support.
williamr@2
   834
	@param  aMatchType
williamr@2
   835
	        The type of match to be made.
williamr@2
   836
williamr@2
   837
	@since  7.0s
williamr@2
   838
	*/
williamr@2
   839
	IMPORT_C void SetMediaIdsL(const RArray<TUid>& aMediaIds, TMediaIdMatchType aMatchType);
williamr@2
   840
williamr@2
   841
	/**
williamr@2
   842
	Returns the preferred supplier.  If no preferred supplier has been set, a blank 
williamr@2
   843
	string will be returned.
williamr@2
   844
	
williamr@2
   845
	@return The preferred supplier
williamr@2
   846
	@since 7.0s
williamr@2
   847
	*/
williamr@2
   848
	IMPORT_C const TDesC& PreferredSupplier() const;
williamr@2
   849
williamr@2
   850
	/**
williamr@2
   851
	Returns the type of preferred supplier match to perform.
williamr@2
   852
williamr@2
   853
	@return The preferred supplier match type.
williamr@2
   854
	@since 7.0s
williamr@2
   855
	*/
williamr@2
   856
	IMPORT_C TPreferredSupplierMatchType PreferredSupplierMatchType() const;
williamr@2
   857
williamr@2
   858
	/**
williamr@2
   859
	Returns the list of media IDs that must be supported by the plugin.
williamr@2
   860
williamr@2
   861
	@return The list of media IDs.
williamr@2
   862
williamr@2
   863
	@since	7.0s
williamr@2
   864
	*/
williamr@2
   865
	IMPORT_C const RArray<TUid>& MediaIds() const;
williamr@2
   866
williamr@2
   867
	/**
williamr@2
   868
	Returns the type of preferred supplier match to perform.
williamr@2
   869
	
williamr@2
   870
	@return The preferred supplier match type.
williamr@2
   871
williamr@2
   872
	@since 7.0s
williamr@2
   873
	*/
williamr@2
   874
	IMPORT_C TMediaIdMatchType MediaIdMatchType() const;
williamr@2
   875
williamr@2
   876
	/**
williamr@2
   877
	Returns the uid of the interface to be searched for plugin matches.
williamr@2
   878
williamr@2
   879
	@return The interface uid.
williamr@2
   880
williamr@2
   881
	@since 7.0s
williamr@2
   882
	*/
williamr@2
   883
	IMPORT_C TUid InterfaceUid() const;
williamr@2
   884
williamr@2
   885
protected:
williamr@2
   886
williamr@2
   887
	/**
williamr@2
   888
	Protected constructor.
williamr@2
   889
williamr@2
   890
	Defaults to setting the TPreferredSupplierMatchType enum to ENoPreferredSupplierMatch and TMediaIdMatchType
williamr@2
   891
	to ENoMediaIdMatch.
williamr@2
   892
williamr@2
   893
	@param  aPluginInterfaceUid
williamr@2
   894
	        The plugin's interface UID.
williamr@2
   895
	*/
williamr@2
   896
	CMMFPluginSelectionParameters(TUid aPluginInterfaceUid);
williamr@2
   897
williamr@2
   898
	/**
williamr@2
   899
	Tests whether the specified media is supported by the plugin.
williamr@2
   900
williamr@2
   901
	@param  aPlugin
williamr@2
   902
	        The media to test.
williamr@2
   903
williamr@2
   904
	@return A boolean indicating if the specified media is supported by the plugin. ETrue if the specified 
williamr@2
   905
	        media is supported by the plugin. EFalse if the specified media is not supported by the plugin.
williamr@2
   906
	*/
williamr@2
   907
	TBool CheckMediaIdSupportL(const CMMFPluginImplementationInformation& aPlugin) const;
williamr@2
   908
private:
williamr@2
   909
	TUid iPluginInterfaceUid;
williamr@2
   910
	HBufC* iPreferredSupplier;
williamr@2
   911
	TPreferredSupplierMatchType iPreferredSupplierMatchType;
williamr@2
   912
	RArray<TUid> iMediaIds;
williamr@2
   913
	TMediaIdMatchType iMediaIdMatchType;
williamr@2
   914
	};
williamr@2
   915
williamr@2
   916
/**
williamr@2
   917
@publishedAll
williamr@2
   918
williamr@2
   919
Defines the format support required.
williamr@2
   920
williamr@2
   921
On construction, the selection parameters are blank, causing all plugins to be returned.
williamr@2
   922
williamr@2
   923
@released
williamr@2
   924
@since 7.0s
williamr@2
   925
*/
williamr@2
   926
class CMMFFormatSelectionParameters : public CBase
williamr@2
   927
	{
williamr@2
   928
public:
williamr@2
   929
/**
williamr@2
   930
Describes the type of match to be performed.
williamr@2
   931
The match types are mutually exclusive.
williamr@2
   932
*/
williamr@2
   933
enum TMatchDataType
williamr@2
   934
	{
williamr@2
   935
williamr@2
   936
	/** All plugins will be selected. This is the default option.
williamr@2
   937
	*/
williamr@2
   938
	EMatchAny,
williamr@2
   939
williamr@2
   940
	/** The match will be based on a file extension.
williamr@2
   941
	*/
williamr@2
   942
	EMatchFileExtension,
williamr@2
   943
williamr@2
   944
	/** The match will be based on a mime type.
williamr@2
   945
	*/
williamr@2
   946
	EMatchMimeType,
williamr@2
   947
williamr@2
   948
	/** The match will be based on a header data.
williamr@2
   949
	*/
williamr@2
   950
	EMatchHeaderData,
williamr@2
   951
	
williamr@2
   952
	/** 
williamr@2
   953
	@publishedPartner
williamr@4
   954
	@released
williamr@2
   955
	
williamr@2
   956
	The match will be based on Uri details.
williamr@2
   957
	*/
williamr@2
   958
	EMatchUri
williamr@2
   959
	};
williamr@2
   960
williamr@2
   961
public:
williamr@2
   962
	
williamr@2
   963
	/**
williamr@2
   964
	Allocates and constructs a new format selection parameter object with blank parameters.
williamr@2
   965
williamr@2
   966
	Calls NewLC().
williamr@2
   967
williamr@2
   968
	@return A new format selection parameter object.
williamr@2
   969
	*/
williamr@2
   970
	IMPORT_C static CMMFFormatSelectionParameters* NewL();
williamr@2
   971
williamr@2
   972
	/**
williamr@2
   973
    Allocates and constructs a new format selection parameter object with blank parameters, placing it on the 
williamr@2
   974
	cleanup stack.
williamr@2
   975
williamr@2
   976
	@return A new format selection parameter object.
williamr@2
   977
	*/
williamr@2
   978
	IMPORT_C static CMMFFormatSelectionParameters* NewLC();
williamr@2
   979
williamr@2
   980
	/**
williamr@2
   981
	Allocates and constructs a new format selection parameter object with the specified parameters.
williamr@2
   982
williamr@2
   983
	@param  aParams
williamr@2
   984
	        The required parameters.
williamr@2
   985
	@return A new format selection parameter object.
williamr@2
   986
	*/
williamr@2
   987
	static CMMFFormatSelectionParameters* NewL(const CMMFFormatSelectionParameters& aParams);
williamr@2
   988
williamr@2
   989
	/**
williamr@2
   990
	Sets this object to match to a file extension.
williamr@2
   991
williamr@2
   992
	aFileName can be a full filename or just an extension.  If there is no dot in the filename
williamr@2
   993
	and it is 5 characters or less in length then it is assumed to be an extension.  If the first
williamr@2
   994
	character of the filename is a dot, it assumed to be an extension.  Otherwise, the filename
williamr@2
   995
	is parsed using TParse to reveal the extension.
williamr@2
   996
williamr@2
   997
	Once the extension has been extracted, it is converted from unicode to utf8 and copied into
williamr@2
   998
	iMatchData.
williamr@2
   999
williamr@2
  1000
	@param  aFileName
williamr@2
  1001
	        The file name to be matched.  Must include the extension.
williamr@2
  1002
williamr@2
  1003
	@since  7.0s
williamr@2
  1004
	*/
williamr@2
  1005
	IMPORT_C void SetMatchToFileNameL(const TDesC& aFileName);
williamr@2
  1006
williamr@2
  1007
	/**
williamr@2
  1008
	Sets this object to match to a file extension specified by a URI
williamr@2
  1009
williamr@2
  1010
	Once the extension has been extracted, it is copied into iMatchData.
williamr@2
  1011
williamr@2
  1012
   	@param  aUri
williamr@2
  1013
	        The URI containing the file name to be matched.  Must include the extension.
williamr@2
  1014
williamr@2
  1015
	@since  7.0s
williamr@2
  1016
	*/
williamr@2
  1017
	IMPORT_C void SetMatchToUriL(const TDesC& aUri);
williamr@2
  1018
	
williamr@2
  1019
	/**
williamr@2
  1020
	@publishedPartner
williamr@4
  1021
	@released
williamr@2
  1022
	
williamr@2
  1023
	Sets this object to match to uri scheme and file extension specified by a URI.
williamr@2
  1024
	
williamr@2
  1025
	The Uri scheme and extension are saved in iMatchReqData. Further,iMatchData contains uri extension, 
williamr@2
  1026
	iMatchUriScheme contains uri scheme.
williamr@2
  1027
williamr@2
  1028
	@param  aUri
williamr@2
  1029
	        The URI containing the scheme and uri extension to be matched. 
williamr@2
  1030
williamr@2
  1031
	*/
williamr@2
  1032
	IMPORT_C void SetMatchToUriSupportL(const TDesC& aUri);
williamr@2
  1033
	
williamr@2
  1034
	/**
williamr@2
  1035
	Sets this object to match to a MIME type.
williamr@2
  1036
	
williamr@2
  1037
	@param  aMimeType
williamr@2
  1038
	        The mime type to match.
williamr@2
  1039
williamr@2
  1040
	@since  7.0s
williamr@2
  1041
	*/
williamr@2
  1042
	IMPORT_C void SetMatchToMimeTypeL(const TDesC8& aMimeType);
williamr@2
  1043
williamr@2
  1044
	/**
williamr@2
  1045
	Sets this object to match to a pattern in header data.
williamr@2
  1046
	
williamr@2
  1047
	@param  aHeaderData
williamr@2
  1048
	        The header of the file in question.  This header data will be matched
williamr@2
  1049
	        against the match patterns provided by the plugins.
williamr@2
  1050
williamr@2
  1051
	@since  7.0s
williamr@2
  1052
	*/
williamr@2
  1053
	IMPORT_C void SetMatchToHeaderDataL(const TDesC8& aHeaderData);
williamr@2
  1054
williamr@2
  1055
	/**
williamr@2
  1056
	Returns the data used to perform the plugin match.
williamr@2
  1057
	
williamr@2
  1058
	@return The match data.
williamr@2
  1059
williamr@2
  1060
	@since  7.0s
williamr@2
  1061
	*/
williamr@2
  1062
	IMPORT_C const TDesC8& MatchData() const;
williamr@2
  1063
	
williamr@2
  1064
	/**
williamr@2
  1065
	@publishedPartner
williamr@4
  1066
	@released
williamr@2
  1067
	
williamr@2
  1068
	Returns the uri scheme used to perform the plugin match.
williamr@2
  1069
	
williamr@2
  1070
	@return The uri scheme.
williamr@2
  1071
williamr@2
  1072
	*/
williamr@2
  1073
	IMPORT_C const TDesC8& MatchUriScheme() const;
williamr@2
  1074
williamr@2
  1075
	/**
williamr@2
  1076
	Returns the type of the data used to perform the plugin match.
williamr@2
  1077
williamr@2
  1078
	@return The match data type.
williamr@2
  1079
williamr@2
  1080
	@since  7.0s
williamr@2
  1081
	*/
williamr@2
  1082
	IMPORT_C TMatchDataType MatchDataType() const;
williamr@2
  1083
	
williamr@2
  1084
	/**
williamr@2
  1085
	Destructor.
williamr@2
  1086
	*/
williamr@2
  1087
	virtual ~CMMFFormatSelectionParameters();
williamr@2
  1088
protected:
williamr@2
  1089
williamr@2
  1090
	/**
williamr@2
  1091
	Protected constructor.
williamr@2
  1092
	*/
williamr@2
  1093
	CMMFFormatSelectionParameters();
williamr@2
  1094
	void ConstructL(const CMMFFormatSelectionParameters& aParams);
williamr@2
  1095
williamr@2
  1096
private:
williamr@2
  1097
	CMatchData* iMatchReqData;
williamr@2
  1098
	TMatchDataType iMatchDataType;
williamr@2
  1099
	};
williamr@2
  1100
williamr@2
  1101
williamr@2
  1102
williamr@2
  1103
/**
williamr@2
  1104
@publishedAll
williamr@2
  1105
@released
williamr@2
  1106
williamr@2
  1107
Contains the parameters used to select controller plugins from the ECOM registry.
williamr@2
  1108
williamr@2
  1109
@since  7.0s
williamr@2
  1110
*/
williamr@2
  1111
class CMMFControllerPluginSelectionParameters : public CMMFPluginSelectionParameters
williamr@2
  1112
	{
williamr@2
  1113
public:
williamr@2
  1114
williamr@2
  1115
	/**
williamr@2
  1116
	Constructs a new controller selection parameters object.
williamr@2
  1117
williamr@2
  1118
	@return The new object created.
williamr@2
  1119
williamr@2
  1120
	@since  7.0s
williamr@2
  1121
	*/
williamr@2
  1122
	IMPORT_C static CMMFControllerPluginSelectionParameters* NewL();
williamr@2
  1123
williamr@2
  1124
	/**
williamr@2
  1125
	Construct a new controller selection parameters object.
williamr@2
  1126
	
williamr@2
  1127
	@return The new object created.  Note that the new object will be left on the cleanup stack.
williamr@2
  1128
williamr@2
  1129
	@since  7.0s
williamr@2
  1130
	*/
williamr@2
  1131
	IMPORT_C static CMMFControllerPluginSelectionParameters* NewLC();
williamr@2
  1132
williamr@2
  1133
	/**
williamr@2
  1134
	Sets the play format support required.
williamr@2
  1135
williamr@2
  1136
	Note:
williamr@2
  1137
	The play formats supported by the controller plugins will only be retrieved if
williamr@2
  1138
	this method is called.  To get all the play formats supported by the system, call this
williamr@2
  1139
	with a 'blank' CMMFFormatSelectionParameters object.
williamr@2
  1140
williamr@2
  1141
	@param  aRequiredSupport
williamr@2
  1142
	        The play format support required.
williamr@2
  1143
williamr@2
  1144
	@since  7.0s
williamr@2
  1145
	*/
williamr@2
  1146
	IMPORT_C void SetRequiredPlayFormatSupportL(const CMMFFormatSelectionParameters& aRequiredSupport);
williamr@2
  1147
williamr@2
  1148
	/**
williamr@2
  1149
	Sets the record format support required.
williamr@2
  1150
williamr@2
  1151
	Note:
williamr@2
  1152
	The record formats supported by the controller plugins will only be retrieved if
williamr@2
  1153
	this method is called.  To get all the record formats supported by the system, call this
williamr@2
  1154
	with a 'blank' CMMFFormatSelectionParameters object.
williamr@2
  1155
williamr@2
  1156
	@param  aRequiredSupport
williamr@2
  1157
	        The record format support required.
williamr@2
  1158
williamr@2
  1159
	@return The new object created.
williamr@2
  1160
williamr@2
  1161
	@since  7.0s
williamr@2
  1162
	*/
williamr@2
  1163
	IMPORT_C void SetRequiredRecordFormatSupportL(const CMMFFormatSelectionParameters& aRequiredSupport);
williamr@2
  1164
williamr@2
  1165
	/**
williamr@2
  1166
	Retrieves all controller plugins that support the requirements of the caller.
williamr@2
  1167
williamr@2
  1168
	@param  aImplementations	
williamr@2
  1169
	        After this method returns, this array will contain all the
williamr@2
  1170
	        controller plugins that support the caller's requirements.
williamr@2
  1171
	        Note: The array will be emptied by this method.
williamr@2
  1172
williamr@2
  1173
	@since  7.0s
williamr@2
  1174
	*/
williamr@2
  1175
	IMPORT_C virtual void ListImplementationsL(RMMFControllerImplInfoArray& aImplementations) const;
williamr@2
  1176
	
williamr@2
  1177
	/** 
williamr@2
  1178
	Destructor
williamr@2
  1179
	*/
williamr@2
  1180
	virtual ~CMMFControllerPluginSelectionParameters();
williamr@2
  1181
protected:
williamr@2
  1182
	CMMFControllerPluginSelectionParameters();
williamr@2
  1183
	void MatchImplementationToSelectParamsL(RMMFControllerImplInfoArray& aImplementations, const CMMFControllerImplementationInformation& aPlugin, TInt& aArrayPos) const;
williamr@2
  1184
	TInt CheckPreferredSupplierL(RMMFControllerImplInfoArray& aImplementations, const CMMFControllerImplementationInformation& aPlugin) const;
williamr@2
  1185
	TBool CheckFormatSupportL(CMMFFormatSelectionParameters* aSelectParams, const RMMFFormatImplInfoArray& aFormats) const;
williamr@2
  1186
	/**
williamr@2
  1187
	Checks the given Controller for uri support. Uri support may be there 
williamr@2
  1188
	if either requiredscheme or extension matches with that given controller
williamr@2
  1189
	
williamr@2
  1190
	@param  aSelectParams 
williamr@2
  1191
			Describes the selection parameter which a controller needs to 
williamr@2
  1192
			support in order to be selected
williamr@2
  1193
			
williamr@2
  1194
	@param	aPlugin
williamr@2
  1195
			The controller plugin which is checked for uri support 
williamr@2
  1196
			
williamr@2
  1197
	@param	aFormats
williamr@2
  1198
			The play or record formats looked for extension match
williamr@2
  1199
	*/
williamr@2
  1200
	TBool CheckUriSupport(CMMFFormatSelectionParameters* aSelectParams, CMMFControllerImplementationInformation* aPlugin, const RMMFFormatImplInfoArray& aFormats) const;
williamr@2
  1201
williamr@2
  1202
protected:
williamr@2
  1203
	/**
williamr@2
  1204
	The required play format support
williamr@2
  1205
	*/
williamr@2
  1206
	CMMFFormatSelectionParameters* iRequiredPlayFormatSupport;
williamr@2
  1207
	
williamr@2
  1208
	/**
williamr@2
  1209
	The required record format support
williamr@2
  1210
	*/
williamr@2
  1211
	CMMFFormatSelectionParameters* iRequiredRecordFormatSupport;
williamr@2
  1212
	};
williamr@2
  1213
williamr@2
  1214
/**
williamr@2
  1215
@publishedAll
williamr@2
  1216
@released
williamr@2
  1217
williamr@2
  1218
Contains the parameters used to select controller plugins which support SecureDRM model 
williamr@2
  1219
from the ECOM registry. Controller plugins which support SecureDRM model allow play back of DRM-protected
williamr@2
  1220
content by client processes without DRM capability. In such case the controller will be loaded in a separate secure DRM process.
williamr@2
  1221
*/
williamr@2
  1222
class CMMFControllerSecureDrmPluginSelectionParameters : public CMMFControllerPluginSelectionParameters
williamr@2
  1223
	{
williamr@2
  1224
williamr@2
  1225
public:
williamr@2
  1226
	/**
williamr@2
  1227
	Constructs a new controller selection parameters object.
williamr@2
  1228
williamr@2
  1229
	@return The new object created.
williamr@2
  1230
	*/
williamr@2
  1231
	IMPORT_C static CMMFControllerSecureDrmPluginSelectionParameters* NewL();
williamr@2
  1232
williamr@2
  1233
	/**
williamr@2
  1234
	Construct a new controller selection parameters object.
williamr@2
  1235
	
williamr@2
  1236
	@return The new object created.  Note that the new object will be left on the cleanup stack.
williamr@2
  1237
	*/
williamr@2
  1238
	IMPORT_C static CMMFControllerSecureDrmPluginSelectionParameters* NewLC();
williamr@2
  1239
	
williamr@2
  1240
	/**
williamr@2
  1241
	Retrieves all controller plugins that support SecureDRM model and the requirements of the caller.
williamr@2
  1242
williamr@2
  1243
	@param  aImplementations	
williamr@2
  1244
	        After this method returns, this array will contain all the
williamr@2
  1245
	        controller plugins that support the caller's requirements.
williamr@2
  1246
	        Note: The array will be emptied by this method and SecureDRM model.
williamr@2
  1247
	*/
williamr@2
  1248
	IMPORT_C virtual void ListImplementationsL(RMMFControllerImplInfoArray& aImplementations) const;
williamr@2
  1249
williamr@2
  1250
	/** 
williamr@2
  1251
	Destructor
williamr@2
  1252
	*/
williamr@2
  1253
	virtual ~CMMFControllerSecureDrmPluginSelectionParameters() {};
williamr@2
  1254
protected:
williamr@2
  1255
	CMMFControllerSecureDrmPluginSelectionParameters();
williamr@2
  1256
	};
williamr@2
  1257
williamr@2
  1258
/**
williamr@2
  1259
@publishedAll
williamr@2
  1260
@released
williamr@2
  1261
williamr@2
  1262
Abstract class used to contain the parameters used to select format plugins from the ECOM registry.
williamr@2
  1263
williamr@2
  1264
Note: 
williamr@2
  1265
The classes CMMFFormatEncodePluginSelectionParamters and CMMFFormatDecodePluginSelectionParameters
williamr@2
  1266
should be used to list and select format plugin implementations.
williamr@2
  1267
williamr@2
  1268
@since  7.0s
williamr@2
  1269
*/
williamr@2
  1270
class CMMFFormatPluginSelectionParameters : public CMMFPluginSelectionParameters
williamr@2
  1271
	{
williamr@2
  1272
public:
williamr@2
  1273
williamr@2
  1274
	/**
williamr@2
  1275
	Retrieves all format plugins that support the requirements of the caller.
williamr@2
  1276
williamr@2
  1277
	@param  aImplementations
williamr@2
  1278
	        After this function returns, this array will contain all the
williamr@2
  1279
	        format plugins that support the caller's requirements.
williamr@2
  1280
	        Note: The array will be emptied by this method.
williamr@2
  1281
williamr@2
  1282
	@since  7.0s
williamr@2
  1283
	*/
williamr@2
  1284
	IMPORT_C void ListImplementationsL(RMMFFormatImplInfoArray& aImplementations) const;
williamr@2
  1285
williamr@2
  1286
	/**
williamr@2
  1287
	Sets the format support required.
williamr@2
  1288
williamr@2
  1289
	@param  aRequiredSupport
williamr@2
  1290
	        The format support required.
williamr@2
  1291
williamr@2
  1292
	@since  7.0s
williamr@2
  1293
	*/
williamr@2
  1294
	IMPORT_C void SetRequiredFormatSupportL(const CMMFFormatSelectionParameters& aRequiredSupport);
williamr@2
  1295
williamr@2
  1296
	/**
williamr@2
  1297
	Destructor.
williamr@2
  1298
	*/
williamr@2
  1299
	virtual ~CMMFFormatPluginSelectionParameters();
williamr@2
  1300
protected:
williamr@2
  1301
	/**
williamr@2
  1302
	Protected constructor.
williamr@2
  1303
	*/
williamr@2
  1304
	CMMFFormatPluginSelectionParameters(TUid aInterfaceUid);
williamr@2
  1305
williamr@2
  1306
	void MatchImplementationToSelectParamsL(RMMFFormatImplInfoArray& aImplementations, const CMMFFormatImplementationInformation& aPlugin, TInt& aArrayPos) const;
williamr@2
  1307
	TInt CheckPreferredSupplierL(RMMFFormatImplInfoArray& aImplementations, const CMMFFormatImplementationInformation& aPlugin) const;
williamr@2
  1308
	TBool CheckFormatSupportL(const CMMFFormatImplementationInformation& aPlugin) const;
williamr@2
  1309
protected:
williamr@2
  1310
	/**
williamr@2
  1311
	The format support required
williamr@2
  1312
	*/
williamr@2
  1313
	CMMFFormatSelectionParameters* iRequiredFormatSupport;
williamr@2
  1314
	};
williamr@2
  1315
williamr@2
  1316
/**
williamr@2
  1317
@publishedAll
williamr@2
  1318
@released
williamr@2
  1319
williamr@2
  1320
Class used to list and select plugins implementing the CMMFFormatEncode interface.
williamr@2
  1321
williamr@2
  1322
@since 7.0s
williamr@2
  1323
*/
williamr@2
  1324
class CMMFFormatEncodePluginSelectionParameters : public CMMFFormatPluginSelectionParameters
williamr@2
  1325
	{
williamr@2
  1326
public:
williamr@2
  1327
williamr@2
  1328
	/**
williamr@2
  1329
	Construct a new format encode selection parameters object.
williamr@2
  1330
	
williamr@2
  1331
	@return The new object created.
williamr@2
  1332
williamr@2
  1333
	@since  7.0s
williamr@2
  1334
	*/
williamr@2
  1335
	IMPORT_C static CMMFFormatEncodePluginSelectionParameters* NewL();
williamr@2
  1336
williamr@2
  1337
	/**
williamr@2
  1338
	Constructs a new format encode selection parameters object.
williamr@2
  1339
williamr@2
  1340
	@return The new object created.  Note that the new object will be left on the cleanup stack.
williamr@2
  1341
williamr@2
  1342
	@since  7.0s
williamr@2
  1343
	*/
williamr@2
  1344
	IMPORT_C static CMMFFormatEncodePluginSelectionParameters* NewLC();
williamr@2
  1345
protected:
williamr@2
  1346
	/**
williamr@2
  1347
	Protected constructor.
williamr@2
  1348
	*/
williamr@2
  1349
	CMMFFormatEncodePluginSelectionParameters();
williamr@2
  1350
	};
williamr@2
  1351
williamr@2
  1352
williamr@2
  1353
/**
williamr@2
  1354
@publishedAll
williamr@2
  1355
@released
williamr@2
  1356
williamr@2
  1357
Class used to list and select plugins implementing the CMMFFormatDecode interface.
williamr@2
  1358
williamr@2
  1359
@since 7.0s
williamr@2
  1360
*/
williamr@2
  1361
class CMMFFormatDecodePluginSelectionParameters : public CMMFFormatPluginSelectionParameters
williamr@2
  1362
	{
williamr@2
  1363
public:
williamr@2
  1364
williamr@2
  1365
	/**
williamr@2
  1366
	Constructs a new format decode selection parameters object.
williamr@2
  1367
williamr@2
  1368
	@return The new object created.
williamr@2
  1369
	
williamr@2
  1370
	@since  7.0s
williamr@2
  1371
	*/
williamr@2
  1372
	IMPORT_C static CMMFFormatDecodePluginSelectionParameters* NewL();
williamr@2
  1373
williamr@2
  1374
	/**
williamr@2
  1375
	Constructs a new format decode selection parameters object.
williamr@2
  1376
williamr@2
  1377
	@return The new object created. Note that the new object will be left on the cleanup stack.
williamr@2
  1378
williamr@2
  1379
	@since  7.0s
williamr@2
  1380
	*/
williamr@2
  1381
	IMPORT_C static CMMFFormatDecodePluginSelectionParameters* NewLC();
williamr@2
  1382
protected:
williamr@2
  1383
	/**
williamr@2
  1384
	Protected constructor.
williamr@2
  1385
	*/
williamr@2
  1386
	CMMFFormatDecodePluginSelectionParameters();
williamr@2
  1387
	};
williamr@2
  1388
williamr@2
  1389
williamr@2
  1390
williamr@2
  1391
/** 
williamr@2
  1392
@publishedAll
williamr@2
  1393
@released
williamr@2
  1394
williamr@2
  1395
Template class CleanupResetAndDestroy to clean up the array
williamr@2
  1396
of implementation information from the cleanup stack.
williamr@2
  1397
*/
williamr@2
  1398
williamr@2
  1399
template <class T>
williamr@2
  1400
class CleanupResetAndDestroy
williamr@2
  1401
	{
williamr@2
  1402
public:
williamr@2
  1403
	/**
williamr@2
  1404
	Puts an item on the cleanup stack.
williamr@2
  1405
williamr@2
  1406
	@param  aRef 
williamr@2
  1407
	        The implementation information to be put on the cleanup stack.
williamr@2
  1408
	*/
williamr@2
  1409
	inline static void PushL(T& aRef);
williamr@2
  1410
private:
williamr@2
  1411
	static void ResetAndDestroy(TAny *aPtr);
williamr@2
  1412
	};
williamr@2
  1413
template <class T>
williamr@2
  1414
inline void CleanupResetAndDestroyPushL(T& aRef);
williamr@2
  1415
template <class T>
williamr@2
  1416
inline void CleanupResetAndDestroy<T>::PushL(T& aRef)
williamr@2
  1417
	{CleanupStack::PushL(TCleanupItem(&ResetAndDestroy,&aRef));}
williamr@2
  1418
template <class T>
williamr@2
  1419
void CleanupResetAndDestroy<T>::ResetAndDestroy(TAny *aPtr)
williamr@2
  1420
	{(STATIC_CAST(T*,aPtr))->ResetAndDestroy();}
williamr@2
  1421
template <class T>
williamr@2
  1422
inline void CleanupResetAndDestroyPushL(T& aRef)
williamr@2
  1423
	{CleanupResetAndDestroy<T>::PushL(aRef);}
williamr@2
  1424
williamr@2
  1425
williamr@2
  1426
#endif