diff -r 000000000000 -r 951a5db380a0 videoeditorengine/vedengine/src/VedVideoClipInfoGeneratedImp.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoeditorengine/vedengine/src/VedVideoClipInfoGeneratedImp.cpp Fri Jan 29 14:08:33 2010 +0200 @@ -0,0 +1,384 @@ +/* +* 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 "VedVideoClipInfoGeneratedImp.h" +#include "VedMovieImp.h" +#include "VedVideoClip.h" +#include "VedVideoClipGenerator.h" + +#include + +// Print macro +#ifdef _DEBUG +#include +#define PRINT(x) RDebug::Print x +#else +#define PRINT(x) +#endif + + +CVedVideoClipInfoGeneratedImp::CVedVideoClipInfoGeneratedImp(CVedVideoClipGenerator& aGenerator, TBool aOwnsGenerator) + : iGenerator(&aGenerator), iOwnsGenerator(aOwnsGenerator) + { + } + + +void CVedVideoClipInfoGeneratedImp::ConstructL(MVedVideoClipInfoObserver& aObserver) + { + PRINT(_L("CVedVideoClipInfoGeneratedImp::ConstructL in")); + + iInfoOperation = CVedVideoClipInfoGeneratedOperation::NewL(this, aObserver); + iAdapter = new (ELeave) CVedVideoClipGeneratedFrameToFrameAdapter(*this); + + PRINT(_L("CVedVideoClipInfoGeneratedImp::ConstructL out")); + } + + +CVedVideoClipInfoGeneratedImp::~CVedVideoClipInfoGeneratedImp() + { + PRINT(_L("CVedVideoClipInfoGeneratedImp::~CVedVideoClipInfoGeneratedImp in")); + + if ( iGenerator ) + { + if ( (TInt)iOwnsGenerator == (TInt)ETrue ) + { + delete iGenerator; + } + + iGenerator = 0; + } + + delete iInfoOperation; + delete iAdapter; + + PRINT(_L("CVedVideoClipInfoGeneratedImp::~CVedVideoClipInfoGeneratedImp out")); + } + +TPtrC CVedVideoClipInfoGeneratedImp::DescriptiveName() const + { + __ASSERT_ALWAYS(iReady, + TVedPanic::Panic(TVedPanic::EVideoClipInfoNotReady)); + return iGenerator->DescriptiveName(); + } + +CVedVideoClipGenerator* CVedVideoClipInfoGeneratedImp::Generator() const + { + __ASSERT_ALWAYS(iReady, + TVedPanic::Panic(TVedPanic::EVideoClipInfoNotReady)); + return iGenerator; + } + + +TVedVideoClipClass CVedVideoClipInfoGeneratedImp::Class() const + { + __ASSERT_ALWAYS(iReady, + TVedPanic::Panic(TVedPanic::EVideoClipInfoNotReady)); + return EVedVideoClipClassGenerated; + } + + +TInt CVedVideoClipInfoGeneratedImp::GetVideoFrameIndexL(TTimeIntervalMicroSeconds aTime) + { + __ASSERT_ALWAYS(iReady, + TVedPanic::Panic(TVedPanic::EVideoClipInfoNotReady)); + return iGenerator->GetVideoFrameIndex(aTime); + } + + +void CVedVideoClipInfoGeneratedImp::GetFrameL(MVedVideoClipFrameObserver& aObserver, + TInt aIndex, + TSize* const aResolution, + TDisplayMode aDisplayMode, + TBool aEnhance, + TInt aPriority) + { + PRINT(_L("CVedVideoClipInfoGeneratedImp::GetFrameL in")); + __ASSERT_ALWAYS(iReady, + TVedPanic::Panic(TVedPanic::EVideoClipInfoNotReady)); + iAdapter->iFrameObserver = &aObserver; + iGenerator->GetFrameL(*iAdapter, aIndex, aResolution, aDisplayMode, aEnhance, aPriority); + PRINT(_L("CVedVideoClipInfoGeneratedImp::GetFrameL out")); + } + + +void CVedVideoClipInfoGeneratedImp::CancelFrame() + { + PRINT(_L("CVedVideoClipInfoGeneratedImp::CancelFrame in")); + + __ASSERT_ALWAYS(iReady, + TVedPanic::Panic(TVedPanic::EVideoClipInfoNotReady)); + iGenerator->CancelFrame(); + PRINT(_L("CVedVideoClipInfoGeneratedImp::CancelFrame out")); + } + +TPtrC CVedVideoClipInfoGeneratedImp::FileName() const + { + // Always panic + TVedPanic::Panic(TVedPanic::EVideoClipInfoNoFileAssociated); + + // This will never be reached. + return NULL; + } + + +RFile* CVedVideoClipInfoGeneratedImp::FileHandle() const + { + // Always panic + TVedPanic::Panic(TVedPanic::EVideoClipInfoNoFileAssociated); + + // This will never be reached. + return NULL; + } + + +TVedVideoFormat CVedVideoClipInfoGeneratedImp::Format() const + { + // Always panic + TVedPanic::Panic(TVedPanic::EVideoClipInfoNoFileAssociated); + + // This will never be reached. + return EVedVideoFormatUnrecognized; + } + + +TVedVideoType CVedVideoClipInfoGeneratedImp::VideoType() const + { + // Always panic + TVedPanic::Panic(TVedPanic::EVideoClipInfoNoFileAssociated); + + // This will never be reached. + return EVedVideoTypeUnrecognized; + } + + +TSize CVedVideoClipInfoGeneratedImp::Resolution() const + { + __ASSERT_ALWAYS(iReady, + TVedPanic::Panic(TVedPanic::EVideoClipInfoNotReady)); + + return iGenerator->Movie()->Resolution(); + } + + +TBool CVedVideoClipInfoGeneratedImp::HasAudio() const + { + __ASSERT_ALWAYS(iReady, + TVedPanic::Panic(TVedPanic::EVideoClipInfoNotReady)); + + return EFalse; + } + + +TVedAudioType CVedVideoClipInfoGeneratedImp::AudioType() const + { + // Always panic + TVedPanic::Panic(TVedPanic::EVideoClipInfoNoFileAssociated); + + // This will never be reached. + return EVedAudioTypeUnrecognized; + } + +TVedAudioChannelMode CVedVideoClipInfoGeneratedImp::AudioChannelMode() const + { + // Always panic + TVedPanic::Panic(TVedPanic::EVideoClipInfoNoFileAssociated); + + // This will never be reached. + return EVedAudioChannelModeUnrecognized; + } + +TInt CVedVideoClipInfoGeneratedImp::AudioSamplingRate() const + { + // Always panic + TVedPanic::Panic(TVedPanic::EVideoClipInfoNoFileAssociated); + + // This will never be reached. + return -1; + } + + + +TTimeIntervalMicroSeconds CVedVideoClipInfoGeneratedImp::Duration() const + { + __ASSERT_ALWAYS(iReady, + TVedPanic::Panic(TVedPanic::EVideoClipInfoNotReady)); + + return iGenerator->Duration(); + } + + +TInt CVedVideoClipInfoGeneratedImp::VideoFrameCount() const + { + __ASSERT_ALWAYS(iReady, + TVedPanic::Panic(TVedPanic::EVideoClipInfoNotReady)); + + return iGenerator->VideoFrameCount(); + } + + +TTimeIntervalMicroSeconds CVedVideoClipInfoGeneratedImp::VideoFrameStartTimeL(TInt aIndex) + { + __ASSERT_ALWAYS(iReady, + TVedPanic::Panic(TVedPanic::EVideoClipInfoNotReady)); + + return iGenerator->VideoFrameStartTime(aIndex); + } + + +TTimeIntervalMicroSeconds CVedVideoClipInfoGeneratedImp::VideoFrameEndTimeL(TInt aIndex) + { + __ASSERT_ALWAYS(iReady, + TVedPanic::Panic(TVedPanic::EVideoClipInfoNotReady)); + return iGenerator->VideoFrameEndTime(aIndex); + } + + +TTimeIntervalMicroSeconds CVedVideoClipInfoGeneratedImp::VideoFrameDurationL(TInt aIndex) + { + __ASSERT_ALWAYS(iReady, + TVedPanic::Panic(TVedPanic::EVideoClipInfoNotReady)); + return iGenerator->VideoFrameDuration(aIndex); + } + + +TInt CVedVideoClipInfoGeneratedImp::VideoFrameSizeL(TInt /*aIndex*/) + { + __ASSERT_ALWAYS(iReady, + TVedPanic::Panic(TVedPanic::EVideoClipInfoNotReady)); + + // always panic + TVedPanic::Panic(TVedPanic::EVideoClipInfoNoFileAssociated); + + // will never be reached + return 0; + } + + +TBool CVedVideoClipInfoGeneratedImp::VideoFrameIsIntraL(TInt aIndex) + { + __ASSERT_ALWAYS(iReady, + TVedPanic::Panic(TVedPanic::EVideoClipInfoNotReady)); + + if (aIndex == 0) + { + return ETrue; + } + return EFalse; + } + + +void CVedVideoClipInfoGeneratedImp::SetTranscodeFactor(TVedTranscodeFactor aFactor) + { + iTFactor.iStreamType =aFactor.iStreamType; + iTFactor.iTRes = aFactor.iTRes; + } + +TVedTranscodeFactor CVedVideoClipInfoGeneratedImp::TranscodeFactor() + { + return iTFactor; + } + + +TBool CVedVideoClipInfoGeneratedImp::IsMMSCompatible() + { + // Always panic + TVedPanic::Panic(TVedPanic::EVideoClipInfoNoFileAssociated); + + // This will never be reached. + return ETrue;; + } + + +CVedVideoClipInfoGeneratedOperation* CVedVideoClipInfoGeneratedOperation::NewL(CVedVideoClipInfoGeneratedImp* aInfo, + MVedVideoClipInfoObserver& aObserver) + { + PRINT(_L("CVedVideoClipInfoGeneratedOperation::NewL in")); + + CVedVideoClipInfoGeneratedOperation* self = + new (ELeave) CVedVideoClipInfoGeneratedOperation(aInfo, aObserver); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + + PRINT(_L("CVedVideoClipInfoGeneratedOperation::NewL out")); + return self; + } + + +CVedVideoClipInfoGeneratedOperation::CVedVideoClipInfoGeneratedOperation(CVedVideoClipInfoGeneratedImp* aInfo, + MVedVideoClipInfoObserver& aObserver) + : CActive(EPriorityStandard), iInfo(aInfo) + { + PRINT(_L("CVedVideoClipInfoGeneratedOperation::CVedVideoClipInfoGeneratedOperation in")); + + iObserver = &aObserver; + CActiveScheduler::Add(this); + + PRINT(_L("CVedVideoClipInfoGeneratedOperation::CVedVideoClipInfoGeneratedOperation out")); + } + + +void CVedVideoClipInfoGeneratedOperation::ConstructL() + { + PRINT(_L("CVedVideoClipInfoGeneratedOperation::ConstructL in")); + + SetActive(); + TRequestStatus* status = &iStatus; + User::RequestComplete(status, KErrNone); + + PRINT(_L("CVedVideoClipInfoGeneratedOperation::ConstructL out")); + } + + +CVedVideoClipInfoGeneratedOperation::~CVedVideoClipInfoGeneratedOperation() + { + Cancel(); + } + + +void CVedVideoClipInfoGeneratedOperation::RunL() + { + PRINT(_L("CVedVideoClipInfoGeneratedOperation::RunL in")); + + iInfo->iReady = ETrue; + + iObserver->NotifyVideoClipInfoReady(*iInfo, KErrNone); + + PRINT(_L("CVedVideoClipInfoGeneratedOperation::RunL out")); + } + + +void CVedVideoClipInfoGeneratedOperation::DoCancel() + { + } + + + +CVedVideoClipGeneratedFrameToFrameAdapter::CVedVideoClipGeneratedFrameToFrameAdapter(CVedVideoClipInfo& aInfo) +: iInfo(aInfo) + { + } + +void CVedVideoClipGeneratedFrameToFrameAdapter::NotifyVideoClipGeneratorFrameCompleted( + CVedVideoClipGenerator& /*aInfo*/, TInt aError, CFbsBitmap* aFrame) + { + iFrameObserver->NotifyVideoClipFrameCompleted(iInfo, aError, aFrame); + }