epoc32/include/mdaaudiosampleplayer.h
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
child 4 837f303aceeb
--- a/epoc32/include/mdaaudiosampleplayer.h	Tue Nov 24 13:55:44 2009 +0000
+++ b/epoc32/include/mdaaudiosampleplayer.h	Tue Mar 16 16:12:26 2010 +0000
@@ -1,1 +1,226 @@
-mdaaudiosampleplayer.h
+// Copyright (c) 1999-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 __MDAAUDIOSAMPLEPLAYER_H
+#define __MDAAUDIOSAMPLEPLAYER_H
+
+#include <e32std.h>
+#include <f32file.h>
+#include <mmf/common/mmfaudio.h>
+#include <mmf/common/mmfbase.h>
+#include <mmf/common/mmfcontrollerframeworkbase.h>
+#include <mmf/common/mmfstandardcustomcommands.h>
+#include <mmf/common/mmfdrmcustomcommands.h>
+#include <mmfclntutility.h>
+#include <mmf/common/mmfdurationinfocustomcommands.h>
+
+class CMdaServer;
+
+/**
+@publishedAll
+@released
+
+An interface to a set of audio player callback functions.
+
+The class is a mixin and is intended to be inherited by the client
+class which is observing the audio playing operation. The functions
+encapsulated by this class are called when specific events occur in
+the process of initialising and playing an audio sample. A reference to
+this object is passed as a parameter when constructing an audio player
+utility object.
+
+@since  5.0
+*/
+class MMdaAudioPlayerCallback
+	{
+public:
+
+	/**
+	Defines required client behaviour when an attempt to open and
+	initialise an audio sample has completed, successfully or otherwise.
+
+	@param  aError
+	        The status of the audio sample after initialisation.
+	        The following values have the same specific meaning
+	        across all EPOC platforms: KErrNone the
+	        sample is ready to play. KErrNotSupported
+	        the audio format or particular encoding type is not
+	        recognised or not supported. KErrNotFound
+	        the audio sample cannot be found.
+	        KErrNoMemory there is insufficient memory
+	        to play this audio sample. Other values are possible
+	        indicating a problem opening the audio sample. These
+	        values are dependent on the EPOC platform.
+	@param  aDuration
+	        The duration of the audio sample.
+	*/
+	virtual void MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration) = 0;
+
+	/**
+	Defines required client behaviour when an attempt to playback an audio
+	sample has completed, successfully or otherwise.
+
+	@param   aError
+	         The status of playback. The following values have the
+	         same specific meaning across all EPOC platforms:
+	         KErrNone playing of the audio sample is
+	         complete. KErrCorrupt the sample data is
+	         corrupt. KErrInUse the sound device is in
+	         use by another higher priority client. This can happen
+	         during playback. KErrNoMemory there is
+	         insufficient memory to play this audio sample Other
+	         values are possible indicating a problem opening the
+	         audio sample. These values are dependent on the EPOC
+	         platform.
+	*/
+	virtual void MapcPlayComplete(TInt aError) = 0;
+	};
+
+
+class CMMFMdaAudioPlayerUtility;
+
+/**
+@publishedAll
+@released
+
+Plays sampled audio data.
+
+The class offers a simple interface to open, play and obtain
+information from, sampled audio data. The audio data can be supplied
+either in a file (file-based), as a descriptor
+(descriptor-based) or as a URL reference (since version 7.0s).
+
+While this class is abstract, the three static functions construct, initialise
+and return pointers to instances of concrete classes derived from this
+abstract class. 
+
+@since  5.0
+*/
+class CMdaAudioPlayerUtility : public CBase, 
+							   public MMMFClientUtility
+	{
+public:
+	IMPORT_C static CMdaAudioPlayerUtility* NewFilePlayerL(const TDesC& aFileName,
+								MMdaAudioPlayerCallback& aCallback,
+								TInt aPriority = EMdaPriorityNormal,
+								TMdaPriorityPreference aPref = EMdaPriorityPreferenceTimeAndQuality,
+								CMdaServer* aServer = NULL);
+	IMPORT_C static CMdaAudioPlayerUtility* NewDesPlayerL(const TDesC8& aData,
+								MMdaAudioPlayerCallback& aCallback,
+								TInt aPriority = EMdaPriorityNormal,
+								TMdaPriorityPreference aPref = EMdaPriorityPreferenceTimeAndQuality,
+								CMdaServer* aServer = NULL);
+	IMPORT_C static CMdaAudioPlayerUtility* NewDesPlayerReadOnlyL(const TDesC8& aData,
+								MMdaAudioPlayerCallback& aCallback,
+								TInt aPriority = EMdaPriorityNormal,
+								TMdaPriorityPreference aPref = EMdaPriorityPreferenceTimeAndQuality,
+								CMdaServer* aServer = NULL);
+
+	// new export from version 7.0
+	IMPORT_C static CMdaAudioPlayerUtility* NewL(MMdaAudioPlayerCallback& aCallback,
+								TInt aPriority = EMdaPriorityNormal,
+								TMdaPriorityPreference aPref = EMdaPriorityPreferenceTimeAndQuality);
+
+	IMPORT_C void UseSharedHeap();
+
+	~CMdaAudioPlayerUtility();
+
+	virtual void Play();
+
+	virtual void Stop();
+
+	virtual TInt SetVolume(TInt aVolume);
+
+	virtual void SetRepeats(TInt aRepeatNumberOfTimes, const TTimeIntervalMicroSeconds& aTrailingSilence);
+
+	virtual void SetVolumeRamp(const TTimeIntervalMicroSeconds& aRampDuration);
+
+	virtual const TTimeIntervalMicroSeconds& Duration();
+	IMPORT_C TMMFDurationInfo Duration(TTimeIntervalMicroSeconds& aDuration);
+
+	virtual TInt MaxVolume();
+
+	IMPORT_C void OpenFileL(const TDesC& aFileName);
+	IMPORT_C void OpenFileL(const RFile& aFile);
+
+	IMPORT_C void OpenFileL(const TMMSource& aSource);
+
+	IMPORT_C void OpenDesL(const TDesC8& aDescriptor);
+
+	IMPORT_C void OpenUrlL(const TDesC& aUrl, TInt aIapId = KUseDefaultIap, const TDesC8& aMimeType=KNullDesC8);
+
+	IMPORT_C TInt Pause();
+
+	IMPORT_C void Close();
+
+	IMPORT_C TInt GetPosition(TTimeIntervalMicroSeconds& aPosition);
+
+	IMPORT_C void SetPosition(const TTimeIntervalMicroSeconds& aPosition);
+
+	IMPORT_C TInt SetPriority(TInt aPriority, TMdaPriorityPreference aPref);
+
+	IMPORT_C TInt GetVolume(TInt& aVolume);
+
+	IMPORT_C TInt GetNumberOfMetaDataEntries(TInt& aNumEntries);
+
+	IMPORT_C CMMFMetaDataEntry* GetMetaDataEntryL(TInt aMetaDataIndex);
+
+	IMPORT_C TInt SetPlayWindow(const TTimeIntervalMicroSeconds& aStart,
+								const TTimeIntervalMicroSeconds& aEnd);
+
+	IMPORT_C TInt ClearPlayWindow();
+
+	IMPORT_C TInt SetBalance(TInt aBalance = KMMFBalanceCenter);
+
+	IMPORT_C TInt GetBalance(TInt& aBalance);
+
+	IMPORT_C void RegisterForAudioLoadingNotification(MAudioLoadingObserver& aCallback);
+
+	IMPORT_C void GetAudioLoadingProgressL(TInt& aPercentageComplete);
+
+	IMPORT_C const CMMFControllerImplementationInformation& ControllerImplementationInformationL();
+
+	IMPORT_C TInt CustomCommandSync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TDes8& aDataFrom);
+
+	IMPORT_C TInt CustomCommandSync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2);
+
+	IMPORT_C void CustomCommandAsync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TDes8& aDataFrom, TRequestStatus& aStatus);
+
+	IMPORT_C void CustomCommandAsync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TRequestStatus& aStatus);
+	
+	IMPORT_C TInt GetBitRate(TUint& aBitRate);
+
+	IMPORT_C MMMFDRMCustomCommand* GetDRMCustomCommand();
+
+	IMPORT_C TInt RegisterAudioResourceNotification(MMMFAudioResourceNotificationCallback& aCallback,TUid aNotificationEventUid,const TDesC8& aNotificationRegistrationData = KNullDesC8);
+
+	IMPORT_C TInt CancelRegisterAudioResourceNotification(TUid aNotificationEventId);
+    
+	IMPORT_C TInt WillResumePlay();
+
+	IMPORT_C TInt SetThreadPriority(const TThreadPriority& aThreadPriority) const;	
+	
+private:
+	CMdaAudioPlayerUtility();
+	
+protected:
+	/**
+	This member is internal and not intended for use.
+	*/
+	CMMFMdaAudioPlayerUtility* iProperties;
+	}; 
+
+
+#endif