mmhais/a3facl/src/shared/mlogicalchain.h
changeset 0 40261b775718
--- /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