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@4: * under the terms of "Eclipse Public License v1.0" williamr@2: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.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 williamr@2: #include williamr@2: #include williamr@2: #include 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