mmhais/refacladapt/src/audiocodec/audiocodec.h
author hgs
Fri, 08 Oct 2010 19:40:43 +0100
changeset 0 79dd3e2336a0
permissions -rw-r--r--
2010wk36_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) 2007-2008 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
#ifndef AUDIOCODEC_H
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    20
#define AUDIOCODEC_H
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    21
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    22
#include <e32base.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    23
#include <mmf/server/mmfhwdevice.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    24
#include <mmf/server/mmfhwdevicesetup.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    25
#include <mmf/server/sounddevice.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    26
#include <a3f/a3f_trace_utils.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    27
#include <a3f/a3fbase.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    28
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    29
#include "hwdeviceimplementationuids.hrh"
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    30
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    31
#include <mmf/plugin/mmfhwdeviceimplementationuids.hrh>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    32
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    33
#include "moutputport.h"
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    34
#include "minputport.h"
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    35
#include "mgainhelper.h"
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    36
#include "mstreampositioncontrol.h"
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    37
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    38
#include <a3f/msynccisupport.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    39
#include <a3f/maudiocodec.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    40
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    41
#define KFOURCCLENGTH 4
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    42
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    43
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    44
enum TMode
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    45
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    46
	// Decoder mode
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    47
	EDecode = 0x01,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    48
	// And vice versa
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    49
	EEncode = 0x02
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    50
	};
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    51
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    52
class TSampleRateTableEntry
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    53
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    54
public:
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    55
	TInt		iSampleRateValue;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    56
	TMMFSampleRate iSampleRate;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    57
	};
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    58
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    59
class TAudioModeTableEntry
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    60
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    61
public:
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    62
	TMMFMonoStereo	iAudioModeValue;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    63
	TUid 			iAudioMode;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    64
	};
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    65
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    66
const TInt KMaxModeIndex = 1;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    67
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    68
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    69
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    70
class MAudioCodecAdaptationObserver;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    71
class CFourCCConvertor;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    72
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    73
	/////
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    74
	//This is the reference implementation of Phyisical AudioCodec
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    75
	//@lib audiocodec.lib
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    76
	///
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    77
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    78
// TODO: Check if those interfaces MInputPort, MOutputPort should be replaced by MMMFAudioDataSupplier, MMMFAudioDataConsumer
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    79
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    80
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    81
NONSHARABLE_CLASS(CAudioCodec) :public CActive,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    82
								public MMMFHwDeviceObserver,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    83
								public MInputPort,				// Adaptation interface
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    84
								public MOutputPort,				// Adaptation interface
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    85
								public MGainHelper,				// Adaptation interface
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    86
								public MCustomInterfaceSupport,	// A3F interface
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    87
								public MStreamPositionControl	// Adaptation interface
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    88
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    89
friend class CAudioGainControl;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    90
public:
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    91
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    92
	/////
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    93
	// Create a new instance.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    94
	//
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    95
	// @param aTypeId.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    96
	// @return CAudioCodec* a pointer to the created instance.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    97
	///
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    98
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    99
	IMPORT_C static CAudioCodec* NewL(TUid aTypeId, const CFourCCConvertor& aFourCCConvertor);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   100
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   101
	// Check if this would be removed
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   102
	/////
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   103
	//  Structure to hold hw device init parameters
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   104
	///
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   105
	class THwDeviceInitArgs
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   106
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   107
	public:
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   108
		TUint8 iPolicyId;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   109
		TInt iEapStreamId;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   110
		};
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   111
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   112
	/////
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   113
	 // Destructor.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   114
	 //
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   115
	 // Deletes all objects and releases all resource owned by this instance.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   116
	///
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   117
	virtual ~CAudioCodec();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   118
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   119
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   120
	IMPORT_C TInt SetFormat(TUid aFormat);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   121
	IMPORT_C TInt RegisterAudioCodecObserver(MAudioCodecAdaptationObserver& aObserver);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   122
	IMPORT_C void UnregisterAudioCodecObserver(MAudioCodecAdaptationObserver& aObserver);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   123
	IMPORT_C TInt Initialize();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   124
	IMPORT_C TInt Load(TInt aSampleRate, TUid aMode);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   125
	IMPORT_C TInt Start();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   126
	IMPORT_C TInt Pause();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   127
	IMPORT_C TInt Stop();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   128
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   129
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   130
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   131
	// From MOutputPort
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   132
	TInt GetOutputPort(MOutputPort*& aOutputPort);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   133
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   134
	// From MInputPort
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   135
	TInt GetInputPort(MInputPort*& aInputPort);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   136
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   137
	// From MCustomInterfaceSupport
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   138
	virtual TInt RequestCustomInterface(TUid aUid, TAny*& aPtr);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   139
	virtual TInt RegisterObserver(MCustomInterfaceSupportObserver& aObserver);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   140
	virtual void UnRegisterObserver(MCustomInterfaceSupportObserver& aObserver);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   141
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   142
	// from base class MInputPort
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   143
	virtual TInt EmptyBuffer(CMMFBuffer* aBuffer, MOutputPort* aSupplier);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   144
	virtual TInt BufferFilled(CMMFBuffer* aBuffer);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   145
	virtual TInt SetOutput(MOutputPort* aOutput);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   146
	virtual TInt RemoveOutput(MOutputPort* aOutput);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   147
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   148
	// from base class MOutputPort
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   149
	virtual TInt FillBuffer(CMMFBuffer* aBuffer, MInputPort* aConsumer);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   150
	virtual TInt BufferEmptied(CMMFBuffer* aBuffer);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   151
	virtual TInt SetInput(MInputPort* aInput);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   152
	virtual TInt RemoveInput(MInputPort* aInput);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   153
	virtual TInt FlushBuffer(MFlushHandlerObserver* aFlushObserver);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   154
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   155
	// from base class MMMFHwDeviceObserver
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   156
	virtual TInt FillThisHwBuffer(CMMFBuffer& aHwBuffer);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   157
	virtual TInt EmptyThisHwBuffer(CMMFBuffer& aHwBuffer);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   158
	virtual TInt MsgFromHwDevice(TUid aMessageType, const TDesC8& aMsg);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   159
	virtual void Stopped();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   160
	virtual void Error(TInt aError);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   161
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   162
	// from base class MGainHelper
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   163
	TInt GetGain(TInt& aGain) const;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   164
	TInt SetGain(RArray<TAudioChannelGain>& aChannels);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   165
	TInt ConfigureRamp(TUid aRampOperation, const TTimeIntervalMicroSeconds& aRampDuration);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   166
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   167
	// from base class MStreamPositionControl
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   168
	TInt GetControlPosition(TTimeIntervalMicroSeconds& aPosition);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   169
	void ResetControlPosition();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   170
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   171
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   172
	TInt ResolveMode(TUid aMode);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   173
	TInt GetSupportedSampleRates(RArray<TInt>& aSupportedRates);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   174
	TInt GetSupportedModes(RArray<TUid>& aSupportedModes);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   175
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   176
	//Return the supported values to the client
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   177
	IMPORT_C TInt SupportedModes(RArray<TUid>& aSupportedModes);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   178
	IMPORT_C TInt SupportedRates(RArray<TInt>& aSupportedRates);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   179
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   180
protected:
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   181
	// from CActive
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   182
	void RunL();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   183
	void DoCancel();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   184
	TInt RunError(TInt aError);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   185
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   186
	TInt LoadHwDevice();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   187
	TInt InitHwDevice();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   188
	TInt SetHwDeviceConfig();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   189
	void FourCCToHwDeviceUidL(TFourCC aFourCC, TMode aMode, TUid &aHWDev);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   190
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   191
	TBool IsDataTypeMatch(CImplementationInformation* aHwDeviceResourceEntry,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   192
		const TDesC8& aHwMatchFourCC, TMode aState);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   193
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   194
	// TODO: This will be replaced, when the new mechanism to get the supported configuration
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   195
	// will be defined
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   196
	/////
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   197
	 // Reads hw device parameters from resource files.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   198
	 // @return error code.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   199
	 ///
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   200
	TInt ReadResourceRates(RArray<TInt>& aRates);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   201
	TInt ReadResourceModes(RArray<TUid>& aModes);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   202
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   203
	void UpdateBytesPlayed();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   204
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   205
private:
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   206
	void ConstructL();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   207
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   208
	CAudioCodec(TUid aTypeId, const CFourCCConvertor& aFourCCConvertor);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   209
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   210
private:
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   211
	TUid						iType;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   212
	// Indicates if this is an encoder or decoder
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   213
	TMode						iMode;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   214
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   215
	// The codec format
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   216
	TUid						iFormat;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   217
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   218
	// Resolved HwDevice Uid
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   219
	TUid						iDeviceUid;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   220
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   221
	//
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   222
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   223
	MPlayCustomInterface*		iPlayCustomInterface;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   224
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   225
	MRecordCustomInterface*		iRecordCustomInterface;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   226
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   227
	// HwDevice init parameters
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   228
	THwDeviceInitParams			iHwDeviceInitParams;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   229
	THwDeviceInitArgs			iHwDeviceInitArgs;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   230
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   231
	// CI observers
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   232
	RPointerArray<MCustomInterfaceSupportObserver>	iCISupportObservers;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   233
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   234
	enum THwDeviceState
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   235
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   236
		EIdle,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   237
		ERunning,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   238
		EPaused,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   239
		EStopped
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   240
		};
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   241
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   242
	TBool						iLastBuffer;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   243
	THwDeviceState				iHwDeviceState;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   244
	TBool						iLastBufferAck;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   245
	TInt						iRequest;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   246
	TInt						iErrorRates;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   247
	TInt						iErrorModes;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   248
	TInt						iSampleRateConfig;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   249
	TUid						iModeConfig;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   250
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   251
	CMMFHwDevice*				iHwDevice;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   252
	CMMFDataBuffer*				iAdaptationBuffer;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   253
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   254
	MOutputPort*				iOutputPort;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   255
	MInputPort*					iInputPort;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   256
	TInt64						iPosition;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   257
	TInt64 						iPlayedBytesCount;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   258
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   259
	CFourCCConvertor* 			iFourCCConvertor;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   260
	RPointerArray<MAudioCodecAdaptationObserver> iAudioCodecObservers;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   261
	MIgnoreUnderflowEventsCustomInterface* iIgnoreUnderflowInterface;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   262
	TUid						iRampOperation;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   263
	TTimeIntervalMicroSeconds	iRampDuration;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   264
	};
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   265
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   266
/*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   267
 *	Updates the total bytes played.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   268
 *
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   269
 */
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   270
inline void CAudioCodec::UpdateBytesPlayed()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   271
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   272
	if (iPlayCustomInterface)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   273
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   274
		iPlayedBytesCount = iPlayCustomInterface->BytesPlayed();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   275
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   276
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   277
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   278
#endif // AUDIOCODEC_H