videoeditorengine/audioeditorengine/inc/AudObservers.h
changeset 0 951a5db380a0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoeditorengine/audioeditorengine/inc/AudObservers.h	Fri Jan 29 14:08:33 2010 +0200
@@ -0,0 +1,294 @@
+/*
+* 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 __AUDOBSERVERS_H__
+#define __AUDOBSERVERS_H__
+
+
+#include <e32base.h>
+//#include "AudSong.h"
+//#include "AudClip.h"
+//#include "AudClipInfo.h"
+#include "AudCommon.h"
+
+class CAudSong;
+class CAudClip;
+class CAudClipInfo;
+
+/**
+ * Observer for movie processing operations. 
+ */
+class MAudSongProcessingObserver
+    {
+public:
+    /**
+     * Called to notify that a new audio processing operation has been started. 
+     *
+     * @param aSong  song
+     */
+    virtual void NotifyAudioProcessingStartedL(CAudSong& aSong) = 0;
+
+    /**
+     * Called to inform about the current progress of the audio processing operation.
+     *
+     * @param aSong       song
+     * @param aPercentage  percentage of the operation completed, must be 
+       *                     in range 0..100
+     */
+    virtual void NotifyAudioProcessingProgressed(CAudSong& aSong, TInt aPercentage) = 0;
+
+    /**
+    * Called to notify that the song processing operation has been completed. 
+    * 
+    * @param aSong  song
+    * @param aError  error code why the operation was completed. 
+    *                <code>KErrNone</code> if the operation was completed 
+    *                successfully.
+    */
+    virtual void NotifyAudioProcessingCompleted(CAudSong& aSong, TInt aError) = 0;
+    
+    };
+
+/**
+* Observer for audio visualization processes. 
+*/
+class MAudVisualizationObserver
+    {
+public:
+        
+    /**
+    * Called to notify that audio _clip_ visualization process has been completed. 
+    * The receiver is responsible for releasing the memory in 
+    * <code>aVisualization</code> if <code>aError = KErrNone</code>
+    * Note: if aError != KErrNone, aVisualization = NULL and aSize = 0;
+    * 
+    * @param aClipInfo        audio clip info
+    * @param aError            <code>KErrNone</code> if visualization was
+    *                        completed successfully; one of the system wide
+    *                        error codes if generating visualization failed
+    * @param aVisualization    pointer to TInt8 visualization array 
+    * @param aSize                size of the visualization array
+    */
+    virtual void NotifyClipInfoVisualizationCompleted(const CAudClipInfo& aClipInfo, 
+        TInt aError, 
+        TInt8* aVisualization,
+        TInt aSize) = 0;
+    
+
+    /**
+    * Called to notify that audio _clip_ visualization process has been started. 
+    * 
+    * @param aClipInfo            clip info
+    * @param aError                <code>KErrNone</code> if visualization was
+    *                            started successfully; one of the system wide
+    *                            error codes if generating visualization failed
+    */
+    virtual void NotifyClipInfoVisualizationStarted(const CAudClipInfo& aClipInfo, 
+        TInt aError) = 0;
+
+
+    /**
+     * Called to inform about the current progress of the audio clip visualization.
+     *
+     * @param aClipInfo    clip info
+     * @param aPercentage  percentage of the operation completed, must be 
+       *                     in range 0..100
+     */
+    virtual void NotifyClipInfoVisualizationProgressed(const CAudClipInfo& aClipInfo, 
+        TInt aPercentage) = 0;
+
+
+    };
+
+
+/**
+ * Observer for song events. 
+ * <p>
+ * Note that every change operation that is made to a song 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 <code>NotifyClipIndicesChanged()</code>
+ * method being called once. The <code>NotifyClipTimingsChanged()</code> 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  CAudSong
+ */
+class MAudSongObserver 
+    {
+public:
+
+    /**
+     * Called to notify that a new audio clip has been successfully
+     * added to the song. Note that the indices and the start and end times
+     * of the audio clips after the new clip have also changed as a result.
+     * Note that the transitions may also have changed. 
+     *
+     * @param aSong            song
+     * @param aClip            new audio clip
+     * @param aIndex        index of the new audio clip on a track
+     * @param aTrackIndex    track index of the new clip
+     *
+     */
+    virtual void NotifyClipAdded(CAudSong& aSong, CAudClip& aClip, TInt aIndex, TInt aTrackIndex) = 0;
+
+    /**
+     * Called to notify that adding a new audio clip to the song has failed.
+     *
+     * Possible error codes:
+     *    - <code>KErrNotFound</code> if there is no file with the specified name
+     *    in the specified directory (but the directory exists)
+     *    - <code>KErrPathNotFound</code> if the specified directory
+     *    does not exist
+     *    - <code>KErrUnknown</code> if the specified file is of unknown format
+     *    - <code>KErrNotSupported</code> if the format of the file is recognized but
+     *    adding it to the song is not supported (e.g., it is of different codec
+     *    or format than the other clips)
+     *
+     * @param aSong   song
+     * @param aError  one of the system wide error codes
+     */
+    virtual void NotifyClipAddingFailed(CAudSong& aSong, TInt aError,  TInt aTrackIndex) = 0;
+
+    /**
+     * Called to notify that an audio clip has been removed from the song.
+     * Note that the indices and the start and end times of the audio clips after 
+     * the removed clip have also changed as a result. Note that the 
+     * transitions may also have changed.
+     *
+     * @param aSong            song
+     * @param aIndex        index of the removed clip (on a track)
+     * @param aTrackIndex    track index
+     */
+    virtual void NotifyClipRemoved(CAudSong& aSong, TInt aIndex, TInt aTrackIndex) = 0;
+    
+    /**
+     * Called to notify that the timings of the clip has changed.
+     * Note that the start and end times of the audio clips 
+     * after the changed clip have also changed.
+     *
+     * @param aSong  song
+     * @param aClip  changed clip
+     */
+    virtual void NotifyClipTimingsChanged(CAudSong& aSong,
+        CAudClip& aClip) = 0;
+    
+
+    /**
+     * Called to notify that the index of the clip has changed.
+     *
+     * @param aSong            song
+     * @param aOldIndex        old index on a track
+     * @param aNewIndex        new index on a track
+     * @param aTrackIndex    track index
+     */
+    virtual void NotifyClipIndicesChanged(CAudSong& aSong, TInt aOldIndex, 
+        TInt aNewIndex, TInt aTrackIndex) = 0;
+    
+    /**
+     * Called to notify that the song has been reseted.
+     *
+     * @param aSong  song
+     */
+    virtual void NotifySongReseted(CAudSong& aSong) = 0;
+
+
+    /**
+     * Called to notify that a clip has been reseted.
+     *
+     * @param aClip  clip
+     */
+    virtual void NotifyClipReseted(CAudClip& aClip) = 0;
+
+    
+    /**
+     * Called to notify that a new dynamic level mark has been successfully
+     * added to a _clip_.
+     *
+     * @param aClip  clip
+     * @param aMark  new level mark
+     * @param aIndex index of the new level mark
+     */
+    virtual void NotifyDynamicLevelMarkInserted(CAudClip& aClip, 
+        TAudDynamicLevelMark& aMark, 
+        TInt aIndex) = 0;
+
+    
+    /**
+     * Called to notify that a dynamic level mark has been removed from a _clip_.
+     * Note that indices of dynamic level marks has also changed as a result
+     *
+     * @param aClip   clip
+     * @param aIndex  index of the removed mark
+     */
+    virtual void NotifyDynamicLevelMarkRemoved(CAudClip& aClip, TInt aIndex) = 0;
+
+
+
+    };
+
+
+
+
+/**
+ * Observer for notifying that audio clip info
+ * is ready for reading.
+ *
+ * @see  CAudClipInfo
+ */
+class MAudClipInfoObserver
+    {
+public:
+    /**
+     * Called to notify that audio clip info is ready
+     * for reading.
+     *
+     * Possible error codes:
+     *    - <code>KErrNotFound</code> if there is no file with the specified name
+     *    in the specified directory (but the directory exists)
+     *    - <code>KErrPathNotFound</code> if the specified directory
+     *    does not exist
+     *    - <code>KErrUnknown</code> if the specified file is of unknown type
+     *
+     * @param aInfo   audio clip info
+     * @param aError  <code>KErrNone</code> if info is ready
+     *                for reading; one of the system wide
+     *                error codes if reading file failed
+     */
+    virtual void NotifyClipInfoReady(CAudClipInfo& aInfo, 
+                                          TInt aError) = 0;
+    };
+    
+class MAudTimeEstimateObserver
+    {
+public:
+    /**
+     * Called to notify that time estimate is ready
+     * for reading.
+     *
+     *
+     * @param aTimeEstimate   time estimate in microseconds
+     */
+    
+    virtual void NotifyTimeEstimateReady(TInt64 aTimeEstimate) = 0;
+
+    };
+#endif