devsoundextensions/mmfcustominterfaces/WmaDecoderIntfc/WmaDecoderIntfcProxy/src/WmaDecoderIntfcProxy.cpp
changeset 0 b8ed18f6c07b
child 5 b220a9341636
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/devsoundextensions/mmfcustominterfaces/WmaDecoderIntfc/WmaDecoderIntfcProxy/src/WmaDecoderIntfcProxy.cpp	Thu Oct 07 22:34:12 2010 +0100
@@ -0,0 +1,935 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   Interface proxy for WMA Decoder CI.
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <CustomCommandUtility.h>
+#include <CustomInterfaceUtility.h>
+#include "WmaDecoderIntfcMsgs.h"
+#include "WmaDecoderIntfcProxy.h"
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// ============================= MEMBER FUNCTIONS ==============================
+
+//------------------------------------------------------------------------------
+// CWmaDecoderIntfcProxy::CWmaDecoderIntfcProxy
+// C++ default constructor can NOT contain any code, that might leave.
+//------------------------------------------------------------------------------
+CWmaDecoderIntfcProxy::CWmaDecoderIntfcProxy(
+                            TMMFMessageDestinationPckg aMessageHandler,
+                            MCustomCommand& aCustomCommand,
+                            CCustomInterfaceUtility* aCustomInterfaceUtility) :
+    iCustomCommand(aCustomCommand),
+    iMessageHandler(aMessageHandler),
+    iCustomInterfaceUtility(aCustomInterfaceUtility)
+    {
+    }
+
+//------------------------------------------------------------------------------
+// CWmaDecoderIntfcProxy::ConstructL
+// Symbian 2nd phase constructor can leave.
+//------------------------------------------------------------------------------
+void CWmaDecoderIntfcProxy::ConstructL()
+    {
+    iToolOutPut32Bit = EFalse;
+    iToolDownMixToStereo = ETrue;
+    iToolLostDataConcealment = EFalse;
+	iParametersSameAsAdaptation = EFalse;
+    }
+
+//------------------------------------------------------------------------------
+// CWmaDecoderIntfcProxy::NewL
+// Two-phased constructor.
+//------------------------------------------------------------------------------
+EXPORT_C CWmaDecoderIntfcProxy* CWmaDecoderIntfcProxy::NewL(
+                              TMMFMessageDestinationPckg aMessageHandler,
+                              MCustomCommand& aCustomCommand,
+                              CCustomInterfaceUtility* aCustomInterfaceUtility)
+    {
+    CWmaDecoderIntfcProxy* self = new(ELeave) CWmaDecoderIntfcProxy(
+                                                   aMessageHandler,
+                                                   aCustomCommand,
+                                                   aCustomInterfaceUtility);
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+//------------------------------------------------------------------------------
+// Destructor
+//------------------------------------------------------------------------------
+EXPORT_C CWmaDecoderIntfcProxy::~CWmaDecoderIntfcProxy()
+    {
+    iCustomInterfaceUtility->RemoveCustomInterface(iMessageHandler);
+    delete iCustomInterfaceUtility;
+/*
+    iSupportedFormats.Close();
+    iSupportedTools.Close();
+    iControllableTools.Close();
+    iCurrentSupportedFormats.Close();
+    iCurrentSupportedTools.Close();
+    iCurrentControllableTools.Close(); 
+*/
+    }
+
+// From CWmaDecoderIntfc
+//------------------------------------------------------------------------------
+// Configures format.
+//------------------------------------------------------------------------------
+EXPORT_C void CWmaDecoderIntfcProxy::SetFormat(TFormat aFormat)
+    {
+    iFormat = aFormat;
+    }
+
+//------------------------------------------------------------------------------
+// Configures decoder's bits per sample.
+//------------------------------------------------------------------------------
+EXPORT_C void CWmaDecoderIntfcProxy::SetBitsPerSampleIn(TUint aBitsPerSample)
+    {
+    iBitsPerSample = aBitsPerSample;
+    }
+
+//------------------------------------------------------------------------------
+// Configures decoder's number of channels.
+//------------------------------------------------------------------------------
+EXPORT_C void CWmaDecoderIntfcProxy::SetNumChannelsIn (TUint aNumChannelsIn)
+    {
+    iNumChannelsIn = aNumChannelsIn;
+    }
+
+//------------------------------------------------------------------------------
+// Configures decoder's sample rate.
+//------------------------------------------------------------------------------
+EXPORT_C void CWmaDecoderIntfcProxy::SetSamplesPerSec (TUint aSamplesPerSec)
+    {
+    iSamplesPerSec = aSamplesPerSec;
+    }
+
+//------------------------------------------------------------------------------
+// Configures decoder's average bytes per second.
+//------------------------------------------------------------------------------
+EXPORT_C void CWmaDecoderIntfcProxy::SetAvgBytesPerSec (TUint aAvgBytesPerSec)
+    {
+    iAvgBytesPerSec = aAvgBytesPerSec;
+    }
+    
+//------------------------------------------------------------------------------
+// Configures decoder's block align.
+//------------------------------------------------------------------------------
+EXPORT_C void CWmaDecoderIntfcProxy::SetBlockAlign (TUint aBlockAlign)
+    {
+    iBlockAlign = aBlockAlign;
+    }
+
+//------------------------------------------------------------------------------
+// Configures decoder's Encode Options.
+//------------------------------------------------------------------------------
+EXPORT_C void CWmaDecoderIntfcProxy::SetEncodeOptions (TUint aEncodeOptions)
+    {
+    iEncodeOptions = aEncodeOptions;
+    }
+    
+//------------------------------------------------------------------------------
+// Configures decoder's Encode Options1.
+//------------------------------------------------------------------------------
+EXPORT_C void CWmaDecoderIntfcProxy::SetEncodeOptions1 (TUint aEncodeOptions1)
+    {
+    iEncodeOptions1 = aEncodeOptions1;
+    }
+
+//------------------------------------------------------------------------------
+// Configures decoder's Encode Options2.
+//------------------------------------------------------------------------------
+EXPORT_C void CWmaDecoderIntfcProxy::SetEncodeOptions2 (TUint aEncodeOptions2)
+    {
+    iEncodeOptions2 = aEncodeOptions2;
+    }
+    
+//------------------------------------------------------------------------------
+//Configures decoder's Channel Mask.
+//------------------------------------------------------------------------------
+EXPORT_C void CWmaDecoderIntfcProxy::SetChannelMaskIn (TUint aChannelMask)
+    {
+    iChannelMask = aChannelMask;
+    }
+
+//------------------------------------------------------------------------------
+// Returns decoder's current configured format.
+//------------------------------------------------------------------------------
+EXPORT_C TInt CWmaDecoderIntfcProxy::GetFormat (TFormat& aFormat)
+    {
+    TInt status = KErrNone;
+
+	if (!iParametersSameAsAdaptation)
+		{
+		status = GetAllMessage();	
+		}
+	if (status == KErrNone)
+		{
+	   	aFormat = iCurrentFormat;
+   		status = iCurrentFormatStatus;
+		}
+   	if (!ValidGetStatus(status))
+        {
+    	status = KErrGeneral;	
+    	}
+    return status;
+	}
+
+//------------------------------------------------------------------------------
+// Returns configured bits per sample .
+//------------------------------------------------------------------------------
+EXPORT_C TInt CWmaDecoderIntfcProxy::GetBitsPerSampleIn(TUint& aBitsPerSample) 
+    {
+    TInt status = KErrNone;
+
+	if (!iParametersSameAsAdaptation)
+		{
+		status = GetAllMessage();	
+		}
+	if (status == KErrNone)
+		{
+   	    aBitsPerSample = iCurrentBitsPerSample;
+   	    status = iCurrentBitsPerSampleStatus;
+		}
+   	if (!ValidGetStatus(status))
+        {
+    	status = KErrGeneral;	
+    	}        
+    	
+    return status;
+    }
+
+//------------------------------------------------------------------------------
+// Returns configured number of channels.
+//------------------------------------------------------------------------------
+EXPORT_C TInt CWmaDecoderIntfcProxy::GetNumOfChannelsIn (TUint& aNumOfChannels)
+    {
+    TInt status = KErrNone;
+
+	if (!iParametersSameAsAdaptation)
+		{
+		status = GetAllMessage();	
+		} 
+	if (status == KErrNone)
+		{
+   		aNumOfChannels = iCurrentNumChannelsIn;
+   		status = iCurrentNumChannelsInStatus;
+		}
+   	if (!ValidGetStatus(status))
+        {
+    	status = KErrGeneral;	
+    	}        
+    	
+    return status;
+    }
+
+//------------------------------------------------------------------------------
+// Returns configured sample rate.
+//------------------------------------------------------------------------------
+EXPORT_C TInt CWmaDecoderIntfcProxy::GetSamplesPerSec (TUint& aSamplesPerSec)
+    {
+    TInt status = KErrNone;
+
+	if (!iParametersSameAsAdaptation)
+		{
+		status = GetAllMessage();	
+		} 
+	if (status == KErrNone)
+		{
+   		aSamplesPerSec = iCurrentSamplesPerSec;
+   		status = iCurrentSamplesPerSecStatus;
+		}
+   	if (!ValidGetStatus(status))
+        {
+    	status = KErrGeneral;	
+    	}        
+    return status;
+    }
+
+//------------------------------------------------------------------------------
+// Returns configured average bytes per second.
+//------------------------------------------------------------------------------
+EXPORT_C TInt CWmaDecoderIntfcProxy::GetAvgBytesPerSec (TUint& aAvgBytesPerSec)
+    {
+    TInt status = KErrNone;
+
+	if (!iParametersSameAsAdaptation)
+		{
+		status = GetAllMessage();	
+		} 
+	if (status == KErrNone)
+		{
+   		aAvgBytesPerSec = iCurrentAvgBytesPerSec;
+   		status = iCurrentAvgBytesPerSecStatus;
+		}
+   	if (!ValidGetStatus(status))
+        {
+    	status = KErrGeneral;	
+    	}        
+    return status;
+    }
+
+//------------------------------------------------------------------------------
+// Returns configured block align.
+//------------------------------------------------------------------------------
+EXPORT_C TInt CWmaDecoderIntfcProxy::GetBlockAlign (TUint& aBlockAlign)
+    {
+    TInt status = KErrNone;
+
+	if (!iParametersSameAsAdaptation)
+		{
+		status = GetAllMessage();	
+		} 
+	if (status == KErrNone)
+		{
+   		aBlockAlign = iCurrentBlockAlign;
+   		status = iCurrentBlockAlignStatus;
+		}
+   	if (!ValidGetStatus(status))
+        {
+    	status = KErrGeneral;	
+    	}        
+    	    	
+    return status;
+    }
+
+//------------------------------------------------------------------------------
+// Returns configured encode options.
+//------------------------------------------------------------------------------
+EXPORT_C TInt CWmaDecoderIntfcProxy::GetEncodeOptions (TUint& aEncodeOpts)
+    {
+    TInt status = KErrNone;
+
+	if (!iParametersSameAsAdaptation)
+		{
+		status = GetAllMessage();	
+		} 
+	if (status == KErrNone)
+		{
+   		aEncodeOpts = iCurrentEncodeOptions;
+   		status = iCurrentEncodeOptionsStatus;
+		}
+   	if (!ValidGetStatus(status))
+        {
+    	status = KErrGeneral;	
+    	}        
+    return status;
+    }
+
+//------------------------------------------------------------------------------
+// Returns configured advanced encode options.
+//------------------------------------------------------------------------------
+EXPORT_C TInt CWmaDecoderIntfcProxy::GetEncodeOptions1 (TUint& EncodeOpts1)
+    {
+    TInt status = KErrNone;
+
+	if (!iParametersSameAsAdaptation)
+		{
+		status = GetAllMessage();	
+		} 
+	if (status == KErrNone)
+		{
+   		EncodeOpts1 = iCurrentEncodeOptions1;
+   		status = iCurrentEncodeOptions1Status;
+		}
+	if (!ValidGetStatus(status) &&
+        status != KErrNotSupported)
+        {
+    	status = KErrGeneral;	
+    	}        
+    return status;
+    }
+
+//------------------------------------------------------------------------------
+// Returns configured advanced encode options.
+//------------------------------------------------------------------------------
+EXPORT_C TInt CWmaDecoderIntfcProxy::GetEncodeOptions2 (TUint& EncodeOpts2)
+    {
+    TInt status = KErrNone;
+
+	if (!iParametersSameAsAdaptation)
+		{
+		status = GetAllMessage();	
+		} 
+	if (status == KErrNone)
+		{
+   		EncodeOpts2 = iCurrentEncodeOptions2;
+   		status = iCurrentEncodeOptions2Status;
+		}
+	if (!ValidGetStatus(status) &&
+        status != KErrNotSupported)
+        {
+    	status = KErrGeneral;	
+    	}        
+    return status;
+    }
+    
+//------------------------------------------------------------------------------
+// Returns configured channel mask.
+//------------------------------------------------------------------------------
+EXPORT_C TInt CWmaDecoderIntfcProxy::GetChannelMaskIn (TUint& aChannelMask)
+    {
+    TInt status = KErrNone;
+
+	if (!iParametersSameAsAdaptation)
+		{
+		status = GetAllMessage();	
+		} 
+	if (status == KErrNone)
+		{
+   		aChannelMask = iCurrentChannelMask;
+   		status = iCurrentChannelMaskStatus;
+		}
+	if (!ValidGetStatus(status) &&
+        status != KErrNotSupported)
+        {
+    	status = KErrGeneral;	
+    	}        
+
+    return status;
+    }
+    
+//------------------------------------------------------------------------------
+// Returns supported formats.
+//------------------------------------------------------------------------------
+EXPORT_C TInt CWmaDecoderIntfcProxy::GetSupportedFormats(RArray<TFormat>& aSupportedFormats)
+    {
+
+    TInt status = KErrNone;
+    TRAPD(err, status = GetSupportedFormatsL(aSupportedFormats))
+    if (err != KErrNone)
+    	{
+        if (err != KErrNone  && err != KErrNotFound)
+        	{
+    		status = KErrGeneral;	    		
+    		}
+    	}
+    return status;
+    }
+
+//------------------------------------------------------------------------------
+// Returns supported tools.
+//------------------------------------------------------------------------------
+EXPORT_C TInt CWmaDecoderIntfcProxy::GetSupportedTools(RArray<TTool>& aSupportedTools)
+    {
+    TInt status = KErrNone;
+    TRAPD(err, status = GetSupportedToolsL(aSupportedTools))
+    if (err != KErrNone)
+    	{
+        if (err != KErrNone  && err != KErrNotFound)
+        	{
+    		status = KErrGeneral;	    		
+    		}
+    	}
+
+    return status;
+    }
+
+//------------------------------------------------------------------------------
+// Returns supported max number of channels.
+//------------------------------------------------------------------------------
+EXPORT_C TInt CWmaDecoderIntfcProxy::GetSupportedMaxChannelsIn(TUint& aSupportedMaxChannelsIn)
+    {
+    TInt status = KErrNone;
+    
+	TPckgBuf<TUint> pckgBuf;
+    status = iCustomCommand.CustomCommandSync(
+                                               iMessageHandler, 
+                                               EWmaGetSupportedMaxChannels, 
+                                               KNullDesC8,
+                                               KNullDesC8,
+                                               pckgBuf);
+                                               
+	aSupportedMaxChannelsIn = pckgBuf();	
+    if (status != KErrNone  && status != KErrNotFound)
+        {
+    	status = KErrGeneral;	    		
+    	}
+    return status;
+    }
+
+//------------------------------------------------------------------------------
+// Returns supported max bit rate.
+//------------------------------------------------------------------------------
+EXPORT_C TInt CWmaDecoderIntfcProxy::GetSupportedMaxBitrate(TUint& aSupportedMaxBitrate)
+    {
+    TInt status = KErrNone;
+
+	TPckgBuf<TUint> pckgBuf;
+    status = iCustomCommand.CustomCommandSync(
+                                               iMessageHandler, 
+                                               EWmaGetSupportedMaxBitrate, 
+                                               KNullDesC8,
+                                               KNullDesC8,
+                                               pckgBuf);
+                                               
+	aSupportedMaxBitrate = pckgBuf();	
+	
+
+    if (status != KErrNone  && status != KErrNotFound)
+        {
+    	status = KErrGeneral;	    		
+    	}
+
+    return status;
+    }
+
+//------------------------------------------------------------------------------
+// Get Supported Max Sample Rate
+//------------------------------------------------------------------------------
+TInt CWmaDecoderIntfcProxy::GetSupportedMaxSampleRate(TUint& aSupportedMaxSampleRate)
+	{
+    TInt status = KErrNone;
+    
+	TPckgBuf<TUint> pckgBuf;
+    status = iCustomCommand.CustomCommandSync(
+                                               iMessageHandler, 
+                                               EWmaGetSupportedMaxSampleRate, 
+                                               KNullDesC8,
+                                               KNullDesC8,
+                                               pckgBuf);
+                                               
+	aSupportedMaxSampleRate = pckgBuf();	
+    if (status != KErrNone  && status != KErrNotFound)
+        {
+    	status = KErrGeneral;	    		
+    	}
+
+    return status;
+	}
+
+//------------------------------------------------------------------------------
+// Returns controllable tools.
+//------------------------------------------------------------------------------
+EXPORT_C TInt CWmaDecoderIntfcProxy::GetControllableTools(RArray<TTool>& aControllableTools)
+    {
+    TInt status = KErrNone;
+    TRAPD(err, status = GetControllableToolsL(aControllableTools))
+    if (err != KErrNone)
+    	{
+        if (err != KErrNone  && err != KErrNotFound)
+        	{
+    		status = KErrGeneral;	    		
+    		}
+    	}
+
+    return status;
+    }
+
+//------------------------------------------------------------------------------
+// Enable tool.
+//------------------------------------------------------------------------------
+EXPORT_C void CWmaDecoderIntfcProxy::EnableTool(TTool aTool) 
+    {
+	switch (aTool)
+		{
+    	case EToolOutput32Bit:
+    	     iToolOutPut32Bit = ETrue;
+    	     break;
+    	case EDownMixToStereo:
+             iToolDownMixToStereo = ETrue;
+             break;
+    	case ELostDataConcealment:
+    	     iToolLostDataConcealment = ETrue;
+    	     break;
+    	default:
+    	     break;     			
+		}
+
+    }
+
+//------------------------------------------------------------------------------
+// disable tool.
+//------------------------------------------------------------------------------
+EXPORT_C void CWmaDecoderIntfcProxy::DisableTool(TTool aTool) 
+    {
+	switch (aTool)
+		{
+    	case EToolOutput32Bit:
+    	     iToolOutPut32Bit = EFalse;
+    	     break;
+    	case EDownMixToStereo:
+             iToolDownMixToStereo = EFalse;
+             break;
+    	case ELostDataConcealment:
+    	     iToolLostDataConcealment = EFalse;
+    	     break;
+    	default:
+    	     break;     			
+		}
+    }
+
+
+//------------------------------------------------------------------------------
+// Returns tool state.
+//------------------------------------------------------------------------------
+EXPORT_C TInt CWmaDecoderIntfcProxy::GetTool(TTool aTool, TBool& aEnabled)
+    {
+    TInt status = KErrNone;
+
+	if (!iParametersSameAsAdaptation)
+		{
+		status = GetAllMessage();	
+		} 
+	switch (aTool)
+		{
+    	case EToolOutput32Bit:
+    	     if (iCurrentToolOutPut32Bit)
+    	     	{
+    	     	aEnabled = ETrue;	
+    	     	}
+    	     else
+    	     	{
+     	     	aEnabled = EFalse;	   	     		
+    	     	}
+    	     status = iCurrentToolOutPut32BitStatus;
+    	     break;
+    	     
+    	case EDownMixToStereo:
+    	     if (iCurrentToolDownMixToStereo)
+    	     	{
+    	     	aEnabled = ETrue;	
+    	     	}
+    	     else
+    	     	{
+     	     	aEnabled = EFalse;	   	     		
+    	     	}
+    	     status = iCurrentToolDownMixToStereoStatus;
+			 break;
+
+    	case ELostDataConcealment:
+    	     if (iCurrentToolLostDataConcealment)
+    	     	{
+    	     	aEnabled = ETrue;	
+    	     	}
+    	     else
+    	     	{
+     	     	aEnabled = EFalse;	   	     		
+    	     	}
+    	     status = iCurrentToolLostDataConcealmentStatus;
+    	     break;
+    	default:
+    	     break;     			
+		}
+
+	if (!ValidGetStatus(status) &&
+        status != KErrNotSupported)
+        {
+    	status = KErrGeneral;	
+    	}        
+    	
+    return status;
+ 
+
+    }
+
+//------------------------------------------------------------------------------
+// Applies configuration settings to the decoder.
+//------------------------------------------------------------------------------
+EXPORT_C TInt CWmaDecoderIntfcProxy::ApplyConfig()
+    {
+    TInt status = KErrNone;
+    
+    
+       TWmaDecoderConfig configParams;        
+       
+        configParams.iFormat = iFormat;
+        configParams.iBitsPerSample = iBitsPerSample;
+        configParams.iNumChannelsIn = iNumChannelsIn;
+        configParams.iSamplesPerSec = iSamplesPerSec;
+        configParams.iAvgBytesPerSec = iAvgBytesPerSec;
+    	configParams.iBlockAlign = iBlockAlign;
+    	configParams.iEncodeOptions = iEncodeOptions;
+    	configParams.iEncodeOptions1 = iEncodeOptions1;
+     	configParams.iEncodeOptions2 = iEncodeOptions2;   	
+    	configParams.iChannelMask = iChannelMask;
+        configParams.iToolOutPut32Bit = iToolOutPut32Bit;
+        configParams.iToolDownMixToStereo = iToolDownMixToStereo;
+        configParams.iToolLostDataConcealment = iToolLostDataConcealment;
+
+
+    	TPckgBuf<TWmaDecoderConfig> pckgBuf(configParams);
+    	status = iCustomCommand.CustomCommandSync(iMessageHandler,
+    	                                               EWmaApplyConfig,
+    	                                               pckgBuf,
+    	                                               KNullDesC8);
+    	if (status == KErrNone)
+    		{
+			iCurrentFormat = iFormat;
+        	iCurrentBitsPerSample = iBitsPerSample;
+        	iCurrentNumChannelsIn = iNumChannelsIn;
+        	iCurrentSamplesPerSec = iSamplesPerSec;
+        	iCurrentAvgBytesPerSec = iAvgBytesPerSec;
+        	iCurrentBlockAlign = iBlockAlign;
+        	iCurrentEncodeOptions = iEncodeOptions;
+			iCurrentEncodeOptions1 = iEncodeOptions1;
+			iCurrentEncodeOptions2 = iEncodeOptions2;			
+        	iCurrentChannelMask = iChannelMask;
+            iCurrentToolOutPut32Bit = iToolOutPut32Bit;
+            iCurrentToolDownMixToStereo = iToolDownMixToStereo;
+            iCurrentToolLostDataConcealment = iToolLostDataConcealment;
+
+  		    iCurrentFormatStatus = status;
+          	iCurrentBitsPerSampleStatus = status;       
+         	iCurrentNumChannelsInStatus = status ;        
+         	iCurrentSamplesPerSecStatus = status;
+         	iCurrentAvgBytesPerSecStatus = status ;
+         	iCurrentBlockAlignStatus = status;
+         	iCurrentEncodeOptionsStatus = status;
+			iCurrentEncodeOptions1Status = status;
+			iCurrentEncodeOptions2Status = status;		
+        	iCurrentChannelMaskStatus = status;
+        	iCurrentToolOutPut32BitStatus = status;
+        	iCurrentToolDownMixToStereoStatus = status;
+        	iCurrentToolLostDataConcealmentStatus = status;              
+
+			iParametersSameAsAdaptation = ETrue;
+       		}
+        else
+        	{
+			iParametersSameAsAdaptation = EFalse;        		
+        	} 
+	return status;
+    }
+
+	    
+//------------------------------------------------------------------------------
+// Receive all configure paramemters
+//------------------------------------------------------------------------------
+TInt CWmaDecoderIntfcProxy::GetAllMessage()
+	{
+	TPckgBuf<TAllParams> pckg;
+    TInt status = iCustomCommand.CustomCommandSync(
+                                               iMessageHandler, 
+                                               EWmaGetAllMsg, 
+                                               KNullDesC8,
+                                               KNullDesC8,pckg);
+   	if (status == KErrNone)
+   		{		
+   		iCurrentFormat = pckg().iCurrentFormat;
+		iCurrentFormatStatus = pckg().iCurrentFormatStatus;    	
+
+    	iCurrentBitsPerSample = pckg().iCurrentBitsPerSample;
+		iCurrentBitsPerSampleStatus =pckg().iCurrentBitsPerSampleStatus;    	
+
+   		iCurrentNumChannelsIn = pckg().iCurrentNumChannelsIn;
+		iCurrentNumChannelsInStatus = pckg().iCurrentNumChannelsInStatus;    	
+
+    	iCurrentSamplesPerSec =	pckg().iCurrentSamplesPerSec ;
+		iCurrentSamplesPerSecStatus = pckg().iCurrentSamplesPerSecStatus;    	
+
+   		iCurrentAvgBytesPerSec = pckg().iCurrentAvgBytesPerSec;
+		iCurrentAvgBytesPerSecStatus = pckg().iCurrentAvgBytesPerSecStatus;    	
+
+   		iCurrentBlockAlign = pckg().iCurrentBlockAlign;
+		iCurrentBlockAlignStatus = pckg().iCurrentBlockAlignStatus;    	
+
+   		iCurrentEncodeOptions = pckg().iCurrentEncodeOptions;
+		iCurrentEncodeOptionsStatus = pckg().iCurrentEncodeOptionsStatus ;    	
+
+   		iCurrentEncodeOptions1 = pckg().iCurrentEncodeOptions1;
+		iCurrentEncodeOptions1Status = pckg().iCurrentEncodeOptions1Status;    
+		
+   		iCurrentEncodeOptions2 =  pckg().iCurrentEncodeOptions2;
+		iCurrentEncodeOptions2Status = pckg().iCurrentEncodeOptions2Status;    	
+   	
+   		iCurrentChannelMask = pckg().iCurrentChannelMask ;
+		iCurrentChannelMaskStatus = pckg().iCurrentChannelMaskStatus;    	
+   	
+   		iCurrentToolOutPut32Bit = pckg().iCurrentToolOutPut32Bit;
+		iCurrentToolOutPut32BitStatus = pckg().iCurrentToolOutPut32BitStatus;    	
+   	
+   		iCurrentToolDownMixToStereo = pckg().iCurrentToolDownMixToStereo;
+		iCurrentToolDownMixToStereoStatus =  pckg().iCurrentToolDownMixToStereoStatus;    	
+	   	
+   		iCurrentToolLostDataConcealment = pckg().iCurrentToolLostDataConcealment;
+		iCurrentToolLostDataConcealmentStatus = pckg().iCurrentToolLostDataConcealmentStatus ;
+		iParametersSameAsAdaptation = ETrue;    	
+	}
+	return status;
+}
+
+//------------------------------------------------------------------------------
+// check return status
+//------------------------------------------------------------------------------
+TBool CWmaDecoderIntfcProxy::ValidGetStatus(TInt aStatus)
+	{
+    if (aStatus != KErrNone  &&  aStatus != KErrCompletion &&
+        aStatus != KErrUnknown &&  aStatus != KErrArgument &&
+        aStatus != KErrNotReady && aStatus != KErrNotFound &&
+        aStatus != KErrGeneral)
+    	{
+    	return EFalse;	
+    	}
+    else
+    	{
+    	return ETrue;
+    	}
+	}
+
+
+//------------------------------------------------------------------------------
+// GetSupportedFormatsL
+//------------------------------------------------------------------------------
+TInt CWmaDecoderIntfcProxy::GetSupportedFormatsL(RArray<TFormat>& aSupportedFormats)
+	{
+    TInt status = KErrNone;
+
+	aSupportedFormats.Reset();
+
+	TPckgBuf<TUint> supportedFormatsPkg;
+	status = iCustomCommand.CustomCommandSync(
+	                                           iMessageHandler, 
+                                               EWmaGetNumOfSupportedFormats, 
+                                               KNullDesC8,
+                                               KNullDesC8,
+                                               supportedFormatsPkg);
+    HBufC8* buf = HBufC8::NewLC(supportedFormatsPkg()*sizeof(TUint));
+   	// buf is left on cleanup 
+   	TPtr8 ptr = buf->Des();
+    iCustomCommand.CustomCommandSync(
+                                    iMessageHandler, 
+                                    EWmaGetSupportedFormats, 
+                                    KNullDesC8,
+                                    KNullDesC8,
+                                    ptr);
+  	RDesReadStream stream(ptr);
+    CleanupClosePushL(stream); // stream on cleanup
+   	for (TInt i=0; i<supportedFormatsPkg(); i++)
+    	{
+   		aSupportedFormats.AppendL(static_cast<TFormat>(stream.ReadUint32L()));
+   		}
+   	CleanupStack::PopAndDestroy(&stream);
+   	CleanupStack::PopAndDestroy(buf);    			
+    if (status != KErrNone  && status != KErrNotFound)
+        {
+    	status = KErrGeneral;	    		
+    	}
+
+    return status;		
+	}
+
+//------------------------------------------------------------------------------
+// GetSupportedToolsL
+//------------------------------------------------------------------------------
+TInt CWmaDecoderIntfcProxy::GetSupportedToolsL(RArray<TTool>& aSupportedTools)
+	{
+	
+	TInt status = KErrNone;
+	aSupportedTools.Reset();
+
+	TPckgBuf<TUint> supportedToolsPkg;
+	status = iCustomCommand.CustomCommandSync(
+	                                           iMessageHandler, 
+                                               EWmaGetNumOfSupportedTools, 
+                                               KNullDesC8,
+                                               KNullDesC8,
+                                               supportedToolsPkg);
+                                               
+   	HBufC8* buf = HBufC8::NewLC(supportedToolsPkg()*sizeof(TUint));
+   	// buf is left on cleanup 
+   	TPtr8 ptr = buf->Des();
+
+    iCustomCommand.CustomCommandSync(
+                                    iMessageHandler, 
+                                    EWmaGetSupportedTools, 
+                                    KNullDesC8,
+                                    KNullDesC8,
+                                    ptr);
+	RDesReadStream stream(ptr);
+	CleanupClosePushL(stream); // stream on cleanup
+	for (TInt i=0; i<supportedToolsPkg(); i++)
+		{
+		aSupportedTools.AppendL(static_cast<TTool>(stream.ReadUint32L()));
+		}
+	CleanupStack::PopAndDestroy(&stream);
+	CleanupStack::PopAndDestroy(buf);
+   		
+   
+   if (status != KErrNone  && status != KErrNotFound)
+        {
+    	status = KErrGeneral;	    		
+    	}
+    	
+   return status;		
+	}
+       
+//------------------------------------------------------------------------------
+// GetControllableToolsL
+//------------------------------------------------------------------------------
+TInt CWmaDecoderIntfcProxy::GetControllableToolsL(RArray<TTool>& aControllableTools)
+	{
+	TInt status = KErrNone;
+	aControllableTools.Reset();
+
+	TPckgBuf<TUint> numPckg;
+	status = iCustomCommand.CustomCommandSync(
+	                                           iMessageHandler, 
+                                               EWmaGetNumOfControllableTools, 
+                                               KNullDesC8,
+                                               KNullDesC8,
+                                               numPckg);
+ 
+    HBufC8* buf = HBufC8::NewLC(numPckg()*sizeof(TUint));
+    // buf is left on cleanup 
+    TPtr8 ptr = buf->Des();
+
+    iCustomCommand.CustomCommandSync(
+                                               iMessageHandler, 
+                                               EWmaGetControllableTools, 
+                                               KNullDesC8,
+                                               KNullDesC8,
+                                               ptr);
+   	RDesReadStream stream(ptr);
+    CleanupClosePushL(stream); // stream on cleanup
+   	for (TInt i=0; i < numPckg(); i++)
+    	{
+   		aControllableTools.AppendL(static_cast<TTool>(stream.ReadUint32L()));
+   		}
+   	CleanupStack::PopAndDestroy(&stream);
+   	CleanupStack::PopAndDestroy(buf);
+    if (status != KErrNone  && status != KErrNotFound)
+        {
+    	status = KErrGeneral;	    		
+    	}
+
+    return status;    	
+	}
+
+
+
+// End of File