mmhais/a3fdevsoundcustomisation/src/devsoundadaptationinfo/devsoundadaptationinfoimplbody.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
// devsoundadaptationinfoimpl.cpp
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    15
//
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    16
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    17
// INCLUDE FILES
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    18
#include <e32base.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    19
#include <e32std.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    20
#include <mmf/plugin/mmfplugininterfaceuids.hrh> // for KMmfUidPluginInterfaceHwDevice
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    21
#include <mm/mmcleanup.h> 						//needed for CleanupResetAndDestroyPushL()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    22
#include "devsoundadaptationinfoimplbody.h"
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    23
#include "devsoundadaptationinfoconsts.h"
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    24
#include <a3f/mdevsoundadaptationinfoobserver.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    25
#include <a3f/audioformatuids.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    26
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    27
const TInt KHwDeviceDefaultDataLength= 9;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    28
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    29
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    30
//-------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    31
// 	CA3FDevSoundAdaptationInfoImpl::CA3FDevSoundAdaptationInfoImpl
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    32
//	C++ default constructor.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    33
//-------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    34
//
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    35
CA3FDevSoundAdaptationInfoImpl::CBody* CA3FDevSoundAdaptationInfoImpl::CBody::NewL(MA3FDevSoundAdaptationInfoObserver& aAdaptationInfoObserver, CFourCCConvertor& aFourCcConvertor)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    36
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    37
	CBody* self = new (ELeave) CBody;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    38
	CleanupStack::PushL(self);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    39
	self->ConstructL(aAdaptationInfoObserver, aFourCcConvertor);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    40
	CleanupStack::Pop(self);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    41
	return self;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    42
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    43
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    44
//-------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    45
// 	CA3FDevSoundAdaptationInfoImpl::CA3FDevSoundAdaptationInfoImpl
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    46
//	C++ default constructor.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    47
//-------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    48
//
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    49
CA3FDevSoundAdaptationInfoImpl::CBody::CBody(): CActive(EPriorityStandard)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    50
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    51
	DP_CONTEXT(CA3FDevSoundAdaptationInfoImpl::CBody()::CBody() *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    52
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    53
	CActiveScheduler::Add(this);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    54
	DP_OUT();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    55
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    56
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    57
//----------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    58
// 	CA3FDevSoundAdaptationInfoImpl::ConstructL
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    59
// 	Symbian 2nd phase constructor can leave.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    60
//----------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    61
//
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    62
void CA3FDevSoundAdaptationInfoImpl::CBody::ConstructL(MA3FDevSoundAdaptationInfoObserver& aAdaptationInfoObserver, CFourCCConvertor& aFourCcConvertor)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    63
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    64
	DP_CONTEXT(CA3FDevSoundAdaptationInfoImpl::CBody::ConstructL *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    65
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    66
	iAdaptationInfoObserver = &aAdaptationInfoObserver;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    67
	iFourCcConvertor = &aFourCcConvertor;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    68
	DP_OUT();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    69
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    70
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    71
//--------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    72
//	CA3FDevSoundAdaptationInfoImpl::~CA3FDevSoundAdaptationInfoImpl
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    73
//	Destructor
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    74
//--------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    75
//
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    76
CA3FDevSoundAdaptationInfoImpl::CBody::~CBody()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    77
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    78
	DP_CONTEXT(CA3FDevSoundAdaptationInfoImpl::CBody::~CBody *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    79
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    80
	DP_OUT();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    81
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    82
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    83
//---------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    84
// 	CA3FDevSoundAdaptationInfoImpl::CBody::RequestMaxGain
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    85
// 	Retrieves Maximum Valid Gain/Volume
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    86
//---------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    87
//
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    88
TInt CA3FDevSoundAdaptationInfoImpl::CBody::RequestMaxGain(TUid aCodecType)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    89
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    90
	DP_CONTEXT(CA3FDevSoundAdaptationInfoImpl::CBody::RequestMaxGain *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    91
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    92
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    93
	iCodecType = aCodecType;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    94
	iMaxGainRequested = ETrue;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    95
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    96
	// Simulate an asyncronous response
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    97
	if (!IsActive())
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    98
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    99
		TRequestStatus* status = &iStatus;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   100
		User::RequestComplete(status, KErrNone);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   101
		SetActive();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   102
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   103
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   104
	DP0_RET(KErrNone, "%d");
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
// 	CA3FDevSoundAdaptationInfoImpl::CBody::RequestSupportedFormatsL
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   109
//  Retrieves supported formats (in this version hwDevices).
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   110
//-----------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   111
//
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   112
TInt CA3FDevSoundAdaptationInfoImpl::CBody::RequestSupportedFormats(TUid aCodecType, RArray<TUid>& aSupportedFormats)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   113
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   114
	DP_CONTEXT(CA3FDevSoundAdaptationInfoImpl::CBody::RequestSupportedFormats *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   115
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   116
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   117
	TInt err=KErrNone;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   118
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   119
	iCodecType = aCodecType;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   120
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   121
	TRAP(err, ReadSupportedFormatsL(aCodecType, aSupportedFormats));
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   122
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   123
	if(err==KErrNone)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   124
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   125
		iFormatsRequested = ETrue;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   126
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   127
		// Simulate an asyncronous response
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   128
		if (!IsActive())
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   129
			{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   130
			TRequestStatus* status = &iStatus;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   131
			User::RequestComplete(status, KErrNone);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   132
			SetActive();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   133
			}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   134
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   135
				
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   136
	DP0_RET(err, "%d");
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
TInt CA3FDevSoundAdaptationInfoImpl::CBody::Extension_(TUint aExtensionId, TAny*& aExtPtr, TAny*)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   141
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   142
	if (aExtensionId == KTruePauseCustomInterfaceTypeUid.iUid)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   143
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   144
		aExtPtr = static_cast<MTruePauseCustomInterface*>(this);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   145
		return KErrNone;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   146
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   147
	else
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   148
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   149
		return CActive::Extension_(aExtensionId, aExtPtr, NULL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   150
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   151
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   152
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   153
// from MTruePauseCustomInterface
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   154
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   155
// CA3FDevSoundAdaptationInfoImpl::CBody::IsResumeSupported
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   156
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   157
TBool CA3FDevSoundAdaptationInfoImpl::CBody::IsResumeSupported(TUid aCodecType, TUid aFormat)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   158
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   159
	DP_CONTEXT(CA3FDevSoundAdaptationInfoImpl::CBody::IsTruePauseSupported *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   160
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   161
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   162
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   163
	const TUid supportedDecoders [] = 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   164
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   165
		KUidFormatPCM16, 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   166
		KUidFormatPCMU16B, 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   167
		KUidFormatPCMU16,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   168
		KUidFormatPCM16B, 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   169
		KUidFormatPCM8, 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   170
		KUidFormatPCMU8, 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   171
		KUidFormatAlaw,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   172
		KUidFormatMulaw,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   173
		KUidFormatGSM610,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   174
		KUidFormatIMAADPCM,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   175
		KUidFormatTone,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   176
		KNullUid,  // Indicates end of array
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   177
		};
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   178
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   179
	TBool supported = EFalse;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   180
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   181
	// PCM16 Encoder
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   182
	if(aFormat == KUidFormatPCM16 && aCodecType == KUidAudioEncoder)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   183
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   184
		supported = ETrue;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   185
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   186
	// Only certain decoders
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   187
	else if(aCodecType == KUidAudioDecoder)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   188
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   189
		TInt i = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   190
		TUid supportedDecoderUid = supportedDecoders[i];
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   191
		do
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   192
			{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   193
			if (supportedDecoderUid == aFormat)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   194
				{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   195
				supported = ETrue;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   196
				break;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   197
				}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   198
			supportedDecoderUid = supportedDecoders[i++];
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   199
			}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   200
		while(supportedDecoderUid != KNullUid);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   201
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   202
	DP0_RET(supported, "%d");
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   203
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   204
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   205
//From CActive
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   206
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   207
// CA3FDevSoundAdaptationInfoImpl::CBody::RunL
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   208
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   209
void CA3FDevSoundAdaptationInfoImpl::CBody::RunL()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   210
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   211
	DP_CONTEXT(CA3FDevSoundAdaptationInfoImpl::CBody::RunL *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   212
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   213
	
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
	if(iMaxGainRequested)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   217
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   218
		
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   219
		TInt maxgain = 0;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   220
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   221
		if (iCodecType == KUidAudioDecoder)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   222
			{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   223
			maxgain = DevSoundAdaptationInfoConsts::MaxVolume();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   224
			}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   225
		else if (iCodecType == KUidAudioEncoder)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   226
			{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   227
			maxgain = DevSoundAdaptationInfoConsts::MaxGain();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   228
			}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   229
		else
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   230
			{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   231
			err = KErrArgument;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   232
			}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   233
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   234
		iMaxGainRequested = EFalse;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   235
		
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   236
		// Send the callback
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   237
		iAdaptationInfoObserver->RequestMaxGainComplete(iCodecType, err, maxgain);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   238
		
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   239
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   240
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   241
	if(iFormatsRequested)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   242
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   243
		err = KErrNone;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   244
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   245
		if(iCodecType != KUidAudioDecoder && iCodecType != KUidAudioEncoder)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   246
			{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   247
			err = KErrArgument;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   248
			}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   249
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   250
		iFormatsRequested = EFalse;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   251
		
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   252
		// Send the callback
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   253
		iAdaptationInfoObserver->RequestSupportedFormatsComplete(iCodecType, err);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   254
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   255
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   256
	DP_OUT();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   257
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   258
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   259
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   260
// CA3FDevSoundAdaptationInfoImpl::CBody::RunError
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   261
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   262
TInt CA3FDevSoundAdaptationInfoImpl::CBody::RunError(TInt aError)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   263
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   264
	DP_CONTEXT(CA3FDevSoundAdaptationInfoImpl::CBody::RunError *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   265
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   266
	DP0_RET(aError, "%d");
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   267
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   268
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   269
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   270
// CA3FDevSoundAdaptationInfoImpl::CBody::DoCancel
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   271
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   272
void CA3FDevSoundAdaptationInfoImpl::CBody::DoCancel()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   273
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   274
	DP_CONTEXT(CA3FDevSoundAdaptationInfoImpl::CBody::DoCancel *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   275
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   276
	DP_OUT();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   277
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   278
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   279
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   280
// CA3FDevSoundAdaptationInfoImpl::CBody::ReadSupportedFormats
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   281
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   282
void CA3FDevSoundAdaptationInfoImpl::CBody::ReadSupportedFormatsL(TUid aCodecType, RArray<TUid>& aSupportedFormats)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   283
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   284
	DP_CONTEXT(CA3FDevSoundAdaptationInfoImpl::CBody::ReadSupportedFormatsL *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   285
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   286
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   287
	RArray<TFourCC> supportedDataTypes;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   288
	CleanupClosePushL(supportedDataTypes);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   289
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   290
	SeekHwDevicePluginsL(supportedDataTypes, aCodecType);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   291
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   292
	TInt maxFourCCElements = supportedDataTypes.Count();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   293
		
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   294
	//clear any existing data in iSupportedFormats array
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   295
	aSupportedFormats.Reset();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   296
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   297
	for(TInt typeIndex=0; typeIndex<maxFourCCElements; typeIndex++)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   298
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   299
		TUid format;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   300
		
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   301
		TInt error = iFourCcConvertor->FourCCToFormat(supportedDataTypes[typeIndex], format);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   302
		if(error == KErrNone)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   303
			{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   304
			aSupportedFormats.AppendL(format);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   305
			}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   306
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   307
				
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   308
	CleanupStack::PopAndDestroy(&supportedDataTypes);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   309
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   310
	DP_OUT();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   311
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   312
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   313
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   314
// -----------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   315
// CA3FDevSoundAdaptationInfoImpl::SeekHwDevicePluginsL
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   316
// This method looks for hwDevicePlugins that support the codec given in aCodecType
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   317
// which must be either EMMFStatePlaying or EMMFStateRecording.
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   318
// For each HwDevice plugin found the datatype as indicated by its fourCC code
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   319
// from the default_data field in the resource file is added to the array of
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   320
// aSupportedDataTypes
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   321
// -----------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   322
//
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   323
void CA3FDevSoundAdaptationInfoImpl::CBody::SeekHwDevicePluginsL(
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   324
	RArray<TFourCC>& aSupportedDataTypes,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   325
	TUid aCodecType)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   326
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   327
	DP_CONTEXT(CA3FDevSoundAdaptationInfoImpl::CBody::SeekHwDevicePluginsL *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   328
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   329
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   330
	ASSERT(aCodecType == KUidAudioDecoder || aCodecType == KUidAudioEncoder);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   331
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   332
	//clear any existing data in aSupportedDataTypes array
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   333
	aSupportedDataTypes.Reset();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   334
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   335
	// Array to return hw device plugin resource info(place on cleanupstack
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   336
	// _after_ ListImplementationsL() )
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   337
	RImplInfoPtrArray plugInArray;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   338
	CleanupResetAndDestroyPushL(plugInArray);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   339
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   340
	TUid KUidMmfHWPluginInterfaceCodec = {KMmfUidPluginInterfaceHwDevice};
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   341
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   342
	REComSession::ListImplementationsL(KUidMmfHWPluginInterfaceCodec, plugInArray);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   343
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   344
	TUint numberOfHwDevicePlugins = plugInArray.Count();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   345
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   346
	// if there are hwdevice plugin resource entries then scan entries
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   347
	// matching on a datatype of pcm16 as the destination datatype for play and
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   348
	// the source datatype for record. If a match is found and isn't already in
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   349
	// the list of supported data types, then add it to the list
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   350
	if (numberOfHwDevicePlugins > 0)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   351
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   352
		CImplementationInformation* hwDeviceResourceEntry = NULL;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   353
		_LIT8(KPCM16FourCCString, " P16");
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   354
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   355
		// check each resource entry for dst 4CC = P16 for play and
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   356
		// src 4CC = P16 for record
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   357
		for (TUint hwDeviceEntry = 0; hwDeviceEntry<numberOfHwDevicePlugins; hwDeviceEntry++)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   358
			{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   359
			hwDeviceResourceEntry = plugInArray[hwDeviceEntry];
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   360
			
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   361
			TFourCC fourCCLeft;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   362
			TFourCC fourCCRight;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   363
			
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   364
			ReadFourCC(hwDeviceResourceEntry, fourCCLeft, fourCCRight);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   365
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   366
			TFourCC fourCCPCM16(KPCM16FourCCString);		
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   367
			
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   368
			if(aCodecType == KUidAudioDecoder)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   369
				{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   370
				if(IsDataTypeMatch(fourCCPCM16, fourCCRight))
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   371
					{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   372
					if(!FourCCExists(aSupportedDataTypes, fourCCLeft))
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   373
						{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   374
						aSupportedDataTypes.AppendL(fourCCLeft);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   375
						}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   376
					}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   377
				}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   378
			else if (aCodecType == KUidAudioEncoder)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   379
				{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   380
				if(IsDataTypeMatch(fourCCPCM16, fourCCLeft))
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   381
					{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   382
					if(!FourCCExists(aSupportedDataTypes, fourCCRight))
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   383
						{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   384
						aSupportedDataTypes.AppendL(fourCCRight);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   385
						}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   386
					}	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   387
				}			
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   388
			}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   389
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   390
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   391
	CleanupStack::PopAndDestroy(&plugInArray);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   392
	DP_OUT();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   393
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   394
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   395
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   396
// CA3FDevSoundAdaptationInfoImpl::CBody::FourCCExists
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   397
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   398
TBool CA3FDevSoundAdaptationInfoImpl::CBody::FourCCExists(RArray<TFourCC>& aSupportedDataTypes, TFourCC aFourCCEntry)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   399
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   400
	DP_CONTEXT(CA3FDevSoundAdaptationInfoImpl::CBody::FourCCExists *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   401
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   402
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   403
	TBool alreadyExists = EFalse;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   404
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   405
	for (TUint fourCCEntryNumber=0; fourCCEntryNumber< aSupportedDataTypes.Count(); fourCCEntryNumber++)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   406
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   407
		if (aSupportedDataTypes[fourCCEntryNumber] == aFourCCEntry)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   408
			{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   409
			// we already have this 4CC in the supported data types
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   410
			alreadyExists = ETrue;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   411
			break;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   412
			}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   413
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   414
		
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   415
	DP0_RET(alreadyExists, "0x%x");
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   416
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   417
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   418
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   419
// CA3FDevSoundAdaptationInfoImpl::CBody::ReadFourCC
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   420
// ---------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   421
void CA3FDevSoundAdaptationInfoImpl::CBody::ReadFourCC(CImplementationInformation* aHwDeviceResourceEntry, TFourCC& aFourCCLeft, TFourCC& aFourCCRight)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   422
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   423
	DP_CONTEXT(CA3FDevSoundAdaptationInfoImpl::CBody::ReadFourCC *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   424
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   425
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   426
	TPtrC8 fourCCPtr(0,0);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   427
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   428
	// Check for resource entry lenght since for HwDeviceAdaptor it is just "*"
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   429
	if (aHwDeviceResourceEntry->DataType().Length()>=KHwDeviceDefaultDataLength)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   430
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   431
		// datatype supported 4CC is left 4 chars
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   432
		fourCCPtr.Set(aHwDeviceResourceEntry->DataType().Left(KFOURCCLENGTH));
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   433
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   434
		aFourCCLeft.Set(fourCCPtr);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   435
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   436
		// datatype supported 4CC is right 4 chars
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   437
		fourCCPtr.Set(aHwDeviceResourceEntry->DataType().Right(KFOURCCLENGTH));
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   438
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   439
		aFourCCRight.Set(fourCCPtr);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   440
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   441
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   442
	DP_OUT();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   443
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   444
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   445
// -----------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   446
// CA3FDevSoundAdaptationInfoImpl::IsDataTypeMatch
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   447
// -----------------------------------------------------------------------------
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   448
TBool CA3FDevSoundAdaptationInfoImpl::CBody::IsDataTypeMatch(TFourCC aFourCCPCM16,TFourCC aFourCC)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   449
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   450
	DP_STATIC_CONTEXT(CA3FDevSoundAdaptationInfoImpl::CBody::IsDataTypeMatch *CD1*, CtxDevSound, DPLOCAL);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   451
	DP_IN();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   452
	TBool match = EFalse;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   453
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   454
	if(aFourCCPCM16 == aFourCC)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   455
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   456
		match = ETrue;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   457
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   458
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   459
	DP0_RET(match, "0x%x");
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   460
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   461
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   462
// End of file