epoc32/include/mmf/server/mmfdevsoundcustominterfacesupport.h
branchSymbian2
changeset 2 2fe1408b6811
child 4 837f303aceeb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/epoc32/include/mmf/server/mmfdevsoundcustominterfacesupport.h	Tue Mar 16 16:12:26 2010 +0000
@@ -0,0 +1,244 @@
+
+// MmfDevSoundCustomInterfaceSupport.h
+
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef MMFDEVSOUNDCUSTOMINTERFACESUPPORT_H
+#define MMFDEVSOUNDCUSTOMINTERFACESUPPORT_H
+
+const TUid KMmfUidDevSoundAudioResourceCustomInterface = {0x101FD9F3};
+const TUid KMmfUidDevSoundEmptyBuffersCustomInterface = {0x1027379c};
+const TUid KMmfUidDevSoundCancelInitializeCustomInterface = {0x102834D3};
+const TUid KMmfUidDevSoundAudioClientThreadInfoCustomInterface = {0x102834A7};
+
+/**
+@publishedAll
+@released
+
+Custom Interface providing support for AutoPauseResume Register, Cancel, GetResourceNotificationData and WillResumePlay.
+*/
+
+class MAutoPauseResumeSupport
+	{
+public:
+	/**
+	Registers the event for notification when resource is avaliable.
+
+	@param aEventType
+		The event which the client is notified of.
+		
+	@param aNotificationRegistrationData
+		Notification registration specific data, which has been reserved for future use.
+
+	@return An error code indicating if the function call was successful. KErrNone on success, otherwise
+	        another of the system-wide error codes.
+	*/
+	virtual TInt RegisterAsClient(TUid aEventType, const TDesC8& aNotificationRegistrationData = KNullDesC8)=0;
+	
+	/**
+	Cancels the registered notification event.
+
+	@param  aEventType
+		The event to notify the client.
+
+	@return An error code indicating if the function call was successful. KErrNone on success, otherwise
+	        another of the system-wide error codes.
+	*/
+	virtual TInt CancelRegisterAsClient(TUid aEventType)=0;
+	/**
+	Gets the notification data for the event.
+	
+	@param  aEventType
+		The event which the client is notified of.
+		
+	@param aNotificationData
+		The notification data for the client to resume playing. The actual data depends on the event type.
+		Note that for the event type 'KMMFEventCategoryAudioResourceAvailable' the package buffer returned
+		is TMMFTimeIntervalMicroSecondsPckg, but the contents should be converted to an integer and
+		interpreted as the data returned is samples played, but not as a microsecond value.
+
+	@return An error code indicating if the function call was successful. KErrNone on success, otherwise
+	        another of the system-wide error codes.
+	*/
+	virtual TInt GetResourceNotificationData(TUid aEventType,TDes8& aNotificationData)=0;
+	/**
+	Waits for the client to resume the play even after the default timer expires.
+
+	@return An error code indicating if the function call was successful. KErrNone on success, otherwise
+	        another of the system-wide error codes.
+	*/
+	virtual TInt WillResumePlay()=0;
+	};
+
+/**
+@publishedPartner
+@prototype
+
+Custom Interface class providing support for emptying the play buffers.
+*/
+class MMMFDevSoundEmptyBuffers
+	{	
+public:
+	
+	/**
+	Empties the play buffers below DevSound without causing the codec to be deleted.
+
+	@return An error code indicating if the function call was successful. KErrNone on success, KErrNotSupported 
+			if called in record mode, otherwise another of the system-wide error codes.
+	*/
+	virtual TInt EmptyBuffers() = 0;
+	};	
+
+/**
+@publishedPartner
+@prototype
+
+Custom Interface class providing support for canceling initialization.
+*/
+class MMMFDevSoundCancelInitialize
+	{	
+public:
+	
+	/** Cancels the initialization process of a CMMFDevSound object
+
+	@return An error code indicating if the function call was successful. 
+			KErrNone on success,
+			KerrNotReady if this is called before InitializeL() call or after      
+			the object has been initialized, 
+	*/
+	virtual TInt CancelInitialize() = 0;
+	};	
+
+/**
+@internalComponent
+
+The class is a mixin and is intended to support for closing the Mux and Demux pair in a
+DevSound Custom Interface. The function encapsulated by this class is called whenever the 
+MMMFDevSoundCustomInterfaceDeMuxPlugin::RefreshL method leaves.
+*/
+class MMMFDevSoundCustomInterfaceObserver
+	{	
+public:
+	
+	/**
+	Closes the Mux and Demux pair of a DevSound Custom Interface.
+	*/
+	virtual void CloseCustomInterface(TInt aIndex) = 0;
+	};	
+
+/**
+@publishedPartner
+@released
+
+Custom Interface class providing support for setting the client thread info for devsound.
+*/
+class MAudioClientThreadInfo
+	{	
+public:
+	/**
+	Set client thread info for devsound if plugin implementation requires this info
+	
+	@param  aTid the required thread Id
+	@return An error code indicating if the function call was successful.
+
+	@capability MultimediaDD
+		A process requires MultimediaDD capability to make this call. 
+	*/
+	virtual TInt SetClientThreadInfo(TThreadId aTid) = 0;
+	};	
+
+/*****************************************************************************/
+/**
+UID associated with the Custom interface MMMFDevSoundGetTimePlayed
+
+@publishedPartner
+@released
+*/
+const TUid KMmfUidDevSoundTimePlayedCustomInterface = {0x10285CE4};
+
+/**
+This class provides an interface to querying current play time from DevSound.
+
+@publishedPartner
+@released
+*/	
+class MMMFDevSoundTimePlayed
+	{
+public:
+	/** Retrieves the current play time from the audio renderer.
+	@param  aTime
+	        A reference to TTimeIntervalMicroSeconds object which will be filled with the current play time by this function.
+	@return An error code indicating if the function call was successful. 
+			KErrNone on success,
+			KErrNotSupported if the underlying HwDevice does not support this custominterface
+	*/
+	virtual TInt GetTimePlayed(TTimeIntervalMicroSeconds& aTime) = 0;
+	};
+
+/*****************************************************************************/
+/**
+UID associated with the Custom interface MMMFDevSoundQueryIgnoresUnderflow
+
+@publishedPartner
+@released
+*/
+const TUid KMmfUidDevSoundQueryIgnoresUnderflowCustomInterface = {0x10285E7B};
+
+/**
+This class provides an interface for querying DevSound whether it ignores the underflow errors from the sound driver.
+@publishedPartner
+@released
+*/	
+class MMMFDevSoundQueryIgnoresUnderflow
+	{
+public:
+	/** Queries the devsound whether it ignores the underflow errors from the sound driver
+	@return ETrue 	if the devsound ignores all the underflow errors from the sound driver except for the last buffer. That means DevSound
+					propagates the underflow error from sound driver to its clients only when client sets the last buffer flag on the CMMFBuffer type buffer.
+			EFalse 	if devsound propagates the underflow errors from the sound driver in all the cases
+	*/
+	virtual TBool QueryIgnoresUnderflow() = 0;
+	};
+
+
+const TUid KMmfUidDevSoundTruePauseCustomInterface = {0x1028643E};
+
+/**
+This class provides an interface to be able to Resume from DevSound.
+@publishedPartner
+@release
+*/	
+class MMMFDevSoundTruePause
+	{
+public:
+	/** Queries the devsound whether it supports True Pause or not
+	This call is only valid when DevSound is initialized
+	@return ETrue if the current DevSound configuration does support this feature
+			EFalse otherwise
+	*/
+	virtual TBool IsResumeSupported() = 0;
+
+	/** Resume the playback, recording or tone playing that was paused
+	@return An error code indicating if the function call was successful. 
+			KErrNone on success,
+			KErrNotReady when is DevSound is not in pause
+			KErrNotSupported if the DevSound configuration does support this feature
+	*/
+	virtual TInt Resume() = 0;
+	};
+
+
+#endif // MMFDEVSOUNDCUSTOMINTERFACESUPPORT_H