diff -r 0fd27995241b -r 9ac0a0a7da70 javauis/amms_qt/mmacontrol/src.emc/cammsemcreverbcontrol.cpp --- a/javauis/amms_qt/mmacontrol/src.emc/cammsemcreverbcontrol.cpp Tue May 11 16:07:20 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,464 +0,0 @@ -/* -* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Manipulates the settings of an audio effect called reverb. -* -*/ - - -// INCLUDE FILES -#include "cammsemcreverbcontrol.h" -#include -#include -#ifdef _DEBUG -// CONSTANTS -const TInt KAMMSMaxReverbLevel = 0; -const TInt KAMMSMinReverbTime = 0; -#endif // _DEBUG - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CAMMSEMCReverbControl::NewLC -// Two-phased constructor. -// ----------------------------------------------------------------------------- -CAMMSEMCReverbControl* CAMMSEMCReverbControl::NewLC(CMMAPlayer* aPlayer) -{ - CAMMSEMCReverbControl* self = new(ELeave) CAMMSEMCReverbControl(aPlayer); - - CleanupStack::PushL(self); - self->ConstructL(); - - return self; -} - -// Destructor -CAMMSEMCReverbControl::~CAMMSEMCReverbControl() -{ - LOG( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::~CAMMSEMCReverbControl"); - - // Perform DeallocateControl, if the state change has not yet performed it. - DeallocateControl(); - if (iAMMSEMCReverbEnvironmentalPresetUtility) - delete iAMMSEMCReverbEnvironmentalPresetUtility; - delete iPresetNames; -} - -// ----------------------------------------------------------------------------- -// CAMMSEMCReverbControl::SetReverbLevelL -// Sets the gain level of the reverberation. -// ----------------------------------------------------------------------------- -// -TInt CAMMSEMCReverbControl::SetReverbLevelL(TInt aLevel) -{ - LOG1( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::SetReverbLevelL: %d", aLevel); - __ASSERT_DEBUG(aLevel <= KAMMSMaxReverbLevel, User::Invariant()); - TInt roomLevel = 0; - iMReverbControl->RoomLevel(roomLevel); - TInt reflectionLevel =0; - iMReverbControl->ReflectionsLevel(reflectionLevel); - TInt tempChange = aLevel - reflectionLevel - roomLevel; - - // Sets the reverb reflections level in mB - iMReverbControl->SetReflectionsLevel(aLevel - roomLevel); - - // Calculate native reverb level. - TInt reverbLevel; - // iMReverbControl->ReverbLevel(reverbLevel); - reverbLevel = iEnvReverbLevel + tempChange; - - // Ensure that the level is within the limits. - - TInt minLevel = 0; - TInt maxLevel = 0; - iMReverbControl->ReverbLevelRange(minLevel, maxLevel); - - LOG1( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::SetReverbLevelL: orig %d", - reverbLevel); - - reverbLevel = Min(reverbLevel, maxLevel); - reverbLevel = Max(reverbLevel, minLevel); - - LOG1( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::SetReverbLevelL: set %d", - reverbLevel); - // Sets the reverb level in mB - iMReverbControl->SetReverbLevel(reverbLevel); - // Apply can be called for Reverb, as it does not internally include EnableL - // unlike in case of Equalizer or StereoWidening - LOG( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::SetReverbLevelL calling ApplyL"); - iMReverbControl->Apply(); - - // Return the value that was used in setting the reverb - return aLevel; -} - -// ----------------------------------------------------------------------------- -// CAMMSEMCReverbControl::SetReverbTimeL -// Sets the reverberation time of the reverb. -// ----------------------------------------------------------------------------- -// -void CAMMSEMCReverbControl::SetReverbTimeL(TInt aTime) -{ - LOG1( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::SetReverbTimeL: %d", aTime); - // Check in debug build that aTime is within valid range. - __ASSERT_DEBUG(aTime >= KAMMSMinReverbTime, User::Invariant()); - iMReverbControl->SetDecayTime(aTime); - iMReverbControl->Apply(); -} - -// ----------------------------------------------------------------------------- -// CAMMSEMCReverbControl::ReverbLevel -// Gets the gain level of the reverberation. -// ----------------------------------------------------------------------------- -// -TInt CAMMSEMCReverbControl::ReverbLevel() -{ - LOG( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::ReverbLevel called"); - TInt iReverbLevel; - iMReverbControl->ReverbLevel(iReverbLevel); - return iReverbLevel; -} - -// ----------------------------------------------------------------------------- -// CAMMSEMCReverbControl::ReverbTime -// Gets the reverberation time. -// ----------------------------------------------------------------------------- -// -TInt CAMMSEMCReverbControl::ReverbTime() -{ - LOG( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::ReverbTime called"); - - TUint iReverbTime; - iMReverbControl->DecayTime(iReverbTime); - return iReverbTime; -} - -// ----------------------------------------------------------------------------- -// CAMMSEMCReverbControl::MinReverbLevel -// Gets the minimum level of the reverberation. -// ----------------------------------------------------------------------------- -// -TInt CAMMSEMCReverbControl::MinReverbLevel() -{ - LOG( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::MinReverbLevel called"); - - TInt minLevel; - TInt maxLevel; - iMReverbControl->ReverbLevelRange( - minLevel, maxLevel); - - return minLevel; -} - -// ----------------------------------------------------------------------------- -// CAMMSEMCReverbControl::MaxReverbLevel -// Gets the maximum level of the reverberation. -// ----------------------------------------------------------------------------- -// -TInt CAMMSEMCReverbControl::MaxReverbLevel() -{ - LOG( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::MaxReverbLevel called"); - TInt minLevel; - TInt maxLevel; - iMReverbControl->ReverbLevelRange(minLevel, maxLevel); - return maxLevel; -} - -// ----------------------------------------------------------------------------- -// CAMMSEMCReverbControl::SetPresetL -// Sets the effect according to the given preset. -// ----------------------------------------------------------------------------- -// -void CAMMSEMCReverbControl::SetPresetL(const TDesC& aPreset) -{ - LOG1( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::SetPresetL \"%S\"", aPreset.Ptr()); - CEnvironmentalReverb *iEnvironmentalReverb = NULL; - User::LeaveIfError(iAMMSEMCReverbEnvironmentalPresetUtility->PrepareEmptyReverbUtilitiesL()); - iAMMSEMCReverbEnvironmentalPresetUtility->GetPresetNamesL(*iPresetNames); - TInt presetPosition = 0; - TInt findPreset = iPresetNames->Find(aPreset, presetPosition); - if (findPreset == 0) // Find returns zero, if a matching element is found. - { - iEnvironmentalReverb = iAMMSEMCReverbEnvironmentalPresetUtility->GetEnvironmentalReverbAtPresetIndexL(presetPosition); - iCurrentPreset = presetPosition; - } - else - { - iAMMSEMCReverbEnvironmentalPresetUtility->DeleteEmptyReverbUtilities(); - User::Leave(KErrArgument); - } - - if (!iEnvironmentalReverb) - { - iAMMSEMCReverbEnvironmentalPresetUtility->DeleteEmptyReverbUtilities(); - return; - } - //Get all preset data here - - TInt iReverbTime = iEnvironmentalReverb-> DecayTime(); - TInt iReverbLevel = iEnvironmentalReverb->ReflectionsLevel() + iEnvironmentalReverb->RoomLevel(); - iEnvReverbLevel = iEnvironmentalReverb->ReverbLevel(); - TInt roomLevel = iEnvironmentalReverb->RoomLevel(); - TInt reflectionLevel = iEnvironmentalReverb->ReflectionsLevel(); - TUint decayHFRatio = iEnvironmentalReverb->DecayHFRatio(); - TUint density = iEnvironmentalReverb->Density(); - TUint diffusion = iEnvironmentalReverb->Diffusion(); - TUint reflectionsDelay = iEnvironmentalReverb->ReflectionsDelay(); - TUint reverbDelay = iEnvironmentalReverb->ReverbDelay(); - TUint roomHFLevel = iEnvironmentalReverb->RoomHFLevel(); - - // Set all preset data to EMC - TInt err = iMReverbControl->SetDecayTime(iReverbTime); - err = iMReverbControl->SetReverbLevel(iReverbLevel); - err = iMReverbControl->SetRoomLevel(roomLevel); - err = iMReverbControl->SetReflectionsLevel(reflectionLevel); - err = iMReverbControl->SetDecayHFRatio(decayHFRatio); - err = iMReverbControl->SetDensity(density); - err = iMReverbControl->SetDiffusion(diffusion); - err = iMReverbControl->SetReflectionsDelay(reflectionsDelay); - err = iMReverbControl->SetReverbDelay(reverbDelay); - err = iMReverbControl->SetRoomHFLevel(roomHFLevel); - err = iMReverbControl->Apply(); - ELOG1( EJavaAMMS, "AMMS::CAMMSEMCReverbControl::SetPresetL iMReverbControl setter func. err = %d",err); - iAMMSEMCReverbEnvironmentalPresetUtility->DeleteEmptyReverbUtilities(); -} - -// ----------------------------------------------------------------------------- -// CAMMSEMCReverbControl::PresetNamesL -// Gets the available preset names. -// ----------------------------------------------------------------------------- -// -const CDesCArray& CAMMSEMCReverbControl::PresetNamesL() -{ - - //CEnvironmentalReverb *iEnvironmentalReverb = NULL; - iAMMSEMCReverbEnvironmentalPresetUtility->PrepareEmptyReverbUtilitiesL(); - iAMMSEMCReverbEnvironmentalPresetUtility->GetPresetNamesL(*iPresetNames); - iAMMSEMCReverbEnvironmentalPresetUtility->DeleteEmptyReverbUtilities(); - return *iPresetNames; -} - -// ----------------------------------------------------------------------------- -// CAMMSEMCReverbControl::PresetL -// Gets the current preset. -// ----------------------------------------------------------------------------- -// -const TDesC& CAMMSEMCReverbControl::PresetL() -{ - //if no preset is set, return null - if (iCurrentPreset < 0) - { - return KNullDesC; - } - - else - { - // Retrieves a Preset with the given index from the utility class - iAMMSEMCReverbEnvironmentalPresetUtility->PrepareEmptyReverbUtilitiesL(); - iAMMSEMCReverbEnvironmentalPresetUtility->GetPresetAtIndexL(iPresetName , iCurrentPreset); - iAMMSEMCReverbEnvironmentalPresetUtility->DeleteEmptyReverbUtilities(); - return iPresetName; - } - - -} - - -// ----------------------------------------------------------------------------- -// CAMMSEMCReverbControl::SetEnabledL -// Enables/disables the effect. -// ----------------------------------------------------------------------------- -// -void CAMMSEMCReverbControl::SetEnabledL(TBool aEnable) -{ - if (aEnable) - { - // Enable the effect - LOG( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::SetEnabledL(true), calling Enable"); - iMReverbControl->Enable(); - iMReverbControl->Apply(); - } - else - { - LOG( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::SetEnabledL(false), calling Disable"); - iMReverbControl->Disable(); - } -} - -// ----------------------------------------------------------------------------- -// CAMMSEMCReverbControl::PrepareControlL -// Function which is called after the correct state is set in Player. -// ----------------------------------------------------------------------------- -// -void CAMMSEMCReverbControl::PrepareControlL() -{ - // Perform the action only for the first time, skip if called afterwards - if (!iMReverbControl) - { - LOG( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::PrepareControlL"); - //Create Reverb Effect Control - iStreamControl = (static_cast(iMMAPlayer))->StreamControl(); - iFactory = (static_cast(iMMAPlayer))->MMFactory(); - - MEffectControl* temp(NULL); - User::LeaveIfError(iFactory->CreateEffectControl(KReverbEffectControl, temp)); - iMReverbControl = static_cast(temp); - User::LeaveIfError(iStreamControl->AddEffect(*iMReverbControl)); - iMReverbControl->Enable(); - SetPresetL(KAMMSEMCDefaultReverbPreset); - - } -} - -// ----------------------------------------------------------------------------- -// CAMMSEMCReverbControl::DeallocateControl -// Function which is called after the correct state is set in Player. -// ----------------------------------------------------------------------------- -// -void CAMMSEMCReverbControl::DeallocateControl() -{ - - if (iMReverbControl) - { - LOG( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::DeallocateControl"); - - // Reverb for Audio can be disabled or enabled - TRAPD(err,iMReverbControl->Disable()); - if (err != KErrNone) - { - //Some EMC Error - ELOG1( EJavaAMMS, "AMMS::CAMMSEMCReverbControl::DeallocateControl err = %d",err); - } - //return the control to factory - MEffectControl* temp = iMReverbControl; - iStreamControl->RemoveEffect(*temp); - // Delete the Effect - MEffectControl* tempCtrl = iMReverbControl; - iFactory->DeleteEffectControl(tempCtrl); - iMReverbControl = NULL; - - iCurrentPreset = -1; - } -} - - -// ----------------------------------------------------------------------------- -// CAMMSEMCReverbControl::GetReverbControl -// Returns the reverb control. It will be used by CAMMSEMCReverbSourceControl -// ----------------------------------------------------------------------------- -MReverbControl * CAMMSEMCReverbControl::GetReverbControlL() -{ - LOG( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::GetReverbControl"); - - if (! iMReverbControl) - { - PrepareControlL(); // creates the control - } - - return iMReverbControl; -} - -// ----------------------------------------------------------------------------- -// CAMMSEMCReverbControl::CurrentPresetIndex -// Returns the Current Preset Index. It will be used by CAMMSEMCReverbSourceControl -// ----------------------------------------------------------------------------- -TInt CAMMSEMCReverbControl::CurrentPresetIndex() -{ - return iCurrentPreset; -} - -// ----------------------------------------------------------------------------- -// Overriding the base class CAMMSEffectControl function here -//------------------------------------------------------------------------------ - -void CAMMSEMCReverbControl::SetEnforcedL(TBool aEnforced) -{ - LOG( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::SetEnforcedL"); - // Indicate the effect is to be enforced or not. ETrue = Enforced. - iMReverbControl->Enforce(aEnforced); - - ApplySettingsL(); - -} -TBool CAMMSEMCReverbControl::Enforced() -{ - LOG( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::Enforced"); - // Returns ETrue if the effect is enforced, EFalse if not enforced. - TBool enforced; - iMReverbControl->IsEnforced(enforced); - return enforced; - -} -void CAMMSEMCReverbControl::SetScopeL(TInt aScope) -{ - LOG( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::SetScopeL"); - __ASSERT_DEBUG( - (aScope == CAMMSEffectControlGroup::EScopeLiveOnly), - User::Invariant()); - // Just to suppress warning in release build - (void)aScope; -} -TInt CAMMSEMCReverbControl::Scope() -{ - LOG( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::Scope"); - // For now only the (LIVE_ONLY) scope is supported. - return CAMMSEffectControlGroup::EScopeLiveOnly; - -} -void CAMMSEMCReverbControl::ApplySettingsL() -{ - LOG( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl::ApplySettingsL"); - TBool enabled; - iMReverbControl->IsEnabled(enabled); - if (enabled) - { - LOG( EJavaAMMS, EInfo, "AMMS::CAMMSEMCReverbControl:ApplySettingsL calling ApplyL"); - iMReverbControl->Apply(); - } -} - -const TDesC& CAMMSEMCReverbControl::ClassName() const -{ - return KAMMSEMCReverbControl; -} - -// ----------------------------------------------------------------------------- -// CAMMSEMCReverbControl::ConstructL -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -void CAMMSEMCReverbControl::ConstructL() -{ - // Create array for preset names - iPresetNames = new(ELeave) CDesCArrayFlat(1); - - // Set current preset to a negative value as it is not set yet - iCurrentPreset = -1; - - CAMMSEffectControl::ConstructL(); - iAMMSEMCReverbEnvironmentalPresetUtility = new(ELeave) CAMMSEMCReverbEnvironmentalPresetUtility; - iAMMSEMCReverbEnvironmentalPresetUtility->ConstructL(); - -} - -// ----------------------------------------------------------------------------- -// CAMMSEMCReverbControl::CAMMSEMCReverbControl -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -CAMMSEMCReverbControl::CAMMSEMCReverbControl(CMMAPlayer* aPlayer) - : CAMMSBaseReverbControl(aPlayer) -{ - iMMAPlayer = aPlayer; -} - -// End of File