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