sl@0: // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #include sl@0: #include "mmfBtSwCodecUtility.h" sl@0: sl@0: sl@0: sl@0: /****************************************************************** sl@0: * CMMFSwCodecUtility sl@0: ******************************************************************/ sl@0: CMMFSwCodecUtility::CMMFSwCodecUtility() sl@0: { sl@0: } sl@0: sl@0: sl@0: CMMFSwCodecUtility::~CMMFSwCodecUtility() sl@0: { sl@0: } sl@0: sl@0: CMMFSwCodecUtility* CMMFSwCodecUtility::NewL() sl@0: { sl@0: CMMFSwCodecUtility* self = new(ELeave) CMMFSwCodecUtility(); sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(); sl@0: CleanupStack::Pop(); sl@0: return self; sl@0: } sl@0: sl@0: void CMMFSwCodecUtility::ConstructL() sl@0: { sl@0: } sl@0: sl@0: void CMMFSwCodecUtility::ConfigAudioRamper(TInt64 aRampTime, TInt aSampleRate, TInt aChannels) sl@0: { sl@0: iRampSamples = I64LOW(((TInt64(aSampleRate) * aRampTime) /1000000 )); // Add this sl@0: iRampSamplesLeft = iRampSamples; sl@0: iChannels = aChannels; sl@0: iRampIncr = 0; sl@0: iSkip = ETrue; sl@0: } sl@0: sl@0: TBool CMMFSwCodecUtility::RampAudio(CMMFDataBuffer* aBuffer) sl@0: { sl@0: TInt i=0; sl@0: TInt length = aBuffer->Data().Length()>>1; sl@0: TInt16* sample = REINTERPRET_CAST(TInt16*,&aBuffer->Data()[0]); sl@0: TInt64 theResult(0); sl@0: while ((i < length) && (iRampIncr < iRampSamples)) sl@0: { sl@0: theResult = sample[i]; sl@0: theResult *= iRampIncr; sl@0: theResult /= iRampSamples; sl@0: sample[i] = STATIC_CAST(TInt16, I64LOW(theResult) ); sl@0: sl@0: if ((iChannels == 1) || (!iSkip)) sl@0: { sl@0: iRampIncr++; sl@0: } sl@0: iSkip = !iSkip; sl@0: i++; sl@0: } sl@0: sl@0: if (iRampIncr < iRampSamples) sl@0: return ETrue; sl@0: else sl@0: return EFalse; sl@0: sl@0: } sl@0: