--- 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 <f32file.h>
-#include <e32math.h>
-
-
-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<TInt8>(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<TInt>(oldGain * multiplier);
-
- if (newGain > 128)
- {
- newGain = 128;
- }
- else if (newGain < -128)
- {
- newGain = -128;
- }
-
- framePtr[a] = static_cast<TUint8>(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<TUint16>((*aFrameOut)[a+1]*256 + (*aFrameOut)[a]);
-
- TBool negative = EFalse;
-
- if (oldGain > 32767)
- {
- oldGain = static_cast<TUint16>(~oldGain+1);// - 65793;
- negative = ETrue;
- }
-
- TUint16 newGain = static_cast<TUint16>(oldGain * multiplier);
-
- if (newGain > 32727)
- {
- newGain = 32727;
- }
-
-
- if (negative)
- {
- newGain = static_cast<TUint16>(~newGain-1);// - 65793;
-
- }
- framePtr[a+1] = static_cast<TUint8>(newGain/256);
- framePtr[a] = static_cast<TUint8>(newGain%256);
-
-
-
- }
-
- }
-
-
- CleanupStack::Pop(); // aFrameOut
- return ETrue;
- }
-
-TBool CProcWAVFrameHandler::GetGainL(const HBufC8* aFrame, RArray<TInt>& 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<TInt8>(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<TUint8>(newGain+128));
-
- }
- }
- else if (iBitsPerSample == 16)
- {
-
-
- for (a = 0 ; a < aFrame1->Length()-1 ; a += 2)
- {
-
- TUint16 oldGain1 = static_cast<TUint16>((*aFrame1)[a+1]*256 + (*aFrame1)[a]);
- TUint16 oldGain2 = static_cast<TUint16>((*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<TUint16>(oldGain1 + oldGain2);
-
-
- if (negative1 && negative2)
- {
- if (newGain < 32767)
- {
- newGain = 32768;
- }
- }
- else if (!negative1 && !negative2)
- {
- if (newGain > 32767)
- {
- newGain = 32767;
- }
-
- }
-
-
- aMixedFrame->Des().Append(static_cast<TUint8>(newGain%256));
- aMixedFrame->Des().Append(static_cast<TUint8>(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;
-
-
-
-
-
- }
-
-