mmlibs/mmfw/src/server/BaseClasses/Mmfcodec.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) 2002-2009 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
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    17
#include <mmf/server/mmfcodec.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    18
#include "MmfUtilities.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    19
#include <mmf/common/mmfcontrollerpluginresolver.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    20
#include <ecom/ecom.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    21
#include <mm/mmpluginutils.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
_LIT8( KEmptyFourCCString, "    ,    " ) ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
_LIT( KNullString, "" ) ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
static const TUid KUidMmfPluginInterfaceCodec = {KMmfUidPluginInterfaceCodec};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
Creates a CMMFCodec object with match parameter in addition to the source and
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
destination fourCC codes (for instance a manufacturer's name).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
Will attempt match without extra match string if no match.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
Will Leave if no match on 4CC codes (KErrNotFound).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
Used where there may be multiple codecs that perform the same conversion to ensure the controller
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
uses the codec specified by aPreferredSupplier.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
@param  aSrcDataType
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
        The source data type.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
@param  aDstDataType
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
        The destination data type.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
@param  aPreferredSupplier
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
        Additional resolution criteria when searching for plug in codec. If this is provided, the 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
        list of matching plugins will be further searched for the latest version of a plugin 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
        supplied by supplier named. Note that the display name field is parsed for a match.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
@return An instantiated CMMFCodec derived obeject from an ECOM plugin DLL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
EXPORT_C CMMFCodec* CMMFCodec::NewL(const TFourCC& aSrcDataType, const TFourCC& aDstDataType,  const TDesC& aPreferredSupplier)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
	// Create a match string using the two FourCC codes.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
	TBufC8<9> fourCCString( KEmptyFourCCString ) ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
	TPtr8 fourCCPtr = fourCCString.Des() ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
	TPtr8 fourCCPtr1( &fourCCPtr[0], 4 ) ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
	TPtr8 fourCCPtr2( &fourCCPtr[5], 4 ) ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
	aSrcDataType.FourCC( &fourCCPtr1 ) ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
	aDstDataType.FourCC( &fourCCPtr2 ) ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
	// Do a list implementations here.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
	RImplInfoPtrArray plugInArray; // Array to return matching decoders in
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
	CleanupResetAndDestroyPushL(plugInArray);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
	MmPluginUtils::FindImplementationsL(KUidMmfPluginInterfaceCodec, plugInArray, fourCCPtr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
	if (plugInArray.Count() == 0)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
		User::Leave(KErrNotSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
	TUid chosenUid = {0};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
	if ( plugInArray.Count() == 1 )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
		chosenUid = plugInArray[0]->ImplementationUid() ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
		// Use the preferred supplier to select a codec.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
		SelectByPreference( plugInArray, aPreferredSupplier ) ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
		for ( TInt ii = 0 ; ii < plugInArray.Count() ; ii++ )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
			if ( !(plugInArray[ii]->Disabled()) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
				// we've found our plugin...
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
				chosenUid = plugInArray[ii]->ImplementationUid() ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
				break ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
	//Instantiate the chosen one
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
	CMMFCodec* theChosenOne = REINTERPRET_CAST( CMMFCodec*,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
						REComSession::CreateImplementationL( chosenUid, _FOFF( CMMFCodec, iDtor_ID_Key ) ) ) ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
	CleanupStack::PopAndDestroy() ;  // pluginArray
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
	return theChosenOne ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
Creates a CMMFCodec object with known fourCC codes for source and destination.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
The first matching plug-in will be used.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
The FourCC codes are the same codes as those specified in the resource file and are used to identify
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
the datatype. ECom scans the registry to find a codec that is registered in its resource file as
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
being able to convert between the source data type and the destination data type as specified by
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
their FourCC codes. If a match is found then an instantiation of the appropriate CMMFCodec is made.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
If a match is not found this function leaves with KErrNotFound. If more than one codec is present
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
with the same fourCC match codes then the one that is instantiated is indeterminate. If there is
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
likely to be any ambiguity due to more than one codec that performs the same conversion being
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
present, then a preferred supplier should be specified.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
@param  aSrcDataType
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
        The source data type.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
@param  aDstDataType
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
        The destination data type.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
@return An instantiated CMMFCodec derived obeject from an ECOM plugin DLL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
EXPORT_C CMMFCodec* CMMFCodec::NewL(const TFourCC& aSrcDataType, const TFourCC& aDstDataType )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
	// Create a match string using the two FourCC codes.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
	return NewL( aSrcDataType, aDstDataType, KNullString ) ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
// local function to disable items which do not match the preferred supplier.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
// Note that at least one enabled item is returned (if there was an enabled item to begin with) which
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
// may not match the preferred supplier.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
Selects a codec according to the specified preference.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
@param  aPlugInArray
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
        On return, array of plugins.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
@param  aPreferredSupplier
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
        Search criteria, a supplier's name for example.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
void CMMFCodec::SelectByPreference( RImplInfoPtrArray& aPlugInArray, const TDesC& aPreferredSupplier )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
	{	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
	// Use the Disabled flag to eliminated all currently enabled matches that
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
	// do not match the preferred supplier.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
	TInt firstEnabled = -1 ; // to ensure that we return something valid
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
	TInt matchCount = 0 ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
	for ( TInt ii = 0 ; ii < aPlugInArray.Count() ; ii++ )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
		if ( !( aPlugInArray[ii]->Disabled() ) )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   152
			if ( firstEnabled == -1 )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   153
				firstEnabled = ii ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   154
			if ( aPlugInArray[ii]->DisplayName().FindF( aPreferredSupplier ) == KErrNotFound )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   155
				aPlugInArray[ii]->SetDisabled( ETrue ) ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   156
			else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   157
				matchCount++ ;
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
	// If there are no matches then re-enable the first enabled
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   162
	if ( matchCount == 0 )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   163
		aPlugInArray[firstEnabled]->SetDisabled( EFalse ) ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   164
	else if ( matchCount > 1 )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   165
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   166
		// find the latest version from more than one match
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   167
		TInt highestVersionIndex = -1 ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   168
		for ( TInt ii = 0 ; ii < aPlugInArray.Count() ; ii++ )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   169
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   170
			if ( !( aPlugInArray[ii]->Disabled() ) )  // only interested in enabled elements
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   171
				{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   172
				if ( highestVersionIndex == -1 )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   173
					{ // first match.  Store this.  Keep it enabled
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   174
					highestVersionIndex = ii ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   175
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   176
				else if ( aPlugInArray[ii]->Version() > aPlugInArray[highestVersionIndex]->Version() )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   177
					{ // a new leader.  Disable the previous leader.  Keep this one.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   178
					aPlugInArray[highestVersionIndex]->SetDisabled( ETrue ) ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   179
					highestVersionIndex = ii ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   180
					}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   181
				else  // we already have a higher version.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   182
					aPlugInArray[ii]->SetDisabled( ETrue ) ;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   183
				}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   184
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   185
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   186
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   187
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   188
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   189
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   190
Creates a CMMFCodec object with a known UID.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   191
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   192
Will Leave if the plug in is not found (KErrNotFound).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   193
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   194
@param aUid
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   195
       The UID of a plugin implementation.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   196
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   197
@return An instantiated CMMFCodec derived obeject from an ECOM plugin DLL.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   198
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   199
EXPORT_C CMMFCodec* CMMFCodec::NewL(TUid aUid)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   200
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   201
	return REINTERPRET_CAST(CMMFCodec*, REComSession::CreateImplementationL(aUid,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   202
												_FOFF(CMMFCodec,iDtor_ID_Key)));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   203
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   204
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   205
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   206
@internalComponent
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   207
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   208
Gets a pointer to the extension specified by an identifier. The extension can be either an
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   209
interface or function. If the extension is not supported NULL value is given and returns
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   210
KErrExtensionNotSupported.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   211
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   212
@param	aExtensionId
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   213
		Extension identifier.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   214
@param	aExtPtr
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   215
		Pointer to get the extension.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   216
@return	If successful returns KErrNone otherwise KErrExtensionNotSupported.		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   217
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   218
TInt CMMFCodec::ExtensionInterface(TUint aExtensionId, TAny*& aExtPtr)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   219
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   220
	return Extension_(aExtensionId, aExtPtr, NULL);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   221
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   222