devsound/devsoundrefplugin/src/plugin/audio/Gsm610/GSM610.CPP
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-2010 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 FILES:
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
// Standard includes
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    19
#include <e32std.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
#include <ecom/implementationproxy.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    23
#include "GSM610.H"
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    24
#include <mmfcodec/gsm610/gsm610common.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    25
#include <ecom/ecom.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    26
#include <e32def.h>
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    27
#include <mmf/plugin/mmfhwdeviceimplementationuids.hrh>
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
* NewL
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    32
* @return CMmfGsm610ToPcm16HwDevice*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    33
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    34
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    35
CMmfGsm610ToPcm16HwDevice* CMmfGsm610ToPcm16HwDevice::NewL()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    36
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    37
	CMmfGsm610ToPcm16HwDevice* self=new(ELeave) CMmfGsm610ToPcm16HwDevice();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    38
	CleanupStack::PushL(self);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    39
	self->ConstructL();
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
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    46
* Codec
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    47
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    48
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    49
CMMFSwCodec& CMmfGsm610ToPcm16HwDevice::Codec()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    50
	{						  
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    51
	return *iCodec;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    52
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    53
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    54
/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    55
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    56
* CMmfGsm610ToPcm16HwDevice
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    57
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    58
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    59
CMmfGsm610ToPcm16HwDevice::~CMmfGsm610ToPcm16HwDevice()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    60
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    61
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    62
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    63
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    64
/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    65
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    66
* ConstructL
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    67
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    68
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    69
void CMmfGsm610ToPcm16HwDevice::ConstructL()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    70
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    71
	CMMFGsm610ToPcm16Codec* ptr= new(ELeave)CMMFGsm610ToPcm16Codec();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    72
	CleanupStack::PushL(ptr); 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    73
	ptr->ConstructL();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    74
	iCodec = ptr;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    75
	CleanupStack::Pop(ptr);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    76
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    77
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    78
/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    79
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    80
* CMmfPcm16ToGsm610HwDevice
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    81
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    82
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    83
CMmfPcm16ToGsm610HwDevice* CMmfPcm16ToGsm610HwDevice::NewL()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    84
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    85
	CMmfPcm16ToGsm610HwDevice* self=new(ELeave) CMmfPcm16ToGsm610HwDevice();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    86
	CleanupStack::PushL(self);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    87
	self->ConstructL();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    88
	CleanupStack::Pop(self);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    89
	return self;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    90
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    91
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    92
/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    93
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    94
* Codec
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    95
* @return CMMFSwCodec&
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    96
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    97
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    98
CMMFSwCodec& CMmfPcm16ToGsm610HwDevice::Codec()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
    99
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   100
	return *iCodec;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   101
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   102
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   103
/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   104
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   105
* ~CMmfPcm16ToGsm610HwDevice
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   106
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   107
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   108
CMmfPcm16ToGsm610HwDevice::~CMmfPcm16ToGsm610HwDevice()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   109
	{
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
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   114
* ConstructL
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   115
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   116
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   117
void CMmfPcm16ToGsm610HwDevice::ConstructL()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   118
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   119
	CMMFPcm16ToGsm610Codec* ptr =new(ELeave) CMMFPcm16ToGsm610Codec();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   120
	CleanupStack::PushL(ptr); 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   121
	ptr->ConstructL();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   122
	iCodec = ptr;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   123
	CleanupStack::Pop(ptr);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   124
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   125
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   126
/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   127
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   128
* CMMFGsm610ToPcm16Codec
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   129
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   130
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   131
CMMFGsm610ToPcm16Codec::CMMFGsm610ToPcm16Codec()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   132
	{	
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
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   137
* ConstructL
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   138
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   139
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   140
void CMMFGsm610ToPcm16Codec::ConstructL()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   141
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   142
    iGsmDecoder = GSM610FR_DecoderFactory::CreateDecoderL();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   143
    iGsmDecoder->StartL();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   144
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   145
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   146
/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   147
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   148
* NewL
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   149
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   150
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   151
CMMFGsm610ToPcm16Codec*  CMMFGsm610ToPcm16Codec::NewL()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   152
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   153
	CMMFGsm610ToPcm16Codec* self=new(ELeave) CMMFGsm610ToPcm16Codec();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   154
	CleanupStack::PushL(self);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   155
	self->ConstructL();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   156
	CleanupStack::Pop(self);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   157
	return self;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   158
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   159
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   160
/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   161
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   162
* ~CMMFGsm610ToPcm16Codec
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   163
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   164
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   165
CMMFGsm610ToPcm16Codec::~CMMFGsm610ToPcm16Codec()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   166
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   167
	if(iGsmDecoder)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   168
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   169
		iGsmDecoder->Release();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   170
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   171
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   172
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   173
/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   174
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   175
* ProcessL
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   176
* @param aSource
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   177
* @param aDest
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   178
* @precondition input buffer length is mod 65
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   179
* @precondition output buffer has sufficient space for coded input
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   180
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   181
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   182
CMMFSwCodec::TCodecProcessResult CMMFGsm610ToPcm16Codec::ProcessL(const CMMFBuffer& aSrc, CMMFBuffer& aDest)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   183
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   184
	CMMFSwCodec::TCodecProcessResult result;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   185
	result.iCodecProcessStatus = TCodecProcessResult::EProcessComplete;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   186
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   187
	//convert from generic CMMFBuffer to CMMFDataBuffer
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   188
	CMMFBuffer* pSrcBuffer =const_cast<CMMFBuffer*>(&aSrc);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   189
	if( !pSrcBuffer )
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   190
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   191
		User::Leave( KErrArgument );
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   192
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   193
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   194
	CMMFDataBuffer* src = static_cast<CMMFDataBuffer*>( pSrcBuffer );
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   195
    if( !src )
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   196
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   197
		User::Leave( KErrArgument );
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   198
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   199
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   200
	CMMFDataBuffer* dst = static_cast<CMMFDataBuffer*>(&aDest);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   201
	if( !dst )
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   202
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   203
		User::Leave( KErrArgument );
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   204
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   205
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   206
	if(!CheckInputBuffers( *src, *dst ))
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   207
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   208
		User::Leave( KErrArgument );
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   209
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   210
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   211
	TInt numBuffersToProcess = NumBuffersToProcess( *src );
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   212
	TUint8* pSrc = CONST_CAST(TUint8*,src->Data().Ptr());
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   213
	TUint8* pDst = CONST_CAST(TUint8*,dst->Data().Ptr());
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   214
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   215
	for( TInt count = 0; count < numBuffersToProcess; count++ )
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   216
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   217
		// Encode two frames of gsm data
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   218
		iGsmDecoder->ExecuteL( pSrc, pDst );
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   219
		pSrc                      += KGsmFrameSize;;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   220
		pDst                      += KPcmDataForGsmFrame;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   221
		result.iSrcBytesProcessed += KGsmFrameSize;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   222
		result.iDstBytesAdded     += KPcmDataForGsmFrame;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   223
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   224
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   225
    dst->Data().SetLength( result.iDstBytesAdded );
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   226
	__ASSERT_DEBUG( ProcessPostCondition( result ), TMmfGsmCodecPanicsNameSpace::Panic( TMmfGsmCodecPanicsNameSpace::EPostConditionViolation ));
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   227
	return result;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   228
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   229
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   230
/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   231
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   232
* CheckInputBuffers
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   233
* @param aSrc
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   234
* @param aDest
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   235
* @return TBool
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   236
* This function returns ETrue if the preconditions of processL are met
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   237
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   238
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   239
TBool CMMFGsm610ToPcm16Codec::CheckInputBuffers( CMMFDataBuffer& aSrc, CMMFDataBuffer& aDest )
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   240
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   241
	TBool result = ETrue;    
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   242
    TInt numInputSubFrames     = aSrc.Data().Length() / KGsmFrameSize;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   243
	TInt numOutputSubFrames    = aDest.Data().MaxLength() / KPcmDataForGsmFrame;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   244
	TBool validInputDataLength = (aSrc.Data().Length() % KGsmFrameSize == 0) ? ETrue : aSrc.LastBuffer();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   245
    
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   246
	if( (numInputSubFrames > numOutputSubFrames) ||  // sufficient space in the output for the input
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   247
        (aSrc.Position() > 0 )  ||                   // position must be zero since we can eat all the data
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   248
		(aDest.Position() > 0 ) ||
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   249
		(!validInputDataLength))                         //position must be zero
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   250
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   251
		result = EFalse;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   252
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   253
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   254
	return result;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   255
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   256
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   257
/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   258
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   259
* NumBuffersToProcess
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   260
* @param aSrc
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   261
* @return TBool
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   262
* This method returns the number of buffers to process
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   263
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   264
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   265
TInt CMMFGsm610ToPcm16Codec::NumBuffersToProcess( const CMMFDataBuffer& aSrc )
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   266
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   267
    TInt numBuffers = (aSrc.Data().Length() / KGsmFrameSize );
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   268
	return numBuffers;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   269
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   270
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   271
/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   272
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   273
* ProcessPostCondition
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   274
* @param aResult
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   275
* @result TBool Etrue if the post condition is satisfied
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   276
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   277
**/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   278
TBool CMMFGsm610ToPcm16Codec::ProcessPostCondition( const CMMFSwCodec::TCodecProcessResult& aResult )
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   279
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   280
     TBool status = ETrue;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   281
	 if( (aResult.iSrcBytesProcessed / KGsmFrameSize ) != (aResult.iDstBytesAdded / KPcmDataForGsmFrame ) )
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   282
		 {
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   283
		 status = EFalse;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   284
		 }
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   285
	 return status;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   286
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   287
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   288
/************************>----------------------------------<*****************************/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   289
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   290
/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   291
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   292
* CMMFPcm16ToGsm610Codec
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   293
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   294
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   295
CMMFPcm16ToGsm610Codec::CMMFPcm16ToGsm610Codec()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   296
	{	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   297
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   298
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   299
/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   300
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   301
* ConstructL
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   302
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   303
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   304
void CMMFPcm16ToGsm610Codec::ConstructL()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   305
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   306
    iGsmEncoder = GSM610FR_EncoderFactory::CreateEncoderL();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   307
    iGsmEncoder->StartL();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   308
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   309
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   310
/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   311
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   312
* NewL
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   313
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   314
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   315
CMMFPcm16ToGsm610Codec* CMMFPcm16ToGsm610Codec::NewL()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   316
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   317
	CMMFPcm16ToGsm610Codec* self=new(ELeave) CMMFPcm16ToGsm610Codec();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   318
	CleanupStack::PushL(self);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   319
	self->ConstructL();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   320
	CleanupStack::Pop(self);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   321
	return self;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   322
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   323
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   324
/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   325
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   326
* CMMFPcm16ToGsm610Codec
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   327
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   328
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   329
CMMFPcm16ToGsm610Codec::~CMMFPcm16ToGsm610Codec()
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   330
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   331
	if(iGsmEncoder)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   332
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   333
		iGsmEncoder->Release();
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   334
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   335
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   336
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   337
/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   338
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   339
* ProcessL
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   340
* @param aSource
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   341
* @param aDest TCodecProcessResult
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   342
* @result
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   343
* @precondition input buffer length is mod 320
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   344
* @precondition output buffer has sufficient space for coded input
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   345
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   346
CMMFSwCodec::TCodecProcessResult CMMFPcm16ToGsm610Codec::ProcessL(const CMMFBuffer& aSrc, CMMFBuffer& aDest)
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   347
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   348
	CMMFSwCodec::TCodecProcessResult result;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   349
	result.iCodecProcessStatus = TCodecProcessResult::EProcessComplete;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   350
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   351
	//convert from generic CMMFBuffer to CMMFDataBuffer
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   352
	CMMFBuffer* pSrcBuffer =const_cast<CMMFBuffer*>(&aSrc);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   353
	if( !pSrcBuffer )
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   354
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   355
		User::Leave( KErrArgument );
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   356
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   357
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   358
	CMMFDataBuffer* src = static_cast<CMMFDataBuffer*>( pSrcBuffer );
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   359
    if( !src )
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   360
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   361
		User::Leave( KErrArgument );
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   362
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   363
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   364
	CMMFDataBuffer* dst = static_cast<CMMFDataBuffer*>(&aDest);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   365
	if( !dst )
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   366
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   367
		User::Leave( KErrArgument );
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   368
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   369
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   370
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   371
	if(!CheckInputBuffers( *src, *dst ))
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   372
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   373
		User::Leave( KErrArgument );
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   374
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   375
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   376
	TInt numBuffersToProcess = NumBuffersToProcess( *src );
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   377
	TUint8* pSrc = CONST_CAST(TUint8*,src->Data().Ptr());
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   378
	TUint8* pDst = CONST_CAST(TUint8*,dst->Data().Ptr());
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   379
	
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   380
	for( TInt count = 0; count < numBuffersToProcess; count++ )
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   381
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   382
		// Encode two frames of gsm data
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   383
		iGsmEncoder->ExecuteL (pSrc, pDst);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   384
		pSrc                      += KPcmDataForGsmFrame;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   385
		pDst                      += KGsmFrameSize;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   386
		result.iSrcBytesProcessed += KPcmDataForGsmFrame;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   387
		result.iDstBytesAdded     += KGsmFrameSize;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   388
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   389
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   390
    dst->Data().SetLength( result.iDstBytesAdded ); 
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   391
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   392
	__ASSERT_DEBUG( ProcessPostCondition(result), TMmfGsmCodecPanicsNameSpace::Panic( TMmfGsmCodecPanicsNameSpace::EPostConditionViolation ));
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   393
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   394
    return result ;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   395
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   396
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   397
/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   398
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   399
* CheckInputBuffers
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   400
* @param aSrc
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   401
* @param aDest
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   402
* @return TBool
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   403
* This function returns ETrue if there is sufficient space
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   404
* in the output buffer for the coded input and
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   405
* the position of both input buffers is zero
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   406
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   407
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   408
TBool CMMFPcm16ToGsm610Codec::CheckInputBuffers( CMMFDataBuffer& aSrc, CMMFDataBuffer& aDest )
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   409
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   410
	TBool result = ETrue;    
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   411
    TInt numInputSubFrames     = aSrc.Data().Length() / KPcmDataForGsmFrame;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   412
	TInt numOutputSubFrames    = aDest.Data().MaxLength() / KGsmFrameSize;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   413
#ifdef EABI
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   414
	TBool validInputDataLength = (aSrc.Data().Length() % KPcmDataForGsmFrame == 0);
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   415
#else
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   416
	TBool validInputDataLength = (aSrc.LastBuffer()? ETrue: (aSrc.Data().Length() % KPcmDataForGsmFrame == 0));
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   417
#endif
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   418
	if( (numInputSubFrames > numOutputSubFrames) ||  // sufficient space in the output for the input
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   419
        (aSrc.Position() > 0 )  ||                   // position must be zero since we can eat all the data
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   420
		(aDest.Position() > 0 ) ||
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   421
		(!validInputDataLength))                         //position must be zero
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   422
		{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   423
		result = EFalse;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   424
		}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   425
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   426
	return result;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   427
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   428
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   429
/**
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   430
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   431
* NumBuffersToProcess
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   432
* @param aSrc
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   433
* @return TBool
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   434
* This method returns the number of buffers to process
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   435
*
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   436
*/
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   437
TInt CMMFPcm16ToGsm610Codec::NumBuffersToProcess( const CMMFDataBuffer& aSrc )
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   438
	{
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   439
	TInt numBuffers = ( aSrc.Data().Length() / KPcmDataForGsmFrame );
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   440
	return numBuffers;
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   441
	}
79dd3e2336a0 2010wk36_01
hgs
parents:
diff changeset
   442