williamr@2: /* williamr@2: * Copyright (c) 2004 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 audio effects base class. williamr@2: * williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: #ifndef CAUDIOEFFECT_H williamr@2: #define CAUDIOEFFECT_H williamr@2: williamr@2: // INCLUDES williamr@2: #include williamr@2: williamr@2: // FORWARD DECLARATION williamr@2: class MAudioEffectObserver; williamr@2: williamr@2: // CLASS DECLARATION williamr@2: williamr@2: /** williamr@2: * This is the base class for audio effects. williamr@2: * williamr@2: * @lib AudioEffectBase.lib williamr@2: * @since 3.0 williamr@2: */ williamr@2: williamr@2: class CAudioEffect : public CBase williamr@2: { williamr@2: williamr@2: public: // Constructors and destructor williamr@2: williamr@2: /** williamr@2: * Destructor williamr@2: */ williamr@2: IMPORT_C virtual ~CAudioEffect(); williamr@2: williamr@2: public: // New functions williamr@2: williamr@2: /** williamr@2: * Apply effect settings williamr@2: * @since 3.0 williamr@2: */ williamr@2: virtual void ApplyL() = 0; williamr@2: williamr@2: /** williamr@2: * Disable the effect williamr@2: * @since 3.0 williamr@2: */ williamr@2: IMPORT_C virtual void DisableL(); williamr@2: williamr@2: /** williamr@2: * Enable the effect williamr@2: * @since 3.0 williamr@2: */ williamr@2: IMPORT_C virtual void EnableL(); williamr@2: williamr@2: /** williamr@2: * Enforce the effect. williamr@2: * @since 3.0 williamr@2: * @param aEnforced Indicate the effect is to be enforced or not. ETrue = Enforced. williamr@2: */ williamr@2: IMPORT_C virtual void EnforceL( TBool aEnforced ); williamr@2: williamr@2: /** williamr@2: * Check if this effect object currently has update rights. williamr@2: * A client can lose update rights in some hardware platforms where there are a limited williamr@2: * number of instances of an effect that can exist at the same time. When an effect instance williamr@2: * has lost update rights the user can still change settings, but any calls to Apply the williamr@2: * settings will be deferred until update rights are regained. williamr@2: * @since 3.0 williamr@2: * @return ETrue if this object currently has rights to update the settings of this effect, williamr@2: * EFalse otherwise. williamr@2: */ williamr@2: IMPORT_C virtual TBool HaveUpdateRights() const; williamr@2: williamr@2: /** williamr@2: * Check if the effect is enabled williamr@2: * @since 3.0 williamr@2: * @return ETrue if the effect is enabled, EFalse if the effect is disabled. williamr@2: */ williamr@2: IMPORT_C virtual TBool IsEnabled() const; williamr@2: williamr@2: /** williamr@2: * Check if the effect is enforced. williamr@2: * @since 3.0 williamr@2: * @return ETrue if the effect is enforced, EFalse if the effect isn ot enforced. williamr@2: */ williamr@2: IMPORT_C virtual TBool IsEnforced() const; williamr@2: williamr@2: /** williamr@2: * Adds the specified observer to the list of observers to be notified when williamr@2: * the effect object changes state. williamr@2: * @since 3.0 williamr@2: * @param aObserver Object to be added to notifier list. williamr@2: */ williamr@2: IMPORT_C void RegisterObserverL( MAudioEffectObserver& aObserver ); williamr@2: williamr@2: /* williamr@2: * Get the unique identifier of the audio effect williamr@2: * @since 3.0 williamr@2: * @return Unique identifier of the audio effect object. williamr@2: */ williamr@2: virtual TUid Uid() const = 0 ; williamr@2: williamr@2: /** williamr@2: * Removes the specified observer from the list of observers. williamr@2: * @since 3.0 williamr@2: * @param aObserver object to be removed. williamr@2: */ williamr@2: IMPORT_C void UnRegisterObserver( MAudioEffectObserver& aObserver ); williamr@2: williamr@2: protected: williamr@2: williamr@2: /** williamr@2: * Private C++ constructor for this class. williamr@2: * @since 3.0 williamr@2: * @param aEffectObserver reference to event observer object williamr@2: * @return - williamr@2: */ williamr@2: IMPORT_C CAudioEffect(); williamr@2: williamr@2: /** williamr@2: * Internal function to package data into a descriptor. williamr@2: * @since 3.0 williamr@2: * @return A descriptor containing the effect data. williamr@2: */ williamr@2: virtual const TDesC8& DoEffectData() = 0 ; williamr@2: williamr@2: /** williamr@2: * Internal function to unpack effect data williamr@2: * @since 3.0 williamr@2: * @param aEffectDataBuffer Descriptor containing packed effect data williamr@2: */ williamr@2: virtual void SetEffectData( const TDesC8& aEffectDataBuffer ) = 0; williamr@2: williamr@2: protected: // Data williamr@2: williamr@2: // Flag to indicate whether the effect is enabled or not williamr@2: TBool iEnabled; williamr@2: // Flag to indicate wheter the effect is enforced williamr@2: TBool iEnforced; williamr@2: // Flag to indicate wheter the effect current has update rights williamr@2: TBool iHaveUpdateRights; williamr@2: // Pointer to Observers williamr@2: RPointerArray iObservers; williamr@2: }; williamr@2: williamr@2: #endif // of CAUDIOEFFECT_H williamr@2: williamr@2: // End of File