devsound/hwdevapi/inc/mmfhwdevicesetup.h
author hgs
Thu, 07 Oct 2010 22:34:12 +0100
changeset 0 b8ed18f6c07b
permissions -rw-r--r--
2010wk40
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     1
// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     2
// All rights reserved.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     7
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     8
// Initial Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    10
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    11
// Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    12
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    13
// Description:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    14
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    15
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    16
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    17
 @file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    18
 @publishedPartner 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    19
 @released
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    20
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    21
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
#ifndef MMFHWDEVICESETUP_H
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
#define MMFHWDEVICESETUP_H
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
const TUid KUidHwDeviceSetupInterface = {0x102737A8};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
class TFourCC;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
//Custom Interface Uid for these Hw Device implementations
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
#define KMmfPlaySettingsCustomInterface		0x101F9FC1
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
#define KMmfRecordSettingsCustomInterface	0x101F9FC2
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
#define KSetVbrFlagCustomInterfaceTypeUid	0x10282647
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
const TUid KTimePlayedCustomInterfaceTypeUid = {0x10285D17};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
const TUid KIgnoreUnderflowCustomInterfaceTypeUid = {0x10285E7D};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
Custom interface to pass the data types to a hardware device adapter
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
class MMdfHwDeviceSetup
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
public:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
	Sets the data types into the hardware device adapter
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
	@param aSrcType Source FourCC data type
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
	@param aDestType Destination FourCC data type
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
	virtual void SetDataTypesL(TFourCC aSrcType, TFourCC aDestType) = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
Custom interface class for play functionality created by the
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
CMMFSwCodecWrapper::CustomInterface() method. It provides
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
access to miscellaneous functionality such as volume settings.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
Ports of the sw codec wrapper may do this differently eg. via EAP.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
Note Users should not use RMdaDevSound::TCurrentSoundFormatBuf to send
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
across the sample rate and channels because 1) it would mean
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
mmfswcodecwrapper.h would have to include mdasound.h 2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
the buffer size and encoding members are not required and 3) 3rd party ports
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
may not use RMdaDevSound.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
Note also that this interface is just a simple interface to get
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
and set values. No checking is performed on the values sent (hence the
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
Set methods do not return an error code).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
class MPlayCustomInterface
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
public:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
	Set the audio volume.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
	@param aVolume The specified audio volume.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
	virtual void SetVolume(TUint aVolume) = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
	Get the audio volume.	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
	virtual TUint Volume() = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
	Get the number of bytes played.	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
	virtual TUint BytesPlayed() = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
	Set the period over which the volume level is to rise smoothly from nothing to the required volume level.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
	@param aRampDuration The period over which the volume is to rise.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
	virtual void SetVolumeRamp(const TTimeIntervalMicroSeconds& aRampDuration) = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
	Get the period over which the volume level is to rise smoothly from nothing to the required volume level.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
	virtual TTimeIntervalMicroSeconds& VolumeRamp() = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
Custom interface class for record functionality created by the
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
CMMFSwCodecWrapper::CustomInterface() method. It provides
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
access to miscellaneous functionality such as volume settings.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
Ports of the sw codec wrapper may do this differently eg. via EAP.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
Note: Users should not use RMdaDevSound::TCurrentSoundFormatBuf so send
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
across the sample rate and channels because 1) it would mean
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
mmfswcodecwrapper.h would have to include mdasound.h 2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
the buffer size and encoding members are not required and 3) 3rd party ports
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
may not use RMdaDevSound.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
Note also that this interface is just a simple interface to get
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
and set values. No checking is performed on the values sent (hence the
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
Set methods do not return an error code).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
class MRecordCustomInterface
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
public:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
	Set the gain.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
	@param aGain The specified gain value.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
	virtual void SetGain(TUint aGain) = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
	Get the gain value.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
	virtual TUint Gain() = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
	Get the number of bytes recorded.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
	virtual TUint BytesRecorded() = 0; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
Custom interface class for emptying the play buffers before playing.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
class MEmptyBuffersCustomInterface
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
public:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
	Empties the play buffers.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
	@return An error code indicating if the function call was successful. KErrNone on success, KErrNotReady 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
			if the device is not ready, otherwise another of the system-wide error codes.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
	virtual TInt EmptyBuffers() = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
Custom interface class for setting VBR flag.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
class MSetVbrFlagCustomInterface
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
public:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
	Sets the VBR flag to ETrue.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151
	virtual void SetVbrFlag() = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   152
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   153
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   154
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   155
Custom interface class for querying current play time from the audio renderer.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   156
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   157
class MTimePlayedCustomInterface
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   158
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   159
public:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   160
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   161
	Gets the current play time from the sound driver.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   162
	@param aTime A reference to TTimeIntervalMicroSeconds object which is filled with the current play time.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   163
	@return An error code indicating if the function call was successful. KErrNone on success
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   164
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   165
	virtual TInt GetTimePlayed(TTimeIntervalMicroSeconds& aTime) = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   166
	};	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   167
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   168
/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   169
Custom interface class for configuring hardware device to ignore all the underflow events from the sound driver 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   170
except for the last buffer.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   171
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   172
class MIgnoreUnderflowEventsCustomInterface
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   173
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   174
public:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   175
	/**
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   176
	Configures the hardware device such that it ignores all the underflow events from the sound driver.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   177
	However, it propagates the underflow error to devsound when the last buffer flag is set.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   178
	*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   179
	virtual void IgnoreUnderflowEvents() = 0;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   180
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   181
#endif // MMFHWDEVICESETUP_H