--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/videoeditorengine/vedengine/inc/VedVideoClipInfoGeneratedImp.h Fri Jan 29 14:08:33 2010 +0200
@@ -0,0 +1,193 @@
+/*
+* 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:
+*
+*/
+
+
+/* Copyright (c) 2004, Nokia. All rights reserved. */
+
+#ifndef __VEDVIDEOCLIPINFOGENERATEDIMP_H__
+#define __VEDVIDEOCLIPINFOGENERATEDIMP_H__
+
+
+#include <e32base.h>
+
+#include "VedCommon.h"
+#include "VedVideoClipInfo.h"
+#include "VedVideoClipGenerator.h"
+
+/*
+ * Forward declarations.
+ */
+class CVedVideoClipInfoGeneratedOperation;
+class CVedVideoClipGeneratedFrameToFrameAdapter;
+
+/**
+ * Utility class for getting information about generated video clips.
+ */
+class CVedVideoClipInfoGeneratedImp : public CVedVideoClipInfo
+ {
+public:
+ CVedVideoClipInfoGeneratedImp(CVedVideoClipGenerator& aGenerator, TBool aOwnsGenerator);
+
+ void ConstructL(MVedVideoClipInfoObserver& aObserver);
+
+ /**
+ * Destroys the object and releases all resources.
+ */
+ ~CVedVideoClipInfoGeneratedImp();
+
+
+ /* General property methods. */
+
+ TPtrC DescriptiveName() const;
+
+ TPtrC FileName() const;
+
+ RFile* FileHandle() const;
+
+ CVedVideoClipGenerator* Generator() const;
+
+ TVedVideoClipClass Class() const;
+
+ TVedVideoFormat Format() const;
+
+ TVedVideoType VideoType() const;
+
+ TSize Resolution() const;
+
+ TBool HasAudio() const;
+
+ TVedAudioType AudioType() const;
+
+ TVedAudioChannelMode AudioChannelMode() const;
+
+ TInt AudioSamplingRate() const;
+
+ TTimeIntervalMicroSeconds Duration() const;
+
+
+ /* Video frame property methods. */
+
+ TInt VideoFrameCount() const;
+
+ TTimeIntervalMicroSeconds VideoFrameStartTimeL(TInt aIndex);
+
+ TTimeIntervalMicroSeconds VideoFrameEndTimeL(TInt aIndex);
+
+ TTimeIntervalMicroSeconds VideoFrameDurationL(TInt aIndex);
+
+ TInt VideoFrameSizeL(TInt aIndex);
+
+ TBool VideoFrameIsIntraL(TInt aIndex);
+
+ TInt GetVideoFrameIndexL(TTimeIntervalMicroSeconds aTime);
+
+
+ void SetTranscodeFactor(TVedTranscodeFactor aFactor);
+
+ TVedTranscodeFactor TranscodeFactor();
+
+ TBool IsMMSCompatible();
+
+ /* Frame methods. */
+
+ void GetFrameL(MVedVideoClipFrameObserver& aObserver,
+ TInt aIndex,
+ TSize* const aResolution,
+ TDisplayMode aDisplayMode,
+ TBool aEnhance,
+ TInt aPriority);
+
+ void CancelFrame();
+
+private:
+ // Member variables
+
+ // Get audio info operation.
+ CVedVideoClipInfoGeneratedOperation* iInfoOperation;
+ // Flag to indicate then info is available
+ TBool iReady;
+ // Frame generator
+ CVedVideoClipGenerator* iGenerator;
+ TBool iOwnsGenerator;
+
+ CVedVideoClipGeneratedFrameToFrameAdapter* iAdapter;
+
+ TVedTranscodeFactor iTFactor;
+ friend class CVedVideoClipInfoGeneratedOperation;
+ };
+
+
+
+class CVedVideoClipGeneratedFrameToFrameAdapter : public CBase, public MVedVideoClipGeneratorFrameObserver
+ {
+public:
+ CVedVideoClipGeneratedFrameToFrameAdapter(CVedVideoClipInfo& aInfo);
+ void NotifyVideoClipGeneratorFrameCompleted(CVedVideoClipGenerator& aInfo,
+ TInt aError,
+ CFbsBitmap* aFrame);
+private:
+ MVedVideoClipFrameObserver* iFrameObserver;
+ CVedVideoClipInfo& iInfo;
+
+ friend class CVedVideoClipInfoGeneratedImp;
+ };
+
+
+/**
+ * Internal class for asynchronous construction of info class.
+ */
+class CVedVideoClipInfoGeneratedOperation : public CActive
+ {
+public:
+ /* Static constructor */
+ static CVedVideoClipInfoGeneratedOperation* NewL(CVedVideoClipInfoGeneratedImp* aInfo,
+ MVedVideoClipInfoObserver& aObserver);
+protected:
+ /*
+ * From CActive
+ * Standard active object RunL
+ */
+ void RunL();
+
+ /*
+ * From CActive
+ * Standard active object DoCancel
+ */
+ void DoCancel();
+
+private:
+ /* Default constructor */
+ CVedVideoClipInfoGeneratedOperation(CVedVideoClipInfoGeneratedImp* aInfo,
+ MVedVideoClipInfoObserver& aObserver);
+ /* Standard Symbian OS two phased constructor */
+ void ConstructL();
+ /* Destructor */
+ ~CVedVideoClipInfoGeneratedOperation();
+
+private:
+ // Class to contain video clip info.
+ CVedVideoClipInfoGeneratedImp* iInfo;
+ // Observer of video clip info operation.
+ MVedVideoClipInfoObserver* iObserver;
+
+ friend class CVedVideoClipInfoGeneratedImp;
+ };
+
+
+#endif // __VEDVIDEOCLIPINFOGENERATEDIMP_H__
+