diff -r 951a5db380a0 -r d87d32eab1a9 videoeditorengine/audioeditorengine/src/ProcVisualizationAO.cpp --- a/videoeditorengine/audioeditorengine/src/ProcVisualizationAO.cpp Fri Jan 29 14:08:33 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,203 +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 "ProcVisualizationAO.h" -#include "ProcVisProcessor.h" -#include "AudPanic.h" - - -void CProcVisualizationAO::RunL() - { - __ASSERT_DEBUG(iProcVisProcessor != 0, TAudPanic::Panic(TAudPanic::EInternal)); - __ASSERT_DEBUG(iObserver != 0, TAudPanic::Panic(TAudPanic::EInternal)); - - if(iVisualizationState == EProcVisualizationIdle) - { - TAudPanic::Panic(TAudPanic::EInternal); - } - - else if (iVisualizationState == EProcGettingClipVisualization) - { - - TBool completed = EFalse; - TInt progress = 0; - TRAPD(err, completed = iProcVisProcessor->VisualizeClipPieceL(progress)); - - if (err != KErrNone) - { - delete iProcVisProcessor; - iProcVisProcessor = 0; - - MAudVisualizationObserver* observer = iObserver; - iObserver = 0; - iSize = 0; - iVisualizationState = EProcVisualizationIdle; - observer->NotifyClipInfoVisualizationCompleted(*iClipInfo, err, NULL, 0); - } - else if (completed) - { - TInt8* visualization = 0; - TInt size = 0; - TRAPD(err2, iProcVisProcessor->GetFinalVisualizationL(visualization, size)); - - if (err2 != KErrNone) - { - MAudVisualizationObserver* observer = iObserver; - iObserver = 0; - - if (visualization != 0) delete[] visualization; - delete iProcVisProcessor; - iProcVisProcessor = 0; - iVisualizationState = EProcVisualizationIdle; - - observer->NotifyClipInfoVisualizationCompleted(*iClipInfo, err2, 0, 0); - return; - } - - delete iProcVisProcessor; - iProcVisProcessor = 0; - - MAudVisualizationObserver* observer = iObserver; - iObserver = 0; - iSize = 0; - iVisualizationState = EProcVisualizationIdle; - - // NOTE: the upper level application is responsible for releasing "visualization" - observer->NotifyClipInfoVisualizationCompleted(*iClipInfo, KErrNone, visualization, size); - } - else - { - - // progress is sent every 1 percent - if (iPreviousProgressValue < progress) - { - iObserver->NotifyClipInfoVisualizationProgressed(*iClipInfo, progress); - iPreviousProgressValue = progress; - } - - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete(status, KErrNone); - } - - } - } - -void CProcVisualizationAO::DoCancel() - { - - // ref to observer should be reset before callback to avoid recursion - MAudVisualizationObserver* observer = iObserver; - iObserver = 0; - // ref to clipInfo is good to reset before callback - const CAudClipInfo* clipInfo = iClipInfo; - iClipInfo = 0; - // processor not needed and should not exist any more; a new processor will be created for next visualization - delete iProcVisProcessor; - iProcVisProcessor = 0; - - if ((observer != 0) && (iVisualizationState == EProcGettingClipVisualization)) - { - // reset state - iVisualizationState = EProcVisualizationIdle; - - // note! this callback at least at the time of writing deletes this object => no operations should be done after this call - observer->NotifyClipInfoVisualizationCompleted(*clipInfo, KErrCancel, 0, 0); - } - } - -CProcVisualizationAO* CProcVisualizationAO::NewL() - { - CProcVisualizationAO* self = new (ELeave) CProcVisualizationAO(); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -CProcVisualizationAO::~CProcVisualizationAO() - { - // cancel the active object; it also deletes or resets member variables - Cancel(); - } - - -void CProcVisualizationAO::ConstructL() - { - // nothing to do; iProcVisProcessor will be created when started - } - -CProcVisualizationAO::CProcVisualizationAO() : - CActive(0), - iVisualizationState(EProcVisualizationIdle) - { - - CActiveScheduler::Add(this); - - } - -void CProcVisualizationAO::StartClipVisualizationL(const CAudClipInfo* aClipInfo, TInt aSize, - MAudVisualizationObserver& aObserver, - TInt aPriority) - { - - if (iVisualizationState != EProcVisualizationIdle || iClipInfo != 0) - { - TAudPanic::Panic(TAudPanic::EVisualizationProcessAlreadyRunning); - } - - iSize = aSize; - iClipInfo = aClipInfo; - iProcVisProcessor = CProcVisProcessor::NewL(); - - iPreviousProgressValue = 0; - - - TRAPD(err, iProcVisProcessor->VisualizeClipL(aClipInfo, aSize)); - - if (err != KErrNone) - { - delete iProcVisProcessor; - iProcVisProcessor = 0; - aObserver.NotifyClipInfoVisualizationCompleted(*aClipInfo, err, 0, 0); - User::Leave(err); - } - - aObserver.NotifyClipInfoVisualizationStarted(*aClipInfo, KErrNone); - - iObserver = &aObserver; - - SetPriority(aPriority); - SetActive(); - TRequestStatus* status = &iStatus; - User::RequestComplete(status, KErrNone); - - iVisualizationState = EProcGettingClipVisualization; - - } - - - - -void CProcVisualizationAO::CancelVisualization() - { - Cancel(); - } -