diff -r 951a5db380a0 -r d87d32eab1a9 videoeditorengine/vedengine/videoprocessor/src/audioprocessor.cpp --- a/videoeditorengine/vedengine/videoprocessor/src/audioprocessor.cpp Fri Jan 29 14:08:33 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,291 +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: -* Implementation of audio processor class. -* -*/ - - -// Include Files -#include "movieprocessorimpl.h" -#include "AudSong.h" -#include "audioprocessor.h" - -#ifdef _DEBUG -#include -#define PRINT(x) RDebug::Print x; -#else -#define PRINT(x) -#endif - -// Macros -#define APASSERT(x) __ASSERT_DEBUG(x, User::Panic(_L("CAudioProcessor"), -30000)) - -const TUint KNumFramesInOneRun = 20; - - -// ================= MEMBER FUNCTIONS ======================= - - -// --------------------------------------------------------- -// CAudioProcessor::NewL -// Two-phased constructor. -// --------------------------------------------------------- -// -CAudioProcessor* CAudioProcessor::NewL(CMovieProcessorImpl *aMovieProcessor, CAudSong* aSong) -{ - CAudioProcessor* self = NewLC(aMovieProcessor, aSong); - CleanupStack::Pop(self); - return self; -} - -CAudioProcessor* CAudioProcessor::NewLC(CMovieProcessorImpl *aMovieProcessor, CAudSong* aSong) -{ - CAudioProcessor* self = new (ELeave) CAudioProcessor(aMovieProcessor, aSong); - CleanupStack::PushL(self); - self->ConstructL(); - return self; -} - - -// --------------------------------------------------------- -// CAudioProcessor::NewL -// C++ default constructor -// --------------------------------------------------------- -// -CAudioProcessor::CAudioProcessor(CMovieProcessorImpl *aMovieProcessor, CAudSong* aSong) : CActive(EPriorityNormal) -{ - iMovieProcessor = aMovieProcessor; - iSong = aSong; - iProcessing = EFalse; -} - -// ----------------------------------------------------------------------------- -// CAudioProcessor::ConstructL -// Symbian 2nd phase constructor -// ----------------------------------------------------------------------------- -// -void CAudioProcessor::ConstructL() -{ - - if(!iSong) - { - User::Leave(KErrArgument); - } - - SetPriority( EPriorityNormal ); - // Add to active scheduler - CActiveScheduler::Add(this); - - // Make us active - SetActive(); - iStatus = KRequestPending; - -} - -// ----------------------------------------------------------------------------- -// CAudioProcessor::~CAudioProcessor -// Destructor -// ----------------------------------------------------------------------------- -// -CAudioProcessor::~CAudioProcessor() -{ - PRINT((_L("CAudioProcessor::~CAudioProcessor() begin"))); - - Cancel(); - - PRINT((_L("CAudioProcessor::~CAudioProcessor() end"))); -} - - -// ----------------------------------------------------------------------------- -// CAudioProcessor::DoCancel() -// DoCancel for AO framework -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAudioProcessor::DoCancel() -{ - // Cancel our internal request - if ( iStatus == KRequestPending ) - { - PRINT((_L("CAudioProcessor::DoCancel() cancel request"))) - TRequestStatus *status = &iStatus; - User::RequestComplete(status, KErrCancel); - } -} - -// ----------------------------------------------------------------------------- -// CAudioProcessor::RunL() -// Running method of AO framework -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAudioProcessor::RunL() -{ - - if (!iProcessing) - return; - - ProcessFramesL(); - -} - - -// ----------------------------------------------------------------------------- -// CAudioProcessor::ProcessFramesL() -// Process audio frames -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAudioProcessor::ProcessFramesL() -{ - - TInt progress = 0; - HBufC8* frame = 0; - TPtr8 ptr(0,0); - TTimeIntervalMicroSeconds time(0); - - TBool gotFrame = ETrue; // true indicates end of sequence - - TInt framesProcessed = 0; - - do - { - gotFrame = iSong->SyncProcessFrameL(frame,progress,time); - - if(gotFrame) - { - break; - } - - if (frame == NULL || frame->Size() == 0) - { - continue; - } - - CleanupStack::PushL(frame); - - TInt duration = I64INT(time.Int64()); - - ptr.Set((TUint8*)frame->Ptr(),frame->Length(),frame->Length()); - - User::LeaveIfError(iMovieProcessor->WriteAllAudioFrames((TDesC8&)ptr,duration)); - - CleanupStack::Pop(); - - if(frame != 0) - { - delete frame; - frame = 0; - } - - // Increment the frame number - framesProcessed++; - - if (framesProcessed >= KNumFramesInOneRun) - { - iStatus = KRequestPending; - SetActive(); - TRequestStatus *tmp = &iStatus; - User::RequestComplete( tmp, KErrNone ); - return; - } - - } while(!gotFrame); - - if(frame!=0) - { - delete frame; - frame = 0; - } - - // finished - iProcessing = EFalse; - - iMovieProcessor->AudioProcessingComplete(KErrNone); - -} - -// ----------------------------------------------------------------------------- -// CAudioProcessor::RunError() -// RunError method of AO framework -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -TInt CAudioProcessor::RunError(TInt aError) -{ - iProcessing = EFalse; - - iMovieProcessor->AudioProcessingComplete(aError); - - return KErrNone; -} - -// ----------------------------------------------------------------------------- -// CAudioProcessor::StartL() -// Stops audio processing -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAudioProcessor::StartL() -{ - PRINT((_L("CAudioProcessor::StartL() begin"))); - - if ( iProcessing ) - return; - - if (iSong->ClipCount(KAllTrackIndices) == 0) - { - iMovieProcessor->AudioProcessingComplete(KErrNone); - return; - } - - iSong->SyncStartProcessingL(); - - TRequestStatus *status = &iStatus; - User::RequestComplete(status, KErrNone); - - iProcessing = ETrue; - - PRINT((_L("CAudioProcessor::StartL() end"))); -} - -// ----------------------------------------------------------------------------- -// CAudioProcessor::StopL() -// Stops audio processing -// (other items were commented in a header). -// ----------------------------------------------------------------------------- -// -void CAudioProcessor::StopL() -{ - PRINT((_L("CAudioProcessor::StopL() begin"))); - - if ( !iProcessing ) - return; - - Cancel(); - - iSong->SyncCancelProcess(); - - iMovieProcessor->AudioProcessingComplete(KErrNone); - - iProcessing = EFalse; - - PRINT((_L("CAudioProcessor::StopL() end"))); -} - -// End of file -