devsound/devsoundrefplugin/src/plugin/audio/MMFpcm16ToPcm16HwDevice.h
author hgs
Fri, 08 Oct 2010 19:43:41 +0100
changeset 1 a9d1c8e49653
parent 0 79dd3e2336a0
permissions -rw-r--r--
2010wk40
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
     1
// Copyright (c) 2002-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
// include\mmf\src\plugin\Hwdevice\audio\pcm16ToPcm16HwDevice.h
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
#ifndef __MMF_PCM16_TO_PCM16_HW_DEVICE_H__
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    19
#define __MMF_PCM16_TO_PCM16_HW_DEVICE_H__
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    20
#include <mmf/server/mmfswcodecwrapper.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    21
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    22
#ifdef SYMBIAN_MDF_SHAREDCHUNK_SOUNDDRIVER
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    23
	#include "mdasoundadapter.h"
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    24
#else
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    25
	#include <mdasound.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    26
#endif
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    27
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    28
#include "../../swcodecwrapper/mmfswaudioinput.h"
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    29
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    30
#include "../../swcodecwrapper/mmfSwCodecDataPath.h"
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    31
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    32
// for the bitrate custom interface
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    33
#include <mmf/server/devsoundstandardcustominterfaces.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    34
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    35
//note we need to keep this buffer at 8K as the tone utility expects 8K
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    36
const TInt KPCM16ToPCM16BufferSize = 0x2000;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    37
const TInt KDevSoundMinFrameSize = 0x800; //2K
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    38
const TInt KDevSoundMaxFrameSize = 0x4000;  //16K
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    39
const TInt KDevSoundDeltaFrameSize = 0x800; //2K
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    40
const TInt KDevSoundFramesPerSecond = 4;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    41
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    42
/*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    43
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    44
* class CMMFPcm16ToPcm16HwDevice
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    45
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    46
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    47
class CMMFPcm16ToPcm16HwDevice : public CMMFSwCodecWrapper,
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    48
								 public MMMFDevSoundCustomInterfaceBitRate
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    49
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    50
public:
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    51
	static  CMMFPcm16ToPcm16HwDevice* NewL();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    52
	virtual CMMFSwCodec& Codec();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    53
	virtual TAny* CustomInterface(TUid aInterfaceId);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    54
	~CMMFPcm16ToPcm16HwDevice(); 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    55
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    56
	TUint CalculateBufferSize();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    57
private:
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    58
	// from MMMFDevSoundCustomInterfaceBitRate
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    59
	virtual void GetSupportedBitRatesL(RArray<TInt>& aSupportedBitRates);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    60
	virtual TInt BitRateL();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    61
	virtual void SetBitRateL(TInt aBitRate);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    62
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    63
	void BitRatesFromSampleRatesL(RArray<TInt>& aSupportedBitRates, const RArray<TInt>& aSupportedSampleRates);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    64
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    65
	void ConstructL();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    66
	};
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 CMMFPcm16ToPcm16Codec converts Pcm16 to pcm16
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    71
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    72
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    73
class CMMFPcm16ToPcm16Codec : public CMMFSwCodec
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    74
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    75
public:
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    76
	virtual TCodecProcessResult ProcessL(const CMMFBuffer& /*aSource*/, CMMFBuffer& /*aDest*/);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    77
//	virtual TUint SourceBufferSize() {return KPCM16ToPCM16BufferSize;};
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    78
//	virtual TUint SinkBufferSize() {return KPCM16ToPCM16BufferSize;};
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    79
	virtual TUint SourceBufferSize();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    80
	virtual TUint SinkBufferSize();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    81
	virtual TBool IsNullCodec() {return ETrue;};
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    82
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    83
	void SetHwDevice(CMMFPcm16ToPcm16HwDevice* aHwDevice);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    84
private:
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    85
	TUint iBufferSize;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    86
	CMMFPcm16ToPcm16HwDevice* iHwDevice;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    87
	};
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    88
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    89
#endif //__MMF_PCM16_TO_PCM16_HW_DEVICE_H__
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    90