videoeditor_plat/video_editor_engine_api/inc/VedCommon.h
changeset 0 951a5db380a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoeditor_plat/video_editor_engine_api/inc/VedCommon.h	Fri Jan 29 14:08:33 2010 +0200
@@ -0,0 +1,349 @@
+/*
+* 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 __VEDCOMMON_H__
+#define __VEDCOMMON_H__
+
+#include <e32std.h>
+
+
+/**
+ * Constants for video clip speed settings. The speed is given by % x10, i.e. 1000 means 100 %.
+ */
+const TInt KVedNormalSpeed(1000);
+const TInt KVedMaxSpeed(1000);
+const TInt KVedMinSpeed(1);
+
+
+/**
+ * Enumeration for video clip classes.
+ */
+enum TVedVideoClipClass
+    {
+    EVedVideoClipClassFile = 15001,
+    EVedVideoClipClassGenerated
+    };
+
+
+/**
+ * Enumeration for bitrate modes.
+ */
+enum TVedBitrateMode
+	{
+	EVedBitrateModeUnrecognized = 18001,
+	EVedBitrateModeConstant,
+	EVedBitrateModeVariable,
+	EVedBitrateModeLast  // should always be the last one
+	};
+
+/**
+ * Enumeration for video bitstream modes.
+ */
+enum TVedVideoBitstreamMode
+    {
+    EVedVideoBitstreamModeUnknown = 0,          /* unrecognized mode; outside of H.263 Profile 0 Level 10, or MPEG-4 Visual Simple Profile */
+    EVedVideoBitstreamModeH263,                 /* H.263 Simple Profile (Profile 0, Level 10) */                                    
+    EVedVideoBitstreamModeMPEG4ShortHeader,     /* MPEG-4 Visual Simple Profile - Short Header */
+    EVedVideoBitstreamModeMPEG4Regular,         /* MPEG-4 Visual Simple Profile - Regular */
+    EVedVideoBitstreamModeMPEG4Resyn,           /* MPEG-4 Visual Simple Profile - Regular with Resynchronization Markers */
+    EVedVideoBitstreamModeMPEG4DP,              /* MPEG-4 Visual Simple Profile - Data Partitioned */
+    EVedVideoBitstreamModeMPEG4DP_RVLC,         /* MPEG-4 Visual Simple Profile - Data Partitioned with Reversible VLCs */
+    EVedVideoBitstreamModeMPEG4Resyn_DP,        /* MPEG-4 Visual Simple Profile - Data Partitioned with Resynchronization Markers */
+    EVedVideoBitstreamModeMPEG4Resyn_DP_RVLC,   /* MPEG-4 Visual Simple Profile - Data Partitioned with Reversible VLCs & Resynchronization Markers */
+    EVedVideoBitstreamModeAVC
+    };
+
+
+
+/* Video format of bitstream - used everywhere */
+enum TVedVideoType
+    {
+    EVedVideoTypeUnrecognized = 13001,  /* should always be the first one */
+    EVedVideoTypeNoVideo,               /* video is not present */
+    EVedVideoTypeH263Profile0Level10,   /* H.263 Simple Profile (Profile 0, Level 10) */
+    EVedVideoTypeH263Profile0Level45,   /* H.263 Simple Profile (Profile 0, Level 45) */
+    EVedVideoTypeMPEG4SimpleProfile,    /* MPEG-4 Visual Simple Profile (any mode) */
+    EVedVideoTypeAVCBaselineProfile,    /* AVC Baseline Profile */
+    EVedVideoTypeLast                   /* should always be the last one */
+    };
+	
+/**
+ * Enumeration for video formats.
+ */
+enum TVedVideoFormat
+    {
+    EVedVideoFormatUnrecognized = 11001,  // should always be the first one
+    EVedVideoFormat3GPP,
+    EVedVideoFormatMP4,
+    EVedVideoFormatLast  // should always be the last one
+    };
+
+/**
+ * Enumeration for audio formats.
+ */
+enum TVedAudioFormat
+	{
+	EVedAudioFormatUnrecognized = 16001,  // should always be the first one
+	EVedAudioFormat3GPP,
+	EVedAudioFormatMP4,
+	EVedAudioFormatAMR,
+	EVedAudioFormatAMRWB,
+	EVedAudioFormatMP3,
+	EVedAudioFormatAAC_ADIF,
+	EVedAudioFormatAAC_ADTS,
+	EVedAudioFormatWAV,
+	EVedAudioFormatLast  // should always be the last one
+	};
+
+
+/**
+ * Enumeration for audio types (that is, codecs).
+ */
+enum TVedAudioType
+    {
+    EVedAudioTypeUnrecognized = 14001,  // should always be the first one
+    EVedAudioTypeNoAudio,
+    EVedAudioTypeAMR,
+    EVedAudioTypeAMRWB,
+    EVedAudioTypeMP3,
+    EVedAudioTypeAAC_LC,
+    EVedAudioTypeAAC_LTP,
+    EVedAudioTypeWAV,
+    EVedAudioTypeLast  // should always be the last one
+    };
+
+/**
+ * Enumeration for audio channel modes.
+ */
+enum TVedAudioChannelMode
+    {
+    EVedAudioChannelModeUnrecognized = 17001,
+    EVedAudioChannelModeStereo,
+    EVedAudioChannelModeDualChannel,
+    EVedAudioChannelModeSingleChannel
+    };
+
+/**
+ * Output parameter class
+ */ 
+
+class TVedOutputParameters
+    {
+    public:
+        // default constructor; initializes optional parameters to values which mean that editor can decide the value
+        inline TVedOutputParameters() 
+        : iVideoType(EVedVideoTypeH263Profile0Level10), iVideoResolution(TSize(0,0)), iVideoBitrate(0), iVideoFrameRate(0), 
+        iAudioType(EVedAudioTypeAMR), iAudioBitrate(0), iAudioChannelMode(EVedAudioChannelModeSingleChannel), iAudioSamplingRate(0), 
+        iSyncIntervalInPicture(0), iSegmentSizeInBytes(0)
+            {}
+            
+    public:
+
+        // video codec
+        TVedVideoType iVideoType;
+        // target resolution, 0 = no preference (use from input)
+        TSize iVideoResolution;
+        // target video bitrate, 0 = no preference
+        TInt iVideoBitrate;
+        // target video framerate, 0 = no preference
+        TReal iVideoFrameRate;
+
+        // audio codec
+        TVedAudioType iAudioType;
+        // target audio bitrate, 0 = no preference
+        TInt iAudioBitrate;
+        // audio channel mode
+        TVedAudioChannelMode iAudioChannelMode;
+        // audio sampling rate, 0 = no preference
+        TInt iAudioSamplingRate;
+        
+        // Segment interval in picture. In H.263 baseline this means number of non-empty GOB headers (1=every GOB has a header), 
+        // Default is 0 == no segments inside picture
+        // Coding standard & used profile etc. limit the value.
+        TInt iSyncIntervalInPicture;
+        
+        // Target size of each coded video segment. Valid for H.264 and MPEG-4
+        // Default is 0 == no segments inside picture
+        TInt iSegmentSizeInBytes;
+        
+    };
+
+
+/**
+ * Enumeration for start transition effects.
+ */
+enum TVedStartTransitionEffect
+    {
+    EVedStartTransitionEffectNone = 21001,  // should always be the first one
+    EVedStartTransitionEffectFadeFromBlack,
+    EVedStartTransitionEffectFadeFromWhite,
+    EVedStartTransitionEffectLast  // should always be the last one
+    };
+
+
+/**
+ * Enumeration for middle transition effects.
+ */
+enum TVedMiddleTransitionEffect
+    {
+    EVedMiddleTransitionEffectNone = 22001,  // should always be the first one
+    EVedMiddleTransitionEffectDipToBlack,
+    EVedMiddleTransitionEffectDipToWhite,
+    EVedMiddleTransitionEffectCrossfade,
+    EVedMiddleTransitionEffectWipeLeftToRight,
+    EVedMiddleTransitionEffectWipeRightToLeft,
+    EVedMiddleTransitionEffectWipeTopToBottom,
+    EVedMiddleTransitionEffectWipeBottomToTop,
+    EVedMiddleTransitionEffectLast           // should always be the last one
+    };
+
+    
+/**
+ * Enumeration for end transition effects.
+ */
+enum TVedEndTransitionEffect
+    {
+    EVedEndTransitionEffectNone = 23001,  // should always be the first one
+    EVedEndTransitionEffectFadeToBlack,
+    EVedEndTransitionEffectFadeToWhite,
+    EVedEndTransitionEffectLast  // should always be the last one
+    };
+
+    
+/**
+ * Enumeration for color effects.
+ */
+enum TVedColorEffect
+    {
+    EVedColorEffectNone = 31001,  // should always be the first one
+    EVedColorEffectBlackAndWhite,
+    EVedColorEffectToning,
+    EVedColorEffectLast  // should always be the last one
+    };
+
+
+/**
+ * Class for storing dynamic level marks.
+ */
+class TVedDynamicLevelMark 
+    {
+public:
+    /** Mark time. */
+    TTimeIntervalMicroSeconds iTime;
+
+    /** 
+     * Dynamic level (-63.5 - +12.7) in dB:s; one step represents +0.1 or -0.5 dB => values are -127...+127
+     */
+    TInt8 iLevel;
+
+    /**
+     * Constructs a new dynamic level mark.
+     * 
+     * @param aTime   time for the mark
+     * @param aLevel  dynamic level (-63.5 ... +12.7) in dB:s one step = +0.1 or -0.5 dB => values can be -127...+127
+     */
+    inline TVedDynamicLevelMark(TTimeIntervalMicroSeconds aTime, TInt aLevel);
+
+    /**
+     * Constructs a new dynamic level mark from existing instance.
+     * 
+     * @param aMark  dynamic level mark to copy
+     */
+    inline TVedDynamicLevelMark(const TVedDynamicLevelMark& aMark);
+    };	
+
+
+/**
+ * Transcode factor.
+ */
+struct TVedTranscodeFactor
+    {
+    TInt iTRes;
+    TVedVideoBitstreamMode iStreamType;
+    };
+
+
+/**
+ * Enumerates video editor engine panic codes and 
+ * provides a static Panic() function.
+ *
+ */
+class TVedPanic
+    {
+public:
+    enum TVedPanicCodes 
+        {
+        EInternal = 1,  // internal error (that is, a  in the video editor engine)
+        EDeprecated,    // deprecated class or method
+        EVideoClipInfoNotReady,
+        EVideoClipInfoIllegalVideoFrameIndex,
+        EVideoClipInfoIllegalVideoFrameTime,
+        EVideoClipInfoFrameOperationAlreadyRunning,
+        EVideoClipInfoIllegalFrameResolution,
+        EVideoClipInfoNoFileAssociated,
+        EVideoClipInfoNoGeneratorAssociated,
+        EAudioClipInfoNotReady,  //10
+        EMovieEmpty,
+        EMovieAddOperationAlreadyRunning,
+        EMovieIllegalStartTransitionEffect,
+        EMovieIllegalMiddleTransitionEffect,
+        EMovieIllegalEndTransitionEffect,
+        EMovieProcessingOperationAlreadyRunning,
+        EMovieObserverAlreadyRegistered,
+        EMovieObserverNotRegistered,
+        EMovieIllegalQuality,
+        EVideoClipIllegalIndex, //20
+        EVideoClipIllegalSpeed, 
+        EVideoClipIllegalColorEffect,
+        EVideoClipIllegalCutInTime,
+        EVideoClipIllegalCutOutTime,
+        EVideoClipNoFileAssociated,
+        EAudioClipIllegalStartTime,
+        EAudioClipIllegalCutInTime,
+        EAudioClipIllegalCutOutTime,
+        EVideoClipGeneratorNotInserted,
+        EVideoClipGeneratorNotReady,//30
+        EVideoClipGeneratorAlreadyInserted,
+        EVideoClipGeneratorIllegalVideoFrameIndex,
+        EVideoClipGeneratorIllegalDuration,
+        EVideoClipGeneratorIllegalFrameResolution,
+        EVideoClipGeneratorIllegalVideoFrameTime,
+        EImageClipGeneratorIllegalMaxResolution,
+        EImageClipGeneratorNotReady,
+        EImageClipGeneratorFrameOperationAlreadyRunning,
+        ETitleClipGeneratorIllegalMaxResolution,
+        ETitleClipGeneratorIllegalMaxFramerate,//40
+        ETitleClipGeneratorFrameOperationAlreadyRunning,
+        EIllegalDynamicLevelMark,
+        EIllegalDynamicLevelMarkIndex,
+        EVideoClipGeneratorNotOveray,
+        EAnimationClipGeneratorNotReady
+        };
+
+public:
+    inline static void Panic(TInt aPanic);
+    };
+
+
+#include "VedCommon.inl"
+
+#endif // __VEDCOMMON_H__
+