diff -r 000000000000 -r 951a5db380a0 videoeditor_plat/video_editor_engine_api/inc/VedCommon.h --- /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 + + +/** + * 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__ +