mmhais/refacladapt/src/audiogaincontrol/audiogaincontrol.cpp
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
// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
     2
// All rights reserved.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
     7
//
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
     8
// Initial Contributors:
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    10
//
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    11
// Contributors:
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    12
//
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    13
// Description:
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    14
//
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
#include "audiogaincontrol.h"
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    19
#include <a3f/audioprocessingunittypeuids.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    20
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    21
// ======== LOCAL FUNCTIONS ========
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    22
void Panic(TInt aPanicCode)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    23
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    24
	_LIT(KAudioGainControlPanicCategory, "audiogaincontrol");
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    25
	User::Panic(KAudioGainControlPanicCategory, aPanicCode);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    26
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    27
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    28
// ======== MEMBER FUNCTIONS ========
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    29
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    30
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    31
// Constructor
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    32
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    33
CAudioGainControl::CAudioGainControl()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    34
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    35
	TRACE_CREATE();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    36
	DP_CONTEXT(CAudioGainControl::CAudioGainControl *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    37
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    38
	DP_OUT();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    39
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    40
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    41
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    42
// Factory method
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    43
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    44
EXPORT_C CAudioGainControl* CAudioGainControl::NewL()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    45
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    46
	DP_STATIC_CONTEXT(CAudioGainControl::NewL *CD0*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    47
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    48
	CAudioGainControl* self = new(ELeave)CAudioGainControl();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    49
	CleanupStack::PushL(self);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    50
	self->ConstructL();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    51
	CleanupStack::Pop(self);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    52
	DP0_RET(self, "0x%x");
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
// Second phase constructor
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    57
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    58
void CAudioGainControl::ConstructL()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    59
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    60
	DP_CONTEXT(CAudioGainControl::ConstructL *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    61
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    62
	DP_OUT();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    63
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    64
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    65
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    66
// Destructor
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    67
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    68
CAudioGainControl::~CAudioGainControl()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    69
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    70
	DP_CONTEXT(CAudioGainControl::~CAudioGainControl *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    71
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    72
	iGainObservers.Close();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    73
	DP_OUT();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    74
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    75
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    76
EXPORT_C void CAudioGainControl::SetHelper(MGainHelper &aHelper)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    77
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    78
	iHelper = &aHelper;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    79
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    80
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    81
// CAudioGainControl::IssueGainChangedCallBack
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    82
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    83
EXPORT_C void CAudioGainControl::IssueGainChangedCallBack(TInt aError)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    84
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    85
	DP_CONTEXT(CAudioGainControl::IssueGainChangedCallBack *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    86
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    87
	TUint count = iGainObservers.Count();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    88
	for(TUint i(0); i<count; i++)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    89
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    90
		iGainObservers[i]->GainChanged(*this, aError);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    91
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    92
	DP_OUT();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    93
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    94
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    95
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    96
// CAudioGainControl::IssueMaxGainChangedCallBack
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    97
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    98
void CAudioGainControl::IssueMaxGainChangedCallBack()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    99
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   100
	DP_CONTEXT(CAudioGainControl::IssueMaxGainChangedCallBack *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   101
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   102
	TUint count = iGainObservers.Count();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   103
	for(TUint i(0); i<count; i++)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   104
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   105
		iGainObservers[i]->MaxGainChanged(*this);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   106
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   107
	DP_OUT();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   108
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   109
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   110
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   111
// CAudioGainControl::IssueMaxRampTimeGainChangedCallBack
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   112
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   113
void CAudioGainControl::IssueMaxRampTimeChangedCallBack()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   114
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   115
	DP_CONTEXT(CAudioGainControl::IssueMaxRampTimeChangedCallBack *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   116
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   117
	TUint count = iGainObservers.Count();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   118
	for(TUint i(0); i<count; i++)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   119
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   120
		 iGainObservers[i]->MaxRampTimeChanged(*this);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   121
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   122
	DP_OUT();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   123
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   124
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   125
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   126
// CAudioGainControl::ConfigureRamp
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   127
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   128
EXPORT_C TInt CAudioGainControl::ConfigureRamp(TUid aRampOperation, const TTimeIntervalMicroSeconds& aRampDuration)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   129
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   130
	DP_CONTEXT(CAudioGainControl::ConfigureRamp *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   131
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   132
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   133
	TInt err = KErrNone;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   134
	// Apply ramp
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   135
	if(iHelper)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   136
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   137
		err = iHelper->ConfigureRamp(aRampOperation, aRampDuration);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   138
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   139
		
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   140
	DP0_RET(err, "%d");
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   141
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   142
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   143
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   144
// from class MAudioGainControl
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   145
// CAudioGainControl::GetMaxGain
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   146
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   147
TInt CAudioGainControl::GetMaxGain(TInt& aMaxGain) const
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   148
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   149
	DP_CONTEXT(CAudioGainControl::GetMaxGain *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   150
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   151
	TInt err = KErrNone;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   152
	aMaxGain = KDefaultMaxGain;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   153
	DP0_RET(err, "%d");
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   154
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   155
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   156
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   157
// from class MAudioGainControl
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   158
// CAudioGainControl::GetMaxRampTime
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   159
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   160
TInt CAudioGainControl::GetMaxRampTime(TTimeIntervalMicroSeconds& aMaxRampTime) const
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   161
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   162
	DP_CONTEXT(CAudioGainControl::GetMaxRampTime *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   163
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   164
	aMaxRampTime = KDefaultMaxRampTime;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   165
	DP0_RET(KErrNone, "%d");
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   166
	} 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   167
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   168
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   169
// from class MAudioGainControl
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   170
// CAudioGainControl::GetGain
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   171
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   172
TInt CAudioGainControl::GetGain(RArray<TAudioChannelGain>& aChannels) const
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   173
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   174
	DP_CONTEXT(CAudioGainControl::GetGain *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   175
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   176
	TInt err = KErrNone;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   177
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   178
	aChannels.Reset();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   179
	TInt count = iGains.Count();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   180
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   181
	for (TUint i(0); i < count; i++)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   182
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   183
		err = aChannels.Append(iGains[i]);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   184
		if(err != KErrNone)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   185
			{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   186
			break;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   187
			}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   188
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   189
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   190
	DP0_RET(err, "%d");
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   191
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   192
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   193
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   194
// from class MAudioGainControl
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   195
// CAudioGainControl::SetGain
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   196
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   197
TInt CAudioGainControl::SetGain( RArray<TAudioChannelGain>& /*aChannels*/, TUid /*aRampOperation*/, 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   198
	const TTimeIntervalMicroSeconds& /*aRampDuration*/)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   199
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   200
	DP_CONTEXT(CAudioGainControl::SetGain *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   201
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   202
	__ASSERT_DEBUG(EFalse, Panic(EAdaptationOldSetGainCalledPanic));
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   203
	DP0_RET(KErrNone, "%d");
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   204
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   205
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   206
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   207
// from class MAudioGainControl
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   208
// CAudioGainControl::SetGain
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   209
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   210
TInt CAudioGainControl::SetGain(RArray<TAudioChannelGain>& aChannels)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   211
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   212
	DP_CONTEXT(CAudioGainControl::SetGain *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   213
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   214
	TInt err = KErrNone;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   215
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   216
	// Keep array cache
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   217
	iGains.Reset();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   218
	TUint count = aChannels.Count();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   219
	for (TUint i(0); i < count; i++)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   220
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   221
		err = iGains.Append(aChannels[i]);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   222
		if(err != KErrNone)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   223
			{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   224
			break;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   225
			}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   226
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   227
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   228
	// Apply gain
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   229
	if(iHelper && err == KErrNone)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   230
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   231
		err = iHelper->SetGain(aChannels);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   232
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   233
	DP0_RET(KErrNone, "%d");
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   234
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   235
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   236
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   237
// from class MAudioGainControl
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   238
// CAudioGainControl::RegisterAudioGainControlObserver
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   239
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   240
TInt CAudioGainControl::RegisterAudioGainControlObserver(MAudioGainControlObserver& aObserver)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   241
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   242
	DP_CONTEXT(CAudioGainControl::RegisterAudioStreamObserver *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   243
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   244
	TInt err = iGainObservers.Find(&aObserver);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   245
	if(err == KErrNotFound)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   246
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   247
		err = iGainObservers.Append(&aObserver);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   248
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   249
	else
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   250
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   251
		err = KErrAlreadyExists;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   252
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   253
	DP0_RET(err, "%d");
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   254
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   255
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   256
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   257
// from class MAudioGainControl
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   258
// CAudioGainControl::UnregisterAudioGainControlObserver
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   259
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   260
void CAudioGainControl::UnregisterAudioGainControlObserver(MAudioGainControlObserver& aObserver)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   261
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   262
	DP_CONTEXT(CAudioGainControl::UnregisterAudioStreamObserver *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   263
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   264
	TInt idxOrErr = iGainObservers.Find(&aObserver);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   265
	if( idxOrErr != KErrNotFound )
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   266
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   267
		iGainObservers.Remove(idxOrErr);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   268
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   269
	DP_OUT();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   270
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   271
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   272
// end of file