videoeditorengine/vedengine/inc/VedMovieImp.h
branchRCL_3
changeset 3 e0b5df5c0969
parent 0 951a5db380a0
child 7 4c409de21d23
--- a/videoeditorengine/vedengine/inc/VedMovieImp.h	Fri Jan 29 14:08:33 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1419 +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 __VEDMOVIEIMP_H__
-#define __VEDMOVIEIMP_H__
-
-
-#include <e32base.h>
-#include <f32file.h>
-#include "VedMovie.h"
-#include "VedVideoClip.h"
-#include "VedAudioClipInfoImp.h"
-#include "AudObservers.h"
-#include "AudCommon.h"
-#include "Vedqualitysettingsapi.h"
-#include "ctrtranscoder.h"
-
-
-#if ( defined (__WINS__) || defined (__WINSCW__) )
-const TInt KVEdMaxFrameRate = 10;
-#else 
-const TInt KVEdMaxFrameRate = 15;
-#endif
-
-
-/*
- *  Forward declarations.
- */
-class CMovieProcessor;
-class CVedMovie;
-class CVedMovieImp;
-class CVedMovieAddClipOperation;
-class CVedMovieProcessOperation;
-class CAudSong;
-class CVedCodecChecker;
-
-
-/**
- * Video movie, which consists of zero or more video clips and zero or more audio clips.
- *
- * @see  CVedVideoClip
- * @see  CVedAudioClip
- */
-class CVedMovieImp : public CVedMovie, MAudSongObserver, MVedAudioClipInfoObserver
-    {
-public:
-    /* Constructors. */
-
-    CVedMovieImp(RFs *aFs);
-
-    void ConstructL();
-
-    /**
-     * Destroys the object and releases all resources.
-     */
-    ~CVedMovieImp();
-
-
-    /* Property methods. */
-    
-    /**
-     * Returns the quality setting of this movie.
-     *
-     * @return  quality setting of this movie
-     */
-    TVedMovieQuality Quality() const;
-
-    /**
-     * Sets the quality setting of this movie.
-     *
-     * @param aQuality  quality setting
-     */
-    void SetQuality(TVedMovieQuality aQuality);
-
-    /**
-     * Returns the video format of this movie. 
-     * 
-     * @return  video format of this movie
-     */
-    TVedVideoFormat Format() const;
-
-    /**
-     * Returns the video type of this movie. 
-     * 
-     * @return  video type of this movie
-     */
-    TVedVideoType VideoType() const;
-
-    /**
-     * Returns the resolution of this movie. Panics with 
-     * <code>TVedPanic::EMovieEmpty</code> if there are no clips 
-     * in the movie.
-     * 
-     * @return  resolution of the movie
-     */
-    TSize Resolution() const;
-
-    /**
-     * Returns the recommended maximum framerate of this movie..
-     * <p>
-     * Note that the returned maximum framerate is a recommendation,
-     * not a guarantee. For example, the video clip generators inserted
-     * in this movie should not generate frames at higher framerates 
-     * than the recommendation. The movie may, however, exceed this
-     * recommendation. For example, the framerate may be higher if the 
-     * framerates of some of the video clips are higher than the 
-     * recommendation and it is not possible to transcode them to reduce 
-     * the framerate.
-     *
-     * @return  maximum framerate in frames per second
-     */
-    TInt MaximumFramerate() const;
-
-    /**
-     * Returns the audio type of the movie audio track.
-     * 
-     * @return  audio type of the movie audio track
-     */
-    TVedAudioType AudioType() const;
-
-    /**
-     * Returns the audio sampling rate of the movie audio track.
-     *
-     * @return  audio sampling rate of the movie audio track.
-     */
-    TInt AudioSamplingRate() const;
-
-    /**
-     * Sets the output parameters for the movie. Leaves
-     * with KErrNotSupported if a parameter is illegal,
-     * e.g., target bitrate is too high for the given 
-     * codec. This method overrides the SetQuality method
-     *
-     * Possible leave codes:
-     *  - <code>KErrNotSupported</code> if setting is not valid
-     *
-     * @param Output parameters
-     */
-    virtual void SetOutputParametersL(TVedOutputParameters& aOutputParams);
-
-    /**
-     * Returns the audio channel mode of the movie audio track.
-     * 
-     * @return  audio channel mode of the movie audio track.
-     */
-    TVedAudioChannelMode AudioChannelMode() const;
-    
-    /**
-     * Returns the audio bitrate mode of the movie audio track.
-     *
-     * @return audio bitrate mode
-     */
-    TVedBitrateMode AudioBitrateMode() const;
-
-    /**
-     * Returns the target bitrate of the movie audio track.
-     * 
-     * @return  target bitrate of the movie audio track.
-     */
-    TInt AudioBitrate() const;
-
-    /**
-     * Returns the required bitrate of the movie video track.
-     * If nonzero, indicates real target bitrate => requires transcoding
-     * 
-     * @return  Requested bitrate of the movie video track.
-     */
-    TInt VideoBitrate() const;
-    
-    /**
-     * Returns the "standard" or default bitrate of the movie video track.
-     * If input is something else, no transcoding is needed, but new content 
-     * is encoded using this rate. If there is also requested bitrate, the values 
-     * should be the same. The "standard" does not necessarily mean the bitrate
-     * is from video coding standard, it can be, but it can be also something else,
-     * depending on the product variant.
-     * 
-     * @return  Standard bitrate of the movie video track.
-     */
-    TInt VideoStandardBitrate() const;
-
-    /**
-     * Returns the target framerate of the movie video track.
-     * 
-     * @return  target framerate of the movie video track.
-     */
-    TReal VideoFrameRate() const;
-
-    /**
-     * Returns the total duration of this movie.
-     * 
-     * @return  duration in microseconds
-     */
-    inline TTimeIntervalMicroSeconds Duration() const;
-
-    /**
-     * Returns an estimate of the total size of this movie.
-     * 
-     * @return  size estimate in bytes
-     */
-    TInt GetSizeEstimateL() const;
-
-    /**
-     * Estimates end cutpoint with given target size and start cutpoint for current movie.
-     *
-     * @param aTargetSize  Target filesize for section indicated by aStartTime and aEndTime.
-     * @param aStartTime   Start time for first frame included in cutted section. 
-     * @param aEndTime     On return contains estimated end time with given start time and section target filesize.
-     */
-    void GetDurationEstimateL(TInt aTargetSize, TTimeIntervalMicroSeconds aStartTime, TTimeIntervalMicroSeconds& aEndTime);
-
-    /**
-     * Returns whether movie properties meet MMS compatibility
-     * 
-     * @return  ETrue if MMS compatible, else EFalse
-     */
-    TBool IsMovieMMSCompatible() const;
-
-
-    /* Video clip management methods. */
-
-    /**
-     * Returns the number of video clips in this movie.
-     *
-     * @return  number of video clips
-     */
-    inline TInt VideoClipCount() const;
-
-    /** 
-     * Returns the video clip at the specified index. 
-     * Used by underlying modules and friend classes. Not part of public API.
-     * Panics with code <code>USER-130</code> if the clip index is invalid.
-     *
-     * @param aIndex  index
-     *
-     * @return  clip at the specified index.
-     */ 
-    CVedVideoClip* VideoClip(TInt aIndex) const;
-
-    /** 
-     * Inserts the specified video clip to the specified index in this movie. 
-     * The observers are notified when the clip has been added or adding clip 
-     * has failed. Panics with <code>EMovieAddOperationAlreadyRunning</code> 
-     * if another add video or audio clip operation is already running.
-     * Panics with code <code>USER-130</code> if the clip index is invalid.
-     *
-     * Possible leave codes:
-     *  - <code>KErrNoMemory</code> if memory allocation fails
-     *
-     * @param aFileName  file name of the clip to add
-     * @param aIndex     index the clip should be inserted at
-     */
-    void InsertVideoClipL(const TDesC& aFileName, TInt aIndex);
-
-
-    void InsertVideoClipL(CVedVideoClipGenerator& aGenerator, TBool aIsOwnedByVideoClip,
-                          TInt aIndex);
-
-    /** 
-     * Removes the video clip at the specified index from this movie.
-     * Panics with code <code>USER-130</code> if the clip index is invalid.
-     *
-     * @param aIndex  index of the clip to be removed
-     */
-    void RemoveVideoClip(TInt aIndex);
-
-
-    /* Transition effect management methods. */
-
-    /** 
-     * Returns the start transition effect of this movie. Panics with 
-     * <code>TVedPanic::EMovieEmpty</code> if there are no video clips 
-     * in the movie.
-     *
-     * @return  start transition effect
-     */ 
-    TVedStartTransitionEffect StartTransitionEffect() const;
-
-    /** 
-     * Sets the start transition effect of this movie. Panics with 
-     * <code>TVedPanic::EMovieEmpty</code> if there are no video clips 
-     * in the movie.
-     *
-     * @param aEffect  start transition effect
-     */ 
-    void SetStartTransitionEffect(TVedStartTransitionEffect aEffect);
-
-    /**
-     * Returns the number of middle transition effects in this movie.
-     * Note that this is the same as the number of video clips minus one.
-     *
-     * @return  number of middle transition effects
-     */
-    TInt MiddleTransitionEffectCount() const;
-
-    /** 
-     * Returns the middle transition effect at the specified index. 
-     * Panics with code <code>USER-130</code> if the index is invalid.
-     *
-     * @param aIndex  index
-     *
-     * @return  middle transition effect at the specified index
-     */ 
-    TVedMiddleTransitionEffect MiddleTransitionEffect(TInt aIndex) const;
-
-    /** 
-     * Sets the middle transition effect at the specified index. 
-     * Panics with code <code>USER-130</code> if the index is invalid.
-     *
-     * @param aEffect  middle transition effect
-     * @param aIndex   index
-     */ 
-    void SetMiddleTransitionEffect(TVedMiddleTransitionEffect aEffect, TInt aIndex);
-
-    /** 
-     * Returns the end transition effect of this movie. Panics with 
-     * <code>TVedPanic::EMovieEmpty</code> if there are no video clips 
-     * in the movie.
-     *
-     * @return  end transition effect
-     */ 
-    TVedEndTransitionEffect EndTransitionEffect() const;
-
-    /** 
-     * Sets the end transition effect of this movie. Panics with 
-     * <code>TVedPanic::EMovieEmpty</code> if there are no video clips 
-     * in the movie.
-     *
-     * @param aEffect  end transition effect
-     */ 
-    void SetEndTransitionEffect(TVedEndTransitionEffect aEffect);
-    
-
-    /* Audio clip management methods. */
-
-    /**
-     * Returns the number of audio clips in this movie.
-     *
-     * @return  number of audio clips
-     */
-    TInt AudioClipCount() const;    
-
-    /** 
-     * Adds the specified audio clip to this movie. The observers are notified
-     * when the clip has been added or adding clip has failed. Panics with 
-     * <code>EMovieAddOperationAlreadyRunning</code> if another add video or
-     * audio clip operation is already running.
-     * 
-     * Possible leave codes:
-     *  - <code>KErrNoMemory</code> if memory allocation fails
-     *
-     * @param aFileName   file name of the clip to add
-     * @param aStartTime  start time of the clip in movie timebase
-     * @param aCutInTime  cut in time of the clip
-     * @param aCutOutTime cut out time of the clip; or 
-     *                    <code>KVedAudioClipOriginalDuration</code> to specify
-     *                    that the original duration of the clip should be used
-     */
-    void AddAudioClipL(const TDesC& aFileName,
-            TTimeIntervalMicroSeconds aStartTime,
-            TTimeIntervalMicroSeconds aCutInTime,
-            TTimeIntervalMicroSeconds aCutOutTime);
-
-    /** 
-     * Removes the audio clip at the specified index from this movie.
-     * Panics with code <code>USER-130</code> if the clip index is invalid.
-     *
-     * @param aIndex  index of the clip to be removed
-     */
-    void RemoveAudioClip(TInt aIndex);
-    
-    
-    /* Whole movie management methods. */
-    
-    /** 
-     * Removes all video and audio clips and clears all transitions.
-     */
-    void Reset();
-
-
-    /* Processing methods. */
-
-    /**
-     * Starts a video processing operation. This method is asynchronous and 
-     * returns immediately. The processing will happen in the background and
-     * the observer will be notified about the progress of the operation.
-     * Processed data is written into the specified file. Panics with 
-     * <code>TVedPanic::EMovieEmpty</code> if there are no clips 
-     * in the movie.
-     * 
-     * Possible leave codes:
-     *  - <code>KErrNoMemory</code> if memory allocation fails
-     *  - <code>KErrAccessDenied</code> if the file access is denied
-     *  - <code>KErrDiskFull</code> if the disk is full
-     *  - <code>KErrWrite</code> if not all data could be written
-     *  - <code>KErrBadName</code> if the filename is bad
-     *  - <code>KErrDirFull</code> if the directory is full
-     * 
-     * @param aObserver  observer to be notified of the processing status
-     * @param aFileName  name of the file to be written
-     */
-    void ProcessL(const TDesC& aFileName,
-                           MVedMovieProcessingObserver& aObserver);
-
-    /**
-     * Cancels the current video processing operation. If there is no 
-     * operation in progress, the function does nothing.
-     */
-    void CancelProcessing();
-
-
-    /* Observer methods. */
-
-    /**
-     * Registers a movie observer. Panics with panic code 
-     * <code>EMovieObserverAlreadyRegistered</code> if the movie observer is 
-     * already registered.
-     *
-     * @param aObserver  observer that will receive the events
-     */
-    void RegisterMovieObserverL(MVedMovieObserver* aObserver);
-
-    /**
-     * Unregisters a movie observer.
-     *
-     * @param aObserver  observer to be unregistered
-     */
-    void UnregisterMovieObserver(MVedMovieObserver* aObserver);
-
-    /* Video Clip 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.
-     * 
-     * @param aIndex  index of video clip in movie
-     * @return  pointer to a video clip info instance
-     */
-    CVedVideoClipInfo* VideoClipInfo(TInt aIndex) const;
-
-    /**
-     * Returns whether this video clip with the specified editing operations 
-     * applied (for example, changing speed or muting) has an audio track or not.
-     *
-     * @param aIndex  index of video clip in movie
-     * @return  <code>ETrue</code> if clip has an audio track;
-     *          <code>EFalse</code> otherwise
-     */
-    TBool VideoClipEditedHasAudio(TInt aIndex) 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  index of video clip in movie
-     * @param aNewIndex  new index of this clip
-     */
-    void VideoClipSetIndex(TInt aOldIndex, TInt aNewIndex);
-
-    /**
-     * 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.
-     *
-     * @param aIndex  index of video clip in movie
-     * @return  playback speed
-     */
-    TInt VideoClipSpeed(TInt aIndex) 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 aIndex  index of video clip in movie
-     * @param aSpeed  playback speed; must be between 1 and 1000
-     */
-    void VideoClipSetSpeed(TInt aIndex, TInt aSpeed);
-
-    /**
-     * Returns the color effect of this video clip.
-     *
-     * @param aIndex  index of video clip in movie
-     * @return  color effect
-     */
-    TVedColorEffect VideoClipColorEffect(TInt aIndex) const;
-    
-    /**
-     * Sets the color effect of this video clip.
-     *
-     * @param aIndex  index of video clip in movie
-     * @param aColorEffect  color effect
-     */
-    void VideoClipSetColorEffect(TInt aIndex, TVedColorEffect aColorEffect);
-
-    /**
-     * 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.
-     *
-     * @param aIndex  index of video clip in movie
-     * @return  <code>ETrue</code> if this video clip can be muted;
-     *          <code>EFalse</code> otherwise
-     */
-    TBool VideoClipIsMuteable(TInt aIndex) const;
-
-    /**
-     * Returns whether the audio track of this video clip is muted or not.
-     *
-     * @param aIndex  index of video clip in movie
-     * @return  <code>ETrue</code> if the audio track is muted;
-     *          <code>EFalse</code> otherwise
-     */
-    TBool VideoClipIsMuted(TInt aIndex) const;
-
-    /**
-     * Sets whether the audio track of this video clip is muted or not.
-     *
-     * @param aIndex  index of video clip in movie
-     * @param aVolume  <code>ETrue</code> to mute the audio track;
-     *                 <code>EFalse</code> not to mute the audio track
-     */
-    void VideoClipSetMuted(TInt aIndex, TBool aMuted);
-
-    /**
-     * Returns whether the audio track of this video clip is normalized or not.
-     *
-     * @param aIndex  index of video clip in movie
-     * @return  <code>ETrue</code> if the audio track is normalized;
-     *          <code>EFalse</code> otherwise
-     */
-    TBool VideoClipNormalizing(TInt aIndex) const;
-
-    /**
-     * Sets whether the audio track of this video clip is normalized or not.
-     *
-     * @param aIndex  index of video clip in movie
-     * @param aVolume  <code>ETrue</code> to normalize the audio track;
-     *                 <code>EFalse</code> not to normalize the audio track
-     */
-    void VideoClipSetNormalizing(TInt aIndex, TBool aNormalizing);
-
-    /**
-     * Inserts a new dynamic level mark to the video clip. The mark timing
-     * must be within the time boundaries of the video clip.
-     *
-     * @param aIndex  index of the video clip
-     * @param aMark   dynamic level mark to be inserted
-     */
-    void VideoClipInsertDynamicLevelMarkL(TInt aIndex, TVedDynamicLevelMark aMark);
-    
-    /**
-     * Removes the specified dynamic level mark from the specified video clip.
-     * The mark index must be between 0 and number of dynamic level marks in the clip.
-     *
-     * @param aClipIndex  index of the video clip
-     * @param aMarkIndex  index of the mark to be removed
-     */
-    void VideoClipRemoveDynamicLevelMark(TInt aClipIndex, TInt aMarkIndex);
-
-    /**
-     * Returns the number of dynamic level marks in the specified video clip.
-     * 
-     * @param aIndex  index of the video clip
-     */
-    TInt VideoClipDynamicLevelMarkCount(TInt aIndex) const;
-
-    /**
-     * Returns the specified dynamic level mark from the specified video clip.
-     * 
-     * @param aClipIndex  index of the video clip
-     * @param aMarkIndex  index of the dynamic level mark
-     */    
-    TVedDynamicLevelMark VideoClipDynamicLevelMark(TInt aClipIndex, TInt aMarkIndex);
-
-    /**
-     * Returns the cut in time of this video clip in clip timebase.
-     *
-     * @param aIndex  index of video clip in movie
-     * @return  cut in time in microseconds in clip timebase
-     */
-    TTimeIntervalMicroSeconds VideoClipCutInTime(TInt aIndex) 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 aIndex  index of video clip in movie
-     * @param aCutInTime  cut in time in microseconds in clip timebase
-     */
-    void VideoClipSetCutInTime(TInt aIndex, TTimeIntervalMicroSeconds aCutInTime);
-
-    /**
-     * Returns the cut out time of this video clip in clip timebase.
-     *
-     * @return  cut out time in microseconds in clip timebase
-     */
-    TTimeIntervalMicroSeconds VideoClipCutOutTime(TInt aIndex) 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 aIndex  index of video clip in movie
-     * @param aCutOutTime  cut out time in microseconds in clip timebase
-     */
-    void VideoClipSetCutOutTime(TInt aIndex, TTimeIntervalMicroSeconds aCutOutTime);
-
-    /**
-     * Returns the start time of this video clip in movie timebase.
-     *
-     * @param aIndex  index of video clip in movie
-     * @return  start time in microseconds in movie timebase
-     */
-    TTimeIntervalMicroSeconds VideoClipStartTime(TInt aIndex) const;
-
-    /**
-     * Returns the end time of this video clip in movie timebase.
-     *
-     * @param aIndex  index of video clip in movie
-     * @return  end time in microseconds in movie timebase
-     */
-    TTimeIntervalMicroSeconds VideoClipEndTime(TInt aIndex) const;
-
-    /**
-     * Returns the duration of this video clip with the specified
-     * editing operations applied (for example, cutting 
-     * and changing speed)
-     * 
-     * @param aIndex  index of video clip in movie
-     * @return  duration in microseconds
-     */
-    TTimeIntervalMicroSeconds VideoClipEditedDuration(TInt aIndex) const;
-
-    /* Audio Clip Methods */
-    /**
-     * Returns an audio clip info object to get detailed information about
-     * the original audio clip. Note that the specified editing operations 
-     * (for example, changing duration) do <em>not</em>
-     * affect the values returned by the info object.
-     * 
-     * @param aIndex  index of audio clip in movie
-     * @return  pointer to an audio clip info instance
-     */
-    CVedAudioClipInfo* AudioClipInfo(TInt aIndex) const;
-
-    /**
-     * Returns the start time of this audio clip in movie timebase.
-     *
-     * @param aIndex  index of audio clip in movie
-     * @return  start time in microseconds in movie timebase
-     */
-    TTimeIntervalMicroSeconds AudioClipStartTime(TInt aIndex) const;
-
-    /**
-     * Sets the start time of this audio clip in movie timebase. 
-     * Also updates the end time. Duration remains unchanged.
-     * Note that since the audio clips are ordered based on their
-     * start times, the index of the clip may change as a result
-     * of changing the start time.
-     *
-     * @param aIndex  index of audio clip in movie
-     * @param aStartTime  start time in microseconds in movie timebase
-     */
-    void AudioClipSetStartTime(TInt aIndex, TTimeIntervalMicroSeconds aStartTime);
-
-    /**
-     * Returns the end time of this audio clip in movie timebase.
-     *
-     * @param aIndex  index of audio clip in movie
-     * @return  end time in microseconds in movie timebase
-     */
-    TTimeIntervalMicroSeconds AudioClipEndTime(TInt aIndex) const;
-
-    /**
-     * Returns the duration of the selected part of this clip.
-     * 
-     * @param aIndex  index of audio clip in movie
-     * @return  duration in microseconds
-     */
-    TTimeIntervalMicroSeconds AudioClipEditedDuration(TInt aIndex) const;
-
-    /**
-     * Returns the cut in time of this audio clip in clip timebase.
-     *
-     * @param aIndex  index of audio clip in movie
-     * @return  cut in time in microseconds in clip timebase
-     */
-    TTimeIntervalMicroSeconds AudioClipCutInTime(TInt aIndex) const;
-
-    /**
-     * Sets the cut in time of this audio clip in clip timebase.
-     * Panics with <code>EAudioClipIllegalCutInTime</code> if
-     * cut in time is illegal.
-     *
-     * @param aIndex  index of audio clip in movie
-     * @param aCutInTime  cut in time in microseconds in clip timebase
-     */
-    void AudioClipSetCutInTime(TInt aIndex, TTimeIntervalMicroSeconds aCutInTime);
-
-    /**
-     * Returns the cut out time of this audio clip in clip timebase.
-     *
-     * @param aIndex  index of audio clip in movie
-     * @return  cut out time in microseconds in clip timebase
-     */
-    TTimeIntervalMicroSeconds AudioClipCutOutTime(TInt aIndex) const;
-
-    /**
-     * Sets the cut out time of this audio clip in clip timebase.
-     * Panics with <code>EAudioClipIllegalCutOutTime</code> if
-     * cut in time is illegal.
-     *
-     * @param aIndex  index of audio clip in movie
-     * @param aCutOutTime  cut out time in microseconds in clip timebase
-     */
-    void AudioClipSetCutOutTime(TInt aIndex, TTimeIntervalMicroSeconds aCutOutTime);
-
-    /**
-     * Returns whether this audio clip is normalized or not.
-     *
-     * @param aIndex  index of audio clip in movie
-     * @return  <code>ETrue</code> if the audio clip is normalized;
-     *          <code>EFalse</code> otherwise
-     */
-    TBool AudioClipNormalizing(TInt aIndex) const;
-
-    /**
-     * Sets whether this audio clip is normalized or not.
-     *
-     * @param aIndex  index of audio clip in movie
-     * @param aVolume  <code>ETrue</code> to normalize the audio clip;
-     *                 <code>EFalse</code> not to normalize the audio clip
-     */
-    void AudioClipSetNormalizing(TInt aIndex, TBool aNormalizing);
-    
-    /**
-     * Inserts a new dynamic level mark to the audio clip. The mark timing
-     * must be within the time boundaries of the audio clip.
-     *
-     * @param aIndex  index of the audio clip
-     * @param aMark   dynamic level mark to be inserted
-     */
-    void AudioClipInsertDynamicLevelMarkL(TInt aIndex, TVedDynamicLevelMark aMark);
-    
-    /**
-     * Removes the specified dynamic level mark from the specified audio clip.
-     * The mark index must be between 0 and number of dynamic level marks in the clip.
-     *
-     * @param aClipIndex  index of the audio clip
-     * @param aMarkIndex  index of the mark to be removed
-     */
-    void AudioClipRemoveDynamicLevelMark(TInt aClipIndex, TInt aMarkIndex);
-
-    /**
-     * Returns the number of dynamic level marks in the specified audio clip.
-     * 
-     * @param aIndex  index of the audio clip
-     */
-    TInt AudioClipDynamicLevelMarkCount(TInt aIndex) const;
-
-    /**
-     * Returns the specified dynamic level mark from the specified audio clip.
-     * 
-     * @param aClipIndex  index of the audio clip
-     * @param aMarkIndex  index of the dynamic level mark
-     */    
-    TVedDynamicLevelMark AudioClipDynamicLevelMark(TInt aClipIndex, TInt aMarkIndex);
-    
-    /**
-     * Returns the color tone of the specified clip.
-     *
-     * @return color tone
-     */
-    TRgb VideoClipColorTone(TInt aVideoCLipIndex) const;
-    
-    /**
-     * Sets the color tone of the specified clip.
-     *
-     * @param aColorTone  color tone
-     */
-    void VideoClipSetColorTone(TInt aVideoClipIndex, TRgb aColorTone);
-    
-    /**
-     * Returns a pointer to the audio song used as the sound provider for
-     * this movie.
-     * 
-     * @return  song
-     */
-    CAudSong* Song();
-    
-    /**
-     * Sets the maximum size for the movie
-     * 
-     * @param aLimit Maximum size in bytes
-     */
-    virtual void SetMovieSizeLimit(TInt aLimit);
-    
-    /**
-     * Returns an estimate for total processing time
-     * 
-     * @return processing time
-     */
-    TTimeIntervalMicroSeconds GetProcessingTimeEstimateL();
-    
-    /**
-     * Returns the MIME-type for the video in the movie
-     * 
-     * @return Video codec MIME-type
-     */
-    TPtrC8& VideoCodecMimeType();
-    /**
-    * Gets the sync interval in picture (H.263 GOB frequency)
-    * 
-    * @return sync interval 
-    */
-    TInt SyncIntervalInPicture();
-    
-    /**
-    * Gets the random access rate
-    * 
-    * @return random access rate in pictures per second
-    */
-    TReal RandomAccessRate();
-    
-    /**
-     * Checks if a movie observer is registered.
-     *
-     * @param aObserver observer to be checked
-     * @return <code>ETrue</code> if the observer is registered
-     *         <code>EFalse</code> otherwise
-     */
-    TBool MovieObserverIsRegistered(MVedMovieObserver* aObserver);
-
-    /**
-    * Set volume gain for the given video clip or all the video clips
-    * @param aClipIndex    index of the clip; KVedClipIndexAll if applied for all the clips
-    * @param aVolumeGain   Volume gain in +0.1 or -0.5 decibel steps
-    * 
-    */
-    void SetVideoClipVolumeGainL(TInt aClipIndex, TInt aVolumeGain);
-
-    /**
-    * Get volume gain of the given video clip or all the video clips
-    * @param aClipIndex    index of the clip; KVedClipIndexAll if applied for all the clips
-    *
-    * @return Volume gain in +0.1 or -0.5 decibel steps
-    */
-    TInt GetVideoClipVolumeGainL(TInt aClipIndex);
-
-    /**
-    * Set volume gain for the given audio clip or all the audio clips
-    * @param aClipIndex    index of the clip; KVedClipIndexAll if applied for all the clips
-    * @param aVolumeGain   Volume gain in +0.1 or -0.5 decibel steps 
-    * 
-    */
-    void SetAudioClipVolumeGainL(TInt aClipIndex, TInt aVolumeGain);
-
-    /**
-    * Get volume gain of the given audio clip or all the audio clips
-    * @param aClipIndex    index of the clip; KVedClipIndexAll if applied for all the clips
-    *
-    * @return Volume gain in +0.1 or -0.5 decibel steps
-    */
-    TInt GetAudioClipVolumeGainL(TInt aClipIndex);
-    
-    /** 
-     * Inserts a video clip from the specified file to the specified index 
-     * in this movie. The observers are notified when the clip has been added 
-     * or adding clip has failed. Panics with <code>EMovieAddOperationAlreadyRunning</code> 
-     * if another add video or audio clip operation is already running.
-     * Panics with code <code>USER-130</code> if the clip index is invalid.
-     * The file will be opened in EFileShareReadersOnly mode by default, 
-     * and the same mode should be used by the client too if it need to open
-     * the file at the same time.
-     *  
-     * Possible leave codes:
-     *  - <code>KErrNoMemory</code> if memory allocation fails
-     *
-     * @param aFileHandle  file handle of the clip to add
-     * @param aIndex     index the clip should be inserted at
-     */    
-    void InsertVideoClipL(RFile* aFileHandle, TInt aIndex);
-    
-    /** 
-     * Adds the specified audio clip to this movie. The observers are notified
-     * when the clip has been added or adding clip has failed. Panics with 
-     * <code>EMovieAddOperationAlreadyRunning</code> if another add video or
-     * audio clip operation is already running.
-     * The file will be opened in EFileShareReadersOnly mode by default, 
-     * and the same mode should be used by the client too if it need to open
-     * the file at the same time.
-     * 
-     * Possible leave codes:
-     *  - <code>KErrNoMemory</code> if memory allocation fails
-     *
-     * @param aFilehandle   file handle of the clip to add
-     * @param aStartTime  start time of the clip in movie timebase
-     * @param aCutInTime  cut in time of the clip
-     * @param aCutOutTime cut out time of the clip; or 
-     *                    <code>KVedAudioClipOriginalDuration</code> to specify
-     *                    that the original duration of the clip should be used
-     */    
-    void AddAudioClipL(RFile* aFileHandle,
-            TTimeIntervalMicroSeconds aStartTime,
-            TTimeIntervalMicroSeconds aCutInTime = TTimeIntervalMicroSeconds(0),
-            TTimeIntervalMicroSeconds aCutOutTime = KVedAudioClipOriginalDuration);
-    
-     
-    /**
-     * Starts a video processing operation. This method is asynchronous and 
-     * returns immediately. The processing will happen in the background and
-     * the observer will be notified about the progress of the operation.
-     * Processed data is written into the specified file. Panics with 
-     * <code>TVedPanic::EMovieEmpty</code> if there are no clips 
-     * in the movie. Note that calling <code>ProcessL</code> may cause
-     * changes in the maximum frame rates of generated clips.
-     * 
-     * Possible leave codes:
-     *  - <code>KErrNoMemory</code> if memory allocation fails
-     *  - <code>KErrAccessDenied</code> if the file access is denied
-     *  - <code>KErrDiskFull</code> if the disk is full
-     *  - <code>KErrWrite</code> if not all data could be written
-     *  - <code>KErrBadName</code> if the filename is bad
-     *  - <code>KErrDirFull</code> if the directory is full
-     * 
-     * @param aObserver  observer to be notified of the processing status
-     * @param aFileHandle  handle of the file to be written
-     */
-    void ProcessL(RFile* aFileHandle,
-                           MVedMovieProcessingObserver& aObserver);
-
-private:
-    /* Movie editing methods. */
-
-    /**
-     * Match the selected audio properties with input. This is used with automatic
-     * quality to avoid useless transcoding of audio. 
-     */
-    TBool MatchAudioPropertiesWithInput( TAudFileProperties& aAudioProperties );
-
-    /**
-     * Calculates the format, video type, resolution and audio type of 
-     * this movie. 
-     */
-    void CalculatePropertiesL();
-
-    /**
-     * Determines the output format based on input and sets up the movie accordingly
-     */
-    void ApplyAutomaticPropertiesL(TAudFileProperties &aAudioProperties);
-    
-    /**
-     * Sets up the movie according to requested properties
-     */
-    void ApplyRequestedPropertiesL(TAudFileProperties &aAudioProperties);
-    
-    /**
-     * Get properties for QCIF/subQCIF from quality set and sets up video
-     */
-    TInt GetQCIFPropertiesL(SVideoQualitySet& aLocalQualitySet);
-    
-    /**
-     * Get properties for CIF/QVGA from quality set and sets up video
-     */
-    TInt GetCIFQVGAPropertiesL(TSize aSize, TReal aFrameRate, SVideoQualitySet& aLocalQualitySet);
-    
-    /**
-     * Get properties for VGA from quality set and sets up video
-     */
-    TInt GetVGAPropertiesL(SVideoQualitySet& aLocalQualitySet);
-    
-    /**
-     * Get properties for VGA 16:9 from quality set and sets up video
-     */
-    TInt GetVGA16By9PropertiesL(SVideoQualitySet& aLocalQualitySet);
-    
-    /**
-    * Get properties for VGA from quality set and sets up video
-    */
-    TInt GetWVGAPropertiesL(SVideoQualitySet& aLocalQualitySet);
-    
-    /**
-     * Get properties for high quality from quality set
-     */
-    TInt GetHighPropertiesL(SVideoQualitySet& aLocalQualitySet);
-    
-    /**
-     * Creates temporary instance of CTRTranscoder and asks for complexity factor estimate
-     * when converting given video clip to movie with set parameters.
-     * The estimate represents how long processing of 1 sec input takes.
-     */
-    TReal AskComplexityFactorFromTranscoderL(CVedVideoClipInfo* aInfo, CTRTranscoder::TTROperationalMode aMode, TReal aInputFrameRate);
-    
-    /**
-     * Checks whether the specified video clip can be inserted to this movie.
-     *
-     * @param aClip  video clip
-     *
-     * @return  <code>KErrNone</code>, if the clip can be inserted; 
-     *          one of the system wide error codes, otherwise
-     */
-    TInt CheckVideoClipInsertable(CVedVideoClip *aClip) const;
-
-    /**
-     * Calculates the maximum and minimum resolution supported by this movie.
-     *
-     * @param aMaxRes       initial upper limit for the maximum resolution; 
-     *                      after the method returns, contains the calculated
-     *                      maximum resolution supported by this movie
-     * @param aMinRes       initial lower limit for the minimum resolution; 
-     *                      after the method returns, contains the calculated
-     *                      minimum resolution supported by this movie
-     * @param aDoFullCheck  <code>ETrue</code>, if all clips should be
-     *                      checked to verify that they can be combined
-     *                      (not necessary but useful for detecting internal 
-     *                      errors); <code>EFalse</code>, if extra checks 
-     *                      should be skipped to minimize execution time
-     */
-    void CalculateMaxAndMinResolution(TSize& aMaxRes, TSize& aMinRes,
-                                      TBool aDoFullCheck) const;
-
-    /**
-     * Recalculates video clip timings.
-     *
-     * @param aVideoClip  Video clip
-     */
-    void RecalculateVideoClipTimings(CVedVideoClip* aVideoClip);    
-
-    /**
-     * Reset the movie. 
-     */
-    void DoReset();
-    
-    /**
-     * Set audio fade in/out on clip boundaries
-     */
-    void SetAudioFadingL();
-    
-    /**
-     * Internal helper function to set iVideoCodecMimeType to given value
-     */
-    void SetVideoCodecMimeType(const TText8* aVideoCodecType);
-
-    /* Notification methods. */
-
-    /**
-     * Notify observers that the video clip has been added to movie.
-     *
-     * @param aMovie This movie.
-     * @param aClip Added video clip.
-     */
-    void FireVideoClipAdded(CVedMovie* aMovie, CVedVideoClip* aClip);
-
-    /**
-     * Notify observers that the adding of video clip failed.
-     *
-     * @param 
-     */
-    void FireVideoClipAddingFailed(CVedMovie* aMovie, TInt aError);
-
-    /**
-     * Notify observers that the video clip has been removed from movie.
-     *
-     * @param aMovie This movie.
-     * @param aIndex Index of removed video clip.
-     */
-    void FireVideoClipRemoved(CVedMovie* aMovie, TInt aIndex);
-
-    /**
-     * Notify observers that the video clip indices has changes.
-     *
-     * @param aMovie This movie.
-     * @param aOldIndex Old index of video clip.
-     * @param aNewIndex New index of video clip.
-     */
-    void FireVideoClipIndicesChanged(CVedMovie* aMovie, TInt aOldIndex, 
-                                     TInt aNewIndex);
-
-    /**
-     * Notify observers that the video clip timings has been changed.
-     *
-     * @param aMovie This movie.
-     * @param aClip The video clip.
-     */
-    void FireVideoClipTimingsChanged(CVedMovie* aMovie, CVedVideoClip* aClip);
-
-    /**
-     * Notify observers that the color effect of video clip has been changed.
-     *
-     * @param aMovie This movie.
-     * @param aClip Video clip that was changed.
-     */
-    void FireVideoClipColorEffectChanged(CVedMovie* aMovie, CVedVideoClip* aClip);
-
-    /**
-     * Notify observers that the audio settings of video clip has been changed.
-     *
-     * @param aMovie This movie.
-     * @param aClip Video clip that audio settings has been changed.
-     */
-    void FireVideoClipAudioSettingsChanged(CVedMovie* aMovie, CVedVideoClip* aClip);
-
-    /**
-     * Notify observers that the generator settings of video clip has been changed.
-     *
-     * @param aMovie This movie.
-     * @param aClip  Video clip whose settings has been changed
-     */
-    void FireVideoClipGeneratorSettingsChanged(CVedMovie* aMovie, CVedVideoClip* aClip);
-
-    /**
-     * Notify observers that the descriptive name of video clip has been changed.
-     *
-     * @param aMovie  This movie
-     * @param aClip   Video clip whose settings has been changed
-     */
-    void FireVideoClipDescriptiveNameChanged(CVedMovie* aMovie, CVedVideoClip* aClip);
-
-
-    /**
-     * Notify observers that the start transition effect of the movie has been changed.
-     *
-     * @param aMovie This movie.
-     */
-    void FireStartTransitionEffectChanged(CVedMovie* aMovie);
-
-    /**
-     * Notify observers that the middle transition effect of video clip has been changed.
-     *
-     * @param aMovie This movie.
-     * @param aClip Video clip that was changed.
-     */
-    void FireMiddleTransitionEffectChanged(CVedMovie* aMovie, TInt aIndex);
-
-    /**
-     * Notify observers that the end transition effect of the movie has been changed.
-     *
-     * @param aMovie This movie.
-     */
-    void FireEndTransitionEffectChanged(CVedMovie* aMovie);
-
-    /**
-     * Notify observers that an audio clip has been added to movie.
-     *
-     * @param aMovie This movie.
-     * @param aIndex index of added clip.
-     */
-    void FireAudioClipAdded(CVedMovie* aMovie, TInt aIndex);
-
-    /**
-     * Notify observers that the adding of audio clip has failed.
-     *
-     * @param aMovie This movie.
-     * @param aError Error code.
-     */
-    void FireAudioClipAddingFailed(CVedMovie* aMovie, TInt aError);
-
-    /**
-     * Notify observers that the audio clip has been removed from movie. 
-     *
-     * @param aMovie This movie.
-     * @param aInder Index of removed audio clip.
-     */
-    void FireAudioClipRemoved(CVedMovie* aMovie, TInt aIndex);
-
-    /**
-     * Notify observers that the audio clip indices has been changed.
-     *
-     * @param aMovie This movie.
-     * @param aOldIndex Old index of the audio clip.
-     * @param aNewIndex New index of the audio clip.
-     */
-    void FireAudioClipIndicesChanged(CVedMovie* aMovie, TInt aOldIndex, TInt aNewIndex);
-
-    /**
-     * Notify observers that the audio clip timings has been changed.
-     *
-     * @param aMovie This movie.
-     * @param aClip The audio clip that timings has been changed.
-     */
-    void FireAudioClipTimingsChanged(CVedMovie* aMovie, CAudClip* aClip);
-
-    /**
-     * Notify observers that output parameters has been changed.
-     *
-     * @param aMovie This movie.
-     * @param aClip The audio clip that timings has been changed.
-     */
-    void FireMovieOutputParametersChanged(CVedMovie* aMovie);
-
-    /**
-     * Notify observers that an audio or video clip dynamic level
-     * mark has been removed.
-     *
-     * @param aClip   The audio clip that timings has been changed.
-     * @param aIndex  Index of the removed dynamic level mark
-     */
-    void FireDynamicLevelMarkRemoved(CAudClip& aClip, TInt aIndex);
-
-    /**
-     * Notify observers that an audio or video clip dynamic level
-     * mark has been inserted.
-     *
-     * @param aClip   The audio clip that timings has been changed.
-     * @param aMark   Dynamic level mark that was inserted
-     * @param aIndex  Index of the removed dynamic level mark
-     */
-    void FireDynamicLevelMarkInserted(CAudClip& aClip, TAudDynamicLevelMark& aMark, TInt aIndex);
-
-    /**
-     * Notify observers that the quality setting of the movie has been
-     * changed.
-     *
-     * @param aMovie This movie.
-     */
-    void FireMovieQualityChanged(CVedMovie* aMovie);
-
-    /**
-     * Notify observers that the movie has been reseted.
-     *
-     * @param aMovie This movie.
-     */
-    void FireMovieReseted(CVedMovie* aMovie);    
-
-private: // methods from base classes
-    void NotifyClipAdded(CAudSong& aSong, CAudClip& aClip, 
-        TInt aIndex, TInt aTrackIndex);
-    void NotifyClipAddingFailed(CAudSong& aSong, TInt aError, TInt aTrackIndex);
-    void NotifyClipRemoved(CAudSong& aSong, TInt aIndex, TInt aTrackIndex);
-    void NotifyClipTimingsChanged(CAudSong& aSong, CAudClip& aClip);
-    void NotifyClipIndicesChanged(CAudSong& aSong, TInt aOldIndex, 
-        TInt aNewIndex, TInt aTrackIndex);
-    void NotifySongReseted(CAudSong& aSong);
-    void NotifyClipReseted(CAudClip& aClip);
-    void NotifyDynamicLevelMarkInserted(CAudClip& aClip, 
-        TAudDynamicLevelMark& aMark, TInt aIndex);
-    void NotifyDynamicLevelMarkRemoved(CAudClip& aClip, TInt aIndex);
-    
-    void NotifyAudioClipInfoReady(CVedAudioClipInfo& aInfo, TInt aError);
-
-private:
-    // Member variables
-
-    // File server session.
-    RFs* iFs;
-    // Video clip array.
-    RPointerArray<CVedVideoClip> iVideoClipArray;
-    // Audio clip array.
-    RPointerArray<CVedAudioClipInfoImp> iAudioClipInfoArray;
-    // Observer array of the movie class.
-    RPointerArray<MVedMovieObserver> iObserverArray;
-
-    // Start transition effect of the movie.
-    TVedStartTransitionEffect iStartTransitionEffect;
-    // End transition effect of the movie.
-    TVedEndTransitionEffect iEndTransitionEffect;
-    
-    // Add clip operation for movie.    
-    CVedMovieAddClipOperation* iAddOperation;
-    // Video editor processor.
-    CMovieProcessor* iProcessor;
-
-    // Quality
-    TVedMovieQuality iQuality;
-    // Format.
-    TVedVideoFormat iFormat;
-    // Quality set assigned for the movie
-    SVideoQualitySet iQualitySet;
-    // Video type, both internal enum and MIME-type.
-    TVedVideoType iVideoType;
-    TPtrC8 iVideoCodecMimeType;
-    // Resolution.
-    TSize iResolution;
-    // Maximum framerate.
-    TInt iMaximumFramerate;
-    // Random access point rate, in pictures per second.
-    TReal iRandomAccessRate;
-    // Standard video bitrate; can be used when encoding, but doesn't force to transcode input to this bitrate
-    TInt iVideoStandardBitrate;
-        
-    // Used when non-zero
-    TInt iVideoRestrictedBitrate;    
-    TReal iVideoFrameRate;    
-    // Segment interval in picture. In H.263 baseline this means number of non-empty GOB headers (1=every GOB has a header), 
-    // in MB-based systems number of MBs per segment. Default is 0 == no segments inside picture
-    // Coding standard & used profile etc. limit the value.
-    TInt iSyncIntervalInPicture;
-    // Latest estimate for processing time of the movie
-    TTimeIntervalMicroSeconds iEstimatedProcessingTime;
-        
-    // Song
-    CAudSong* iAudSong;
-    
-    // Whether output parameters have been set using SetOutputParametersL
-    TBool iOutputParamsSet;
-    
-    // Video clip index stored for inserting video clip first to AudSong, then to Movie
-    TInt iAddedVideoClipIndex;
-    
-    // File name of the added clip
-    HBufC* iAddedVideoClipFilename;            
-    
-    RFile* iAddedVideoClipFileHandle;
-    
-    // whether to notify observer about dynamic
-    // level marker changes
-    TBool iNotifyObserver;
-    
-    // Codec availability checker 
-    CVedCodecChecker* iCodecChecker;
-
-    // Volume gains for all video and audio clips
-    TInt iVolumeGainForAllVideoClips;
-    TInt iVolumeGainForAllAudioClips;
-    
-    // ETrue if specific dynamic level mark(s) or global volume settings should be applied (EFalse)
-    TBool iApplyDynamicLevelMark;
-    
-    // Quality settings manager
-    CVideoQualitySelector* iQualitySelector;
-    
-    MVedMovieProcessingObserver* iMovieProcessingObserver;
-    
-    friend class CVedMovieAddClipOperation;
-    friend class CVedVideoClip;
-    friend class CVedAudioClip;
-    friend class CVedVideoClipGenerator;
-    };
-
-
-/**
- * Internal class for adding video and audio clips.
- */
-class CVedMovieAddClipOperation : public CActive, 
-                                  public MVedVideoClipInfoObserver                                  
-    {
-public:
-    /* 
-    * Static constructor.
-    */
-    static CVedMovieAddClipOperation* NewL(CVedMovie* aMovie);
-
-    /*
-    * Notify that the video clip info is ready.
-    */
-    void NotifyVideoClipInfoReady(CVedVideoClipInfo& aInfo, 
-                                          TInt aError);    
-
-protected:
-    /*
-    * From CActive.
-    * Standard active object RunL function.
-    */
-    void RunL();
- 
-    /*
-    * From CActive.
-    * Standard active object DoCancel function.
-    */
-    void DoCancel();
-
-private:
-    /* Default constructor */
-    CVedMovieAddClipOperation(CVedMovie* aMovie);
-    
-    /* Standard Symbian OS two phased contructor */
-    void ConstructL();
-
-    /* Destructor */
-    ~CVedMovieAddClipOperation();
-
-    /* Called when video add operation has been completed */
-    void CompleteAddVideoClipOperation();
-
-
-private:
-    // Pointer to movie class this operation is part of.
-    CVedMovieImp* iMovie;
-
-    // Video clip to be added.
-    CVedVideoClip* iVideoClip;
-    // Does the video clip to be added own the generator?
-    TBool iIsVideoGeneratorOwnedByVideoClip;
-
-    // Error code of add operation
-    TInt iError;
-
-    friend class CVedMovieImp;
-    };
-
-
-#endif // __VEDMOVIEIMP_H__
-