videoeditorengine/vedengine/inc/VedVideoClipInfoGeneratedImp.h
changeset 0 951a5db380a0
--- /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__
+