mmhais/a3facl/src/shared/mlogicalchain.h
author hgs
Wed, 13 Oct 2010 12:08:48 +0100
changeset 3 28bdc4aca325
parent 0 79dd3e2336a0
permissions -rw-r--r--
2010wk42_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
     1
/*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
     2
* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
     3
* All rights reserved.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
     8
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
     9
* Initial Contributors:
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    11
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    12
* Contributors:
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    13
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    14
* Description:
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    15
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    16
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    17
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    18
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    19
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    20
#ifndef MLOGICALCHAIN_H
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    21
#define MLOGICALCHAIN_H
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    22
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    23
#include <e32base.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    24
#include <a3f/a3fbase.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    25
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    26
// CLASS FORWARD
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    27
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    28
class MMMFAudioDataSupplier;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    29
class MMMFAudioDataConsumer;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    30
class MMMFBufferSource;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    31
class MMMFBufferSink;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    32
class MAudioGainControl;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    33
class MAudioCodecAdaptationObserver;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    34
class MStreamPositionControl;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    35
class MCustomInterfaceSupport;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    36
class MConfigurationHelper;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    37
class MStreamBufferControl;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    38
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    39
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    40
enum TMMRCMessageType
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    41
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    42
	ENoMessage = 0x0000,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    43
	ERegisterStreamObserver = 0x0001, 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    44
	ERegisterCodecObserver = 0x0002, 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    45
	ERegisterGainObserver = 0x0004, 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    46
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    47
	EComponentCreation = 0x0010,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    48
	EComponentDestruction = 0x0020,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    49
	EComponentAlterationGain = 0x0040,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    50
	EComponentAlterationCodec = 0x0080,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    51
	EStreamStateChange = 0x0100,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    52
	EConfigurationRequest = 0x0200
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    53
	};
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    54
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    55
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    56
const TUid KUidAudioCodecObserver = {0x102834BF};
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    57
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    58
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    59
/*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    60
Interface that represent the logical chain 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    61
@class MLogicalChain
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    62
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    63
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    64
class MLogicalChain
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    65
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    66
public:
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    67
	/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    68
	Set the type of message to be processed at the adaptation side
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    69
	@ see TMMRCMessageType
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    70
	@param the type of message to be processed
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    71
	*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    72
	virtual void SetMessageType(TMMRCMessageType aMessageType) = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    73
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    74
	/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    75
	Set the type of message to be processed at the adaptation side
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    76
	@ see TMMRCMessageType
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    77
	@param the type of message to be processed
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    78
	*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    79
	virtual void ResetMessage() = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    80
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    81
	/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    82
	Returns the type of message to be processed at the adaptation side
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    83
	@ see TMMRCMessageType
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    84
	@return the type of message to be processed
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    85
	*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    86
	virtual TUint MessageType() = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    87
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    88
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    89
	/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    90
	Returns the number of processing units in the current logical chain 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    91
	@return the number of processing units in the current logical chain 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    92
	*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    93
	virtual TInt AudioProcessingUnitsCount() = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    94
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    95
	/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    96
	Returns the UID type of the processing unit of the logical chain 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    97
	This function allows the adaptation side know extra details for logical components
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    98
	@param aIndex indicates the creation order index
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    99
	@return the uid type of the processing unit
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   100
	*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   101
	virtual TUid AudioProcessingUnitUid(TInt aIndex) = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   102
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   103
	/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   104
	Returns the logical chain  state
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   105
	@return the logical chain state
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   106
	*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   107
	virtual TAudioState StreamState() = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   108
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   109
	/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   110
	Set the logical chain state
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   111
	@param the logical chain state
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   112
	*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   113
	virtual void SetStreamState(TAudioState aState) = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   114
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   115
	/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   116
	Returns the logical codec format
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   117
	@return the logical codec format
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   118
	*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   119
	virtual TUid CodecFormat() = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   120
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   121
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   122
	/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   123
	Returns the logical codec sample rate
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   124
	@return the logical codec sample rate
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   125
	*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   126
	virtual TInt GetSampleRate() = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   127
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   128
	/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   129
	Gets the mode – e.g. mono/stereo. 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   130
	@return aMode
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   131
	*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   132
	virtual TUid GetMode() = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   133
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   134
	/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   135
	Returns the priority from the stream
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   136
	@return the the priority from the stream
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   137
	*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   138
	virtual TInt Priority() = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   139
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   140
	/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   141
	Returns the ramp time parameters
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   142
	*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   143
	virtual void GetVolumeRampParameters(TUid& aRampOperation, TTimeIntervalMicroSeconds& aRampDuration) = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   144
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   145
	/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   146
	Copies the main configuration parameters of the logical chain
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   147
	@see TLogicalChainConfiguration
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   148
	@param the logical chain from where the parameter will be copied
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   149
	*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   150
	virtual void CopySettings(const MLogicalChain& aChain) = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   151
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   152
	/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   153
	Creates a copy from the current object 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   154
	@return a copy from the current logical chain the ownership is transferred
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   155
	*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   156
	virtual MLogicalChain* CloneL() = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   157
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   158
	/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   159
	Deletes the logical chain cloned
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   160
	*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   161
	virtual void Release() = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   162
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   163
	/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   164
	Deletes the logical chain cloned
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   165
	*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   166
	virtual TAny* GetComponent(TUid aType) = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   167
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   168
	// TODO: Remove those temporary workarounds for data connection
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   169
	// When the MMRC server is fully implemented and 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   170
	// the Control mechanisms & Observation interface extension mechanisms are available
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   171
	virtual void SetAdaptationSource(MMMFBufferSource& aSource) = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   172
	virtual void SetAdaptationSink(MMMFBufferSink& aSink) = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   173
	virtual void SetAdaptationGainControl(MAudioGainControl& aGain) = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   174
	virtual void SetStreamPositionControl(MStreamPositionControl& aControl) = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   175
	virtual void SetCustomInterfaceProvider(MCustomInterfaceSupport& aControl) = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   176
	virtual void SetAdaptationStream(MConfigurationHelper& aCodec) = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   177
	virtual void SetStreamBufferControl(MStreamBufferControl& aStreamBufferControl) =  0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   178
	};
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   179
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   180
#endif // MLOGICALCHAIN_H