diff -r 951a5db380a0 -r e0b5df5c0969 videoeditorengine/audioeditorengine/codecs/WAV/src/ProcWAVFrameHandler.cpp --- a/videoeditorengine/audioeditorengine/codecs/WAV/src/ProcWAVFrameHandler.cpp Fri Jan 29 14:08:33 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,384 +0,0 @@ -/* -* Copyright (c) 2010 Ixonos Plc. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - Initial contribution -* -* Contributors: -* Ixonos Plc -* -* Description: -* -*/ - - - - -#include "ProcWAVFrameHandler.h" -#include "ProcFrameHandler.h" -#include "ProcTools.h" -#include "ProcConstants.h" - -#include -#include - - -TBool CProcWAVFrameHandler::ManipulateGainL(const HBufC8* aFrameIn, HBufC8*& aFrameOut, TInt8 aGain) - { - TInt a = 0; - - aFrameOut = HBufC8::NewLC(aFrameIn->Size()); - - aFrameOut->Des().Copy(aFrameIn->Ptr(), aFrameIn->Size()); - - aGain = static_cast(aGain / 2); - - TPtr8 framePtr(aFrameOut->Des()); - if (iBitsPerSample == 8) - { - - TReal multiplier = 0; - TReal gaR(aGain); - TReal exp = gaR/20; - Math::Pow(multiplier, 10, exp); - - for (a = 0 ; a < aFrameOut->Length() ; a++) - { - TInt oldGain = (*aFrameOut)[a]-128; - TInt newGain = 0; - - newGain = static_cast(oldGain * multiplier); - - if (newGain > 128) - { - newGain = 128; - } - else if (newGain < -128) - { - newGain = -128; - } - - framePtr[a] = static_cast(newGain+128); - - } - } - else if (iBitsPerSample == 16) - { - - TReal multiplier = 0; - TReal gaR(aGain); - TReal exp = gaR/20; - Math::Pow(multiplier, 10, exp); - - - for (a = 0 ; a < aFrameOut->Length()-1 ; a += 2) - { - - TUint16 oldGain = static_cast((*aFrameOut)[a+1]*256 + (*aFrameOut)[a]); - - TBool negative = EFalse; - - if (oldGain > 32767) - { - oldGain = static_cast(~oldGain+1);// - 65793; - negative = ETrue; - } - - TUint16 newGain = static_cast(oldGain * multiplier); - - if (newGain > 32727) - { - newGain = 32727; - } - - - if (negative) - { - newGain = static_cast(~newGain-1);// - 65793; - - } - framePtr[a+1] = static_cast(newGain/256); - framePtr[a] = static_cast(newGain%256); - - - - } - - } - - - CleanupStack::Pop(); // aFrameOut - return ETrue; - } - -TBool CProcWAVFrameHandler::GetGainL(const HBufC8* aFrame, RArray& aGains, TInt& aMaxGain) const - { - - TInt a = 0; - - TInt highest = 0; - - if (iBitsPerSample == 8) - { - - for (a = 0 ; a < aFrame->Length() ; a++) - { - - - if (Abs((*aFrame)[a]-128) > highest) - highest = Abs((*aFrame)[a]-128); - - } - } - else if (iBitsPerSample == 16) - { - - for (a = 0 ; a < aFrame->Length()-1 ; a += 2) - { - TInt ga = ((*aFrame)[a+1]*256 + (*aFrame)[a]); - - if (ga > 32767) ga-= 65792; - - - - if (ga > highest) highest = ga; - - - } - - } - - - aGains.Append(highest); - - if (iBitsPerSample == 8) aMaxGain = 128; - else if (iBitsPerSample == 16) aMaxGain = 32767; - - - return ETrue; - } - - -TBool CProcWAVFrameHandler::GetNormalizingMargin(const HBufC8* aFrame, TInt8& aMargin) const - - { - - - TInt maxGain = 0; - TInt highestGain = GetHighestGain(aFrame, maxGain); - - - TInt ma = ((maxGain - highestGain)*2)/5; - aMargin = static_cast(ma); - - return ETrue; - - - } - -TBool CProcWAVFrameHandler::IsMixingAvailable() const - { - return ETrue; - } -TBool CProcWAVFrameHandler::MixL(const HBufC8* aFrame1, const HBufC8* aFrame2, HBufC8*& aMixedFrame) - { - - if (aFrame1->Length() != aFrame2->Length()) - { - aMixedFrame = 0; - return EFalse; - } - - aMixedFrame = HBufC8::NewL(aFrame1->Length()); - - TInt a = 0; - TInt newGain = 0; - - if (iBitsPerSample == 8) - { - - for (a = 0 ; a < aFrame1->Length() ; a++) - { - - TInt oldGain1 = (*aFrame1)[a]-128; - TInt oldGain2 = (*aFrame2)[a]-128; - - newGain = oldGain1 + oldGain2; - - if (newGain > 128) - { - newGain = 128; - } - else if (newGain < -128) - { - newGain = -128; - } - - aMixedFrame->Des().Append(static_cast(newGain+128)); - - } - } - else if (iBitsPerSample == 16) - { - - - for (a = 0 ; a < aFrame1->Length()-1 ; a += 2) - { - - TUint16 oldGain1 = static_cast((*aFrame1)[a+1]*256 + (*aFrame1)[a]); - TUint16 oldGain2 = static_cast((*aFrame2)[a+1]*256 + (*aFrame2)[a]); - - - TBool negative1 = EFalse; - TBool negative2 = EFalse; - - if (oldGain1 > 32767) - { - //oldGain1 = ~oldGain1+1;// - 65793; - negative1 = ETrue; -// oldGain1 = oldGain1+((65536-oldGain1)/2); - - } - else - { - -// oldGain1 /= 2; - - } - - if (oldGain2 > 32767) - { - //oldGain2 = ~oldGain2+1;// - 65793; - negative2 = ETrue; -// oldGain2 = oldGain2+((65536-oldGain2)/2); - - } - else - { -// oldGain2 /= 2; - } - - - newGain = static_cast(oldGain1 + oldGain2); - - - if (negative1 && negative2) - { - if (newGain < 32767) - { - newGain = 32768; - } - } - else if (!negative1 && !negative2) - { - if (newGain > 32767) - { - newGain = 32767; - } - - } - - - aMixedFrame->Des().Append(static_cast(newGain%256)); - aMixedFrame->Des().Append(static_cast(newGain/256)); - - } - - } - - return ETrue; - - } - - - -CProcWAVFrameHandler::~CProcWAVFrameHandler() - { - - } - -CProcWAVFrameHandler* CProcWAVFrameHandler::NewL(TInt aBitsPerSample) - { - - - CProcWAVFrameHandler* self = NewLC(aBitsPerSample); - CleanupStack::Pop(self); - return self; - - } -CProcWAVFrameHandler* CProcWAVFrameHandler::NewLC(TInt aBitsPerSample) - { - - CProcWAVFrameHandler* self = new (ELeave) CProcWAVFrameHandler(aBitsPerSample); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - - } - -void CProcWAVFrameHandler::ConstructL() - { - - } - -CProcWAVFrameHandler::CProcWAVFrameHandler(TInt aBitsPerSample) : iBitsPerSample(aBitsPerSample) - { - - } - -TInt CProcWAVFrameHandler::GetHighestGain(const HBufC8* aFrame, TInt& aMaxGain) const - { - - TInt maxGain = 0; - TInt a = 0; - - if (iBitsPerSample == 8) - { - aMaxGain = 210; - - for (a = 0 ; a < aFrame->Length() ; a++) - { - - TInt gain = Abs((*aFrame)[a]-128); - if (gain > maxGain) maxGain = gain; - - } - } - else if (iBitsPerSample == 16) - { - - aMaxGain = 452; - for (a = 0 ; a < aFrame->Length()-1 ; a += 2) - { - TInt ga = ((*aFrame)[a+1]*256 + (*aFrame)[a]); - - if (ga > 32767) ga-= 65792; - - ga = Abs(ga); - - if (ga > maxGain) maxGain = ga; - - } - - } - - TReal result = 0; - TReal gai(maxGain); - - if (gai!= 0) Math::Log(result, gai); - result *= 100; - - return (TInt) result; - - - - - - } - -