mmhais/a3facl/src/shared/audioprocessingunit.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) 2006-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 AUDIOPROCESSINGUNIT_H
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    21
#define AUDIOPROCESSINGUNIT_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 <ecom/ecom.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    25
#include <a3f/a3f_trace_utils.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    26
#include <a3f/audioprocessingunittypeuids.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    27
#include <a3f/maudioprocessingunit.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    28
#include <a3f/maudioprocessingunitobserver.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    29
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    30
#include "componentparameters.h"
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    31
#include "mlogicalsettingsobserver.h"
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    32
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    33
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    34
/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    35
A generic AudioComponent base class implementation.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    36
@see MAudioProcessingUnit
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    37
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    38
class CAudioProcessingUnit: public CBase, 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    39
							public MAudioProcessingUnit
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    40
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    41
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    42
public:
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    43
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    44
	static CAudioProcessingUnit* NewL(TComponentParameters aParameters);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    45
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    46
	/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    47
	Destructor.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    48
	Releases all resources and deletes all objects owned by this instance.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    49
	*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    50
	virtual ~CAudioProcessingUnit();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    51
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    52
	// from base class MAudioProcessingUnit
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    53
	virtual TAudioComponentId InstanceId() const;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    54
	virtual TAudioContextId ContextId() const;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    55
	virtual TBool IsTypeOf(TUid aTypeId) const;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    56
	virtual TAny* Interface(TUid aType);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    57
	virtual TInt RegisterProcessingUnitObserver(MAudioProcessingUnitObserver& aObserver);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    58
	virtual void UnregisterProcessingUnitObserver(MAudioProcessingUnitObserver& aObserver);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    59
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    60
	CAudioProcessingUnit(TAny* aParam);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    61
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    62
protected: // data
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    63
	// Component type Uid
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    64
	TUid iType;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    65
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    66
	// Audio context Id
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    67
	TAudioContextId iContextId;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    68
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    69
	// Component instance Id
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    70
	TAudioComponentId iInstanceId;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    71
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    72
	// Array of component observers.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    73
	RPointerArray<MAudioProcessingUnitObserver> iAudioProcessingUnitObservers;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    74
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    75
	// Settings observer
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    76
	MLogicalSettingObserver* iSettingsObserver;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    77
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    78
private: // data
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    79
	TUid iDtor_ID_Key;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    80
	};
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    81
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    82
// Interface's (abstract base class's) destructor
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    83
inline CAudioProcessingUnit::~CAudioProcessingUnit()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    84
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    85
	iAudioProcessingUnitObservers.Close();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    86
	REComSession::DestroyedImplementation(iDtor_ID_Key);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    87
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    88
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    89
// Interface's (abstract base class's) static factory method implementation.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    90
// Asks ECOM plugin framework to instantiate appropriate concret plugin
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    91
// implementation.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    92
inline CAudioProcessingUnit* CAudioProcessingUnit::NewL(TComponentParameters aParameters)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    93
	{	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    94
	TAny* ptr = REComSession::CreateImplementationL( aParameters.iTypeUid , _FOFF(CAudioProcessingUnit, iDtor_ID_Key), static_cast<TAny*>(&aParameters));
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    95
	return static_cast<CAudioProcessingUnit*>(ptr);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    96
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    97
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    98
inline CAudioProcessingUnit::CAudioProcessingUnit(TAny* aParam)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    99
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   100
	TComponentParameters* param = static_cast<TComponentParameters*>(aParam);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   101
	iType = param->iTypeUid;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   102
	iInstanceId = param->iInstanceId;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   103
	iContextId = param->iContextId;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   104
	iSettingsObserver = param->iSettingsObserver;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   105
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   106
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   107
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   108
// from class MAudioProcessingUnit
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   109
// CLogicalAudioCodec::GetContextId
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   110
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   111
inline TAudioContextId CAudioProcessingUnit::ContextId() const
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   112
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   113
	return iContextId;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   114
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   115
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   116
inline TAudioComponentId CAudioProcessingUnit::InstanceId() const 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   117
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   118
	return iInstanceId;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   119
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   120
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   121
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   122
// from class MAudioProcessingUnit
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   123
// CLogicalAudioCodec::RegisterComponentObserver
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   124
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   125
inline TInt CAudioProcessingUnit::RegisterProcessingUnitObserver(MAudioProcessingUnitObserver& aObserver)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   126
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   127
	TInt err = iAudioProcessingUnitObservers.Find(&aObserver);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   128
	if( err != KErrNotFound )
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   129
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   130
		err = KErrAlreadyExists;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   131
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   132
	else
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   133
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   134
		err = iAudioProcessingUnitObservers.Append(&aObserver);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   135
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   136
	return err;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   137
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   138
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   139
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   140
// from class MAudioProcessingUnit
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   141
// CLogicalAudioCodec::UnregisterComponentObserver
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   142
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   143
inline void CAudioProcessingUnit::UnregisterProcessingUnitObserver(MAudioProcessingUnitObserver& aObserver)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   144
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   145
	TInt idxOrErr = iAudioProcessingUnitObservers.Find(&aObserver);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   146
	if( idxOrErr != KErrNotFound )
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   147
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   148
		iAudioProcessingUnitObservers.Remove(idxOrErr);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   149
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   150
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   151
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   152
inline TBool CAudioProcessingUnit::IsTypeOf(TUid) const {return EFalse;}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   153
inline TAny* CAudioProcessingUnit::Interface(TUid) { TAny* any(NULL); return any;}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   154
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   155
#endif // AUDIOPROCESSINGUNIT_H