2 * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * 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
6 * which accompanies this distribution, and is available
7 * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
14 * Description: This is the definition of the Distance Attenuation effect class.
19 #ifndef CDISTANCEATTENUATION_H
20 #define CDISTANCEATTENUATION_H
25 #include <AudioEffectBase.h>
26 #include <DistanceAttenuationData.h>
27 #include <MCustomInterface.h>
30 const TUid KUidDistanceAttenuationEffect = {0x1020382C};
32 // FORWARD DELCARATION
33 class CMdaAudioConvertUtility;
34 class CMdaAudioPlayerUtility;
35 class CMdaAudioRecorderUtility;
36 class CMdaAudioInputStream;
37 class CMdaAudioOutputStream;
38 class CMdaAudioToneUtility;
39 class CCustomCommandUtility;
40 class CCustomInterfaceUtility;
42 class CMidiClientUtility;
43 class CDrmPlayerUtility;
44 class CVideoPlayerUtility;
49 * This is the Distance Attenuation effect class for managing audio Distance Attenuation settings.
51 * @lib DistanceAttenuationEffect.lib
55 class CDistanceAttenuation : public CAudioEffect
58 public: //New Functions
61 * Factory function for creating the distance attenuation object.
63 * @param aUtility A reference to a convert utility
64 * @return pointer to CDistanceAttenuation object
66 IMPORT_C static CDistanceAttenuation* NewL( CMdaAudioConvertUtility& aUtility );
69 * Factory function for creating the distance attenuation object.
71 * @param aUtility A reference to an audio input stream utility
72 * @return pointer to CDistanceAttenuation object
74 IMPORT_C static CDistanceAttenuation* NewL( CMdaAudioInputStream& aUtility );
77 * Factory function for creating the distance attenuation object.
79 * @param aUtility A reference to an audio output stream utility
80 * @return pointer to CDistanceAttenuation object
82 IMPORT_C static CDistanceAttenuation* NewL( CMdaAudioOutputStream& aUtility );
85 * Factory function for creating the distance attenuation object.
87 * @param aUtility A reference to an audio player utility
88 * @return pointer to CDistanceAttenuation object
90 IMPORT_C static CDistanceAttenuation* NewL( CMdaAudioPlayerUtility& aUtility );
93 * Factory function for creating the distance attenuation object.
95 * @param aUtility A reference to an audio record utility
96 * @param aRecordStream ETrue if the effect is to be applied to the recording,
97 * EFalse if the effect is to be applied only to the playback
98 * @return pointer to CDistanceAttenuation object
100 IMPORT_C static CDistanceAttenuation* NewL( CMdaAudioRecorderUtility& aUtility, TBool aRecordStream );
103 * Factory function for creating the distance attenuation object.
105 * @param aDevSound A reference to a DevSound instance
106 * @return pointer to CDistanceAttenuation object
108 IMPORT_C static CDistanceAttenuation* NewL( CMMFDevSound& aDevSound );
111 * Factory function for creating the distance attenuation object.
113 * @param aUtility A reference to an audio tone utility
114 * @return pointer to CDistanceAttenuation object
116 IMPORT_C static CDistanceAttenuation* NewL( CMdaAudioToneUtility& aUtility );
119 * Factory function for creating the distance attenuation object.
121 * @param aUtility A reference to a custom command utility
122 * @return pointer to CDistanceAttenuation object
124 IMPORT_C static CDistanceAttenuation* NewL( CCustomCommandUtility* aUtility );
127 * Factory function for creating the distance attenuation object.
129 * @param aCustomInterface A reference to a custom interface
130 * @return pointer to CDistanceAttenuation object
132 IMPORT_C static CDistanceAttenuation* NewL( MCustomInterface& aCustomInterface );
135 * Factory function for creating the distance attenuation object.
137 * @param aUtility A reference to a CMidiClientUtility
138 * @return pointer to CDistanceAttenuation object
140 IMPORT_C static CDistanceAttenuation* NewL( CMidiClientUtility& aUtility );
144 * Factory function for creating the distance attenuation object.
146 * @param CDrmPlayerUtility A reference to a CDrmPlayerUtility object
147 * @return pointer to CDistanceAttenuation object
149 IMPORT_C static CDistanceAttenuation* NewL( CDrmPlayerUtility& aUtility );
152 * Factory function for creating the distance attenuation object.
154 * @param CVideoPlayerUtility A reference to a CVideoPlayerUtility object
155 * @return pointer to CDistanceAttenuation object
157 IMPORT_C static CDistanceAttenuation* NewL( CVideoPlayerUtility& aUtility );
163 IMPORT_C virtual ~CDistanceAttenuation();
166 * Gets the Distance Attenuation of the listener.
168 * @param aRMin The source-to-listener distance below which the sound level is constant
169 * @param aRMax The source-to-listener distance above which the sound level is constant or zero
170 * @param aMuteAfterMax Indicate if the sound is muted beyond RMax
171 * @param aRollOffFactor Multiplier factor to source-to-listener distance
172 * @param aRoomRollOffFactor Multiplier factor to source-to-listener distance for Room effect.
175 IMPORT_C void DistanceAttenuation( TInt32& aRMin, TInt32& aRMax, TBool& aMuteAfterMax,
176 TUint32& aRollOffFactor, TUint32& aRoomRollOffFactor );
179 * Get roll off factor maximum value.
181 * @param aRollOffFactor The maximum multiplier factor to source-to-listener distance for Room effect.
184 IMPORT_C void RollOffFactorMax( TUint32& aRollOfFactorMax );
187 * Get room roll off factor maximum value.
189 * @param aRollOffFactor The maximum multiplier factor to source-to-listener distance for Room effect.
192 IMPORT_C void RoomRollOffFactorMax( TUint32& aRoomRollOfFactorMax );
195 * Sets the Distance Attenuation
197 * @param aRMin The source-to-listener distance below which the sound level is constant
198 * @param aRMax The source-to-listener distance above which the sound level is constant or zero
199 * @param aMuteAfterMax Indicate if the sound is muted beyond RMax
200 * @param aRollOffFactor Multiplier factor to source-to-listener distance
201 * @param aRoomRollOffFactor Multiplier factor to source-to-listener distance for Room effect.
204 IMPORT_C void SetDistanceAttenuationL( TInt32 aRMin, TInt32 aRMax, TBool aMuteAfterMax,
205 TUint32 aRollOffFactor, TUint32 aRoomRollOffFactor );
207 public: // functions from base class
211 * Get the unique identifier of the audio effect
213 * @return Unique identifier
215 IMPORT_C TUid Uid() const;
217 protected: // Functions from base classes
221 * Create a package of the effect data
223 * @return A descriptor containing the effect data.
225 IMPORT_C const TDesC8& DoEffectData();
229 * Internal function to unpack effect data
231 * @param aEffectDataBuffer Descriptor containing packed effect data
234 IMPORT_C void SetEffectData( const TDesC8& aEffectDataBuffer );
239 * Private C++ constructor for this class.
241 * @param aEffectObserver reference to event observer object
244 IMPORT_C CDistanceAttenuation();
248 // Distance Attenuation data structure
249 TEfDistanceAttenuation iDistanceAttenuationData;
250 // Data package sent to server
251 TEfDistanceAttenuationDataPckg iDataPckgTo;
252 // Data package received from server
253 TEfDistanceAttenuationDataPckg iDataPckgFrom;
255 protected: // Friend classes
257 friend class CDistanceAttenuationMessageHandler;
261 #endif // of CDISTANCEATTENUATION_H