videoeditorengine/vedengine/inc/VedVideoClipInfoImp.h
changeset 9 d87d32eab1a9
parent 0 951a5db380a0
--- a/videoeditorengine/vedengine/inc/VedVideoClipInfoImp.h	Fri Jan 29 14:08:33 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,453 +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:  
-*
-*/
-
-
-
-#ifndef __VEDVIDEOCLIPINFOIMP_H__
-#define __VEDVIDEOCLIPINFOIMP_H__
-
-
-#include <e32base.h>
-
-#include "movieprocessor.h"
-#include "VedCommon.h"
-#include "VedVideoClipInfo.h"
-
-#include "AudObservers.h"
-
-/*
- *  Forward declarations.
- */
-class CFbsBitmap;  // cannot include bitmap.h since video processor includes
-                   // this file and fails to compile due to a strange compiler error
-                   // "operator delete must return type void" if bitmap.h
-                   // is included
-
-class CVedVideoClipInfo;
-class TVedVideoFrameInfo;
-class CVedVideoClipInfoOperation;
-class CVedVideoClipFrameOperation;
-class CAudClipInfo;
-class CVedVideoClip;
-
-
-/**
- * Utility class for getting information about video clip files.
- */
-class CVedVideoClipInfoImp : public CVedVideoClipInfo
-    {
-public:
-
-    static CVedVideoClipInfo* NewL(CAudClipInfo* aAudClipInfo,
-                                   const TDesC& aFileName, MVedVideoClipInfoObserver& aObserver);
-    /**
-     * Destroys the object and releases all resources.
-     */    
-    ~CVedVideoClipInfoImp();
-
-
-    /* General property methods. */
-
-
-    TPtrC DescriptiveName() const;
-
-    /**
-     * Returns the file name of the clip. Panics if info
-     * is not yet ready for reading.
-     * 
-     * @return  file name of the clip
-     */
-    TPtrC FileName() const;
-
-    CVedVideoClipGenerator* Generator() const;
-
-    TVedVideoClipClass Class() const;
-
-    /**
-     * Returns the video format of the clip. Panics if info
-     * is not yet ready for reading.
-     * 
-     * @return  video format of the clip
-     */
-    TVedVideoFormat Format() const;
-
-    /**
-     * Returns the video type of the clip. Panics if info
-     * is not yet ready for reading.
-     * 
-     * @return  video type of the clip
-     */
-    TVedVideoType VideoType() const;
-
-    /**
-     * Returns the resolution of the clip. Panics if info
-     * is not yet ready for reading.
-     * 
-     * @return  resolution of the clip
-     */
-    TSize Resolution() const;
-
-    /**
-     * Returns whether this video clip has an audio track or not.
-     * Panics if info is not yet ready for reading.  
-     *
-     * @return  <code>ETrue</code> if clip has an audio track;
-     *          <code>EFalse</code> otherwise
-     */
-    TBool HasAudio() const;
-
-    /**
-     * Returns the audio type of the clip audio track. Panics if info
-     * is not yet ready for reading.
-     * 
-     * @return  audio type of the clip audio track
-     */
-    TVedAudioType AudioType() const;
-
-    /**
-     * Returns the channel mode of the audio if applicable.
-     *
-     * @return  channel mode
-     */
-    TVedAudioChannelMode AudioChannelMode() const;
-
-    /**
-     * Returns the sampling rate in kilohertz.
-     *
-     * @return  sampling rate
-     */
-    TInt AudioSamplingRate() const;
-
-    /**
-     * Returns the duration of the clip in microseconds. Panics if info
-     * is not yet ready for reading.
-     * 
-     * @return  duration of the clip
-     */
-    TTimeIntervalMicroSeconds Duration() const;
-
-
-    /* Video frame property methods. */
-
-    /**
-     * Returns the number of video frames in this clip. Panics if info
-     * is not yet ready for reading.
-     * 
-     * @return  number of video frames in this clip
-     */
-    TInt VideoFrameCount() const;
-
-    /** 
-     * Generates video frame info that is needed in VideoFrame API functions.
-     * 
-     * @return  error code
-     */ 
-    TInt GenerateVideoFrameInfoArrayL();    
-
-    /** 
-     * Returns the start time of the video frame at the specified index. 
-     * Panics if info is not yet ready for reading or the index is illegal.
-     *
-     * @param aIndex  index
-     *
-     * @return  start time of the video frame at the specified index in microseconds
-     */ 
-    TTimeIntervalMicroSeconds VideoFrameStartTimeL(TInt aIndex);
-
-    /** 
-     * Returns the end time of the video frame at the specified index. 
-     * Panics if info is not yet ready for reading or the index is illegal.
-     *
-     * @param aIndex  index
-     *
-     * @return  end time of the video frame at the specified index in microseconds
-     */ 
-    TTimeIntervalMicroSeconds VideoFrameEndTimeL(TInt aIndex);
-
-    /** 
-     * Returns the duration of the video frame at the specified index. 
-     * Panics if info is not yet ready for reading or the index is illegal.
-     *
-     * @param aIndex  index
-     *
-     * @return  duration of the video frame at the specified index in microseconds
-     */ 
-    TTimeIntervalMicroSeconds VideoFrameDurationL(TInt aIndex);
-
-    /** 
-     * Returns the size of the video frame at the specified index. 
-     * Panics if info is not yet ready for reading or the index is illegal.
-     *
-     * @param aIndex  index
-     *
-     * @return  size of the video frame at the specified index in bytes
-     */ 
-    TInt VideoFrameSizeL(TInt aIndex);
-
-    /** 
-     * Returns whether the video frame at the specified index is an intra
-     * frame or not. Panics if info is not yet ready for reading or 
-     * the index is illegal.
-     *
-     * @param aIndex  index
-     *
-     * @return  <code>ETrue</code>, if the video frame at the specified index is an
-     *          intra frame; <code>EFalse</code>, otherwise
-     */ 
-    TBool VideoFrameIsIntraL(TInt aIndex);
-
-    /**
-     * Returns the video frame index at the specified time. Panics if info is not yet 
-     * ready for reading or the time is illegal.
-     *
-     * @param aTime  time
-     *
-     * @return  video frame index at the specified time
-     */
-    TInt GetVideoFrameIndexL(TTimeIntervalMicroSeconds aTime);
-
-
-    /* Frame methods. */
-
-    void GetFrameL(MVedVideoClipFrameObserver& aObserver,
-                            TInt aIndex,
-                            TSize* const aResolution,
-                            TDisplayMode aDisplayMode,
-                            TBool aEnhance,
-                            TInt aPriority);
-    
-    void CancelFrame();
-
-    void SetTranscodeFactor(TVedTranscodeFactor aFactor);
-
-    TVedTranscodeFactor TranscodeFactor();
-
-    /**
-     * Returns whether video clip is MMSCompatible.
-     *
-     * @return  ETrue if compatible with MMS
-     */
-    TBool IsMMSCompatible();
-    
-    static CVedVideoClipInfo* NewL(CAudClipInfo* aAudClipInfo,
-                                   RFile* aFileHandle, MVedVideoClipInfoObserver& aObserver);
-                                   
-    RFile* FileHandle() const;
-
-private:
-    CVedVideoClipInfoImp(CAudClipInfo* aAudClipInfo);
-
-    void ConstructL(const TDesC& aFileName,
-                    MVedVideoClipInfoObserver& aObserver);
-                    
-    void ConstructL(RFile* aFileHandle,
-                    MVedVideoClipInfoObserver& aObserver);                    
-                    
-private:
-    // Member variables
-
-    // Get audio info operation.
-    CVedVideoClipInfoOperation* iInfoOperation;
-    // Flag to indicate then info is available
-    TBool iReady;
-    
-    // Filename of the video clip.
-    HBufC* iFileName;
-    
-    // File handle of the video clip
-    RFile* iFileHandle;
-    
-    // Vídeo format.
-    TVedVideoFormat iFormat;
-    // Video type/codec.
-    TVedVideoType iVideoType;
-    // Resolution of video clip.
-    TSize iResolution;    
-    // Duration of the video clip.
-    TTimeIntervalMicroSeconds iDuration;
-    // Frame count of video
-    TInt iVideoFrameCount;
-    // Array of frame information.
-    TVedVideoFrameInfo* iVideoFrameInfoArray;
-    
-    // Operation to retrieve thumbnail of video clip.
-    CVedVideoClipFrameOperation* iFrameOperation;
-
-    // Transcode factor
-    TVedTranscodeFactor iTimeFactor;
-
-    // Is the frame info array ready
-    TBool iVideoFrameInfoArrayReady;
-    
-    // Flag for audio clip info ownership
-    TBool iAudClipInfoOwnedByVideoClipInfo;
-
-    // Whether the video clip info is part of a video clip or just the info
-    TBool iVideoClipIsStandalone;        
-    
-    // Audio clip info.
-    CAudClipInfo* iAudClipInfo;
-    
-    // These are got from iAudClipInfo
-    
-    // Audio type/codec.
-    //TVedAudioType iAudioType;
-    // Following members are only used for AAC audio
-    // Channel mode
-    //TVedAudioChannelMode iAudioChannelMode;
-    // Sampling rate
-    //TInt iAudioSamplingRate;
-
-    friend class CVedVideoClipInfoOperation;
-    friend class CVedVideoClipFrameOperation;
-    friend class CVedVideoClipInfo;
-    };
-
-
-/**
- * Internal class for storing information about video frames.
- */
-class TVedVideoFrameInfo
-    {
-public:
-    /** Frame start time in MILLISECONDS (not microseconds). */
-    TInt iStartTime;
-
-    /** Frame size in bytes. */
-    TInt iSize;
-
-    /** Frame information flags. */
-    TInt8 iFlags;
-    };
-
-#define KVedVideoFrameInfoFlagIntra (1 << 0)
-
-
-/**
- * Internal class for reading information from a video clip file.
- * Also implements a simple active object to notify the video clip info 
- * observer when reading has been completed.
- */
-class CVedVideoClipInfoOperation : public CActive, MAudClipInfoObserver
-    {
-public:
-    /* Static constructor */
-    static CVedVideoClipInfoOperation* NewL(CVedVideoClipInfoImp* aInfo,
-                                        MVedVideoClipInfoObserver& aObserver);
-protected:
-    /*
-    * From CActive
-    * Standard active object RunL 
-    */
-    void RunL();
-
-    /*
-    * From CActive
-    * Standard active object DoCancel
-    */
-    void DoCancel();
-
-private:
-    /* Default constructor */
-    CVedVideoClipInfoOperation(CVedVideoClipInfoImp* aInfo, 
-                               MVedVideoClipInfoObserver& aObserver);
-    /* Standard Symbian OS two phased constructor */
-    void ConstructL();
-    /* Destructor */
-    ~CVedVideoClipInfoOperation();
-
-private: // functions from base classes
-
-    /* From MAudClipInfoObserver */
-    void NotifyClipInfoReady(CAudClipInfo& aInfo, TInt aError);
-private:
-    // Class to contain video clip info.
-    CVedVideoClipInfoImp* iInfo;
-    // Observer of video clip info operation.
-    MVedVideoClipInfoObserver* iObserver;
-    // Error code from prosessor.
-    TInt iMovieProcessorError;
-	// This flag tells us whether we're reading the audio clip info
-    TBool iGettingAudio;
-
-    friend class CVedVideoClipInfoImp;
-    };
-
-/**
- * Internal class for generating a frame from a video clip file.
- */
-class CVedVideoClipFrameOperation : public CActive
-    {
-public:
-    /* Static constructor */
-    static CVedVideoClipFrameOperation* NewL(CVedVideoClipInfoImp* iInfo);
-
-protected:
-    /*
-    * From CActive
-    * Standard active object RunL 
-    */
-    void RunL();
-
-    /*
-    * From CActive
-    * Standard active object DoCancel
-    */
-    void DoCancel();
-
-private:
-    /* Default constructor */
-    CVedVideoClipFrameOperation(CVedVideoClipInfoImp* iInfo);
-    /* Standard Symbian OS two phased constructor */
-    void ConstructL();
-    /* Destructor */
-    ~CVedVideoClipFrameOperation();
-
-    /*
-    * Start frame operation.
-    *
-    * @aparam aObserver Observer of thumbnail operation.
-    * @aparam aIndex Index of frame that is converted to thumbnail.
-    * @aparam aResolution Wanted resolution of thumbnail.
-    * @aparam aPriority Priority of active object.
-    */
-    void StartL(MVedVideoClipFrameObserver& aObserver,
-                TInt aIndex, TSize* const aResolution, 
-                TDisplayMode aDisplayMode, TBool aEnhance, TInt aPriority);
-
-private:
-    // Pointer to info class this thumbnail operation is part of.
-    
-    CVedVideoClipInfoImp* iInfo;
-    // Index of the wanted frame.
-    TInt iIndex;
-
-    // Observer of the thumbnail operation.
-    MVedVideoClipFrameObserver* iObserver;
-
-    TVedTranscodeFactor iFactor;
-    
-    TBool iThumbRequestPending;
-
-    CMovieProcessor* iProcessor;
-
-    friend class CVedVideoClipInfoImp;
-    };
-
-#endif // __VEDVIDEOCLIPINFOIMP_H__
-