diff -r 000000000000 -r 951a5db380a0 videoeditorengine/audioeditorengine/inc/AudClipInfo.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoeditorengine/audioeditorengine/inc/AudClipInfo.h Fri Jan 29 14:08:33 2010 +0200 @@ -0,0 +1,369 @@ +/* +* 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 __AUDCLIPINFO_H__ +#define __AUDCLIPINFO_H__ + + +#include +#include + +#include "AudCommon.h" +#include "AudObservers.h" + + + +/* +* Forward declarations. +*/ +class CAudClipInfoOperation; +class CAudProcessor; + +/** +* Utility class for getting information about audio clip files. +*/ +class CAudClipInfo : public CBase + + { + +public: + + /* Constructors & destructor. */ + + /** + * Constructs a new CAudClipInfo object to get information + * about the specified audio clip file. The specified observer + * is notified when info is ready for reading. This method + * may leave if no resources are available to construct + * a new object. + * + * Possible leave codes: + * - KErrNoMemory if memory allocation fails + * - KErrNotSupported if the given file format is not supported + * or is invalid + * + * @param aFileName name of audio clip file + * @param aObserver observer to notify when info is ready for reading + * + * @return pointer to a new CAudClipInfo instance + */ + IMPORT_C static CAudClipInfo* NewL(const TDesC& aFileName, MAudClipInfoObserver& aObserver); + + /** + * Constructs a new CAudClipInfo object to get information + * about the specified audio clip file. The constructed object + * is left in the cleanup stack. The specified observer + * is notified when info is ready for reading. This method + * may leave if no resources are available to construct a new + * object. + * + * Possible leave codes: + * - KErrNoMemory if memory allocation fails + * - KErrNotSupported if the given file format is not supported + * or is invalid + * + * @param aFileName name of video clip file + * @param aObserver observer to notify when info is ready for reading + * + * @return pointer to a new CAudClipInfo instance + */ + IMPORT_C static CAudClipInfo* NewLC(const TDesC& aFileName, MAudClipInfoObserver& aObserver); + + + /** + * Returns the properties of this audio file + * + * @return properties + */ + IMPORT_C TAudFileProperties Properties() const; + + /** + * Generates a visualization of the current clip. + * + * Asynchronous operation; MAudVisualizationObserver::NotifyClipVisualizationCompleted + * is called as soon as the visualization process has completed. This method leads to + * memory reservation, so once NotifyClipVisualizationCompleted has occurred, + * the caller is responsible for memory releasing. + * + * Possible leave codes: + * - KErrNoMemory if memory allocation fails + * + * @param aObserver observer to be notified when visualization is completed + * @param aSize the size of aVisualization array (time resolution). + * @param aPriority priority + * + */ + IMPORT_C void GetVisualizationL(MAudVisualizationObserver& aObserver, + TInt aSize, TInt aPriority) const; + + /** + * Cancels visualization generation. If no visualization is currently being + * generated, the function does nothing. + */ + IMPORT_C void CancelVisualization(); + + /** + * Returns the file name of the clip. Panics if info + * is not yet ready for reading. + * + * @return file name + */ + IMPORT_C TPtrC FileName() const; + + /** + * Destroys the object and releases all resources. + */ + IMPORT_C ~CAudClipInfo(); + + /** + * Constructs a new CAudClipInfo object to get information + * about the specified audio clip file. The specified observer + * is notified when info is ready for reading. This method + * may leave if no resources are available to construct + * a new object. + * + * Possible leave codes: + * - KErrNoMemory if memory allocation fails + * - KErrNotSupported if the given file format is not supported + * or is invalid + * + * @param aFileHandle file handle of audio clip file + * @param aObserver observer to notify when info is ready for reading + * + * @return pointer to a new CAudClipInfo instance + */ + IMPORT_C static CAudClipInfo* NewL(RFile* aFileHandle, MAudClipInfoObserver& aObserver); + + /** + * Constructs a new CAudClipInfo object to get information + * about the specified audio clip file. The constructed object + * is left in the cleanup stack. The specified observer + * is notified when info is ready for reading. This method + * may leave if no resources are available to construct a new + * object. + * + * Possible leave codes: + * - KErrNoMemory if memory allocation fails + * - KErrNotSupported if the given file format is not supported + * or is invalid + * + * @param aFileHandle file handle of audio clip file + * @param aObserver observer to notify when info is ready for reading + * + * @return pointer to a new CAudClipInfo instance + */ + IMPORT_C static CAudClipInfo* NewLC(RFile* aFileHandle, MAudClipInfoObserver& aObserver); + + /** + * Returns the file handle of the clip. Panics if info + * is not yet ready for reading. + * + * @return file name + */ + IMPORT_C RFile* FileHandle() const; + + +private: + + // C++ constructor + CAudClipInfo(); + + // ConstructL + // parameters: see NewL() + void ConstructL(const TDesC& aFileName, MAudClipInfoObserver& aObserver); + + void ConstructL(RFile* aFileHandle, MAudClipInfoObserver& aObserver); + +private: + + // properties of this clip + TAudFileProperties* iProperties; + + // file name of this clip + HBufC* iFileName; + + // file handle of this clip + RFile* iFileHandle; + + // flag to indicate whether info class is ready + TBool iInfoReady; + + // operation class + CAudClipInfoOperation* iOperation; + + // friends + friend class CAudClipInfoOperation; + friend class CAudClip; + + + }; + + + +/** + * Observer for notifying that audio clip info + * is ready for reading. + * + */ +class MProcClipInfoObserver + { +public: + /** + * Called to notify that audio clip info is ready + * for reading. + * + * 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 type + * + * @param aError KErrNone if info is ready + * for reading; one of the system wide + * error codes if reading file failed + */ + virtual void NotifyClipInfoReady(TInt aError) = 0; + }; + + + +/** + * Internal class for reading information from the audio clip file. + * Implements a simple object + * to report to the audio clip info observer certain common error conditions + * that would otherwise leave. + */ +class CAudClipInfoOperation : public CBase, + public MProcClipInfoObserver, + public MAudVisualizationObserver + { + +public: + + + /* + * Constructor + * + * + * @param aInfo CAudClipInfo class that owns this object + * @param aObserver observer for callbacks + */ + + static CAudClipInfoOperation* NewL(CAudClipInfo* aInfo, + MAudClipInfoObserver& aObserver); + + /* + * Destructor + */ + ~CAudClipInfoOperation(); + + + // from base class MProcClipInfoObserver + void NotifyClipInfoReady(TInt aError); + + // from base class MAudVisualizationObserver + + void NotifySongVisualizationCompleted(const CAudSong& aSong, + TInt aError, + TInt8* aVisualization, + TInt aSize); + + void NotifyClipInfoVisualizationCompleted(const CAudClipInfo& aClipInfo, + TInt aError, + TInt8* aVisualization, + TInt aSize); + + void NotifySongVisualizationStarted(const CAudSong& aSong, + TInt aError); + + void NotifyClipInfoVisualizationStarted(const CAudClipInfo& aClipInfo, + TInt aError); + + void NotifySongVisualizationProgressed(const CAudSong& aSong, + TInt aPercentage); + + void NotifyClipInfoVisualizationProgressed(const CAudClipInfo& aClipInfo, + TInt aPercentage); + + /** + * Generates a visualization of the current clip. + * + * Asynchronous operation; MAudVisualizationObserver::NotifyClipVisualizationCompleted + * is called as soon as the visualization process has completed. This method leads to + * memory reservation, so once NotifyClipVisualizationCompleted has occurred, + * the caller is responsible for memory releasing. + * + * Possible leave codes: + * - KErrNoMemory if memory allocation fails + * + * @param aObserver observer to be notified when visualization is completed + * @param aSize the size of aVisualization array (time resolution). + * @param aPriority priority + * + */ + + void StartVisualizationL(MAudVisualizationObserver& aObserver, TInt aSize, TInt aPriority); + + /** + * Cancels visualization generation. If no visualization is currently being + * generated, the function does nothing. + */ + + void CancelVisualization(); + + /** + * Called to start getting file properties + * + * NotifyClipInfoReady is called as soon as the operation completes + */ + void StartGetPropertiesL(); + + +private: + + CAudClipInfoOperation(CAudClipInfo* aInfo, + MAudClipInfoObserver& aObserver); + void ConstructL(); + + +private: + + // info class that owns this object + CAudClipInfo* iInfo; + + // observer for clip info callbacks + MAudClipInfoObserver* iObserver; + + // observer for visualization callbacks + MAudVisualizationObserver* iVisualizationObserver; + + // processor class owned by this object + CAudProcessor* iProcessor; + + friend class CAudClipInfo; + friend class CAudClip; + + }; + + + + +#endif