diff -r 000000000000 -r 71ca22bcf22a mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Src/AdvancedAudioController.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Src/AdvancedAudioController.cpp Tue Feb 02 01:08:46 2010 +0200 @@ -0,0 +1,731 @@ +/* +* Copyright (c) 2004 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: This class is the top base class in the Advanced Audio Controller +* inheritance hierarchy. Provided are the default implementations. +* +*/ + + + +// INCLUDE FILES +#include "AdvancedAudioController.h" +#include "CustomInterfaceBuilder.h" +#include "CustomInterfaceCustomCommandParser.h" +#include "sounddevice.h" +#include "DebugMacros.h" + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::CAdvancedAudioController +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +EXPORT_C CAdvancedAudioController::CAdvancedAudioController() + : MDataSource(KUidMmfFormatEncode), + MDataSink(KUidMmfFormatDecode), + iDataSource(NULL), + iDataSink(NULL), + iDuration(0), + iTimePositionInMicroSecs(0) + { + } + +// Destructor +EXPORT_C CAdvancedAudioController::~CAdvancedAudioController() + { + delete iMMFDevSound; + } + +void CAdvancedAudioController::ConstructL() + { + iMMFDevSound = CMMFDevSound::NewL(); + + iMMFDevSound->SetClientThreadInfo( CMMFController::ClientThreadIdL() ); + // Construct custom command parsers + CMMFAudioControllerCustomCommandParser* audConParser = CMMFAudioControllerCustomCommandParser::NewL(*this); + CleanupStack::PushL(audConParser); + AddCustomCommandParserL(*audConParser); + CleanupStack::Pop(audConParser); + + CCustomInterfaceCustomCommandParser* customInterfaceParser = CCustomInterfaceCustomCommandParser::NewL(*this); + CleanupStack::PushL(customInterfaceParser); + AddCustomCommandParserL(*customInterfaceParser); + CleanupStack::Pop(customInterfaceParser); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::CreateSourceBufferOfSizeL +// Creates a source buffer with the given size. The buffer is then pushed and +// left on the cleanupstack. +// ----------------------------------------------------------------------------- +// +EXPORT_C CMMFDataBuffer* CAdvancedAudioController::CreateSourceBufferOfSizeLC( + TUint aSize ) + { + CMMFDataBuffer* buffer = CMMFDataBuffer::NewL(aSize); + CleanupStack::PushL(buffer); + buffer->Data().FillZ(aSize); + buffer->SetRequestSizeL(aSize); + buffer->Data().SetLength(0); + return buffer; + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::ResetSharedBuffersL +// Destroys the current buffers and re-populates it with new buffers. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::ResetSharedBuffersL( + TInt aNumOfBuffer, + TInt aBufferSize ) + { + DP0(_L("CAdvancedAudioController::ResetSharedBuffersL")); + iSharedBuffers.ResetAndDestroy(); + + for ( TInt i = 0; i < aNumOfBuffer; i++ ) + { + CMMFDataBuffer* buffer = CreateSourceBufferOfSizeLC(aBufferSize); + DP3(_L("CAdvancedAudioController::ResetSharedBuffersL, index[%d] ptr[%x] size[%d]"), i, buffer->Data().Ptr(), aBufferSize); + User::LeaveIfError( iSharedBuffers.Append(buffer) ); + CleanupStack::Pop(buffer); // buffer + } + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::Panic +// Raises an AdvancedAudioController panic. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::Panic( + TInt aPanicCode ) + { + _LIT(KAdvancedAudioControllerPanicCategory, "AdvancedAudioController"); + User::Panic(KAdvancedAudioControllerPanicCategory, aPanicCode); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::AddDataSourceL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::AddDataSourceL( + MDataSource& /*aSource*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::AddDataSinkL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::AddDataSinkL( + MDataSink& /*aSink*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::RemoveDataSourceL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::RemoveDataSourceL( + MDataSource& /*aDataSource*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::RemoveDataSinkL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::RemoveDataSinkL( + MDataSink& /*aDataSink*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::ResetL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::ResetL() + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::PrimeL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::PrimeL() + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::Play +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::PlayL() + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::Pause +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::PauseL() + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::StopL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::StopL() + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::PositionL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C TTimeIntervalMicroSeconds CAdvancedAudioController::PositionL() const + { + return TTimeIntervalMicroSeconds(0); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::SetPositionL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::SetPositionL( + const TTimeIntervalMicroSeconds& /*aPosition*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::DurationL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C TTimeIntervalMicroSeconds CAdvancedAudioController::DurationL() const + { + DP1(_L("CAdvancedAudioController::DurationL %d"), iDuration); + return TTimeIntervalMicroSeconds(iDuration); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::SetPrioritySettings +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::SetPrioritySettings( + const TMMFPrioritySettings& aPrioritySettings ) + { + iPrioritySettings = aPrioritySettings; + iMMFDevSound->SetPrioritySettings(iPrioritySettings); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::GetNumberOfMetaDataEntriesL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::GetNumberOfMetaDataEntriesL( + TInt& /*aNumberOfEntries*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::GetMetaDataEntryL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C CMMFMetaDataEntry* CAdvancedAudioController::GetMetaDataEntryL( + TInt /*aIndex*/ ) + { + User::Leave(KErrNotSupported); + return NULL; // Need this to suppress compiler warning + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacSetSourceSampleRateL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacSetSourceSampleRateL( + TUint /*aSampleRate*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacSetSourceBitRateL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacSetSourceBitRateL( + TUint /*aBitRate*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacSetSourceNumChannelsL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacSetSourceNumChannelsL( + TUint /*aNumChannels*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacSetSourceFormatL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacSetSourceFormatL( + TUid /*aFormatUid*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacSetSourceDataTypeL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacSetSourceDataTypeL( + TFourCC /*aDataType*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacSetSinkSampleRateL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacSetSinkSampleRateL( + TUint /*aSampleRate*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacSetSinkBitRateL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacSetSinkBitRateL( + TUint /*aRate*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacSetSinkNumChannelsL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacSetSinkNumChannelsL( + TUint /*aNumChannels*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacSetSinkFormatL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacSetSinkFormatL( + TUid /*aFormatUid*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacSetSinkDataTypeL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacSetSinkDataTypeL( + TFourCC /*aDataType*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacSetCodecL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacSetCodecL( + TFourCC /*aSourceDataType*/, + TFourCC /*aSinkDataType*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacGetSourceSampleRateL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacGetSourceSampleRateL( + TUint& /*aRate*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacGetSourceBitRateL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacGetSourceBitRateL( + TUint& /*aRate*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacGetSourceNumChannelsL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacGetSourceNumChannelsL( + TUint& /*aNumChannels*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacGetSourceFormatL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacGetSourceFormatL( + TUid& /*aFormat*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacGetSourceDataTypeL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacGetSourceDataTypeL( + TFourCC& /*aDataType*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacGetSinkSampleRateL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacGetSinkSampleRateL( + TUint& /*aRate*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacGetSinkBitRateL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacGetSinkBitRateL( + TUint& /*aRate*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacGetSinkNumChannelsL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacGetSinkNumChannelsL( + TUint& /*aNumChannels*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacGetSinkFormatL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacGetSinkFormatL( + TUid& /*aFormat*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacGetSinkDataTypeL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacGetSinkDataTypeL( + TFourCC& /*aDataType*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacGetSupportedSourceSampleRatesL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacGetSupportedSourceSampleRatesL( + RArray& /*aSupportedRates*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacGetSupportedSourceBitRatesL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacGetSupportedSourceBitRatesL( + RArray& /*aSupportedRates*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacGetSupportedSourceNumChannelsL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacGetSupportedSourceNumChannelsL( + RArray& /*aSupportedChannels*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacGetSupportedSourceDataTypesL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacGetSupportedSourceDataTypesL( + RArray& /*aSupportedDataTypes*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacGetSupportedSinkSampleRatesL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacGetSupportedSinkSampleRatesL( + RArray& /*aSupportedRates*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacGetSupportedSinkBitRatesL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacGetSupportedSinkBitRatesL( + RArray& /*aSupportedRates*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacGetSupportedSinkNumChannelsL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacGetSupportedSinkNumChannelsL( + RArray& /*aSupportedChannels*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::MacGetSupportedSinkDataTypesL +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C void CAdvancedAudioController::MacGetSupportedSinkDataTypesL( + RArray& /*aSupportedDataTypes*/ ) + { + User::Leave(KErrNotSupported); + } + +// ----------------------------------------------------------------------------- +// CAdvancedAudioController::SendEventToClient +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C TInt CAdvancedAudioController::SendEventToClient( + const TMMFEvent& aEvent ) + { + DP1(_L("Error code at SendEventToClient [%d]"), aEvent.iErrorCode); + DP1(_L("Event type at SendEventToClient [%d]"), aEvent.iEventType); + TMMFEvent eventParamsChange; + eventParamsChange.iErrorCode = aEvent.iErrorCode; + eventParamsChange.iEventType = aEvent.iEventType; + +// This Change has been made for a special Case Scenario. +// If the MMC card is taken out during an Incoming call +// and the ringtone is in MMC, CMMFFile sends up +// a Event type KMMFErrorCategoryControllerGeneralError, +// instead of KMMFEventCategoryPlaybackComplete +// which the client expects. +//TSW: EAKN-63D9FW + + if (aEvent.iEventType == KMMFErrorCategoryControllerGeneralError) + { + eventParamsChange.iEventType = KMMFEventCategoryPlaybackComplete ; + } + + return DoSendEventToClient(eventParamsChange); + + } + +// ----------------------------------------------------------------------------- +// From MDataSource +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C TFourCC CAdvancedAudioController::SourceDataTypeCode( + TMediaId /*aMediaId*/ ) + { + return KFourCCNULL; + } + +EXPORT_C void CAdvancedAudioController::FillBufferL( + CMMFBuffer* /*aBuffer*/, + MDataSink* /*aConsumer*/, + TMediaId /*aMediaId*/ ) + {} + +EXPORT_C void CAdvancedAudioController::BufferEmptiedL( + CMMFBuffer* /*aBuffer*/ ) + {} + +EXPORT_C TBool CAdvancedAudioController::CanCreateSourceBuffer() + { + return EFalse; + } + +EXPORT_C CMMFBuffer* CAdvancedAudioController::CreateSourceBufferL( + TMediaId /*aMediaId*/, + TBool& /*aReference*/ ) + { + return NULL; + } + +EXPORT_C void CAdvancedAudioController::ConstructSourceL( + const TDesC8& /*aInitData*/ ) + {} + +// ----------------------------------------------------------------------------- +// From MDataSink +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C TFourCC CAdvancedAudioController::SinkDataTypeCode( + TMediaId /*aMediaId*/ ) + { + return KFourCCNULL; + } + +EXPORT_C void CAdvancedAudioController::EmptyBufferL( + CMMFBuffer* /*aBuffer*/, + MDataSource* /*aSupplier*/, + TMediaId /*aMediaId*/ ) + {} + +EXPORT_C void CAdvancedAudioController::BufferFilledL( + CMMFBuffer* /*aBuffer*/ ) + {} + +EXPORT_C TBool CAdvancedAudioController::CanCreateSinkBuffer() + { + return EFalse; + } + +EXPORT_C CMMFBuffer* CAdvancedAudioController::CreateSinkBufferL( + TMediaId /*aMediaId*/, + TBool& /*aReference*/ ) + { + return NULL; + } + +EXPORT_C void CAdvancedAudioController::ConstructSinkL( + const TDesC8& /*aInitData*/ ) + {} + +// ----------------------------------------------------------------------------- +// From MCustomInterfaceCustomCommandImplementor +// Provides the default implementation. +// ----------------------------------------------------------------------------- +// +EXPORT_C const TMMFMessageDestination& CAdvancedAudioController::GetCustomInterfaceBuilderL( ) + { + // If an effects manager already exist just return the handle to it + // otherwise, create one. + if ( !iCustomInterfaceBuilder ) + { + iCustomInterfaceBuilder = CCustomInterfaceBuilder::NewL(MMFObjectContainerL(), + *iMMFDevSound); + // Append custom interface builder to the array of MMFObjects + User::LeaveIfError(MMFObjectContainerL().AddMMFObject(*iCustomInterfaceBuilder)); + + TBool secure = EFalse; + secure = CMMFController::IsSecureDrmModeL(); + DP1(_L("CAdvancedAudioController::GetCustomInterfaceBuilderL : ->SetSecureCustomInterfaces(%d)"), secure); + iCustomInterfaceBuilder->SetSecureCustomInterfaces( secure ); + } + return iCustomInterfaceBuilder->Handle(); + } +// ========================== OTHER EXPORTED FUNCTIONS ========================= + +// End of file