epoc32/include/mdaaudiosampleplayer.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:27:01 +0100
branchSymbian2
changeset 3 e1b950c65cb4
parent 0 061f57f2323e
child 4 837f303aceeb
permissions -rw-r--r--
Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
williamr@2
     1
// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@2
     4
// 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
     5
// which accompanies this distribution, and is available
williamr@2
     6
// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@2
    14
//
williamr@2
    15
williamr@2
    16
#ifndef __MDAAUDIOSAMPLEPLAYER_H
williamr@2
    17
#define __MDAAUDIOSAMPLEPLAYER_H
williamr@2
    18
williamr@2
    19
#include <e32std.h>
williamr@2
    20
#include <f32file.h>
williamr@2
    21
#include <mmf/common/mmfaudio.h>
williamr@2
    22
#include <mmf/common/mmfbase.h>
williamr@2
    23
#include <mmf/common/mmfcontrollerframeworkbase.h>
williamr@2
    24
#include <mmf/common/mmfstandardcustomcommands.h>
williamr@2
    25
#include <mmf/common/mmfdrmcustomcommands.h>
williamr@2
    26
#include <mmfclntutility.h>
williamr@2
    27
#include <mmf/common/mmfdurationinfocustomcommands.h>
williamr@2
    28
williamr@2
    29
class CMdaServer;
williamr@2
    30
williamr@2
    31
/**
williamr@2
    32
@publishedAll
williamr@2
    33
@released
williamr@2
    34
williamr@2
    35
An interface to a set of audio player callback functions.
williamr@2
    36
williamr@2
    37
The class is a mixin and is intended to be inherited by the client
williamr@2
    38
class which is observing the audio playing operation. The functions
williamr@2
    39
encapsulated by this class are called when specific events occur in
williamr@2
    40
the process of initialising and playing an audio sample. A reference to
williamr@2
    41
this object is passed as a parameter when constructing an audio player
williamr@2
    42
utility object.
williamr@2
    43
williamr@2
    44
@since  5.0
williamr@2
    45
*/
williamr@2
    46
class MMdaAudioPlayerCallback
williamr@2
    47
	{
williamr@2
    48
public:
williamr@2
    49
williamr@2
    50
	/**
williamr@2
    51
	Defines required client behaviour when an attempt to open and
williamr@2
    52
	initialise an audio sample has completed, successfully or otherwise.
williamr@2
    53
williamr@2
    54
	@param  aError
williamr@2
    55
	        The status of the audio sample after initialisation.
williamr@2
    56
	        The following values have the same specific meaning
williamr@2
    57
	        across all EPOC platforms: KErrNone the
williamr@2
    58
	        sample is ready to play. KErrNotSupported
williamr@2
    59
	        the audio format or particular encoding type is not
williamr@2
    60
	        recognised or not supported. KErrNotFound
williamr@2
    61
	        the audio sample cannot be found.
williamr@2
    62
	        KErrNoMemory there is insufficient memory
williamr@2
    63
	        to play this audio sample. Other values are possible
williamr@2
    64
	        indicating a problem opening the audio sample. These
williamr@2
    65
	        values are dependent on the EPOC platform.
williamr@2
    66
	@param  aDuration
williamr@2
    67
	        The duration of the audio sample.
williamr@2
    68
	*/
williamr@2
    69
	virtual void MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& aDuration) = 0;
williamr@2
    70
williamr@2
    71
	/**
williamr@2
    72
	Defines required client behaviour when an attempt to playback an audio
williamr@2
    73
	sample has completed, successfully or otherwise.
williamr@2
    74
williamr@2
    75
	@param   aError
williamr@2
    76
	         The status of playback. The following values have the
williamr@2
    77
	         same specific meaning across all EPOC platforms:
williamr@2
    78
	         KErrNone playing of the audio sample is
williamr@2
    79
	         complete. KErrCorrupt the sample data is
williamr@2
    80
	         corrupt. KErrInUse the sound device is in
williamr@2
    81
	         use by another higher priority client. This can happen
williamr@2
    82
	         during playback. KErrNoMemory there is
williamr@2
    83
	         insufficient memory to play this audio sample Other
williamr@2
    84
	         values are possible indicating a problem opening the
williamr@2
    85
	         audio sample. These values are dependent on the EPOC
williamr@2
    86
	         platform.
williamr@2
    87
	*/
williamr@2
    88
	virtual void MapcPlayComplete(TInt aError) = 0;
williamr@2
    89
	};
williamr@2
    90
williamr@2
    91
williamr@2
    92
class CMMFMdaAudioPlayerUtility;
williamr@2
    93
williamr@2
    94
/**
williamr@2
    95
@publishedAll
williamr@2
    96
@released
williamr@2
    97
williamr@2
    98
Plays sampled audio data.
williamr@2
    99
williamr@2
   100
The class offers a simple interface to open, play and obtain
williamr@2
   101
information from, sampled audio data. The audio data can be supplied
williamr@2
   102
either in a file (file-based), as a descriptor
williamr@2
   103
(descriptor-based) or as a URL reference (since version 7.0s).
williamr@2
   104
williamr@2
   105
While this class is abstract, the three static functions construct, initialise
williamr@2
   106
and return pointers to instances of concrete classes derived from this
williamr@2
   107
abstract class. 
williamr@2
   108
williamr@2
   109
@since  5.0
williamr@2
   110
*/
williamr@2
   111
class CMdaAudioPlayerUtility : public CBase, 
williamr@2
   112
							   public MMMFClientUtility
williamr@2
   113
	{
williamr@2
   114
public:
williamr@2
   115
	IMPORT_C static CMdaAudioPlayerUtility* NewFilePlayerL(const TDesC& aFileName,
williamr@2
   116
								MMdaAudioPlayerCallback& aCallback,
williamr@2
   117
								TInt aPriority = EMdaPriorityNormal,
williamr@2
   118
								TMdaPriorityPreference aPref = EMdaPriorityPreferenceTimeAndQuality,
williamr@2
   119
								CMdaServer* aServer = NULL);
williamr@2
   120
	IMPORT_C static CMdaAudioPlayerUtility* NewDesPlayerL(const TDesC8& aData,
williamr@2
   121
								MMdaAudioPlayerCallback& aCallback,
williamr@2
   122
								TInt aPriority = EMdaPriorityNormal,
williamr@2
   123
								TMdaPriorityPreference aPref = EMdaPriorityPreferenceTimeAndQuality,
williamr@2
   124
								CMdaServer* aServer = NULL);
williamr@2
   125
	IMPORT_C static CMdaAudioPlayerUtility* NewDesPlayerReadOnlyL(const TDesC8& aData,
williamr@2
   126
								MMdaAudioPlayerCallback& aCallback,
williamr@2
   127
								TInt aPriority = EMdaPriorityNormal,
williamr@2
   128
								TMdaPriorityPreference aPref = EMdaPriorityPreferenceTimeAndQuality,
williamr@2
   129
								CMdaServer* aServer = NULL);
williamr@2
   130
williamr@2
   131
	// new export from version 7.0
williamr@2
   132
	IMPORT_C static CMdaAudioPlayerUtility* NewL(MMdaAudioPlayerCallback& aCallback,
williamr@2
   133
								TInt aPriority = EMdaPriorityNormal,
williamr@2
   134
								TMdaPriorityPreference aPref = EMdaPriorityPreferenceTimeAndQuality);
williamr@2
   135
williamr@2
   136
	IMPORT_C void UseSharedHeap();
williamr@2
   137
williamr@2
   138
	~CMdaAudioPlayerUtility();
williamr@2
   139
williamr@2
   140
	virtual void Play();
williamr@2
   141
williamr@2
   142
	virtual void Stop();
williamr@2
   143
williamr@2
   144
	virtual TInt SetVolume(TInt aVolume);
williamr@2
   145
williamr@2
   146
	virtual void SetRepeats(TInt aRepeatNumberOfTimes, const TTimeIntervalMicroSeconds& aTrailingSilence);
williamr@2
   147
williamr@2
   148
	virtual void SetVolumeRamp(const TTimeIntervalMicroSeconds& aRampDuration);
williamr@2
   149
williamr@2
   150
	virtual const TTimeIntervalMicroSeconds& Duration();
williamr@2
   151
	IMPORT_C TMMFDurationInfo Duration(TTimeIntervalMicroSeconds& aDuration);
williamr@2
   152
williamr@2
   153
	virtual TInt MaxVolume();
williamr@2
   154
williamr@2
   155
	IMPORT_C void OpenFileL(const TDesC& aFileName);
williamr@2
   156
	IMPORT_C void OpenFileL(const RFile& aFile);
williamr@2
   157
williamr@2
   158
	IMPORT_C void OpenFileL(const TMMSource& aSource);
williamr@2
   159
williamr@2
   160
	IMPORT_C void OpenDesL(const TDesC8& aDescriptor);
williamr@2
   161
williamr@2
   162
	IMPORT_C void OpenUrlL(const TDesC& aUrl, TInt aIapId = KUseDefaultIap, const TDesC8& aMimeType=KNullDesC8);
williamr@2
   163
williamr@2
   164
	IMPORT_C TInt Pause();
williamr@2
   165
williamr@2
   166
	IMPORT_C void Close();
williamr@2
   167
williamr@2
   168
	IMPORT_C TInt GetPosition(TTimeIntervalMicroSeconds& aPosition);
williamr@2
   169
williamr@2
   170
	IMPORT_C void SetPosition(const TTimeIntervalMicroSeconds& aPosition);
williamr@2
   171
williamr@2
   172
	IMPORT_C TInt SetPriority(TInt aPriority, TMdaPriorityPreference aPref);
williamr@2
   173
williamr@2
   174
	IMPORT_C TInt GetVolume(TInt& aVolume);
williamr@2
   175
williamr@2
   176
	IMPORT_C TInt GetNumberOfMetaDataEntries(TInt& aNumEntries);
williamr@2
   177
williamr@2
   178
	IMPORT_C CMMFMetaDataEntry* GetMetaDataEntryL(TInt aMetaDataIndex);
williamr@2
   179
williamr@2
   180
	IMPORT_C TInt SetPlayWindow(const TTimeIntervalMicroSeconds& aStart,
williamr@2
   181
								const TTimeIntervalMicroSeconds& aEnd);
williamr@2
   182
williamr@2
   183
	IMPORT_C TInt ClearPlayWindow();
williamr@2
   184
williamr@2
   185
	IMPORT_C TInt SetBalance(TInt aBalance = KMMFBalanceCenter);
williamr@2
   186
williamr@2
   187
	IMPORT_C TInt GetBalance(TInt& aBalance);
williamr@2
   188
williamr@2
   189
	IMPORT_C void RegisterForAudioLoadingNotification(MAudioLoadingObserver& aCallback);
williamr@2
   190
williamr@2
   191
	IMPORT_C void GetAudioLoadingProgressL(TInt& aPercentageComplete);
williamr@2
   192
williamr@2
   193
	IMPORT_C const CMMFControllerImplementationInformation& ControllerImplementationInformationL();
williamr@2
   194
williamr@2
   195
	IMPORT_C TInt CustomCommandSync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TDes8& aDataFrom);
williamr@2
   196
williamr@2
   197
	IMPORT_C TInt CustomCommandSync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2);
williamr@2
   198
williamr@2
   199
	IMPORT_C void CustomCommandAsync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TDes8& aDataFrom, TRequestStatus& aStatus);
williamr@2
   200
williamr@2
   201
	IMPORT_C void CustomCommandAsync(const TMMFMessageDestinationPckg& aDestination, TInt aFunction, const TDesC8& aDataTo1, const TDesC8& aDataTo2, TRequestStatus& aStatus);
williamr@2
   202
	
williamr@2
   203
	IMPORT_C TInt GetBitRate(TUint& aBitRate);
williamr@2
   204
williamr@2
   205
	IMPORT_C MMMFDRMCustomCommand* GetDRMCustomCommand();
williamr@2
   206
williamr@2
   207
	IMPORT_C TInt RegisterAudioResourceNotification(MMMFAudioResourceNotificationCallback& aCallback,TUid aNotificationEventUid,const TDesC8& aNotificationRegistrationData = KNullDesC8);
williamr@2
   208
williamr@2
   209
	IMPORT_C TInt CancelRegisterAudioResourceNotification(TUid aNotificationEventId);
williamr@2
   210
    
williamr@2
   211
	IMPORT_C TInt WillResumePlay();
williamr@2
   212
williamr@2
   213
	IMPORT_C TInt SetThreadPriority(const TThreadPriority& aThreadPriority) const;	
williamr@2
   214
	
williamr@2
   215
private:
williamr@2
   216
	CMdaAudioPlayerUtility();
williamr@2
   217
	
williamr@2
   218
protected:
williamr@2
   219
	/**
williamr@2
   220
	This member is internal and not intended for use.
williamr@2
   221
	*/
williamr@2
   222
	CMMFMdaAudioPlayerUtility* iProperties;
williamr@2
   223
	}; 
williamr@2
   224
williamr@2
   225
williamr@2
   226
#endif