--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mmhais/a3facl/src/shared/mlogicalchain.h Tue Feb 02 01:56:55 2010 +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 <e32base.h>
+#include <a3f/a3fbase.h>
+
+// 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