--- 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 <e32base.h>
-#include <f32file.h>
-
-#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 <em>not</em>
- * 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 <code>ETrue</code> if clip has an audio track;
- * <code>EFalse</code> 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 <code>EVideoClipIllegalIndex</code>
- * 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 <code>EVideoClipIllegalSpeed</code> 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 <code>ETrue</code> if this video clip can be muted;
- * <code>EFalse</code> 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 <code>ETrue</code> if the audio track is muted;
- * <code>EFalse</code> 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 <code>ETrue</code> if the audio track is muted;
- * <code>EFalse</code> otherwise
- */
- TBool IsMuted() const;
-
- /**
- * Returns whether the audio track of this video clip is normalized or not.
- *
- * @return <code>ETrue</code> if the audio track is normalized;
- * <code>EFalse</code> otherwise
- */
- TBool Normalizing() const;
-
-
- /**
- * Sets whether the audio track of this video clip is muted or not.
- *
- * @param aVolume <code>ETrue</code> to mute the audio track;
- * <code>EFalse</code> 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 <code>ETrue</code> to normalize the audio track,
- * <code>EFalse</code> not to normalize
- */
- void SetNormalizing(TBool aNormalizing);
-
- /**
- * Inserts a dynamic level mark to a clip.
- *
- * Possible leave codes:
- * - <code>KErrNoMemory</code> 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
- * <code>EIllegalDynamicLevelMarkIndex</code>
- *
- * @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 <code>EVideoClipIllegalCutInTime</code> 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 <code>EVideoClipIllegalCutOutTime</code> 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__
-