os/mm/devsoundextensions/effects/AudioEqualizer/AudioEqualizerEffect/Src/AudioEqualizerBase.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
/*
sl@0
     2
* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). 
sl@0
     3
* All rights reserved.
sl@0
     4
* This component and the accompanying materials are made available
sl@0
     5
* under the terms of "Eclipse Public License v1.0"
sl@0
     6
* which accompanies this distribution, and is available
sl@0
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     8
*
sl@0
     9
* Initial Contributors:
sl@0
    10
* Nokia Corporation - initial contribution.
sl@0
    11
*
sl@0
    12
* Contributors:
sl@0
    13
*
sl@0
    14
* Description:   Implementation of the Audio Equalizer effect class
sl@0
    15
*
sl@0
    16
*/
sl@0
    17
sl@0
    18
sl@0
    19
sl@0
    20
sl@0
    21
// INCLUDE FILES
sl@0
    22
sl@0
    23
#ifdef _DEBUG
sl@0
    24
#include <e32svr.h>
sl@0
    25
#endif
sl@0
    26
sl@0
    27
#include <AudioEqualizerBase.h>
sl@0
    28
#include <CustomInterfaceUtility.h>
sl@0
    29
#include "AudioEqualizerProxy.h"
sl@0
    30
#include <s32mem.h>
sl@0
    31
#include <DrmAudioSamplePlayer.h>
sl@0
    32
#include <mdaaudioinputstream.h>
sl@0
    33
#include <mdaaudiooutputstream.h>
sl@0
    34
#include <mdaaudiotoneplayer.h>
sl@0
    35
#include <mmf/server/sounddevice.h>
sl@0
    36
sl@0
    37
#ifdef _DEBUG
sl@0
    38
#define DEBPRN0         RDebug::Printf( "%s", __PRETTY_FUNCTION__);
sl@0
    39
#define DEBPRN1(str)    RDebug::Printf( "%s %s", __PRETTY_FUNCTION__, str );
sl@0
    40
#else
sl@0
    41
#define DEBPRN0
sl@0
    42
#define DEBPRN1(str)
sl@0
    43
#endif
sl@0
    44
sl@0
    45
// ============================ MEMBER FUNCTIONS ===============================
sl@0
    46
sl@0
    47
// -----------------------------------------------------------------------------
sl@0
    48
// CAudioEqualizer::CAudioEqualizer
sl@0
    49
// C++ default constructor can NOT contain any code, that
sl@0
    50
// might leave.
sl@0
    51
// -----------------------------------------------------------------------------
sl@0
    52
//
sl@0
    53
EXPORT_C CAudioEqualizer::CAudioEqualizer()
sl@0
    54
    : 	iAudioEqualizerData(0, 0),
sl@0
    55
    	iDataPckgTo(iAudioEqualizerData),
sl@0
    56
    	iBandChange(0)
sl@0
    57
    {
sl@0
    58
    }
sl@0
    59
sl@0
    60
// Destructor
sl@0
    61
EXPORT_C CAudioEqualizer::~CAudioEqualizer()
sl@0
    62
    {
sl@0
    63
        delete iBandDataBuf;
sl@0
    64
	iBandsData.Close();
sl@0
    65
    }
sl@0
    66
sl@0
    67
// -----------------------------------------------------------------------------
sl@0
    68
// CAudioEqualizer::NewL
sl@0
    69
// Static function for creating an instance of the AudioEqualizer object.
sl@0
    70
// -----------------------------------------------------------------------------
sl@0
    71
//
sl@0
    72
EXPORT_C CAudioEqualizer* CAudioEqualizer::NewL()
sl@0
    73
	{
sl@0
    74
	User::Leave(KErrNotSupported);
sl@0
    75
	return NULL;
sl@0
    76
	}
sl@0
    77
sl@0
    78
// -----------------------------------------------------------------------------
sl@0
    79
// CAudioEqualizer::NewL
sl@0
    80
// Static function for creating an instance of the AudioEqualizer object.
sl@0
    81
// -----------------------------------------------------------------------------
sl@0
    82
//
sl@0
    83
EXPORT_C CAudioEqualizer* CAudioEqualizer::NewL(
sl@0
    84
	CMdaAudioConvertUtility& aUtility )
sl@0
    85
	{
sl@0
    86
    DEBPRN0;
sl@0
    87
   	CCustomInterfaceUtility* customInterface = CCustomInterfaceUtility::NewL(aUtility);
sl@0
    88
    CleanupStack::PushL(customInterface);
sl@0
    89
sl@0
    90
	CAudioEqualizerProxy* audioEqualizerProxy = (CAudioEqualizerProxy*)customInterface->CustomInterface(KUidAudioEqualizerEffect);
sl@0
    91
sl@0
    92
	if ( !audioEqualizerProxy )
sl@0
    93
		{
sl@0
    94
        DEBPRN1("No Adaptation Support - leaving"); 
sl@0
    95
		User::Leave(KErrNotSupported);
sl@0
    96
		}
sl@0
    97
sl@0
    98
	CleanupStack::Pop(customInterface);
sl@0
    99
sl@0
   100
    return audioEqualizerProxy;
sl@0
   101
	}
sl@0
   102
sl@0
   103
// -----------------------------------------------------------------------------
sl@0
   104
// CAudioEqualizer::NewL
sl@0
   105
// Static function for creating an instance of the AudioEqualizer object.
sl@0
   106
// -----------------------------------------------------------------------------
sl@0
   107
//
sl@0
   108
EXPORT_C CAudioEqualizer* CAudioEqualizer::NewL(
sl@0
   109
	CMdaAudioInputStream& aUtility )
sl@0
   110
	{
sl@0
   111
    DEBPRN0;
sl@0
   112
    CAudioEqualizerProxy* audioEqualizerProxy = (CAudioEqualizerProxy*)aUtility.CustomInterface(KUidAudioEqualizerEffect);
sl@0
   113
	if (audioEqualizerProxy == NULL)
sl@0
   114
		{
sl@0
   115
        DEBPRN1("No Adaptation Support - leaving"); 
sl@0
   116
		User::Leave(KErrNotSupported);
sl@0
   117
		}
sl@0
   118
    return audioEqualizerProxy;
sl@0
   119
	}
sl@0
   120
sl@0
   121
// -----------------------------------------------------------------------------
sl@0
   122
// CAudioEqualizer::NewL
sl@0
   123
// Static function for creating an instance of the AudioEqualizer object.
sl@0
   124
// -----------------------------------------------------------------------------
sl@0
   125
//
sl@0
   126
EXPORT_C CAudioEqualizer* CAudioEqualizer::NewL(
sl@0
   127
	CMdaAudioOutputStream& aUtility )
sl@0
   128
	{
sl@0
   129
    DEBPRN0;
sl@0
   130
    CAudioEqualizerProxy* audioEqualizerProxy = (CAudioEqualizerProxy*)aUtility.CustomInterface(KUidAudioEqualizerEffect);
sl@0
   131
	if (audioEqualizerProxy == NULL)
sl@0
   132
		{
sl@0
   133
        DEBPRN1("No Adaptation Support - leaving");    
sl@0
   134
    	User::Leave(KErrNotSupported);
sl@0
   135
		}
sl@0
   136
    return audioEqualizerProxy;
sl@0
   137
	}
sl@0
   138
sl@0
   139
// -----------------------------------------------------------------------------
sl@0
   140
// CAudioEqualizer::NewL
sl@0
   141
// Static function for creating an instance of the AudioEqualizer object.
sl@0
   142
// -----------------------------------------------------------------------------
sl@0
   143
//
sl@0
   144
EXPORT_C CAudioEqualizer* CAudioEqualizer::NewL(
sl@0
   145
	CMdaAudioPlayerUtility& aUtility )
sl@0
   146
	{
sl@0
   147
    DEBPRN0;
sl@0
   148
   	CCustomInterfaceUtility* customInterface = CCustomInterfaceUtility::NewL(aUtility);
sl@0
   149
    CleanupStack::PushL(customInterface);
sl@0
   150
sl@0
   151
	CAudioEqualizerProxy* audioEqualizerProxy = (CAudioEqualizerProxy*)customInterface->CustomInterface(KUidAudioEqualizerEffect);
sl@0
   152
sl@0
   153
	if ( !audioEqualizerProxy )
sl@0
   154
		{
sl@0
   155
        DEBPRN1("No Adaptation Support - leaving"); 
sl@0
   156
		User::Leave(KErrNotSupported);
sl@0
   157
		}
sl@0
   158
sl@0
   159
	CleanupStack::Pop(customInterface);
sl@0
   160
sl@0
   161
    return audioEqualizerProxy;
sl@0
   162
	}
sl@0
   163
sl@0
   164
// -----------------------------------------------------------------------------
sl@0
   165
// CAudioEqualizer::NewL
sl@0
   166
// Static function for creating an instance of the AudioEqualizer object.
sl@0
   167
// -----------------------------------------------------------------------------
sl@0
   168
//
sl@0
   169
EXPORT_C CAudioEqualizer* CAudioEqualizer::NewL(
sl@0
   170
	CMdaAudioRecorderUtility& aUtility,
sl@0
   171
	TBool aRecordStream )
sl@0
   172
	{
sl@0
   173
    DEBPRN0;
sl@0
   174
   	CCustomInterfaceUtility* customInterface = CCustomInterfaceUtility::NewL(aUtility, aRecordStream);
sl@0
   175
    CleanupStack::PushL(customInterface);
sl@0
   176
sl@0
   177
	CAudioEqualizerProxy* audioEqualizerProxy = (CAudioEqualizerProxy*)customInterface->CustomInterface(KUidAudioEqualizerEffect);
sl@0
   178
sl@0
   179
	if ( !audioEqualizerProxy )
sl@0
   180
		{
sl@0
   181
        DEBPRN1("No Adaptation Support - leaving"); 
sl@0
   182
		User::Leave(KErrNotSupported);
sl@0
   183
		}
sl@0
   184
sl@0
   185
    CleanupStack::Pop(customInterface);
sl@0
   186
sl@0
   187
    return audioEqualizerProxy;
sl@0
   188
	}
sl@0
   189
sl@0
   190
// -----------------------------------------------------------------------------
sl@0
   191
// CAudioEqualizer::NewL
sl@0
   192
// Static function for creating an instance of the AudioEqualizer object.
sl@0
   193
// -----------------------------------------------------------------------------
sl@0
   194
//
sl@0
   195
EXPORT_C CAudioEqualizer* CAudioEqualizer::NewL(
sl@0
   196
	CMdaAudioToneUtility& aUtility )
sl@0
   197
	{
sl@0
   198
    DEBPRN0;
sl@0
   199
    CAudioEqualizerProxy* audioEqualizerProxy = (CAudioEqualizerProxy*)aUtility.CustomInterface(KUidAudioEqualizerEffect);
sl@0
   200
	if (audioEqualizerProxy == NULL)
sl@0
   201
		{
sl@0
   202
        DEBPRN1("No Adaptation Support - leaving"); 
sl@0
   203
		User::Leave(KErrNotSupported);
sl@0
   204
		}
sl@0
   205
    return audioEqualizerProxy;
sl@0
   206
	}
sl@0
   207
sl@0
   208
// -----------------------------------------------------------------------------
sl@0
   209
// CAudioEqualizer::NewL
sl@0
   210
// Static function for creating an instance of the AudioEqualizer object.
sl@0
   211
// -----------------------------------------------------------------------------
sl@0
   212
//
sl@0
   213
EXPORT_C CAudioEqualizer* CAudioEqualizer::NewL(
sl@0
   214
	CMMFDevSound& aDevSound )
sl@0
   215
	{
sl@0
   216
    DEBPRN0;
sl@0
   217
    CAudioEqualizerProxy* audioEqualizerProxy = (CAudioEqualizerProxy*)aDevSound.CustomInterface(KUidAudioEqualizerEffect);
sl@0
   218
	if (audioEqualizerProxy == NULL)
sl@0
   219
		{
sl@0
   220
        DEBPRN1("No Adaptation Support - leaving"); 
sl@0
   221
		User::Leave(KErrNotSupported);
sl@0
   222
		}
sl@0
   223
    return audioEqualizerProxy;
sl@0
   224
	}
sl@0
   225
sl@0
   226
// -----------------------------------------------------------------------------
sl@0
   227
// CAudioEqualizer::NewL
sl@0
   228
// Static function for creating an instance of the AudioEqualizer object.
sl@0
   229
// -----------------------------------------------------------------------------
sl@0
   230
//
sl@0
   231
EXPORT_C CAudioEqualizer* CAudioEqualizer::NewL(
sl@0
   232
	CCustomCommandUtility* aUtility )
sl@0
   233
	{
sl@0
   234
    DEBPRN0;
sl@0
   235
   	CCustomInterfaceUtility* customInterface = CCustomInterfaceUtility::NewL(aUtility);
sl@0
   236
    CleanupStack::PushL(customInterface);
sl@0
   237
sl@0
   238
	CAudioEqualizerProxy* audioEqualizerProxy = (CAudioEqualizerProxy*)customInterface->CustomInterface(KUidAudioEqualizerEffect);
sl@0
   239
	if ( !audioEqualizerProxy )
sl@0
   240
		{
sl@0
   241
		DEBPRN1("No Adaptation Support - leaving"); 
sl@0
   242
		User::Leave(KErrNotSupported);
sl@0
   243
		}
sl@0
   244
sl@0
   245
    CleanupStack::Pop(customInterface);
sl@0
   246
sl@0
   247
    return audioEqualizerProxy;
sl@0
   248
	}
sl@0
   249
sl@0
   250
// -----------------------------------------------------------------------------
sl@0
   251
// CAudioEqualizer::NewL
sl@0
   252
// Static function for creating an instance of the AudioEqualizer object.
sl@0
   253
// -----------------------------------------------------------------------------
sl@0
   254
//
sl@0
   255
EXPORT_C CAudioEqualizer* CAudioEqualizer::NewL(
sl@0
   256
	MCustomInterface& aCustomInterface )
sl@0
   257
	{
sl@0
   258
    DEBPRN0;
sl@0
   259
	CAudioEqualizerProxy* audioEqualizerProxy = (CAudioEqualizerProxy*)aCustomInterface.CustomInterface(KUidAudioEqualizerEffect);
sl@0
   260
sl@0
   261
	if ( !audioEqualizerProxy )
sl@0
   262
		{
sl@0
   263
		DEBPRN1("No Adaptation Support - leaving"); 
sl@0
   264
		User::Leave(KErrNotSupported);
sl@0
   265
		}
sl@0
   266
sl@0
   267
    return audioEqualizerProxy;
sl@0
   268
	}
sl@0
   269
sl@0
   270
// -----------------------------------------------------------------------------
sl@0
   271
// CAudioEqualizer::NewL
sl@0
   272
// Static function for creating an instance of the AudioEqualizer object.
sl@0
   273
// -----------------------------------------------------------------------------
sl@0
   274
//
sl@0
   275
EXPORT_C CAudioEqualizer* CAudioEqualizer::NewL( 
sl@0
   276
	CMidiClientUtility& aUtility )
sl@0
   277
    {
sl@0
   278
    DEBPRN0;
sl@0
   279
   	CCustomInterfaceUtility* customInterface = CCustomInterfaceUtility::NewL(aUtility);
sl@0
   280
    CleanupStack::PushL(customInterface);
sl@0
   281
sl@0
   282
	CAudioEqualizerProxy* audioEqualizerProxy = (CAudioEqualizerProxy*)customInterface->CustomInterface(KUidAudioEqualizerEffect);
sl@0
   283
sl@0
   284
	if ( !audioEqualizerProxy )
sl@0
   285
		{
sl@0
   286
		DEBPRN1("No Adaptation Support - leaving"); 
sl@0
   287
		User::Leave(KErrNotSupported);
sl@0
   288
		}
sl@0
   289
sl@0
   290
    CleanupStack::Pop(customInterface);
sl@0
   291
sl@0
   292
    return audioEqualizerProxy;
sl@0
   293
    }
sl@0
   294
sl@0
   295
// -----------------------------------------------------------------------------
sl@0
   296
// CAudioEqualizer::NewL
sl@0
   297
// Static function for creating an instance of the AudioEqualizer object.
sl@0
   298
// -----------------------------------------------------------------------------
sl@0
   299
//
sl@0
   300
EXPORT_C CAudioEqualizer* CAudioEqualizer::NewL( 
sl@0
   301
	CDrmPlayerUtility& aUtility )
sl@0
   302
    {
sl@0
   303
    DEBPRN0;
sl@0
   304
   	CCustomInterfaceUtility* customInterface = CCustomInterfaceUtility::NewL(aUtility);
sl@0
   305
    CleanupStack::PushL(customInterface);
sl@0
   306
sl@0
   307
	CAudioEqualizerProxy* audioEqualizerProxy = (CAudioEqualizerProxy*)customInterface->CustomInterface(KUidAudioEqualizerEffect);
sl@0
   308
sl@0
   309
	if ( !audioEqualizerProxy )
sl@0
   310
		{
sl@0
   311
        DEBPRN1("No Adaptation Support - leaving"); 
sl@0
   312
		User::Leave(KErrNotSupported);
sl@0
   313
		}
sl@0
   314
sl@0
   315
    CleanupStack::Pop(customInterface);
sl@0
   316
sl@0
   317
    return audioEqualizerProxy;
sl@0
   318
    }
sl@0
   319
sl@0
   320
// -----------------------------------------------------------------------------
sl@0
   321
// CAudioEqualizer::NewL
sl@0
   322
// Static function for creating an instance of the AudioEqualizer object.
sl@0
   323
// -----------------------------------------------------------------------------
sl@0
   324
//
sl@0
   325
EXPORT_C CAudioEqualizer* CAudioEqualizer::NewL( 
sl@0
   326
	CVideoPlayerUtility& aUtility )
sl@0
   327
    {
sl@0
   328
    DEBPRN0;
sl@0
   329
   	CCustomInterfaceUtility* customInterface = CCustomInterfaceUtility::NewL(aUtility);
sl@0
   330
    CleanupStack::PushL(customInterface);
sl@0
   331
sl@0
   332
	CAudioEqualizerProxy* audioEqualizerProxy = (CAudioEqualizerProxy*)customInterface->CustomInterface(KUidAudioEqualizerEffect);
sl@0
   333
sl@0
   334
	if ( !audioEqualizerProxy )
sl@0
   335
		{
sl@0
   336
        DEBPRN1("No Adaptation Support - leaving"); 
sl@0
   337
		User::Leave(KErrNotSupported);
sl@0
   338
		}
sl@0
   339
sl@0
   340
    CleanupStack::Pop(customInterface);
sl@0
   341
sl@0
   342
    return audioEqualizerProxy;
sl@0
   343
    }
sl@0
   344
// -----------------------------------------------------------------------------
sl@0
   345
// CAudioEqualizer::BandLevel
sl@0
   346
// -----------------------------------------------------------------------------
sl@0
   347
//
sl@0
   348
EXPORT_C TInt32 CAudioEqualizer::BandLevel(
sl@0
   349
	TUint8 aBand ) const
sl@0
   350
	{
sl@0
   351
	if( aBand > NumberOfBands() )
sl@0
   352
		{
sl@0
   353
		return KErrArgument;
sl@0
   354
		}
sl@0
   355
	else
sl@0
   356
		{
sl@0
   357
		return iBandsData[aBand-1].iBandLevel;
sl@0
   358
		}
sl@0
   359
	}
sl@0
   360
sl@0
   361
// -----------------------------------------------------------------------------
sl@0
   362
// CAudioEqualizer::BandWidth
sl@0
   363
// -----------------------------------------------------------------------------
sl@0
   364
//
sl@0
   365
EXPORT_C TInt32 CAudioEqualizer::BandWidth(
sl@0
   366
	TUint8 aBand ) const
sl@0
   367
	{
sl@0
   368
	if( aBand > NumberOfBands() )
sl@0
   369
		{
sl@0
   370
		return KErrArgument;
sl@0
   371
		}
sl@0
   372
	else
sl@0
   373
		{
sl@0
   374
		return iBandsData[aBand-1].iBandWidth;
sl@0
   375
		}
sl@0
   376
	}
sl@0
   377
sl@0
   378
// -----------------------------------------------------------------------------
sl@0
   379
// CAudioEqualizer::CenterFrequency
sl@0
   380
// -----------------------------------------------------------------------------
sl@0
   381
//
sl@0
   382
EXPORT_C TInt32 CAudioEqualizer::CenterFrequency(
sl@0
   383
	TUint8 aBand ) const
sl@0
   384
	{
sl@0
   385
	if( aBand > NumberOfBands() )
sl@0
   386
		{
sl@0
   387
		return KErrArgument;
sl@0
   388
		}
sl@0
   389
	else
sl@0
   390
		{
sl@0
   391
		return iBandsData[aBand-1].iCenterFrequency;
sl@0
   392
		}
sl@0
   393
	}
sl@0
   394
sl@0
   395
// -----------------------------------------------------------------------------
sl@0
   396
// CAudioEqualizer::CrossoverFrequency
sl@0
   397
// -----------------------------------------------------------------------------
sl@0
   398
//
sl@0
   399
EXPORT_C TInt32 CAudioEqualizer::CrossoverFrequency(
sl@0
   400
	TUint8 aBand ) const
sl@0
   401
	{
sl@0
   402
	if( aBand > NumberOfBands() )
sl@0
   403
		{
sl@0
   404
		return KErrArgument;
sl@0
   405
		}
sl@0
   406
	else
sl@0
   407
		{
sl@0
   408
		return iBandsData[aBand-1].iCrossoverFrequency;
sl@0
   409
		}
sl@0
   410
	}
sl@0
   411
sl@0
   412
// -----------------------------------------------------------------------------
sl@0
   413
// CAudioEqualizer::DbLevelLimits
sl@0
   414
// -----------------------------------------------------------------------------
sl@0
   415
//
sl@0
   416
EXPORT_C void CAudioEqualizer::DbLevelLimits(
sl@0
   417
	TInt32& aMin,
sl@0
   418
	TInt32& aMax )
sl@0
   419
	{
sl@0
   420
	aMin = iAudioEqualizerData.iMindB;
sl@0
   421
	aMax = iAudioEqualizerData.iMaxdB;
sl@0
   422
	}
sl@0
   423
sl@0
   424
// -----------------------------------------------------------------------------
sl@0
   425
// CAudioEqualizer::CrossoverFrequency
sl@0
   426
// -----------------------------------------------------------------------------
sl@0
   427
//
sl@0
   428
EXPORT_C TUint8 CAudioEqualizer::NumberOfBands() const
sl@0
   429
sl@0
   430
	{
sl@0
   431
	return iBandsData.Count();
sl@0
   432
	}
sl@0
   433
sl@0
   434
// -----------------------------------------------------------------------------
sl@0
   435
// CAudioEqualizer::SetBandLevelL
sl@0
   436
// -----------------------------------------------------------------------------
sl@0
   437
//
sl@0
   438
EXPORT_C void CAudioEqualizer::SetBandLevelL(
sl@0
   439
	TInt8 aBand,
sl@0
   440
	TInt32 aLevel )
sl@0
   441
	{
sl@0
   442
	if( aBand > NumberOfBands() )
sl@0
   443
		{
sl@0
   444
		User::Leave(KErrArgument);
sl@0
   445
		}
sl@0
   446
	else
sl@0
   447
		{
sl@0
   448
		TUint32 mask = 1;
sl@0
   449
		iBandChange = iBandChange | (mask << aBand-1);
sl@0
   450
		iBandsData[aBand-1].iBandLevel = aLevel;
sl@0
   451
		}
sl@0
   452
	}
sl@0
   453
sl@0
   454
// -----------------------------------------------------------------------------
sl@0
   455
// CAudioEqualizer::Uid
sl@0
   456
// -----------------------------------------------------------------------------
sl@0
   457
//
sl@0
   458
EXPORT_C TUid CAudioEqualizer::Uid() const
sl@0
   459
	{
sl@0
   460
	return KUidAudioEqualizerEffect;
sl@0
   461
	}
sl@0
   462
sl@0
   463
sl@0
   464
// -----------------------------------------------------------------------------
sl@0
   465
// CAudioEqualizer::DoEffectData
sl@0
   466
// -----------------------------------------------------------------------------
sl@0
   467
//
sl@0
   468
EXPORT_C const TDesC8& CAudioEqualizer::DoEffectData()
sl@0
   469
	{
sl@0
   470
    DEBPRN0;
sl@0
   471
	iDataPckgTo = iAudioEqualizerData;
sl@0
   472
	return iDataPckgTo;
sl@0
   473
	}
sl@0
   474
sl@0
   475
// -----------------------------------------------------------------------------
sl@0
   476
// CAudioEqualizer::SetEffectData
sl@0
   477
// -----------------------------------------------------------------------------
sl@0
   478
//
sl@0
   479
EXPORT_C void CAudioEqualizer::SetEffectData(
sl@0
   480
	const TDesC8& aEffectDataBuffer )
sl@0
   481
	{
sl@0
   482
    DEBPRN0;
sl@0
   483
	TEfAudioEqualizerDataPckg dataPckg;
sl@0
   484
	dataPckg.Copy(aEffectDataBuffer);
sl@0
   485
	iAudioEqualizerData = dataPckg();
sl@0
   486
	iEnabled = iAudioEqualizerData.iEnabled;
sl@0
   487
	iEnforced = iAudioEqualizerData.iEnforced;
sl@0
   488
	iHaveUpdateRights = iAudioEqualizerData.iHaveUpdateRights;
sl@0
   489
	}
sl@0
   490
sl@0
   491
// -----------------------------------------------------------------------------
sl@0
   492
// CAudioEqualizer::DoBandData
sl@0
   493
// -----------------------------------------------------------------------------
sl@0
   494
//
sl@0
   495
EXPORT_C const TDesC8& CAudioEqualizer::DoBandDataL(
sl@0
   496
	TUint8 aBand,
sl@0
   497
	TBool aAllBands )
sl@0
   498
	{
sl@0
   499
	    
sl@0
   500
    DEBPRN0;
sl@0
   501
	if ( aAllBands )
sl@0
   502
		{
sl@0
   503
		if ( iBandDataBuf )
sl@0
   504
			{
sl@0
   505
			delete iBandDataBuf;
sl@0
   506
			iBandDataBuf = NULL;
sl@0
   507
			}
sl@0
   508
sl@0
   509
		iBandDataBuf = HBufC8::NewL(NumberOfBands() * sizeof(TEfAudioEqualizerBand));
sl@0
   510
		TPtr8 des = iBandDataBuf->Des();
sl@0
   511
		des.SetLength(iBandDataBuf->Size());
sl@0
   512
		RDesWriteStream writeStream(des);
sl@0
   513
sl@0
   514
		for (TInt i=0; i<NumberOfBands(); i++)
sl@0
   515
			{
sl@0
   516
			writeStream << iBandsData[i];
sl@0
   517
			}
sl@0
   518
		writeStream.CommitL();
sl@0
   519
		return *iBandDataBuf;
sl@0
   520
		}
sl@0
   521
	else
sl@0
   522
		{
sl@0
   523
		if ( aBand > NumberOfBands() )
sl@0
   524
			{
sl@0
   525
			User::Leave(KErrArgument);
sl@0
   526
			}
sl@0
   527
		iBandDataPckgTo = iBandsData[aBand-1];
sl@0
   528
		return iBandDataPckgTo;
sl@0
   529
		}
sl@0
   530
	}
sl@0
   531
sl@0
   532
// -----------------------------------------------------------------------------
sl@0
   533
// CAudioEqualizer::SetBandData
sl@0
   534
// -----------------------------------------------------------------------------
sl@0
   535
//
sl@0
   536
EXPORT_C void CAudioEqualizer::SetBandDataL(
sl@0
   537
	TInt aNumberOfBands,
sl@0
   538
	const TDesC8& aBandDataBuffer )
sl@0
   539
	{
sl@0
   540
    DEBPRN0;
sl@0
   541
	if ( aNumberOfBands > 1 )
sl@0
   542
		{
sl@0
   543
		RDesReadStream readStream(aBandDataBuffer);
sl@0
   544
		for (TInt i=0; i<NumberOfBands(); i++)
sl@0
   545
			{
sl@0
   546
			readStream >> iBandsData[i];
sl@0
   547
			}
sl@0
   548
		}
sl@0
   549
	else
sl@0
   550
		{
sl@0
   551
		TEfAudioEqualizerBandDataPckg dataPckg;
sl@0
   552
		TEfAudioEqualizerBand band;
sl@0
   553
		dataPckg.Copy(aBandDataBuffer);
sl@0
   554
		band = dataPckg();
sl@0
   555
		if ( band.iBandId > NumberOfBands() )
sl@0
   556
			{
sl@0
   557
			User::Leave(KErrArgument);
sl@0
   558
			}
sl@0
   559
		iBandsData[band.iBandId-1] = band;
sl@0
   560
		}
sl@0
   561
	}
sl@0
   562
sl@0
   563
// ========================== OTHER EXPORTED FUNCTIONS =========================
sl@0
   564
sl@0
   565