--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/videoeditorengine/vedengine/inc/VedAudioClipInfoImp.h Fri Jan 29 14:08:33 2010 +0200
@@ -0,0 +1,253 @@
+/*
+* 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 __VEDAUDIOCLIPINFOIMP_H__
+#define __VEDAUDIOCLIPINFOIMP_H__
+
+
+#include <e32base.h>
+#include "VedCommon.h"
+#include "VedAudioClipInfo.h"
+
+#include "AudClip.h"
+#include "AudObservers.h"
+
+/*
+ * Forward declarations.
+ */
+class CVedAudioClipInfo;
+class CVedAudioClipInfoOperation;
+
+/**
+ * Utility class for getting information about audio clip files.
+ *
+ */
+class CVedAudioClipInfoImp : public CVedAudioClipInfo, public MAudClipInfoObserver,
+ public MAudVisualizationObserver
+ {
+public:
+ /* Constuctor */
+ CVedAudioClipInfoImp();
+
+ /* Symbian two phased constructor. */
+ void ConstructL(const TDesC& aFileName,
+ MVedAudioClipInfoObserver& aObserver);
+
+ /* Symbian two phased constructor. */
+ void ConstructL(RFile* aFileHandle,
+ MVedAudioClipInfoObserver& aObserver);
+
+ /* Two-phased constructor variant for use within a movie. */
+ void ConstructL(CAudClip* aAudClip,
+ MVedAudioClipInfoObserver& aObserver);
+
+ /**
+ * Destroys the object and releases all resources.
+ */
+ ~CVedAudioClipInfoImp();
+
+
+ /* Property methods. */
+
+ /**
+ * Returns the file name of the clip. Panics if info
+ * is not yet ready for reading.
+ *
+ * @return file name
+ */
+ TPtrC FileName() const;
+
+ /**
+ * Returns the audio format of the clip. Panics if info
+ * is not yet ready for reading.
+ *
+ * @return audio format of the clip
+ */
+ TVedAudioFormat Format() const;
+
+ /**
+ * Returns the audio type of the clip. Panics if info
+ * is not yet ready for reading.
+ *
+ * @return audio type
+ */
+ TVedAudioType Type() const;
+
+ /**
+ * Returns the duration of the clip. Panics if info
+ * is not yet ready for reading.
+ *
+ * @return duration in microseconds
+ */
+ TTimeIntervalMicroSeconds Duration() const;
+
+ /**
+ * Returns the channel mode of the audio if applicable.
+ *
+ * @return channel mode
+ */
+ TVedAudioChannelMode ChannelMode() const;
+
+ /**
+ * Returns the sampling rate.
+ *
+ * @return sampling rate in hertz
+ */
+ TInt SamplingRate() const;
+
+ /**
+ * Returns the bitrate mode.
+ *
+ * @return bitrate mode
+ */
+ TVedBitrateMode BitrateMode() const;
+
+ /**
+ * Returns the bitrate.
+ *
+ * @return bitrate in bits per second
+ */
+ TInt Bitrate() const;
+
+
+ /**
+ * Comparison method for sorting arrays of audio clip infos.
+ *
+ * @param c1 first info to compare
+ * @param c2 second info to compare
+ *
+ * @return
+ */
+ static TInt Compare(const CVedAudioClipInfoImp& c1, const CVedAudioClipInfoImp& c2);
+
+ /* Visualization methods. */
+
+ /**
+ * Generates a visualization of the audio clip. The visualization consists
+ * of an array of values with the specified resolution. This method is
+ * asynchronous. The visualization is generated in background and the observer
+ * is notified when the visualization is complete. This method panics if info
+ * is not yet ready for reading or the resolution is illegal.
+ *
+ * Possible leave codes:
+ * - <code>KErrNoMemory</code> if memory allocation fails
+ *
+ * @param aObserver observer to be notified when the visualization is completed
+ * @param aResolution resolution of the visualization (i.e., the number of values
+ * in the visualization array)
+ * @param aPriority priority of the visualization
+ */
+ void GetVisualizationL(MVedAudioClipVisualizationObserver& aObserver,
+ TInt aResolution, TInt aPriority);
+
+ /**
+ * Cancels visualization generation. If no visualization is currently being
+ * generated, the function does nothing.
+ */
+ void CancelVisualizationL();
+
+
+ /**
+ * Factory constructor for constucting the info without creating an audio clip
+ * info object, using the supplied audio clip pointer instead.This variant is for
+ * use in movie.
+ *
+ * @param aAudClip audio clip instance
+ * @param aObserver observer to notify when clip info is ready
+ */
+ static CVedAudioClipInfoImp* NewL(CAudClip* aAudClip, MVedAudioClipInfoObserver& aObserver);
+
+ /**
+ * Factory constructor for constucting the info without creating an audio clip
+ * info object, using the supplied audio clip pointer instead.This variant is for
+ * use in movie. Leaves the created instance on the cleanup stack.
+ *
+ * @param aAudClip audio clip instance
+ * @param aObserver observer to notify when clip info is ready
+ */
+ static CVedAudioClipInfoImp* NewLC(CAudClip* aAudClip, MVedAudioClipInfoObserver& aObserver);
+
+ /**
+ * Returns the file handle of the clip. Panics if info
+ * is not yet ready for reading.
+ *
+ * @return file name
+ */
+ RFile* FileHandle() const;
+
+private: // Functions from base classes
+
+ /* From base class MAudVisualizationObserver */
+
+ void NotifyClipInfoVisualizationCompleted(const CAudClipInfo& aClipInfo,
+ TInt aError, TInt8* aVisualization, TInt aSize);
+
+ void NotifyClipInfoVisualizationStarted(const CAudClipInfo& aClipInfo,
+ TInt aError);
+
+ void NotifyClipInfoVisualizationProgressed(const CAudClipInfo& aClipInfo,
+ TInt aPercentage);
+
+ /* From base class MAudClipInfoObserver */
+ void NotifyClipInfoReady(CAudClipInfo& aInfo, TInt aError);
+
+private:
+
+ // Audio clip info from Audio Engine
+ CAudClipInfo* iAudClipInfo;
+
+ // Audio clip if this clip info is included in a song
+ CAudClip* iAudClip;
+
+ // Operation class
+ CVedAudioClipInfoOperation* iOperation;
+
+ // Audio properties
+ TAudFileProperties iAudioProperties;
+
+ // Whether we are ready to return info.
+ TBool iReady;
+
+ MVedAudioClipInfoObserver* iObserver;
+
+ // Visualization observer
+ MVedAudioClipVisualizationObserver* iVisualizationObserver;
+ friend class CVedAudioClip;
+ friend class CVedMovieImp;
+ };
+
+class CVedAudioClipInfoOperation : public CActive
+ {
+public:
+ static CVedAudioClipInfoOperation* NewL(CVedAudioClipInfoImp* aInfo, MVedAudioClipInfoObserver& aObserver);
+ ~CVedAudioClipInfoOperation();
+
+protected:
+ TInt RunError(TInt aError);
+ void RunL();
+ void DoCancel();
+ CVedAudioClipInfoOperation(CVedAudioClipInfoImp* aInfo,MVedAudioClipInfoObserver& aObserver);
+ void ConstructL();
+
+private:
+ MVedAudioClipInfoObserver& iObserver;
+ CVedAudioClipInfoImp* iInfo;
+ };
+#endif // __VEDAUDIOCLIPINFOIMP_H__