--- a/videoeditorengine/audioeditorengine/src/ProcVisProcessor.cpp Fri Jan 29 14:08:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,464 +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 "ProcVisProcessor.h"
-#include "audconstants.h"
-
-#include "ProcMP4InFileHandler.h"
-#include "ProcADTSInFileHandler.h"
-#include "ProcMP3InFileHandler.h"
-#include "ProcAWBInFileHandler.h"
-#include "ProcWAVInFileHandler.h"
-#include "ProcAMRInFileHandler.h"
-
-
-#include "ProcAMRFrameHandler.h"
-#include "ProcAACFrameHandler.h"
-#include "ProcMP3FrameHandler.h"
-#include "ProcAWBFrameHandler.h"
-#include "ProcWAVFrameHandler.h"
-
-CProcVisProcessor* CProcVisProcessor::NewL()
- {
-
-
- CProcVisProcessor* self = new (ELeave) CProcVisProcessor();
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
- return self;
- }
-
-CProcVisProcessor* CProcVisProcessor::NewLC()
- {
- CProcVisProcessor* self = new (ELeave) CProcVisProcessor();
- CleanupStack::PushL(self);
- self->ConstructL();
- return self;
- }
-
-
-CProcVisProcessor::~CProcVisProcessor()
- {
-
- if (iVisualization != 0)
- {
- delete[] iVisualization;
- }
- if (iInFile != 0)
- {
- delete iInFile;
- }
- if (iFrameHandler != 0)
- {
- delete iFrameHandler;
- }
-
- }
-
-void CProcVisProcessor::VisualizeClipL(const CAudClipInfo* aClipInfo, TInt aSize)
- {
-
- // initialize...
- iClipInfo = aClipInfo;
- iVisualizationSize = aSize;
- iVisualization = new (ELeave) TInt8[iVisualizationSize];
-
-
- if (aClipInfo->Properties().iFileFormat == EAudFormatAMR)
- {
- CProcInFileHandler* inFileHandler = CProcAMRInFileHandler::NewL(aClipInfo->FileName(),
- aClipInfo->FileHandle(),
- 0, 2048);
- iInFile = inFileHandler;
- iFrameHandler = CProcAMRFrameHandler::NewL();
- TAudFileProperties properties;
- inFileHandler->GetPropertiesL(&properties);
- inFileHandler->SetPropertiesL(properties);
- iFrameAmount = properties.iFrameCount;
- inFileHandler->SeekAudioFrame(0);
- }
- else if (aClipInfo->Properties().iFileFormat == EAudFormatAMRWB)
- {
- CProcInFileHandler* inFileHandler = CProcAWBInFileHandler::NewL(aClipInfo->FileName(),
- aClipInfo->FileHandle(),
- 0, 2048);
- iInFile = inFileHandler;
- iFrameHandler = CProcAWBFrameHandler::NewL();
- TAudFileProperties properties;
- inFileHandler->GetPropertiesL(&properties);
- inFileHandler->SetPropertiesL(properties);
- iFrameAmount = properties.iFrameCount;
- inFileHandler->SeekAudioFrame(0);
- }
- else if (aClipInfo->Properties().iFileFormat == EAudFormatMP3)
- {
- CProcInFileHandler* inFileHandler = CProcMP3InFileHandler::NewL(aClipInfo->FileName(),
- aClipInfo->FileHandle(),
- 0, 2048);
- iInFile = inFileHandler;
- iFrameHandler = CProcMP3FrameHandler::NewL();
- TAudFileProperties properties;
- inFileHandler->GetPropertiesL(&properties);
- inFileHandler->SetPropertiesL(properties);
- iFrameAmount = properties.iFrameCount;
- inFileHandler->SeekAudioFrame(0);
- }
- else if (aClipInfo->Properties().iFileFormat == EAudFormatWAV)
- {
- CProcInFileHandler* inFileHandler = CProcWAVInFileHandler::NewL(aClipInfo->FileName(),
- aClipInfo->FileHandle(),
- 0, 8192);
- iInFile = inFileHandler;
- TAudFileProperties properties;
- inFileHandler->GetPropertiesL(&properties);
- inFileHandler->SetPropertiesL(properties);
- iFrameAmount = properties.iFrameCount;
- inFileHandler->SeekAudioFrame(0);
- iFrameHandler = CProcWAVFrameHandler::NewL(properties.iNumberOfBitsPerSample);
- }
-
-
- else if (aClipInfo->Properties().iFileFormat == EAudFormatMP4 &&
- aClipInfo->Properties().iAudioType == EAudAAC_MPEG4)
- {
-
- CProcInFileHandler* inFileHandler = CProcMP4InFileHandler::NewL(aClipInfo->FileName(),
- aClipInfo->FileHandle(),
- 0, 8192);
-
- iInFile = inFileHandler;
- TAudFileProperties properties;
-
- inFileHandler->GetPropertiesL(&properties);
-
- inFileHandler->SetPropertiesL(properties);
- //inFileHandler->SetPropertiesL(properties);
- iFrameAmount = properties.iFrameCount;
- inFileHandler->SeekAudioFrame(0);
-
- TAACFrameHandlerInfo frameInfo;
- CProcMP4InFileHandler* MP4inFileHandler = static_cast<CProcMP4InFileHandler*>(inFileHandler);
- MP4inFileHandler->GetInfoForFrameHandler(frameInfo);
-
- iFrameHandler = CProcAACFrameHandler::NewL(frameInfo);
-
- }
- else if (aClipInfo->Properties().iFileFormat == EAudFormatMP4 &&
- (aClipInfo->Properties().iAudioType == EAudAMR))
- {
-
- CProcInFileHandler* inFileHandler = CProcMP4InFileHandler::NewL(aClipInfo->FileName(),
- aClipInfo->FileHandle(),
- 0, 8092);
-
- iInFile = inFileHandler;
- TAudFileProperties properties;
-
- inFileHandler->GetPropertiesL(&properties);
-
- inFileHandler->SetPropertiesL(properties);
- //inFileHandler->SetPropertiesL(properties);
- iFrameAmount = properties.iFrameCount;
- inFileHandler->SeekAudioFrame(0);
-
- iFrameHandler = CProcAMRFrameHandler::NewL();
-
- }
- else if (aClipInfo->Properties().iFileFormat == EAudFormatMP4 &&
- (aClipInfo->Properties().iAudioType == EAudAMRWB))
- {
-
- CProcInFileHandler* inFileHandler = CProcMP4InFileHandler::NewL(aClipInfo->FileName(),
- aClipInfo->FileHandle(),
- 0, 8092);
-
- iInFile = inFileHandler;
- TAudFileProperties properties;
-
- inFileHandler->GetPropertiesL(&properties);
-
- inFileHandler->SetPropertiesL(properties);
- //inFileHandler->SetPropertiesL(properties);
- iFrameAmount = properties.iFrameCount;
- inFileHandler->SeekAudioFrame(0);
-
- iFrameHandler = CProcAWBFrameHandler::NewL();
-
- }
- else if (aClipInfo->Properties().iFileFormat == EAudFormatAAC_ADTS &&
- aClipInfo->Properties().iAudioType == EAudAAC_MPEG4
- )
- {
-
- CProcInFileHandler* inFileHandler = CProcADTSInFileHandler::NewL(aClipInfo->FileName(),
- aClipInfo->FileHandle(),
- 0, 8092);
-
-
-
- iInFile = inFileHandler;
- TAudFileProperties properties;
-
- inFileHandler->GetPropertiesL(&properties);
-
- inFileHandler->SetPropertiesL(properties);
- iFrameAmount = properties.iFrameCount;
- inFileHandler->SeekAudioFrame(0);
-
- TAACFrameHandlerInfo frameInfo;
- CProcADTSInFileHandler* ADTSinFileHandler = static_cast<CProcADTSInFileHandler*>(inFileHandler);
- ADTSinFileHandler->GetInfoForFrameHandler(frameInfo);
-
- iFrameHandler = CProcAACFrameHandler::NewL(frameInfo);
-
- }
-
-
- }
-
-TBool CProcVisProcessor::VisualizeClipPieceL(TInt &aProgress)
- {
-
- if (iInFile == 0)
- return ETrue;
-
- if (iVisualizationPos >= iVisualizationSize)
- {
- if (iInFile != 0)
- {
- delete iInFile;
- iInFile = 0;
- }
-
- if (iFrameHandler != 0)
- {
- delete iFrameHandler;
- iFrameHandler = 0;
- }
- return ETrue;
- }
-
- HBufC8* point = 0;
- TInt siz;
- TInt32 tim = 0;
-
- RArray<TInt> gains;
-
- TAudType audType = iClipInfo->Properties().iAudioType;
-
-
- TInt maxGain = 0;
- TInt gainAmount = 0;
- TInt divider = 0;
- for (TInt b = 0 ; b < 2 ; b++)
- {
- gains.Reset();
-
-
- TBool decReq = iInFile->DecodingRequired();
- iInFile->SetDecodingRequired(EFalse);
- TBool tmp = EFalse;
-
- if (!iInFile->GetAudioFrameL(point, siz, tim, tmp))
- {
- iInFile->SetDecodingRequired(decReq);
-
- delete iInFile;
- iInFile = 0;
- delete iFrameHandler;
- iFrameHandler = 0;
- return ETrue;
-
- }
- iInFile->SetDecodingRequired(decReq);
- CleanupStack::PushL(point);
-
- iFramesProcessed++;
- if (siz > 0)
- {
-
-
- iFrameHandler->GetGainL(point, gains, maxGain);
-
- if (point != NULL)
- {
- CleanupStack::PopAndDestroy(point);
- }
-
-
- if (audType == EAudAMR || audType == EAudAMRWB)
- {
-
- for (TInt c = 0 ; c < gains.Count() ; c++)
- {
- if (gains[c] > gainAmount)
- {
- gainAmount = gains[c];
- }
-
- //gainAmount+=gains[c];
- }
- }
- else if (audType == EAudAAC_MPEG4)
- {
- for (TInt c = 0 ; c < gains.Count() ; c++)
- {
- if (gains[c] > gainAmount)
- {
- gainAmount = gains[c];
- }
-
- //gainAmount+=gains[c];
- }
- }
- else if (audType == EAudMP3)
- {
- for (TInt c = 0 ; c < gains.Count() ; c++)
- {
-
- gainAmount+=gains[c];
- divider++;
- }
- //gainAmount /= gains.Count();
- }
- else if (audType == EAudWAV)
- {
- for (TInt c = 0 ; c < gains.Count() ; c++)
- {
-
- gainAmount+=gains[c];
- divider++;
- }
- //gainAmount /= gains.Count();
- }
-
- }
-
- else
- {
- CleanupStack::PopAndDestroy(point);
- // silent frame
- gains.Append(0);
- gains.Append(0);
- maxGain = 1;
- }
- }
-
-
- if (audType == EAudMP3 && divider > 0) gainAmount/= divider;
- if (audType == EAudWAV && divider > 0) gainAmount/= divider;
-
-
-
- iVisualizationProcessed = (iFramesProcessed*KAedMaxVisualizationResolution)/iFrameAmount;
-
-
- while (iVisualizationWritten <= iVisualizationProcessed)
- {
- if (iVisualizationPos >= iVisualizationSize)
- {
- break;
- }
-
- if (audType == EAudAAC_MPEG4)
- {
-
- TReal ga(gainAmount-100);
- TReal exponent= ga/36;
- TReal visResult(0);
- Math::Pow(visResult, 10, exponent);
-
- TInt16 visR = 0;
- TInt err = Math::Int(visR, visResult);
-
- if (visR > 127) visR = 127;
-
- if (err == KErrNone)
- {
- iVisualization[iVisualizationPos] = static_cast<TInt8>(visR);
- }
- else
- {
- iVisualization[iVisualizationPos] = 0;
-
- }
-
- }
- else
- {
- TInt visValue = (127*gainAmount)/maxGain;
-
- if (visValue < 0)
- {
- visValue = 0;
- }
- else if (visValue > KMaxTInt8)
- {
- visValue = KMaxTInt8;
- }
-
- iVisualization[iVisualizationPos] = static_cast<TInt8>(visValue);
- }
- iVisualizationPos++;
- iVisualizationWritten = (KAedMaxVisualizationResolution*iVisualizationPos)/iVisualizationSize;
- }
-
-
- gains.Reset();
- aProgress = iVisualizationWritten/(KAedMaxVisualizationResolution/100); // convert resolution to percentages
- return EFalse;
-
-
- }
-
-void CProcVisProcessor::GetFinalVisualizationL(TInt8*& aVisualization, TInt& aSize)
- {
-
- if (iVisualization == 0)
- {
- User::Leave(KErrNotReady);
- }
-
- aVisualization = new (ELeave) TInt8[iVisualizationSize];
-
- for (TInt a = 0 ; a < iVisualizationSize ; a++)
- {
- aVisualization[a] = iVisualization[a];
- }
- aSize = iVisualizationSize;
-
- delete[] iVisualization;
- iVisualization = 0;
-
- }
-
-
-void CProcVisProcessor::ConstructL()
- {
-
- }
-
-CProcVisProcessor::CProcVisProcessor()
- {
-
- }
-