diff -r 951a5db380a0 -r d87d32eab1a9 videoeditorengine/audioeditorengine/codecs/AMR/src/ProcAMRFrameHandler.cpp --- a/videoeditorengine/audioeditorengine/codecs/AMR/src/ProcAMRFrameHandler.cpp Fri Jan 29 14:08:33 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,895 +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 "ProcAMRFrameHandler.h" -#include "ProcFrameHandler.h" -#include "ProcTools.h" - -#include - - -TBool CProcAMRFrameHandler::ManipulateGainL(const HBufC8* aFrameIn, HBufC8*& aFrameOut, TInt8 aGain) -{ - - aFrameOut = HBufC8::NewLC(aFrameIn->Size()); - - if (aFrameIn->Size() == 1) // noData element - { - aFrameOut->Des().Append(aFrameIn[0]); - CleanupStack::Pop(); // aFrameOut - - return ETrue; - } - - - aGain = static_cast(aGain/2); - - - TInt posNow = 0; - TInt nextFrameLength = 1; - - while (nextFrameLength > 0) - { - - nextFrameLength = GetNextFrameLength(aFrameIn, posNow); - if (nextFrameLength < 1) break; - - if (nextFrameLength + posNow > aFrameIn->Size()) - { - // something wrong with the frame, return the original - aFrameOut->Des().Append(aFrameIn[0]); - CleanupStack::Pop(); // aFrameOut - return ETrue; - } - - HBufC8* tmpFrame = HBufC8::NewLC(nextFrameLength); - tmpFrame->Des().Copy(aFrameIn->Mid(posNow, nextFrameLength)); - - posNow += nextFrameLength; - - - const TUint8 ch = (*tmpFrame)[0]; - - TUint dec_mode = (enum Mode)((ch & 0x0078) >> 3); - - TInt maxGain; - - RArray gains; - GetAMRGains(tmpFrame, gains, maxGain); - - - TInt gamma10000 = KAmrGain_dB2Gamma[aGain+127]; - - TInt a = 0; - TInt old_gain, old_gain1 = 0; - TInt old_pitch, old_pitch1 = 0; - TInt new_gain, new_gain1 = 0; - TInt8 new_index = 0; - - - - switch (dec_mode){ - case 0: - - for (a = 0; a < gains.Count()-1 ; a+=4) - { - - old_gain = gains[a+1]; - new_gain = static_cast((gamma10000*old_gain)/10000); - old_pitch = gains[a]; - - old_gain1 = gains[a+3]; - new_gain1 = static_cast((gamma10000*old_gain1)/10000); - old_pitch1 = gains[a+2]; - - - new_index = ProcTools::FindNewIndex475VQ(new_gain, - old_pitch, - new_gain1, - old_pitch1); - - if (a == 0) - { - ProcTools::SetValueToShuffledFrame(tmpFrame, - new_index, - KAmrGains475_1_2, - 8); - } - else if(a == 4) - { - ProcTools::SetValueToShuffledFrame(tmpFrame, - new_index, - KAmrGains475_3_4, - 8); - } - } - - break; - case 1: - - for (a = 0; a < gains.Count()-1 ; a+=2) - { - - old_gain = gains[a+1]; - new_gain = static_cast((gamma10000*old_gain)/10000); - old_pitch = gains[a]; - - new_index = ProcTools::FindNewIndexVQ(new_gain, old_pitch, KAmrGainTable590, 128); - if (a == 0) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains515_1, 6); - else if (a == 2) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains515_2, 6); - else if (a == 4) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains515_3, 6); - else if (a == 6) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains515_4, 6); - } - - break; - case 2: - - for (a = 0; a < gains.Count()-1 ; a+=2) - { - - old_gain = gains[a+1]; - new_gain = static_cast((gamma10000*old_gain)/10000); - old_pitch = gains[a]; - - new_index = ProcTools::FindNewIndexVQ(new_gain, old_pitch, KAmrGainTable590, 128); - if (a == 0) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains590_1, 6); - else if (a == 2) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains590_2, 6); - else if (a == 4) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains590_3, 6); - else if (a == 6) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains590_4, 6); - } - - break; - case 3: - - for (a = 0; a < gains.Count()-1 ; a+=2) - { - - - old_gain = gains[a+1]; - new_gain = static_cast((gamma10000*old_gain)/10000); - old_pitch = gains[a]; - - new_index = ProcTools::FindNewIndexVQ(new_gain, old_pitch, KAmrGainTable102, 256); - if (a == 0) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains670_1, 7); - else if (a == 2) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains670_2, 7); - else if (a == 4) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains670_3, 7); - else if (a == 6) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains670_4, 7); - } - - break; - case 4: - - for (a = 0; a < gains.Count()-1 ; a+=2) - { - - old_gain = gains[a+1]; - new_gain = static_cast((gamma10000*old_gain)/10000); - old_pitch = gains[a]; - - new_index = ProcTools::FindNewIndexVQ(new_gain, old_pitch, KAmrGainTable102, 256); - if (a == 0) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains740_1, 7); - else if (a == 2) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains740_2, 7); - else if (a == 4) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains740_3, 7); - else if (a == 6) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains740_4, 7); - } - - break; - case 5: - - for (a = 0; a < gains.Count() ; a++) - { - - old_gain = gains[a]; - new_gain = static_cast((gamma10000*old_gain)/10000); - - new_index = ProcTools::FindNewIndexSQ(new_gain, KAmrGainTable122, 32); - if (a == 0) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains795_1, 5); - else if (a == 1) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains795_2, 5); - else if (a == 2) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains795_3, 5); - else if (a == 3) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains795_4, 5); - } - - break; - case 6: - - - for (a = 0; a < gains.Count()-1 ; a+=2) - { - - old_gain = gains[a+1]; - new_gain = static_cast((gamma10000*old_gain)/10000); - old_pitch = gains[a]; - - new_index = ProcTools::FindNewIndexVQ(new_gain, old_pitch, KAmrGainTable102, 256); - if (a == 0) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains102_1, 7); - else if (a == 2) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains102_2, 7); - else if (a == 4) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains102_3, 7); - else if (a == 6) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains102_4, 7); - } - - break; - - case 7: - - - for (a = 0; a < gains.Count() ; a++) - { - - old_gain = gains[a]; - new_gain = static_cast((gamma10000*old_gain)/10000); - - new_index = ProcTools::FindNewIndexSQ(new_gain, KAmrGainTable122, 32); - if (a == 0) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains122_1, 5); - else if (a == 1) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains122_2, 5); - else if (a == 2) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains122_3, 5); - else if (a == 3) ProcTools::SetValueToShuffledFrame(tmpFrame, new_index, KAmrGains122_4, 5); - } - - break; - case 8: - - break; - case 15: - - break; - default: - - break; - }; - - - gains.Reset(); - aFrameOut->Des().Append(tmpFrame->Des()); - CleanupStack::PopAndDestroy(tmpFrame); - - } - CleanupStack::Pop(); // aFrameOut - - return ETrue; - } - -TBool CProcAMRFrameHandler::GetGainL(const HBufC8* aFrame, RArray& aGains, TInt& aMaxGain) const - { - - TBool vectorQuant = EFalse; - - const TUint8 ch = (*aFrame)[0]; - - TUint dec_mode = (enum Mode)((ch & 0x0078) >> 3); - - TBool mode475 = EFalse; - - switch (dec_mode) - { - case 0: - - mode475 = ETrue; - vectorQuant = ETrue; - break; - - case 1: - case 2: - case 3: - case 4: - case 6: - vectorQuant = ETrue; - break; - - default: - break; - }; - - - RArray amrGains; - RArray gpGains; - - TInt maxGain = 0; - - TReal b[4] = {0.68, 0.58, 0.34, 0.19}; - - - if (aFrame->Size() < 10) - - { - // SID or no data - for (TInt r = 0; r < 4 ; r++) - { - iPreviousRn[r] = 0; - - iPreviousEnergy = 0; - - - } - - aGains.Append(0); - aMaxGain = 1; - return ETrue; - } - - GetAMRGains(aFrame, amrGains, maxGain); - GetGPGains(aFrame, gpGains); - - TInt gains = 4; - if (mode475) - { - gains = 2; - } - - for (TInt subFrame = 0 ; subFrame < gains ; subFrame++) - { - - // calculate gc (fixed codebook gain) -------------------------> - - TReal currentGamma = 0; - if (vectorQuant) - { - currentGamma = (TReal)(amrGains[subFrame*2+1])/4096.0; // Q12, 2^12 = 4096 - } - else - { - currentGamma = (TReal)(amrGains[subFrame])/4096.0; - } - - TReal E = iPreviousRn[3]*b[0]+iPreviousRn[2]*b[1]+iPreviousRn[1]*b[2]+iPreviousRn[0]*b[3]; - - TReal logGamma = 0; - Math::Log(logGamma, currentGamma); - TReal R = 20 * logGamma; - - TReal gcPred = 0; //g'c - Math::Pow10(gcPred, 0.05*E); - TReal gc = gcPred*currentGamma; - - - // update previous R(n) values ---------> - for (TInt re = 0; re < 3 ; re++) - { - iPreviousRn[re] = iPreviousRn[re+1]; - } - iPreviousRn[3] = R; - // <---------- update ends - - // <---------- gc calculated - - // calculate energy from adaptive codebook -------------> - - TReal currentGp = 0; - - if (vectorQuant) - { - currentGp = (TReal)(amrGains[subFrame*2])/16384.0; // Q14 = 2^14 = 16384 - } - else - { - currentGp = (TReal)(gpGains[subFrame])/16384.0; // Q14, 2^13 = 8192 - } - - - TReal energyFromAdaptiveCB = (iPreviousEnergy*currentGp)/2; - - // <----------------------- energy from adaptive codebook calculated - - TReal totalEnergy = energyFromAdaptiveCB+(gc*45); - - iPreviousEnergy = totalEnergy; - - TReal logTotalEnergy = 0; - - if (totalEnergy < 1) totalEnergy = 1; - - Math::Log(logTotalEnergy, totalEnergy); - - if (logTotalEnergy > 3.5) - { - logTotalEnergy = 3.5; - } - - aGains.Append(logTotalEnergy*100); - - const TInt KMaxGain = 350; - - aMaxGain = KMaxGain; - - - } - - - amrGains.Reset(); - gpGains.Reset(); - return ETrue; - } - - -TBool CProcAMRFrameHandler::GetNormalizingMargin(const HBufC8* aFrame, TInt8& aMargin) const - - { - - const TUint8 ch = (*aFrame)[0]; - - TUint dec_mode = (enum Mode)((ch & 0x0078) >> 3); - RArray gains; - - TInt error = KErrNone; - TRAP(error, CleanupClosePushL(gains) ); - - if (error != KErrNone) - return EFalse; - - TInt gamma10000 = 1; - TInt largestGain = 1; - TInt a = 0; - TInt maxGain; - - switch (dec_mode) - { - case 0: - - GetAMRGains(aFrame, gains, maxGain); - - for (a = 1 ; a < gains.Count() ; a+=2) - { - if (gains[a] > largestGain) - { - largestGain = gains[a]; - } - - } - - gamma10000 = (KAmrLargestGain475*10000)/largestGain; - - break; - case 1: - case 2: - - // bitrates 515, 590 - GetAMRGains(aFrame, gains, maxGain); - - for (a = 1 ; a < gains.Count() ; a+=2) - { - if (gains[a] > largestGain) - { - largestGain = gains[a]; - } - - } - gamma10000 = (KAmrLargestGain590*10000)/largestGain; - - - break; - case 3: - case 4: - case 6: - // bitRate = 670, 740, 1020; - GetAMRGains(aFrame, gains, maxGain); - - for (a = 1 ; a < gains.Count() ; a+=2) - { - if (gains[a] > largestGain) - { - largestGain = gains[a]; - } - - } - gamma10000 = (KAmrLargestGain102*10000)/largestGain; - - break; - case 5: - case 7: - //bitRate = 795 & 12.2 - GetAMRGains(aFrame, gains, maxGain); - - - for (a = 0 ; a < gains.Count() ; a++) - { - if (gains[a] > largestGain) - { - largestGain = gains[a]; - } - - } - gamma10000 = (KAmrLargestGain122*10000)/largestGain; - - - break; - - case 8: - - case 15: - - default: - aMargin = 100; - return ETrue; - - }; - - - CleanupStack::PopAndDestroy(&gains); - - TUint8 newIndex = ProcTools::FindNewIndexSQ(gamma10000, KAmrGain_dB2Gamma, 256); - - TInt8 newGain = static_cast(newIndex-127); - - - if (newGain > 63) - { - newGain = 63; - } - else if (newGain < -63) - { - newGain = -63; - } - - aMargin = static_cast(newGain*2); - // aMargin is now in dB/2:s - return ETrue; - - - } - -CProcAMRFrameHandler::~CProcAMRFrameHandler() - { - - } - -CProcAMRFrameHandler* CProcAMRFrameHandler::NewL() - { - - - CProcAMRFrameHandler* self = NewLC(); - CleanupStack::Pop(self); - return self; - - } -CProcAMRFrameHandler* CProcAMRFrameHandler::NewLC() - { - - CProcAMRFrameHandler* self = new (ELeave) CProcAMRFrameHandler(); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - - } - -void CProcAMRFrameHandler::ConstructL() - { - - - } - -CProcAMRFrameHandler::CProcAMRFrameHandler() - { - - } - -TBool CProcAMRFrameHandler::GetAMRGains(const HBufC8* aFrame, - RArray& aGains, - TInt& aMaxGain) const - - { - - - const TUint8 ch = (*aFrame)[0]; - - TUint dec_mode = (enum Mode)((ch & 0x0078) >> 3); - TInt gainIndex = 0; - - - switch (dec_mode) - { - case 0: -// bitRate = 475; - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains475_1_2, 8); - aGains.Append(KAmrGainTable475[gainIndex*4]); - aGains.Append(KAmrGainTable475[gainIndex*4+1]); - aGains.Append(KAmrGainTable475[gainIndex*4+2]); - aGains.Append(KAmrGainTable475[gainIndex*4+3]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains475_3_4, 8); - aGains.Append(KAmrGainTable475[gainIndex*4]); - aGains.Append(KAmrGainTable475[gainIndex*4+1]); - aGains.Append(KAmrGainTable475[gainIndex*4+2]); - aGains.Append(KAmrGainTable475[gainIndex*4+3]); - - break; - case 1: -// bitRate = 515; - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains515_1, 6); - aGains.Append(KAmrGainTable590[gainIndex*2]); - aGains.Append(KAmrGainTable590[gainIndex*2+1]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains515_2, 6); - aGains.Append(KAmrGainTable590[gainIndex*2]); - aGains.Append(KAmrGainTable590[gainIndex*2+1]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains515_3, 6); - aGains.Append(KAmrGainTable590[gainIndex*2]); - aGains.Append(KAmrGainTable590[gainIndex*2+1]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains515_4, 6); - aGains.Append(KAmrGainTable590[gainIndex*2]); - aGains.Append(KAmrGainTable590[gainIndex*2+1]); - break; - case 2: -// bitRate = 590; - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains590_1, 6); - aGains.Append(KAmrGainTable590[gainIndex*2]); - aGains.Append(KAmrGainTable590[gainIndex*2+1]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains590_2, 6); - aGains.Append(KAmrGainTable590[gainIndex*2]); - aGains.Append(KAmrGainTable590[gainIndex*2+1]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains590_3, 6); - aGains.Append(KAmrGainTable590[gainIndex*2]); - aGains.Append(KAmrGainTable590[gainIndex*2+1]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains590_4, 6); - aGains.Append(KAmrGainTable590[gainIndex*2]); - aGains.Append(KAmrGainTable590[gainIndex*2+1]); - - break; - case 3: -// bitRate = 670; - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains670_1, 7); - aGains.Append(KAmrGainTable102[gainIndex*2]); - aGains.Append(KAmrGainTable102[gainIndex*2+1]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains670_2, 7); - aGains.Append(KAmrGainTable102[gainIndex*2]); - aGains.Append(KAmrGainTable102[gainIndex*2+1]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains670_3, 7); - aGains.Append(KAmrGainTable102[gainIndex*2]); - aGains.Append(KAmrGainTable102[gainIndex*2+1]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains670_4, 7); - aGains.Append(KAmrGainTable102[gainIndex*2]); - aGains.Append(KAmrGainTable102[gainIndex*2+1]); - - break; - case 4: -// bitRate = 740; - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains740_1, 7); - aGains.Append(KAmrGainTable102[gainIndex*2]); - aGains.Append(KAmrGainTable102[gainIndex*2+1]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains740_2, 7); - aGains.Append(KAmrGainTable102[gainIndex*2]); - aGains.Append(KAmrGainTable102[gainIndex*2+1]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains740_3, 7); - aGains.Append(KAmrGainTable102[gainIndex*2]); - aGains.Append(KAmrGainTable102[gainIndex*2+1]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains740_4, 7); - aGains.Append(KAmrGainTable102[gainIndex*2]); - aGains.Append(KAmrGainTable102[gainIndex*2+1]); - - break; - case 5: -// bitRate = 795; - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains795_1, 5); - aGains.Append(KAmrGainTable122[gainIndex]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains795_2, 5); - aGains.Append(KAmrGainTable122[gainIndex]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains795_3, 5); - aGains.Append(KAmrGainTable122[gainIndex]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains795_4, 5); - aGains.Append(KAmrGainTable122[gainIndex]); - - break; - case 6: -// bitRate = 1020; - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains102_1, 7); - aGains.Append(KAmrGainTable102[gainIndex*2]); - aGains.Append(KAmrGainTable102[gainIndex*2+1]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains102_2, 7); - aGains.Append(KAmrGainTable102[gainIndex*2]); - aGains.Append(KAmrGainTable102[gainIndex*2+1]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains102_3, 7); - aGains.Append(KAmrGainTable102[gainIndex*2]); - aGains.Append(KAmrGainTable102[gainIndex*2+1]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains102_4, 7); - aGains.Append(KAmrGainTable102[gainIndex*2]); - aGains.Append(KAmrGainTable102[gainIndex*2+1]); - - break; - case 7: -// bitRate = 1220; - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains122_1, 5); - aGains.Append(KAmrGainTable122[gainIndex]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains122_2, 5); - aGains.Append(KAmrGainTable122[gainIndex]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains122_3, 5); - aGains.Append(KAmrGainTable122[gainIndex]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGains122_4, 5); - aGains.Append(KAmrGainTable122[gainIndex]); - - - break; - case 8: -// bitRate = 0; - break; - case 15: -// bitRate = 0; - break; - default: -// bitRate = 0; - break; - }; - - - aMaxGain = KAmrLargestGain102; - - return ETrue; - - - } - -TInt CProcAMRFrameHandler::GetNextFrameLength(const HBufC8* aFrame, TInt aPosNow) - { - - - if (aPosNow >= aFrame->Size()) return -1; - - - const TUint8 ch = (*aFrame)[aPosNow]; - - TUint dec_mode = (enum Mode)((ch & 0x0078) >> 3); - - switch (dec_mode) - { - case 0: - { - return 12+1; - } - - case 1: - { - return 13+1; - } - - case 2: - { - return 15+1; - } - - case 3: - { - return 17+1; - } - - case 4: - { - return 19+1; - } - - case 5: - { - return 20+1; - } - - case 6: - { - return 26+1; - } - - case 7: - { - return 31+1; - } - - case 8: - { - return 5+1; - } - - case 15: - { - return 0; - } - - default: - return 0+1; - - }; - - - } - - -TBool CProcAMRFrameHandler::GetGPGains(const HBufC8* aFrame, - RArray& aGains) const - - { - - - const TUint8 ch = (*aFrame)[0]; - - TUint dec_mode = (enum Mode)((ch & 0x0078) >> 3); - TInt gainIndex = 0; - - - switch (dec_mode) - { - - case 7: -// bitRate = 1220; - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGPGains122_1, 4); - aGains.Append(KAmrGPTable[gainIndex]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGPGains122_2, 4); - aGains.Append(KAmrGPTable[gainIndex]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGPGains122_3, 4); - aGains.Append(KAmrGPTable[gainIndex]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGPGains122_4, 4); - aGains.Append(KAmrGPTable[gainIndex]); - - - break; - - case 5: - // 7.95 - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGPGains795_1, 4); - aGains.Append(KAmrGPTable[gainIndex]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGPGains795_2, 4); - aGains.Append(KAmrGPTable[gainIndex]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGPGains795_3, 4); - aGains.Append(KAmrGPTable[gainIndex]); - - gainIndex = ProcTools::GetValueFromShuffledFrame(aFrame, KAmrGPGains795_4, 4); - aGains.Append(KAmrGPTable[gainIndex]); - break; - - - - default: -// return EFalse; - break; - }; - - - return ETrue; - - - }