diff -r 951a5db380a0 -r d87d32eab1a9 videoeditorengine/vedengine/inc/VedVideoClip.h --- a/videoeditorengine/vedengine/inc/VedVideoClip.h Fri Jan 29 14:08:33 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,410 +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 __VEDVIDEOCLIP_H__ -#define __VEDVIDEOCLIP_H__ - - -#include -#include - -#include "VedCommon.h" -#include "VedVideoClipInfo.h" - - -/* - * Forward declarations. - */ -class CVedMovieImp; -class CAudClip; - - -/** - * Individual video clip stored as a single bitstream. - * - * @see CVedMovie - */ -class CVedVideoClip : public CBase -{ -public: - - /* Constructors. */ - - static CVedVideoClip* NewL(CVedMovieImp* aMovie, const TDesC& aFileName, - TInt aIndex, CAudClip* aAudioClip, - MVedVideoClipInfoObserver& aObserver); - - static CVedVideoClip* NewL(CVedMovieImp* aMovie, - CVedVideoClipGenerator& aGenerator, TInt aIndex, - MVedVideoClipInfoObserver& aObserver, TBool aIsOwnedByVideoClip); - - static CVedVideoClip* NewL(CVedMovieImp* aMovie, RFile* aFileHandle, - TInt aIndex, CAudClip* aAudioClip, - MVedVideoClipInfoObserver& aObserver); - - /* Destructor. */ - - /** - * Destroys the object and releases all resources. - */ - virtual ~CVedVideoClip(); - - - /* Property methods. */ - - /** - * Returns a video clip info object to get detailed information about - * the original video clip. Note that the specified editing operations - * (for example, cutting or muting audio) do not - * affect the values returned by the info object. - * - * @return pointer to a video clip info instance - */ - CVedVideoClipInfo* Info(); - - /** - * Returns whether this video clip with the specified editing operations - * applied (for example, changing speed or muting) has an audio track or not. - * - * @return ETrue if clip has an audio track; - * EFalse otherwise - */ - TBool EditedHasAudio() const; - - - /* Movie methods. */ - - /** - * Returns the movie that this video clip is part of. - * - * @return movie - */ - CVedMovieImp* Movie(); - - /** - * Returns the index of this video clip in the movie. - * - * @return index of the clip - */ - TInt Index() const; - - /** - * Sets the index of this video clip in the movie. - * Panics with code EVideoClipIllegalIndex - * if the clip index is invalid. - * - * @param aIndex new index of this clip - */ - void SetIndex(TInt aIndex); - - - /* Effect methods. */ - - /** - * Returns the playback speed of this video clip. Playback speed is - * specified as parts per thousand of the normal playback speed. For example. - * 1000 means the normal speed, 750 means 75% of the normal speed, and so on. - * - * @return playback speed - */ - TInt Speed() const; - - /** - * Sets the playback speed of this video clip. Playback speed is - * specified as parts per thousand of the normal playback speed. For example. - * 1000 means the normal speed, 750 means 75% of the normal speed, and so on. - * Panics with EVideoClipIllegalSpeed if playback speed is - * illegal. - * - * @param aSpeed playback speed; must be between 1 and 1000 - */ - void SetSpeed(TInt aSpeed); - - /** - * Returns the color effect of this video clip. - * - * @return color effect - */ - TVedColorEffect ColorEffect() const; - - /** - * Sets the color effect of this video clip. - * - * @param aColorEffect color effect - */ - void SetColorEffect(TVedColorEffect aColorEffect); - - - /** - * Returns the color tone. - * - * @return color tone - */ - TRgb ColorTone() const; - - /** - * Sets the color tone. - * - * @param aColorTone color tone - */ - void SetColorTone(TRgb aColorTone); - - /* Audio methods. */ - - /** - * Returns whether this video clip can be muted or not (that is, - * whether the mute setting has any effect). For example, if - * this video clip has no audio track, it can never have audio - * even if the mute setting is false. - * - * @return ETrue if this video clip can be muted; - * EFalse otherwise - */ - TBool IsMuteable() const; - - /** - * Returns whether the audio track of this video clip is mute or not. - * This covers all mute cases: user muted, automatically muted (slow motion), - * and missing audio track. - * - * @return ETrue if the audio track is muted; - * EFalse otherwise - */ - TBool Muting() const; - - /** - * Returns whether the audio track of this video clip is explicitly - * muted by user or not. Returns ETrue also if there is no audio track at all. - * - * @return ETrue if the audio track is muted; - * EFalse otherwise - */ - TBool IsMuted() const; - - /** - * Returns whether the audio track of this video clip is normalized or not. - * - * @return ETrue if the audio track is normalized; - * EFalse otherwise - */ - TBool Normalizing() const; - - - /** - * Sets whether the audio track of this video clip is muted or not. - * - * @param aVolume ETrue to mute the audio track; - * EFalse not to mute the audio track - */ - void SetMuted(TBool aMuted); - - /** - * Sets whether the audio track of this video clip is normalized or not. - * - * @param aNormalizing ETrue to normalize the audio track, - * EFalse not to normalize - */ - void SetNormalizing(TBool aNormalizing); - - /** - * Inserts a dynamic level mark to a clip. - * - * Possible leave codes: - * - KErrNoMemory if memory allocation fails - * - * @param aMark mark to be added - * @return index of the mark inserted - */ - TInt InsertDynamicLevelMarkL(const TVedDynamicLevelMark& aMark); - - /** - * Removes a dynamic level mark in a clip. - * - * @param aIndex index of the removed mark in this clip - * @return ETrue if mark was removed, EFalse otherwise - */ - TBool RemoveDynamicLevelMark(TInt aIndex); - - /** - * Returns a dynamic level mark at the specified index - * If the index is illegal, the method panics with the code - * EIllegalDynamicLevelMarkIndex - * - * @return A dynamic level mark - */ - TVedDynamicLevelMark DynamicLevelMark(TInt aIndex) const; - - /** - * Returns the number of dynamic level marks - * - * @return The number of dynamic level mark - */ - TInt DynamicLevelMarkCount() const; - - /** - * Sets common volume gain for the clip. It is used to store - * the gain; the actual processing will be based on dynamic level - * marks which are set based on the gain value just before processing. - * Since global gain setting may affect the dynamic level mark, - * we need different variable to store the clip-specific gain also after the processing. - * I.e. dynamic level marks do not have effect to this value. - * - * @param aVolumeGain - */ - void SetVolumeGain(TInt aVolumeGain); - - /** - * Gets common volume gain for the clip. - * Since global gain setting may affect the dynamic level mark, - * we need different variable to store the clip-specific gain also after the processing. - * - * @param aVolumeGain - */ - TInt GetVolumeGain(); - - /* Timing methods. */ - - /** - * Returns the cut in time of this video clip in clip timebase. - * - * @return cut in time in microseconds in clip timebase - */ - TTimeIntervalMicroSeconds CutInTime() const; - - /** - * Sets the cut in time of this video clip in clip timebase. - * Panics with EVideoClipIllegalCutInTime if - * cut in time is illegal. - * - * @param aCutInTime cut in time in microseconds in clip timebase - */ - void SetCutInTime(TTimeIntervalMicroSeconds aCutInTime); - - /** - * Returns the cut out time of this video clip in clip timebase. - * - * @return cut out time in microseconds in clip timebase - */ - TTimeIntervalMicroSeconds CutOutTime() const; - - /** - * Sets the cut out time of this video clip in clip timebase. - * Panics with EVideoClipIllegalCutOutTime if - * cut out time is illegal. - * - * @param aCutOutTime cut out time in microseconds in clip timebase - */ - void SetCutOutTime(TTimeIntervalMicroSeconds aCutOutTime); - - /** - * Returns the start time of this video clip in movie timebase. - * - * @return start time in microseconds in movie timebase - */ - TTimeIntervalMicroSeconds StartTime() const; - - /** - * Returns the end time of this video clip in movie timebase. - * - * @return end time in microseconds in movie timebase - */ - TTimeIntervalMicroSeconds EndTime() const; - - /** - * Returns the duration of this video clip with the specified - * editing operations applied (for example, cutting - * and changing speed) - * - * @return duration in microseconds - */ - TTimeIntervalMicroSeconds EditedDuration() const; - - /** - * Update the audio clip timings. - */ - void UpdateAudioClip(); - -protected: - - -private: - /* - * Default contructor - */ - CVedVideoClip(CVedMovieImp* aMovie, CAudClip* aAudioClip); - - /* - * Symbian OS two phased constructor. - */ - void ConstructL(const TDesC& aFileName, TInt aIndex, - MVedVideoClipInfoObserver& aObserver); - - void ConstructL(CVedVideoClipGenerator& aGenerator, TInt aIndex, - MVedVideoClipInfoObserver& aObserver, TBool aIsOwnedByVideoClip); - - void ConstructL(RFile* aFileHandle, TInt aIndex, - MVedVideoClipInfoObserver& aObserver); - - -private: - // Member variables - - // Movie class this clip is part of. - CVedMovieImp* iMovie; - // Index of this clip in movie. - TInt iIndex; - // File of the video clip. - RFile iLockFile; - // Info class of this video clip. - CVedVideoClipInfo* iInfo; - - // Speed effect of this video clip. - TInt iSpeed; - // Color effect of this video clip. - TVedColorEffect iColorEffect; - // Transition effect of this video clip. - TVedMiddleTransitionEffect iMiddleTransitionEffect; - - // Cut in time of this video clip. - TTimeIntervalMicroSeconds iCutInTime; - // Cut out time of this video clip. - TTimeIntervalMicroSeconds iCutOutTime; - // Start time of this video clip. - TTimeIntervalMicroSeconds iStartTime; - - // Audio track of this video clip - CAudClip* iAudClip; - // Audio track muting: slow motion mutes it automatically, but switching back to normal speed - // should unmute it unless user has muted it on purpose. - TBool iUserMuted; - // color tone - TRgb iColorTone; - - TBool iLockFileOpened; - - friend class CVedMovieImp; - friend class CVedMovieAddClipOperation; -}; - - -#endif // __VEDVIDEOCLIP_H__ -