diff -r 000000000000 -r bde4ae8d615e os/mm/mmhais/a3facl/src/shared/mlogicalchain.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/mm/mmhais/a3facl/src/shared/mlogicalchain.h Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,180 @@ +/* +* Copyright (c) 2004-2009 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: +* +*/ + + + +#ifndef MLOGICALCHAIN_H +#define MLOGICALCHAIN_H + +#include +#include + +// CLASS FORWARD + +class MMMFAudioDataSupplier; +class MMMFAudioDataConsumer; +class MMMFBufferSource; +class MMMFBufferSink; +class MAudioGainControl; +class MAudioCodecAdaptationObserver; +class MStreamPositionControl; +class MCustomInterfaceSupport; +class MConfigurationHelper; +class MStreamBufferControl; + + +enum TMMRCMessageType + { + ENoMessage = 0x0000, + ERegisterStreamObserver = 0x0001, + ERegisterCodecObserver = 0x0002, + ERegisterGainObserver = 0x0004, + + EComponentCreation = 0x0010, + EComponentDestruction = 0x0020, + EComponentAlterationGain = 0x0040, + EComponentAlterationCodec = 0x0080, + EStreamStateChange = 0x0100, + EConfigurationRequest = 0x0200 + }; + + +const TUid KUidAudioCodecObserver = {0x102834BF}; + + +/* +Interface that represent the logical chain +@class MLogicalChain +*/ + +class MLogicalChain + { +public: + /** + Set the type of message to be processed at the adaptation side + @ see TMMRCMessageType + @param the type of message to be processed + */ + virtual void SetMessageType(TMMRCMessageType aMessageType) = 0; + + /** + Set the type of message to be processed at the adaptation side + @ see TMMRCMessageType + @param the type of message to be processed + */ + virtual void ResetMessage() = 0; + + /** + Returns the type of message to be processed at the adaptation side + @ see TMMRCMessageType + @return the type of message to be processed + */ + virtual TUint MessageType() = 0; + + + /** + Returns the number of processing units in the current logical chain + @return the number of processing units in the current logical chain + */ + virtual TInt AudioProcessingUnitsCount() = 0; + + /** + Returns the UID type of the processing unit of the logical chain + This function allows the adaptation side know extra details for logical components + @param aIndex indicates the creation order index + @return the uid type of the processing unit + */ + virtual TUid AudioProcessingUnitUid(TInt aIndex) = 0; + + /** + Returns the logical chain state + @return the logical chain state + */ + virtual TAudioState StreamState() = 0; + + /** + Set the logical chain state + @param the logical chain state + */ + virtual void SetStreamState(TAudioState aState) = 0; + + /** + Returns the logical codec format + @return the logical codec format + */ + virtual TUid CodecFormat() = 0; + + + /** + Returns the logical codec sample rate + @return the logical codec sample rate + */ + virtual TInt GetSampleRate() = 0; + + /** + Gets the mode – e.g. mono/stereo. + @return aMode + */ + virtual TUid GetMode() = 0; + + /** + Returns the priority from the stream + @return the the priority from the stream + */ + virtual TInt Priority() = 0; + + /** + Returns the ramp time parameters + */ + virtual void GetVolumeRampParameters(TUid& aRampOperation, TTimeIntervalMicroSeconds& aRampDuration) = 0; + + /** + Copies the main configuration parameters of the logical chain + @see TLogicalChainConfiguration + @param the logical chain from where the parameter will be copied + */ + virtual void CopySettings(const MLogicalChain& aChain) = 0; + + /** + Creates a copy from the current object + @return a copy from the current logical chain the ownership is transferred + */ + virtual MLogicalChain* CloneL() = 0; + + /** + Deletes the logical chain cloned + */ + virtual void Release() = 0; + + /** + Deletes the logical chain cloned + */ + virtual TAny* GetComponent(TUid aType) = 0; + + // TODO: Remove those temporary workarounds for data connection + // When the MMRC server is fully implemented and + // the Control mechanisms & Observation interface extension mechanisms are available + virtual void SetAdaptationSource(MMMFBufferSource& aSource) = 0; + virtual void SetAdaptationSink(MMMFBufferSink& aSink) = 0; + virtual void SetAdaptationGainControl(MAudioGainControl& aGain) = 0; + virtual void SetStreamPositionControl(MStreamPositionControl& aControl) = 0; + virtual void SetCustomInterfaceProvider(MCustomInterfaceSupport& aControl) = 0; + virtual void SetAdaptationStream(MConfigurationHelper& aCodec) = 0; + virtual void SetStreamBufferControl(MStreamBufferControl& aStreamBufferControl) = 0; + }; + +#endif // MLOGICALCHAIN_H