diff -r b31261fd4e04 -r ccd8e69b5392 mmshplugins/mmcctranscoder/tsrc/stubs/inc/vedmovie.h --- a/mmshplugins/mmcctranscoder/tsrc/stubs/inc/vedmovie.h Tue Feb 02 00:09:07 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,601 +0,0 @@ -/* -* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "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: -* -* Description: -* -*/ - - -#ifndef __VEDMOVIE_H__ -#define __VEDMOVIE_H__ - -#include -#include -#include "VedVideoClipInfo.h" -#include "VedAudioClipInfo.h" - -/* - * Constant definitions. - */ - -const TInt KVedClipIndexAll(-1); - - - - -class CVedMovie; -class TVedDynamicLevelMark; - -/** - * Observer for movie events. - *

- * Note that every change operation that is made to a movie or the clips it consists of - * results in a maximum of one notification method called (that is, more than one - * notification method is never called as a result of a single change). For example, - * changing the index of a clip results in the NotifyVideoClipIndicesChanged() - * method being called once. The NotifyVideoClipTimingsChanged() method is not - * called even if the timings of several clips may have changed as a result. See the - * descriptions of the notification methods for more detailed information. - * - * @see CVedMovie - */ -class MVedMovieObserver - { -public: - - /** - * Called to notify that a new video clip has been successfully - * added to the movie. Note that the indices and the start and end times - * of the video clips after the new clip have also changed as a result. - * Note that the transitions may also have changed. - * - * @param aMovie movie - * @param aIndex index of video clip in movie - */ - virtual void NotifyVideoClipAdded(CVedMovie& aMovie, TInt aIndex) = 0; - - /** - * Called to notify that adding a new video clip to the movie has failed. - * - * Possible error codes: - * - KErrNotFound if there is no file with the specified name - * in the specified directory (but the directory exists) - * - KErrPathNotFound if the specified directory - * does not exist - * - KErrUnknown if the specified file is of unknown format - * - KErrNotSupported if the format of the file is recognized but - * adding it to the movie is not supported (e.g., it is of different resolution - * or format than the other clips) - * - * @param aMovie movie - * @param aError one of the system wide error codes - */ - virtual void NotifyVideoClipAddingFailed(CVedMovie& aMovie, TInt aError) = 0; - - /** - * Called to notify that a video clip has been removed from the movie. - * Note that the indices and the start and end times of the video clips after - * the removed clip have also changed as a result. Note that the - * transitions may also have changed. - * - * @param aMovie movie - * @param aIndex index of the removed video clip - */ - virtual void NotifyVideoClipRemoved(CVedMovie& aMovie, TInt aIndex) = 0; - - /** - * Called to notify that a video clip has moved (that is, its index and - * start and end times have changed). Note that the indices and the start and - * end times of the clips between the old and new indices have also changed - * as a result. Note that the transitions may also have changed. - * - * @param aMovie movie - * @param aOldIndex old index of the moved clip - * @param aNewIndex new index of the moved clip - */ - virtual void NotifyVideoClipIndicesChanged(CVedMovie& aMovie, TInt aOldIndex, - TInt aNewIndex) = 0; - - /** - * Called to notify that the timings (that is, the cut in or cut out time or - * the speed and consequently the end time, edited duration, and possibly audio - * settings) of a video clip have changed (but the index of the clip has - * not changed). Note that the start and end times of the video clips - * after the changed clip have also changed. - * - * @param aMovie movie - * @param aClip changed video clip - */ - virtual void NotifyVideoClipTimingsChanged(CVedMovie& aMovie, - TInt aIndex) = 0; - - /** - * Called to notify that the color effect or a color tone of the existing effect - * of a video clip has changed. - * - * @param aMovie movie - * @param aClip changed video clip - */ - virtual void NotifyVideoClipColorEffectChanged(CVedMovie& aMovie, - TInt aIndex) = 0; - - /** - * Called to notify that the audio settings of a video clip have changed. - * - * @param aMovie movie - * @param aClip changed video clip - */ - virtual void NotifyVideoClipAudioSettingsChanged(CVedMovie& aMovie, - TInt aIndex) = 0; - - /** - * Called to notify that some generator-specific settings of - * a generated video clip have changed. - * - * @param aMovie movie - * @param aClip changed video clip - */ - virtual void NotifyVideoClipGeneratorSettingsChanged(CVedMovie& aMovie, - TInt aIndex) = 0; - - /** - * Called to notify that the descriptive name of a clip has changed. - * - * @param aMovie movie - * @param aIndex changed video clip index - */ - virtual void NotifyVideoClipDescriptiveNameChanged(CVedMovie& aMovie, - TInt aIndex) = 0; - - /** - * Called to notify that the start transition effect of the movie - * has changed (but no other changes have occurred). - * - * @param aMovie movie - */ - virtual void NotifyStartTransitionEffectChanged(CVedMovie& aMovie) = 0; - - /** - * Called to notify that a middle transition effect has changed - * (but no other changes have occurred). - * - * @param aMovie movie - * @param aIndex index of the changed middle transition effect - */ - virtual void NotifyMiddleTransitionEffectChanged(CVedMovie& aMovie, - TInt aIndex) = 0; - - /** - * Called to notify that the end transition effect of the movie - * has changed (but no other changes have occurred). - * - * @param aMovie movie - */ - virtual void NotifyEndTransitionEffectChanged(CVedMovie& aMovie) = 0; - - /** - * Called to notify that a new audio clip has been successfully - * added to the movie. Note that the indices of the audio clips - * starting after the new clip have also changed as a result. - * - * @param aMovie movie - * @param aClip new audio clip - */ - virtual void NotifyAudioClipAdded(CVedMovie& aMovie, TInt aIndex) = 0; - - /** - * Called to notify that adding a new audio clip to the movie has failed. - * - * Possible error codes: - * - KErrNotFound if there is no file with the specified name - * in the specified directory (but the directory exists) - * - KErrPathNotFound if the specified directory - * does not exist - * - KErrUnknown if the specified file is of unknown format - * - * @param aMovie movie - * @param aError one of the system wide error codes - */ - virtual void NotifyAudioClipAddingFailed(CVedMovie& aMovie, TInt aError) = 0; - - /** - * Called to notify that an audio clip has been removed from the movie. - * Note that the indices of the audio clips starting after the removed - * clip have also changed as a result. - * - * @param aMovie movie - * @param aIndex index of the removed audio clip - */ - virtual void NotifyAudioClipRemoved(CVedMovie& aMovie, TInt aIndex) = 0; - - /** - * Called to notify that an audio clip has moved (that is, its - * index has changed). This may happen when the start time of the audio - * clip is changed. Note that the indices of the clips between the old and - * new indices have also changed as a result. - * - * @param aMovie movie - * @param aOldIndex old index of the moved clip - * @param aNewIndex new index of the moved clip - */ - virtual void NotifyAudioClipIndicesChanged(CVedMovie& aMovie, TInt aOldIndex, - TInt aNewIndex) = 0; - - /** - * Called to notify that the timings (for example, the start time or - * the duration) of an audio clip have changed (but the index of the - * clip has not changed as a result). - * - * @param aMovie movie - * @param aClip changed audio clip - */ - virtual void NotifyAudioClipTimingsChanged(CVedMovie& aMovie, - TInt aIndex) = 0; - - /** - * Called to notify that the quality setting of the movie has been - * changed. - * - * @param aMovie movie - */ - virtual void NotifyMovieQualityChanged(CVedMovie& aMovie) = 0; - - /** - * Called to notify that the movie has been reseted. - * - * @param aMovie movie - */ - virtual void NotifyMovieReseted(CVedMovie& aMovie) = 0; - - /** - * Called to notify that the output parameters have been changed - * - * @param aMovie movie - */ - virtual void NotifyMovieOutputParametersChanged(CVedMovie& aMovie) = 0; - - /** - * Called to notify that a dynamic level mark has been inserted - * to an audio clip. - * - * @param aMovie movie - * @param aClipIndex audio clip index - * @param aMarkIndex index of the inserted level mark - */ - virtual void NotifyAudioClipDynamicLevelMarkInserted(CVedMovie& aMovie, - TInt aClipIndex, - TInt aMarkIndex) = 0; - - /** - * Called to notify that a dynamic level mark has been inserted - * to an audio clip. - * - * @param aMovie movie - * @param aClipIndex audio clip index - * @param aMarkIndex index of the inserted level mark - */ - virtual void NotifyAudioClipDynamicLevelMarkRemoved(CVedMovie& aMovie, - TInt aClipIndex, - TInt aMarkIndex) = 0; - - /** - * Called to notify that a dynamic level mark has been inserted - * to an audio clip. - * - * @param aMovie movie - * @param aClipIndex audio clip index - * @param aMarkIndex index of the inserted level mark - */ - virtual void NotifyVideoClipDynamicLevelMarkInserted(CVedMovie& aMovie, - TInt aClipIndex, - TInt aMarkIndex) = 0; - - /** - * Called to notify that a dynamic level mark has been inserted - * to an audio clip. - * - * @param aMovie movie - * @param aClipIndex audio clip index - * @param aMarkIndex index of the inserted level mark - */ - virtual void NotifyVideoClipDynamicLevelMarkRemoved(CVedMovie& aMovie, - TInt aClipIndex, - TInt aMarkIndex) = 0; - }; - - -/** - * Observer for movie processing operations. - * - * - * @see CVedMovie - */ -class MVedMovieProcessingObserver - { -public: - /** - * Called to notify that a new movie processing operation has been started. - * - * @param aMovie movie - */ - virtual void NotifyMovieProcessingStartedL(CVedMovie& aMovie) = 0; - - /** - * Called to inform about the current progress of the movie processing operation. - * - * @param aMovie movie - * @param aPercentage percentage of the operation completed, must be - * in range 0..100 - */ - virtual void NotifyMovieProcessingProgressed(CVedMovie& aMovie, TInt aPercentage) = 0; - - /** - * Called to notify that the movie processing operation has been completed. - * - * @param aMovie movie - * @param aError error code why the operation was completed. - * KErrNone if the operation was completed - * successfully. - */ - virtual void NotifyMovieProcessingCompleted(CVedMovie& aMovie, TInt aError) = 0; - }; - - -/** - * Video movie, which consists of zero or more video clips and zero or more audio clips. - * - * @see CVedVideoClip - * @see CVedAudioClip - */ -class CVedMovie : public CBase - { -public: - - /** - * Enumeration for movie quality settings. - */ - enum TVedMovieQuality - { - EQualityAutomatic = 0, - EQualityMMSInteroperability, - EQualityResolutionCIF, // Obsolete, please use Medium/High instead - EQualityResolutionQCIF, // Obsolete, please use Medium/High instead - EQualityResolutionMedium, - EQualityResolutionHigh, - EQualityLast // this should always be the last - }; - - -public: - - /* Constructors & destructor. */ - - /** - * Constructs a new empty CVedMovie object. May leave if no resources are available. - * - * Possible leave codes: - * - KErrNoMemory if memory allocation fails - * - * @param aFs file server session to use to lock the video and audio - * clip files of the new movie; or NULL to not to lock the files - * - * @return pointer to a new CVedMovie instance - */ - static CVedMovie* NewL(RFs* aFs); - - /** - * Constructs a new empty CVedMovie object and leaves the object in the cleanup stack. - * - * Possible leave codes: - * - KErrNoMemory if memory allocation fails - * - * @param aFs file server session to use to lock the video and audio - * clip files of the new movie; or NULL to not to lock the files - * - * @return pointer to a new CVedMovie instance - */ - static CVedMovie* NewLC(RFs* aFs); - - - ~CVedMovie(); - - - /** - * Sets the quality setting of this movie. - * - * @param aQuality quality setting - */ - virtual void SetQuality(TVedMovieQuality aQuality); - - - /** - * Returns the video type of this movie. - * - * @return video type of this movie - */ - virtual TVedVideoType VideoType() const; - - /** - * Returns the resolution of this movie. Panics with - * TVedPanic::EMovieEmpty if there are no clips - * in the movie. - * - * @return resolution of the movie - */ - virtual TSize Resolution() const; - - /** - * Returns the audio type of the movie audio track. - * - * @return audio type of the movie audio track - */ - virtual TVedAudioType AudioType() const; - - /** - * Returns the audio sampling rate of the movie audio track. - * - * @return audio sampling rate of the movie audio track. - */ - virtual TInt AudioSamplingRate() const; - - /** - * Returns the audio channel mode of the movie audio track. - * - * @return audio channel mode of the movie audio track. - */ - virtual TVedAudioChannelMode AudioChannelMode() const; - - - /** - * 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 EMovieAddOperationAlreadyRunning - * if another add video or audio clip operation is already running. - * Panics with code USER-130 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: - * - KErrNoMemory if memory allocation fails - * - * @param aFileName file name of the clip to add - * @param aIndex index the clip should be inserted at - */ - virtual void InsertVideoClipL(const TDesC& aFileName, TInt aIndex); - - - - /* 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 - * TVedPanic::EMovieEmpty if there are no clips - * in the movie. Note that calling ProcessL may cause - * changes in the maximum frame rates of generated clips. - * - * Possible leave codes: - * - KErrNoMemory if memory allocation fails - * - KErrAccessDenied if the file access is denied - * - KErrDiskFull if the disk is full - * - KErrWrite if not all data could be written - * - KErrBadName if the filename is bad - * - KErrDirFull if the directory is full - * - * @param aObserver observer to be notified of the processing status - * @param aFileName name of the file to be written - */ - virtual void ProcessL(const TDesC& aFileName, - MVedMovieProcessingObserver& aObserver); - - /** - * Cancels the current video processing operation. If there is no - * operation in progress, the function does nothing. - */ - virtual void CancelProcessing(); - - - /* Observer methods. */ - - /** - * Registers a movie observer. Panics with panic code - * EMovieObserverAlreadyRegistered if the movie observer is - * already registered. - * - * @param aObserver observer that will receive the events - */ - virtual void RegisterMovieObserverL(MVedMovieObserver* aObserver); - - /** - * Unregisters a movie observer. - * - * @param aObserver observer to be unregistered - */ - virtual void UnregisterMovieObserver(MVedMovieObserver* aObserver); - - - /** - * Returns the target bitrate of the movie audio track. - * - * @return target bitrate of the movie audio track. - */ - virtual TInt AudioBitrate() const; - - /** - * Returns the target framerate of the movie video track. - * - * @return target framerate of the movie video track. - */ - virtual TReal VideoFrameRate() 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. Setting a integer parameter to zero indicates - * that a default value will be used for that parameter. - * - * This method overrides the SetQuality method - * - * Possible leave codes: - * - KErrNotSupported if setting is not valid - * - * @param Output parameters - */ - - virtual void SetOutputParametersL(TVedOutputParameters& aOutputParams); - -public: // Stub stuff - - void ConstructL(); - - CVedMovie(); - - enum TVedMovieCurrentCallbackType - { - ENotifyVideoClipAdded, - ENotifyMovieQualityChanged, - ENotifyMovieOutputParametersChanged, - ENotifyMovieProcessingStartedL, - ENotifyMovieProcessingProgressed, - ENotifyMovieProcessingCompleted - }; - - void IssueCallback( TVedMovieCurrentCallbackType aCallback ); - - static TInt AsyncTimerExpired(TAny* aPtr); - - void DoCurrentCallbackL(); - - MVedMovieObserver* iObserver; - MVedMovieProcessingObserver* iProcessObserver; - - CDeltaTimer* iDeltaTimer; - TCallBack iDeltaTimerCallBack; - TDeltaTimerEntry iDeltaTimerEntry; - - TVedMovieCurrentCallbackType iCurrentCallback; - TInt iProgress; - - TVedMovieQuality iQuality; - TVedOutputParameters iOutputParams; - TVedAudioType iAudioType; - - }; - - -#endif // __VEDMOVIE_H__ -