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