williamr@2: /*
williamr@2: * Copyright (c) 2006 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:  This is the definition of the Environmental Reverb effect class.
williamr@2: *
williamr@2: */
williamr@2: 
williamr@2: 
williamr@2: #ifndef CENVIRONMENTALREVERB_H
williamr@2: #define CENVIRONMENTALREVERB_H
williamr@2: 
williamr@2: // INCLUDES
williamr@2: 
williamr@2: #include <e32base.h>
williamr@2: #include <AudioEffectBase.h>
williamr@2: #include <EnvironmentalReverbData.h>
williamr@2: #include <MCustomInterface.h>
williamr@2: 
williamr@2: const TUid KUidEnvironmentalReverbEffect = {0x10203837};
williamr@2: 
williamr@2: // FORWARD DELCARATION
williamr@2: class CMdaAudioConvertUtility;
williamr@2: class CMdaAudioPlayerUtility;
williamr@2: class CMdaAudioRecorderUtility;
williamr@2: class CMdaAudioInputStream;
williamr@2: class CMdaAudioOutputStream;
williamr@2: class CMdaAudioToneUtility;
williamr@2: class CCustomCommandUtility;
williamr@2: class CCustomInterfaceUtility;
williamr@2: class CMMFDevSound;
williamr@2: class CMidiClientUtility;
williamr@2: class CDrmPlayerUtility;
williamr@2: class CVideoPlayerUtility;
williamr@2: 
williamr@2: // CLASS DECLARATION
williamr@2: 
williamr@2: /**
williamr@2: *  This is the Environmental Reverb effect class for managing reverb settings.
williamr@2: *
williamr@2: *  @lib EnvironmentalReverbEffect.lib
williamr@2: *  @since 3.0
williamr@2: */
williamr@2: 
williamr@2: class CEnvironmentalReverb : public CAudioEffect
williamr@2:     {
williamr@2: 
williamr@2:     public:     //New Functions
williamr@2: 
williamr@2:         /**
williamr@2:         * Factory function for creating the audio reverb object.
williamr@2:         * @since 3.0
williamr@2:         * @return pointer to CEnvironmentalReverb object
williamr@2:         */
williamr@2:         IMPORT_C static CEnvironmentalReverb* NewL();
williamr@2: 
williamr@2:         /**
williamr@2:         * Factory function for creating the audio reverb object.
williamr@2:         * @since 3.0
williamr@2:         * @param aUtility A reference to a convert utility
williamr@2:         * @return pointer to CEnvironmentalReverb object
williamr@2:         */
williamr@2:         IMPORT_C static CEnvironmentalReverb* NewL( CMdaAudioConvertUtility& aUtility );
williamr@2: 
williamr@2:         /**
williamr@2:         * Factory function for creating the audio reverb object.
williamr@2:         * @since 3.0
williamr@2:         * @param aUtility A reference to an audio input stream utility
williamr@2:         * @return pointer to CEnvironmentalReverb object
williamr@2:         */
williamr@2:         IMPORT_C static CEnvironmentalReverb* NewL( CMdaAudioInputStream& aUtility );
williamr@2: 
williamr@2:         /**
williamr@2:         * Factory function for creating the audio reverb object.
williamr@2:         * @since 3.0
williamr@2:         * @param aUtility A reference to an audio output stream utility
williamr@2:         * @return pointer to CEnvironmentalReverb object
williamr@2:         */
williamr@2:         IMPORT_C static CEnvironmentalReverb* NewL( CMdaAudioOutputStream& aUtility );
williamr@2: 
williamr@2:         /**
williamr@2:         * Factory function for creating the audio reverb object.
williamr@2:         * @since 3.0
williamr@2:         * @param aUtility A reference to an audio player utility
williamr@2:         * @return pointer to CEnvironmentalReverb object
williamr@2:         */
williamr@2:         IMPORT_C static CEnvironmentalReverb* NewL( CMdaAudioPlayerUtility& aUtility );
williamr@2: 
williamr@2:         /**
williamr@2:         * Factory function for creating the audio reverb object.
williamr@2:         * @since 3.0
williamr@2:         * @param aUtility A reference to an audio record utility
williamr@2:         * @param aRecordStream ETrue if the effect is to be applied to the recording,
williamr@2:         *                      EFalse if the effect is to be applied only to the playback
williamr@2:         * @return pointer to CEnvironmentalReverb object
williamr@2:         */
williamr@2:         IMPORT_C static CEnvironmentalReverb* NewL( CMdaAudioRecorderUtility& aUtility, TBool aRecordStream );
williamr@2: 
williamr@2:         /**
williamr@2:         * Factory function for creating the audio reverb object.
williamr@2:         * @since 3.0
williamr@2:         * @param aUtility A reference to an audio tone utility
williamr@2:         * @return pointer to CEnvironmentalReverb object
williamr@2:         */
williamr@2:         IMPORT_C static CEnvironmentalReverb* NewL( CMdaAudioToneUtility& aUtility );
williamr@2: 
williamr@2:         /**
williamr@2:         * Factory function for creating the audio reverb object.
williamr@2:         * @since 3.0
williamr@2:         * @param aDevSound A reference to a DevSound instance
williamr@2:         * @return pointer to CEnvironmentalReverb object
williamr@2:         */
williamr@2:         IMPORT_C static CEnvironmentalReverb* NewL( CMMFDevSound& aDevSound );
williamr@2: 
williamr@2:         /**
williamr@2:         * Factory function for creating the audio reverb object.
williamr@2:         * @since 3.0
williamr@2:         * @param aUtility A reference to a custom command utility
williamr@2:         * @return pointer to CEnvironmentalReverb object
williamr@2:         */
williamr@2:         IMPORT_C static CEnvironmentalReverb* NewL( CCustomCommandUtility* aUtility );
williamr@2: 
williamr@2:         /**
williamr@2:         * Factory function for creating the audio reverb object.
williamr@2:         * @since 3.0
williamr@2:         * @param aCustomInterface A reference to a custom interface
williamr@2:         * @return pointer to CEnvironmentalReverb object
williamr@2:         */
williamr@2:         IMPORT_C static CEnvironmentalReverb* NewL( MCustomInterface& aCustomInterface );
williamr@2: 
williamr@2:         /**
williamr@2:         * Factory function for creating the audio reverb object.
williamr@2:         * @since 3.0
williamr@2:         * @param aUtility A reference to a CMidiClientUtility object
williamr@2:         * @return pointer to CEnvironmentalReverb object
williamr@2:         */
williamr@2:         IMPORT_C static CEnvironmentalReverb* NewL( CMidiClientUtility& aUtility );
williamr@2: 
williamr@2:         /**
williamr@2:         * Factory function for creating the audio equalizer object.
williamr@2:         * @since 3.0
williamr@2:         * @param CDrmPlayerUtility A reference to a CDrmPlayerUtility object
williamr@2:         * @return pointer to CAudioEqualizer object
williamr@2:         */
williamr@2:         IMPORT_C static CEnvironmentalReverb* NewL( CDrmPlayerUtility& aUtility );
williamr@2: 
williamr@2:         /**
williamr@2:         * Factory function for creating the audio equalizer object.
williamr@2:         * @since 3.2
williamr@2:         * @param CVideoPlayerUtility A reference to a CVideoPlayerUtility object
williamr@2:         * @return pointer to CAudioEqualizer object
williamr@2:         */
williamr@2:         IMPORT_C static CEnvironmentalReverb* NewL( CVideoPlayerUtility& aUtility );
williamr@2: 
williamr@2:         /**
williamr@2:         *
williamr@2:         * Destructor
williamr@2:         */
williamr@2:         IMPORT_C virtual ~CEnvironmentalReverb();
williamr@2: 
williamr@2:         /**
williamr@2:         * Gets the decay HF Ratio in hundredths
williamr@2:         * @since 3.0
williamr@2:         * @return decay HF Ratio
williamr@2:         */
williamr@2:         IMPORT_C TUint32 DecayHFRatio() const;
williamr@2: 
williamr@2:         /**
williamr@2:         * Gets the reverb decay HF Ratio minimum and maximum in hundredths.
williamr@2:         * @since 3.0
williamr@2:         * @param aMin Minimum decay HF Ratio
williamr@2:         * @param aMax Maximum decay HF Ratio
williamr@2:         */
williamr@2:         IMPORT_C void DecayHFRatioRange(TUint32& aMin, TUint32& aMax);
williamr@2: 
williamr@2:         /**
williamr@2:         * Gets the decay time in milliseconds
williamr@2:         * @since 3.0
williamr@2:         * @return decay time
williamr@2:         */
williamr@2:         IMPORT_C TUint32 DecayTime() const;
williamr@2: 
williamr@2:         /**
williamr@2:         * Gets the allowable reverb decay time range in milliseconds.
williamr@2:         * @since 3.0
williamr@2:         * @param aMin Minimum decay time in milliseconds
williamr@2:         * @param aMax Maximum decay time in milliseconds
williamr@2:         */
williamr@2:         IMPORT_C void DecayTimeRange(TUint32& aMin, TUint32& aMax);
williamr@2: 
williamr@2:         /**
williamr@2:         * Gets the density current value as a percentage in hundredths
williamr@2:         * @since 3.0
williamr@2:         * @return density value
williamr@2:         */
williamr@2:         IMPORT_C TUint32 Density() const;
williamr@2: 
williamr@2:         /**
williamr@2:         * Gets the diffusion current value as a percentage in hundredths.
williamr@2:         * @since 3.0
williamr@2:         * @return diffusion value
williamr@2:         */
williamr@2:         IMPORT_C TUint32 Diffusion() const;
williamr@2: 
williamr@2:         /**
williamr@2:         * Gets the reverb reflections delay in ms.
williamr@2:         * @since 3.0
williamr@2:         * @return reverb reflections delay
williamr@2:         */
williamr@2:         IMPORT_C TUint32 ReflectionsDelay() const;
williamr@2: 
williamr@2:         /**
williamr@2:         * Gets the reverb reflections delay maximum in milliseconds.
williamr@2:         * @since 3.0
williamr@2:         * @return reverb reflections delay maximum
williamr@2:         */
williamr@2:         IMPORT_C TUint32 ReflectionsDelayMax() const;
williamr@2: 
williamr@2:         /**
williamr@2:         * Gets the reverb reflections level in mB
williamr@2:         * @since 3.0
williamr@2:         * @return Reverb reflections level
williamr@2:         */
williamr@2:         IMPORT_C TInt32 ReflectionsLevel() const;
williamr@2: 
williamr@2:         /**
williamr@2:         * Gets the reverb reflections level maximum and minimum in mB
williamr@2:         * @since 3.0
williamr@2:         * @param aMin Minimum reflections level
williamr@2:         * @param aMax Maximum reflections level
williamr@2:         */
williamr@2:         IMPORT_C void ReflectionLevelRange( TInt32& aMin, TInt32& aMax );
williamr@2: 
williamr@2:         /**
williamr@2:         * Gets the reverb delay in milliseconds
williamr@2:         * @since 3.0
williamr@2:         * @return reverb delay
williamr@2:         */
williamr@2:         IMPORT_C TUint32 ReverbDelay() const;
williamr@2: 
williamr@2:         /**
williamr@2:         * Gets the reverb delay maximum in milliseconds
williamr@2:         * @since 3.0
williamr@2:         * @return reverb delay maximum
williamr@2:         */
williamr@2:         IMPORT_C TUint32 ReverbDelayMax() const;
williamr@2: 
williamr@2:         /**
williamr@2:         * Gets the reverb current level in mB
williamr@2:         * @since 3.0
williamr@2:         * @return reverb current level
williamr@2:         */
williamr@2:         IMPORT_C TInt32 ReverbLevel() const;
williamr@2: 
williamr@2:         /**
williamr@2:         * Gets the reverb current level maximum and minimum in mB
williamr@2:         * @since 3.0
williamr@2:         * @param aMin Minimum current level
williamr@2:         * @param aMax Maximum current level
williamr@2:         * @return -
williamr@2:         */
williamr@2:         IMPORT_C void ReverbLevelRange( TInt32& aMin, TInt32& aMax );
williamr@2: 
williamr@2:         /**
williamr@2:         * Gets the room HF level current ratio
williamr@2:         * @since 3.0
williamr@2:         * @return room HF level ratio
williamr@2:         */
williamr@2:         IMPORT_C TInt32 RoomHFLevel() const;
williamr@2: 
williamr@2:         /**
williamr@2:         * Gets the room HF level maximum and minimum ratios
williamr@2:         * @since 3.0
williamr@2:         * @param aMin Minimum current room HF level
williamr@2:         * @param aMax Maximum current room HF level
williamr@2:         * @return -
williamr@2:         */
williamr@2:         IMPORT_C void RoomHFLevelRange( TInt32& aMin, TInt32& aMax );
williamr@2: 
williamr@2:         /**
williamr@2:         * Gets the room level current value in mB
williamr@2:         * @since 3.0
williamr@2:         * @return room level value
williamr@2:         */
williamr@2:         IMPORT_C TInt32 RoomLevel() const;
williamr@2: 
williamr@2:         /**
williamr@2:         * Gets the room level maximum and minimum in mB
williamr@2:         * @since 3.0
williamr@2:         * @param aMin Minimum current room level
williamr@2:         * @param aMax Maximum current room level
williamr@2:         * @return -
williamr@2:         */
williamr@2:         IMPORT_C void RoomLevelRange( TInt32& aMin, TInt32& aMax );
williamr@2: 
williamr@2:         /**
williamr@2:         * Sets the decay HF Ratio in hundredths
williamr@2:         * @since 3.0
williamr@2:         * @param aDecayHFRatio The decay high frequence ratio in hundredths
williamr@2:         * @return -
williamr@2:         */
williamr@2:         IMPORT_C void SetDecayHFRatioL( TUint32 aDecayHFRatio );
williamr@2: 
williamr@2:         /**
williamr@2:         * Sets the decay time in millisecond
williamr@2:         * @since 3.0
williamr@2:         * @param aDecayTime Decay time in ms
williamr@2:         */
williamr@2:         IMPORT_C void SetDecayTimeL( TUint32 aDecayTime );
williamr@2: 
williamr@2:         /**
williamr@2:         * Sets the density value as percentage in hundredths
williamr@2:         * @since 3.0
williamr@2:         * @param aDensity The density.
williamr@2:         */
williamr@2:         IMPORT_C void SetDensityL( TUint32 aDensity );
williamr@2: 
williamr@2:         /**
williamr@2:         * Sets the diffusion value as a percentage in hundredths
williamr@2:         * @since 3.0
williamr@2:         * @param aDiffusion The diffusion.
williamr@2:         */
williamr@2:         IMPORT_C void SetDiffusionL( TUint32 aDiffusion );
williamr@2: 
williamr@2:         /**
williamr@2:         * Sets the reverb reflections delay
williamr@2:         * @since 3.0
williamr@2:         * @param aRefectionsDelay The reflection delay in ms.
williamr@2:         */
williamr@2:         IMPORT_C void SetReflectionsDelayL( TUint32 aReflectionsDelay );
williamr@2: 
williamr@2:         /**
williamr@2:         * Sets the reverb reflections level in milli-dB
williamr@2:         * @since 3.0
williamr@2:         * @param aRefectionsLevel The reflection level in mB
williamr@2:         */
williamr@2:         IMPORT_C void SetReflectionsLevelL( TInt32 aReflectionsLevel );
williamr@2: 
williamr@2:         /**
williamr@2:         * Sets the reverb delay
williamr@2:         * @since 3.0
williamr@2:         * @param aReverbDelay The reverb delay in ms
williamr@2:         */
williamr@2:         IMPORT_C void SetReverbDelayL( TUint32 aReverbDelay );
williamr@2: 
williamr@2:         /**
williamr@2:         * Sets the reverb level
williamr@2:         * @since 3.0
williamr@2:         * @param aReverbLevel The reverb level in mB
williamr@2:         */
williamr@2:         IMPORT_C void SetReverbLevelL( TInt32 aReverbLevel );
williamr@2: 
williamr@2:         /**
williamr@2:         * Sets the room HF level ratio
williamr@2:         * @since 3.0
williamr@2:         * @param aRoomHFLevel The room high frequency ratio
williamr@2:         */
williamr@2:         IMPORT_C void SetRoomHFLevelL( TInt32 aRoomHFLevel );
williamr@2: 
williamr@2:         /**
williamr@2:         * Sets the room level value in milli-dB
williamr@2:         * @since 3.0
williamr@2:         * @param aRoomLevel The room level
williamr@2:         */
williamr@2:         IMPORT_C void SetRoomLevelL( TInt32 aRoomLevel );
williamr@2: 
williamr@2:         /**
williamr@2:         * Gets the total delay maximum in milliseconds
williamr@2:         * @since 3.0
williamr@2:         * @return reverb delay maximum
williamr@2:         */
williamr@2:         IMPORT_C TUint32 DelayMax() const;
williamr@2: 
williamr@2:     public: // functions from base class
williamr@2: 
williamr@2:         /*
williamr@2:         * From CAudioEffect
williamr@2:         * Get the unique identifier of the audio effect
williamr@2:         * @since 3.0
williamr@2:         * @return Unique identifier
williamr@2:         */
williamr@2:         IMPORT_C TUid Uid() const;
williamr@2: 
williamr@2:     protected:  // Functions from base classes
williamr@2: 
williamr@2:         /**
williamr@2:         * From CAudioEffect
williamr@2:         * Create a package of the effect data
williamr@2:         * @since 3.0
williamr@2:         * @return A descriptor containing the effect data.
williamr@2:         */
williamr@2:         IMPORT_C const TDesC8& DoEffectData();
williamr@2: 
williamr@2:         /**
williamr@2:         * From CAudioEffect
williamr@2:         * Internal function to unpack effect data
williamr@2:         * @since 3.0
williamr@2:         * @param aEffectDataBuffer Descriptor containing packed effect data
williamr@2:         * @return -
williamr@2:         */
williamr@2:         IMPORT_C void SetEffectData( const TDesC8& aEffectDataBuffer );
williamr@2: 
williamr@2:     protected:
williamr@2: 
williamr@2:         /**
williamr@2:         * Private C++ constructor for this class.
williamr@2:         * @since 3.0
williamr@2:         * @return   -
williamr@2:         */
williamr@2:         IMPORT_C CEnvironmentalReverb();
williamr@2: 
williamr@2:     protected:
williamr@2: 
williamr@2:         // Reverb data structure
williamr@2:         TEfEnvironmentalReverb iReverbData;
williamr@2:         // Data package sent to server
williamr@2:         TEfEnvReverbDataPckg iDataPckgTo;
williamr@2:         // Data package received from server
williamr@2:         TEfEnvReverbDataPckg iDataPckgFrom;
williamr@2: 
williamr@2:     protected:    // Friend classes
williamr@2: 
williamr@2:         friend class CEnvironmentalReverbMessageHandler;
williamr@2:         friend class CEnvironmentalReverbUtility;
williamr@2: 
williamr@2:     };
williamr@2: 
williamr@2: #endif  // of CENVIRONMENTALREVERB_H
williamr@2: 
williamr@2: // End of File