breakdeps/mmfclientutility.h
changeset 129 4a58d534bdaa
parent 128 8338c5c25b5b
child 130 40dccd6dd558
--- a/breakdeps/mmfclientutility.h	Fri Nov 12 12:01:15 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,510 +0,0 @@
-// Copyright (c) 2002-2009 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:
-// Client utility functions
-// 
-//
-
-#ifndef __MMF_CLIENT_UTILITY_H__
-#define __MMF_CLIENT_UTILITY_H__
-
-#include <mda/common/audio.h>
-#include <mda/common/gsmaudio.h>
-#include <mda/client/utility.h>
-#include <mmf/common/mmffourcc.h>
-#include <mmfformatimplementationuids.hrh>
-#include "mmf/common/mmfcontrollerpluginresolver.h"
-#include <mmf/server/mmffile.h>
-#include <mmf/server/mmfdes.h>
-#include "mmf/common/mmfcontroller.h"
-
-#include <f32file.h>
-#include <caf/content.h>
-#include <caf/data.h>
-#include <mmf/common/mmfstandardcustomcommands.h>
-#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
-#include <mmf/common/mmfstandardcustomcommandsenums.h>
-#include <mmf/common/mmfstandardcustomcommandsimpl.h>
-#endif
-#ifdef SYMBIAN_BUILD_GCE
-#include <mmf/common/mmfvideosurfacecustomcommands.h>
-#endif
-
-class CMMSourceSink; // declared here.
-
-NONSHARABLE_CLASS( CMMSourceSink ): public CBase
-	{
-public:
-	IMPORT_C static CMMSourceSink* NewL(TUid aUid, const TDesC8& aDescriptor);
-	IMPORT_C static CMMSourceSink* NewLC(TUid aUid, const TDesC8& aDescriptor);
-
-	virtual ~CMMSourceSink();
-	virtual TUid SourceSinkUid() const;
-	virtual const TDesC8& SourceSinkData() const;
-	
-	virtual TBool CarryingFileHandle() const;
-	
-	virtual void EvaluateIntentL();
-protected:
-	CMMSourceSink(TUid aUid);	
-	
-	
-private:
-	void ConstructL(const TDesC8& aDescriptor);
-	
-	const TUid iUid;
-	HBufC8* iBuf;
-	};
-
-	
-
-
-class CMMFileSourceSink; // declared here.	
-	
-NONSHARABLE_CLASS( CMMFileSourceSink ): public CMMSourceSink
-	{
-public:
-	IMPORT_C static CMMFileSourceSink* NewL(TUid aUid, const RFile& aFile);
-	IMPORT_C static CMMFileSourceSink* NewLC(TUid aUid, const RFile& aFile);
-
-	IMPORT_C static CMMFileSourceSink* NewL(TUid aUid, const TMMSource& aMMSource);			
-	IMPORT_C static CMMFileSourceSink* NewLC(TUid aUid, const TMMSource& aMMSource);
-
-	const TDesC& UniqueId() const {return *iUniqueId;}
-
-	virtual ~CMMFileSourceSink();
-	
-	const TDesC& FileName() const {return *iFileName;}
-	const TDesC8& SourceSinkData() const;
-		
-	IMPORT_C void EvaluateIntentL(ContentAccess::TIntent aIntent);
-	virtual void EvaluateIntentL();
-	
-	TBool CarryingFileHandle() const;
-		
-	TBool UsingFileHandle() const {return iUsingFileHandle;};
-	const RFile& FileHandle() const {return iHandle;};
-protected:
-	CMMFileSourceSink(TUid aUid);
-	
-private:
-	void ConstructL(const TMMSource& aSource);
-	void DoCreateFileSourceConfigDataL();
-	void ConstructL(const RFile& aFile);
-	void DoCreateFileHandleSourceConfigDataL();
-	
-	TBool iUsingFileHandle;
-	RFile iHandle;
-	HBufC* iFileName;
-	HBufC8* iSourceSinkData;
-	HBufC* iUniqueId;
-	ContentAccess::TIntent iIntent;
-
-	TBool	iEnableUI;
-	};
-	
-
-
-class CMMFMdaObjectStateChangeObserverCallback; // declared here.
-/**
-Active object utility class to allow the callback to be called asynchronously.
-This should help prevent re-entrant code in clients of the mediaframework.
-*/
-NONSHARABLE_CLASS( CMMFMdaObjectStateChangeObserverCallback ): public CActive
-	{
-public:
-	IMPORT_C static CMMFMdaObjectStateChangeObserverCallback* NewL(MMdaObjectStateChangeObserver& aCallback);
-	virtual ~CMMFMdaObjectStateChangeObserverCallback();
-	IMPORT_C void CallBack(CBase* aObject, TInt aPreviousState, TInt aCurrentState, TInt aErrorCode);
-private:
-	CMMFMdaObjectStateChangeObserverCallback(MMdaObjectStateChangeObserver& aCallback);
-	void RunL();
-	void DoCancel();
-private:
-	MMdaObjectStateChangeObserver& iCallback;
-	CBase* iObject;
-	TInt iPreviousState;
-	TInt iCurrentState;
-	TInt iErrorCode;
-	};
-
-class CMMFClientUtility; // declared here.
-
-NONSHARABLE_CLASS( CMMFClientUtility )
-	{
-public:
-	IMPORT_C static TUid ConvertMdaFormatUidToECOMWrite(TUid aMdaFormatUid); 
-	IMPORT_C static TUid ConvertMdaFormatUidToECOMRead(TUid aMdaFormatUid); 
-	IMPORT_C static TFourCC ConvertMdaCodecToFourCC(TMdaPackage& aCodec);
-	IMPORT_C static TInt GetFileHeaderData(const TDesC& aFileName, TDes8& aHeaderData, TInt aMaxLength);
-	IMPORT_C static HBufC8* GetFileExtensionL(const TDesC& aFileName);
-	static void PrioritiseControllersL(
-		const RMMFControllerImplInfoArray& aControllers, 
-		const TDesC8& aHeaderDataPlayback, 
-		const TDesC8& aFileExtensionPlayback, 
-		const TDesC8& aHeaderDataRecord, 
-		const TDesC8& aFileExtensionRecord, 
-		RMMFControllerImplInfoArray& aPrioritisedControllers);
-	static TInt GetBestMatchL(const CMMFFormatImplementationInformation* format, const TDesC8& aHeaderData, const TDesC8& aFileExtension);
-
-private:
-	CMMFClientUtility();
-	};
-
-class CMMFUtilityFileInfo; // declared here.
-class RMMFDRMPluginServerProxy;
-
-NONSHARABLE_CLASS( CMMFUtilityFileInfo ): public CBase
-	{
-public:
-
-	static CMMFUtilityFileInfo* NewL(TMMSource& aSource, TBool aSecureDRMMode = EFalse);
-	static CMMFUtilityFileInfo* NewLC(TMMSource& aSource, TBool aSecureDRMMode = EFalse);
-
-	~CMMFUtilityFileInfo();
-	
-	TBool GetFileMimeTypeL(TDes8& aMimeType);
-	void  GetFileHeaderDataL(TDes8& aHeaderData, TInt aMaxLength);
-	TInt EvaluateIntent(ContentAccess::TIntent aIntent);
-
-private:
-	CMMFUtilityFileInfo();
-
-	void ConstructL(const TMMSource& aSource, TBool aSecureDRMMode);
-
-private:
-	ContentAccess::CData* iData;
-	RMMFDRMPluginServerProxy* iDrmPluginServer;
-	};
-
-inline CMMFUtilityFileInfo::CMMFUtilityFileInfo()
-	{
-	};
-
-/**
- * Mixin class that the user of the class CMMFFindAndOpenController must derive from.
- * @internalComponent
- */
-class MMMFFindAndOpenControllerObserver
-	{
-public:
-	/**
-	 * Callback function to indicate the success or failure
-	 * of an attempt to find and open a suitable controller and 
-	 * to add a source and sink.
-	 * @see CMMFFindAndOpenController
-	 * 
-	 * @param aError 
-	 *        Indicates whether a controller has been opened sucessfully
-	 *        This is passed by reference, mainly for the audio recorder utility 
-	 *        which opens two controllers: if the secondary controller (which is
-	 *        always opened first) fails to open, then the audio recorder utility
-	 *        may choose to set aError = KErrNone in the MfaocComplete() callback 
-	 *        to indicate to CFindAndOpenControler() that it should continue 
-	 *        to open the primary controller, even though opening the secondary failed.
-	 * @param aController
-	 *        A pointer to the controller that has been opened or has failed to open
-	 *        This is mainly for the audio recorder utility to indicate  
-	 *        which controller (primary or secondary) has been opened.
-	 * @param aControllerUid
-	 *        the UID of the controller that has been opened
-	 * @param aSourceHandle
-	 *        a pointer to the source handle
-	 * @internalComponent
-	 *        a pointer to the sink handle
-	 */
-	virtual void MfaocComplete(
-		TInt& aError, 
-		RMMFController* aController, 
-		TUid aControllerUid = KNullUid, 
-		TMMFMessageDestination* aSourceHandle = NULL, 
-		TMMFMessageDestination* aSinkHandle = NULL) = 0;
-	};
-
-
-class CMMFFindAndOpenController; // declared here.
-/**
- * Utility class used by the MMF client API classes.
- * Finds and opens a suitable controller and adds a source and a sink 
- * asynchronously. Completion is indicated asynchronously 
- * using the MMMFFindAndOpenControllerObserver mixin class.
- *
- * @internalComponent
- */
-NONSHARABLE_CLASS( CMMFFindAndOpenController ): public CActive, public MMMFAddDataSourceSinkAsyncObserver
-	{
-public:
-	enum TControllerMode
-		{
-		EPlayback,
-		ERecord,
-		EConvert
-		};
-		
-	enum TControllerNumber
-		{
-		EPrimaryController,
-		ESecondaryController
-		};
-
-	class TSourceSink
-		{
-	public:
-		IMPORT_C TSourceSink(TUid aUid, const TDesC8& aData = KNullDesC8);
-		IMPORT_C TSourceSink(TUid aUid, const RFile& aFile);
-		
-		TUid iUid;
-		const TDesC8& iConfigData;
-		TBool iUseFileHandle;
-		RFile iFileHandle;
-		};
-
-
-
-
-public:
-	IMPORT_C static CMMFFindAndOpenController* NewL(MMMFFindAndOpenControllerObserver& aObserver);
-	virtual ~CMMFFindAndOpenController();
-	
-	// from CActive
-	virtual void DoCancel();
-	virtual void RunL();
-
-	// from MMMFAddDataSourceSinkAsyncObserver
-	virtual void MadssaoAddDataSourceSinkAsyncComplete(TInt aError, const TMMFMessageDestination& aHandle);
-	
-	IMPORT_C void Configure(
-		TUid aMediaId, 
-		TMMFPrioritySettings aPrioritySettings,
-		CMMFPluginSelectionParameters::TMediaIdMatchType aMediaIdMatchType = CMMFPluginSelectionParameters::EAllowOnlySuppliedMediaIds);
-	
-	IMPORT_C void ConfigureController(RMMFController& aController, CMMFControllerEventMonitor& aEventMonitor, TControllerMode aControllerMode = EPlayback);
-	IMPORT_C void ConfigureSecondaryController(RMMFController& aController, CMMFControllerEventMonitor& aEventMonitor, TControllerMode aControllerMode = EPlayback);
-	
-	IMPORT_C void UseSharedHeap();
-	
-	IMPORT_C void ConfigureSourceSink(
-		TSourceSink aSource,
-		TSourceSink aSink);
-	IMPORT_C void ConfigureSecondarySourceSink(
-		TSourceSink aSource,
-		TSourceSink aSink);
-	
-	IMPORT_C void ConfigureSourceSink(
-		const TMMSource& aSource, 
-		TSourceSink aSink);
-	
-	IMPORT_C void OpenByFileSource(const TMMSource& aFileSource, const TDesC& aFileNameSecondary = KNullDesC);	
-
-	IMPORT_C void OpenByFormatUid(TUid aFormatUid, TUid aFormatUidSecondary = KNullUid);
-	IMPORT_C void OpenByDescriptor(const TDesC8& aDescriptor);
-	IMPORT_C void OpenByUrl(const TDesC& aUrl, TInt aIapId, const TDesC8& aMimeType);
-	IMPORT_C void OpenByControllerUid(TUid aControllerUid, TUid aSecondaryControllerUid = KNullUid);
-	IMPORT_C void ReOpen();
-	IMPORT_C void Close();
-
-	IMPORT_C static TMMFFileConfig GetConfigFile(const TDesC& aFileName);
-	IMPORT_C static TMMFDescriptorConfig GetConfigDescriptor(const TDesC8& aDescriptor);
-	IMPORT_C void CloseConfig();
-	IMPORT_C static void GetConfigUrlL(CBufFlat*& aUrlCfgBuffer, const TDesC& aUrl, TInt aIapId);
-	
-	/** made public to check for further selected controllers in the queue */
-	inline TInt ControllerIndex() const;
-	inline TInt ControllerCount() const; 
-	
-	/** made public to stop checking for further selected controllers in the queue */
-	inline TBool StopTryLoadController() const;
-	IMPORT_C void SetInitScreenNumber(TInt aScreenNumber, RMMFVideoSetInitScreenCustomCommands* aVideoSetInitScreenCustomCommands);
-#ifdef SYMBIAN_BUILD_GCE
-	inline void SetSurfaceMode(TBool aUseSurface, RMMFVideoPlaySurfaceSupportCustomCommands* aVideoPlaySurfaceSupportCustomCommands);
-	inline TInt SurfaceSupported();
-#endif
-	
-private:
-	class CConfig: public CBase
-		{
-	public:
-		CConfig();
-		~CConfig();
-		void Close();
-	public:
-		RMMFController* iController;				// not owned
-		CMMFControllerEventMonitor* iEventMonitor;	// not owned
-		
-		/** indicates whether this controller is being used for 
-		playback, recording or converting */
-		TControllerMode iControllerMode;
-		
-		CMMSourceSink* iSource;
-		CMMSourceSink* iSink;
-		TUid iControllerUid;
-		};
-
-	CMMFFindAndOpenController(MMMFFindAndOpenControllerObserver& aObserver);
-	void ConstructL();
-
-	void Init();
-
-	void ConfigureSourceSink(
-		CConfig& config,
-		TSourceSink aSource, 
-		TSourceSink aSink);
-		
-	void ConfigureSourceSink(
-		CConfig& config,
-		const TMMSource& aSource, 
-		TSourceSink aSink);
-
-
-	void ConfigureController(
-		CConfig& config,
-		RMMFController& aController, 
-		CMMFControllerEventMonitor& aEventMonitor,
-		TControllerMode aControllerMode);
-
-	void CloseController();
-
-	void OpenPrimaryController(void);
-
-	void KickState();
-	void Process();
-	void SendError(TInt aError = KErrNone, TBool aForcedError = EFalse);
-	void SchedSendError(TInt aError = KErrNone);
-	void BuildControllerListFileNameL();
-	void BuildControllerListDescriptorL();
-	void BuildControllerListUrlL();
-	void BuildControllerListFormatL();
-	void TryNextController();
-	
-	CMMSourceSink* CreateSourceSinkL(const TSourceSink& aParams);
-	CMMSourceSink* CreateSourceSinkL(const TMMSource& aSource);
-
-	CMMFUtilityFileInfo* CreateFileInfoL(TBool aSecureDRMMode = EFalse);
-	void UseSecureDRMProcessL(TBool& aIsSecureDrmProcess);
-private:
-	/** primary controller details */
-	CConfig* iPrimaryConfig;
-	/** secondary controller details */
-	CConfig* iSecondaryConfig;
-	/** points to either iPrimaryConfig or iSecondaryConfig */
-	CConfig* iCurrentConfig;	// not owned
-
-	enum TMode
-		{
-		EOpenByControllerUid,
-		EOpenByFileName,
-		EOpenByDescriptor,
-		EOpenByUrl,
-		EOpenByFormatUid
-		};
-	TMode iMode;
-
-	/** indicates what state the state machine is in */
-	enum TState
-		{
-		EIdle,
-		EBuildControllerList,
-		EOpenController,
-		EAddSource,
-		EAddSink,
-		EWaitingForSource,
-		EWaitingForSink,
-		ESendError
-		};
-	TState iState;
-
-	MMMFFindAndOpenControllerObserver& iObserver;
-	CMMFAddDataSourceSinkAsync* iAddDataSourceSinkAsync;
-
-	TInt iControllerIndex;
-	TInt iControllerCount; 
-
-	TFileName iFileNameSecondary;	// for converting
-
-	TFileName iFileName;
-	TBool iUseFileHandle;
-	TBool iOwnFileHandle;
-	HBufC* iUniqueId; 
-	RFile iFileHandle;
-	ContentAccess::TIntent iIntent;
-
-	HBufC* iUrl;
-	HBufC8* iMimeType;
-	TPtr8 iDescriptor;
-	TInt iIapId;
-	TUid iFormatUid;
-	TUid iFormatUidSecondary;	// for converting
-
-	TUid iMediaId;
-	TMMFPrioritySettings iPrioritySettings;
-	CMMFPluginSelectionParameters::TMediaIdMatchType iMediaIdMatchType;
-
-	RMMFControllerImplInfoArray iControllers;
-	RMMFControllerImplInfoArray iPrioritisedControllers;
-
-	// if this is non-null, then it points to an element in
-	// either iControllers or iPrioritisedControllers
-	CMMFControllerImplementationInformation* iControllerImplInfo;	// not owned
-
-	TControllerMode iControllerMode;
-	TBool iSourceSinkConfigured;
-	TInt iError;
-
-	TMMFMessageDestination iSourceHandle;
-	TMMFMessageDestination iSinkHandle;
-	TBool iEnableUi;
-	
-	TBool iUseSharedHeap; // should new controllers use shared heaps?
-	TBool iStopTryLoadController; //stop to try loading the selected conrollers from the list
-	RMMFVideoSetInitScreenCustomCommands* iVideoSetInitScreenCustomCommands;
-	TInt iScreenNumber;
-	TBool iHasDrmCapability;
-	TBool iUsingSecureDrmProcess;	
-
-#ifdef SYMBIAN_BUILD_GCE
-	RMMFVideoPlaySurfaceSupportCustomCommands* iVideoPlaySurfaceSupportCustomCommands;
-	TBool iUseVPU2;
-	TInt iSurfaceSupported;
-#endif	
-	};
-	
-inline TInt CMMFFindAndOpenController::ControllerIndex() const
-	{
-	return iControllerIndex;
-	}
-	
-inline TInt CMMFFindAndOpenController::ControllerCount() const
-	{
-	return iControllerCount;
-	}
-	
-inline TBool CMMFFindAndOpenController::StopTryLoadController() const
-	{
-	return iStopTryLoadController;
-	}
-
-#ifdef SYMBIAN_BUILD_GCE
-inline void CMMFFindAndOpenController::SetSurfaceMode(TBool aUseVPU2, RMMFVideoPlaySurfaceSupportCustomCommands* aVideoPlaySurfaceSupportCustomCommands)
-	{
-	iUseVPU2 = aUseVPU2;
-	iSurfaceSupported = KErrNone;
-	iVideoPlaySurfaceSupportCustomCommands = aVideoPlaySurfaceSupportCustomCommands;
-	}
-	
-inline TInt CMMFFindAndOpenController::SurfaceSupported()
-	{
-	return iSurfaceSupported;
-	}
-#endif	// SYMBIAN_BUILD_GCE
-
-#endif // __MMF_CLIENT_UTILITY_H__