diff -r 095bea5f582e -r 0ac9a5310753 mmserv/tms/tmsserver/src/tmsrtaudiohdlr.cpp --- a/mmserv/tms/tmsserver/src/tmsrtaudiohdlr.cpp Tue Aug 31 15:43:02 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,831 +0,0 @@ -/* - * Copyright (c) 2010 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: Audio player implementation. - * - */ - -// INCLUDE FILES -#include -#include // For converting data for TTS -#include "tmsshared.h" -#include "tmsutility.h" -#include "tmsrtaudiohdlr.h" -#include "tmsrtcontainer.h" -#include "tmsrtaudiohdlrobsrv.h" - -using namespace TMS; - -// CONSTANTS -const TInt KMinVolumeLevel = 1; -const TInt KMaxVolumeLevel = 10; -const TInt KTMSRingingRepeatsTrailPause = 1000000; -const TInt KTMSAudioAscendingRampDuration = 3000000; -const TInt KTMSMdaAudioToneRepeatForever = -2; -const TInt KUTF8Multiply = 2; - -_LIT(KFileListRngMimeType, "application/vnd.nokia.ringing-tone"); - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::TMSRtAudioHdlr -// ----------------------------------------------------------------------------- -// -TMSRtAudioHdlr::TMSRtAudioHdlr(TAudioDataFormat aDataFormat, - TMSRtAudioHdlrObsrv& aObserver, TUint aPriority, TUint aPreference, - TInt aType) : - iFormat(aDataFormat), - iObserver(aObserver), - iPriority(aPriority), - iPreference(aPreference), - iRtType(aType) - { - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::ConstructL -// ----------------------------------------------------------------------------- -// -void TMSRtAudioHdlr::ConstructL(const TDesC& aFileName) - { - TRACE_PRN_FN_ENT; - if (iFormat == EFormatTone) - { - iTonePlayer = CMdaAudioToneUtility::NewL(*this); - iTonePlayer->PrepareToPlayFileSequence(aFileName); - iPlayerStatus = EToneLoading; - } - else - { - iSamplePlayer = CMdaAudioPlayerUtility::NewFilePlayerL(aFileName, *this, - iPriority, iPreference); - iPlayerStatus = EToneLoading; - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::ConstructSeqL -// ----------------------------------------------------------------------------- -// -void TMSRtAudioHdlr::ConstructSeqL(const TDesC8& aSequence) - { - TRACE_PRN_FN_ENT; - iTonePlayer = CMdaAudioToneUtility::NewL(*this); - iSequence = aSequence.AllocL(); - iTonePlayer->PrepareToPlayDesSequence(*iSequence); - iPlayerStatus = EToneLoading; - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::ConstructTtsL -// ----------------------------------------------------------------------------- -// -void TMSRtAudioHdlr::ConstructTtsL(const TDesC& aTtsText, TUint aPriority, - TUint aPreference) - { - TRACE_PRN_FN_ENT; - delete iTtsPlayer; - iTtsPlayer = NULL; - iTtsPlayer = CMdaAudioPlayerUtility::NewL(*this, aPriority, aPreference); - - __ASSERT_DEBUG(iTtsPlayer, PANIC(TMS_RESULT_UNINITIALIZED_OBJECT)); - - delete iTtsText; - iTtsText = NULL; - // UTF-8 strings can take up to 4 bytes per character - iTtsText = HBufC8::NewL(aTtsText.Length() << KUTF8Multiply); - - __ASSERT_DEBUG(iTtsText, PANIC(TMS_RESULT_UNINITIALIZED_OBJECT)); - - TPtr8 refText = iTtsText->Des(); - User::LeaveIfError(CnvUtfConverter::ConvertFromUnicodeToUtf8(refText, - aTtsText)); - - // UTF-8 chars can be up to 4 bytes long, but usually - // take 1-2 bytes, 3 for asian chars. - HBufC8* oldText = iTtsText; - iTtsText = iTtsText->ReAlloc(iTtsText->Length()); - if (!iTtsText) - { - // ReAlloc failed, set back to original. - iTtsText = oldText; - } - iTtsPlayer->OpenDesL(*iTtsText); - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::NewL -// ----------------------------------------------------------------------------- -// -TMSRtAudioHdlr* TMSRtAudioHdlr::NewL(const TMSRtContainer& aRingingTone, - TUint aPriority, TUint aPreference, TMSRtAudioHdlrObsrv& aObserver, - TInt aType, TBool aExtSecNeeded) - { - TRACE_PRN_FN_ENT; - // Check file DRM property if extended security is needed. - if (aExtSecNeeded) - { - if (!aRingingTone.IsFileInRom() && !aRingingTone.IsFileDrmProtected()) - { - // DRM extended security check permission denied - User::Leave(KErrPermissionDenied); - } - // DRM extended security check ok - } - - // RNG file types have to be played with CMdaAudioToneUtility player. - // Other audio formats use sample player - TAudioDataFormat format = (aRingingTone.MimeType().CompareF( - KFileListRngMimeType) == KErrNone) ? EFormatTone : EFormatSample; - - TMSRtAudioHdlr* self = new (ELeave) TMSRtAudioHdlr(format, aObserver, - aPriority, aPreference, aType); - CleanupStack::PushL(self); - self->ConstructL(aRingingTone.FileName()); - CleanupStack::Pop(self); - TRACE_PRN_FN_EXT; - return self; - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::NewL -// ----------------------------------------------------------------------------- -// -TMSRtAudioHdlr* TMSRtAudioHdlr::NewL(const TDesC& aFileName, TUint aPriority, - TUint aPreference, TMSRtAudioHdlrObsrv& aObserver, TInt aType, - TBool aExtSecNeeded) - { - TRACE_PRN_FN_ENT; - TMSRtContainer* tone = TMSRtContainer::NewL(aFileName); - CleanupStack::PushL(tone); - TMSRtAudioHdlr* player = TMSRtAudioHdlr::NewL(*tone, aPriority, aPreference, - aObserver, aType, aExtSecNeeded); - CleanupStack::PopAndDestroy(tone); - TRACE_PRN_FN_EXT; - return player; - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::NewSeqL -// ----------------------------------------------------------------------------- -// -TMSRtAudioHdlr* TMSRtAudioHdlr::NewSeqL(const TDesC8& aSequence, - TUint aPriority, TUint aPreference, TMSRtAudioHdlrObsrv& aObserver, - TInt aType) - { - TRACE_PRN_FN_ENT; - TMSRtAudioHdlr* self = new (ELeave) TMSRtAudioHdlr(EFormatTone, - aObserver, aPriority, aPreference, aType); - CleanupStack::PushL(self); - self->ConstructSeqL(aSequence); - CleanupStack::Pop(self); - TRACE_PRN_FN_EXT; - return self; - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::NewTtsL -// ----------------------------------------------------------------------------- -// -TMSRtAudioHdlr* TMSRtAudioHdlr::NewTtsL(const TDesC& aText, TUint aPriority, - TUint aPreference, TMSRtAudioHdlrObsrv& aObserver, TInt aType) - { - TRACE_PRN_FN_ENT; - TMSRtAudioHdlr* self = new (ELeave) TMSRtAudioHdlr(EFormatTts, aObserver, - aPriority, aPreference, aType); - CleanupStack::PushL(self); - self->ConstructTtsL(aText, aPriority, aPreference); - CleanupStack::Pop(self); - TRACE_PRN_FN_EXT; - return self; - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::~TMSRtAudioHdlr -// ----------------------------------------------------------------------------- -// -TMSRtAudioHdlr::~TMSRtAudioHdlr() - { - TRACE_PRN_FN_ENT; - /*if (i3DPlugin) - { - i3DPlugin->Stop(); - } - delete i3DPlugin; - delete iAudioOutput;*/ - delete iTonePlayer; - delete iSamplePlayer; - delete iTtsPlayer; - delete iSequence; - delete iTtsText; - REComSession::FinalClose(); - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::Play -// ----------------------------------------------------------------------------- -// -void TMSRtAudioHdlr::Play(TRingingType aRingType, TInt aVolume, - TInt aTTsToBePlayed) - { - TRACE_PRN_FN_ENT; - iRingType = aRingType; - iVolume = aVolume; - iTTsToBePlayed = aTTsToBePlayed; - - if (iFormat == EFormatTone) - { - switch (iPlayerStatus) - { - case ETonePlaying: - if (iTonePlayer) - { - iTonePlayer->CancelPlay(); - } - DoPlay(); - break; - case EToneReady: - iPlayerStatus = ETonePlaying; - DoPlay(); - break; - case EToneLoading: - iToBePlaying = ETrue; - break; - default: - __ASSERT_DEBUG(EFalse, - User::Panic(KTMSPanic, TMS_RESULT_DOES_NOT_EXIST)); - break; - } - } - else if (iFormat == EFormatTts) - { - switch (iPlayerStatus) - { - case ETonePlaying: - if (iTtsPlayer) - { - iTtsPlayer->Stop(); - } - DoPlay(); - break; - case EToneReady: - iPlayerStatus = ETonePlaying; - DoPlay(); - break; - case EToneLoading: - iToBePlaying = ETrue; - break; - default: - __ASSERT_DEBUG(EFalse, - User::Panic(KTMSPanic, TMS_RESULT_DOES_NOT_EXIST)); - break; - } - } - else - { - switch (iPlayerStatus) - { - case ETonePlaying: - StopPlaying(); - iPlayerStatus = ETonePlaying; - DoPlay(); - break; - case EToneReady: - iPlayerStatus = ETonePlaying; - DoPlay(); - break; - case EToneLoading: - iToBePlaying = ETrue; - break; - default: - __ASSERT_DEBUG(EFalse, - User::Panic(KTMSPanic, TMS_RESULT_DOES_NOT_EXIST)); - break; - } - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::ReStartPlaying -// ----------------------------------------------------------------------------- -// -void TMSRtAudioHdlr::ReStartPlaying() - { - TRACE_PRN_FN_ENT; - if (iFormat == EFormatTone && iTonePlayer) - { - iTonePlayer->Play(); - iPlayerStatus = ETonePlaying; - } - else if (iFormat == EFormatTts && iTtsPlayer) - { - iTtsPlayer->Play(); - iPlayerStatus = ETonePlaying; - } - else if (iFormat == EFormatSample && iSamplePlayer) - { - iSamplePlayer->Play(); - iPlayerStatus = ETonePlaying; - } - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::StopPlaying -// ----------------------------------------------------------------------------- -// -void TMSRtAudioHdlr::StopPlaying() - { - TRACE_PRN_FN_ENT; - iToBePlaying = EFalse; - - if (iFormat == EFormatTone) - { - if (EMdaAudioToneUtilityPrepared == iTonePlayer->State()) - { - iTonePlayer->CancelPrepare(); - } - else if (EMdaAudioToneUtilityPlaying == iTonePlayer->State()) - { - iTonePlayer->CancelPlay(); - } - } - else if (iFormat == EFormatTts) - { - iTtsPlayer->Stop(); - } - else - { -/* if (i3DPlugin) - { - i3DPlugin->Stop(); - delete i3DPlugin; - i3DPlugin = NULL; - } - else - {*/ - iSamplePlayer->Stop(); -/* }*/ - } - iPlayerStatus = EToneReady; - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::MapcInitComplete -// ----------------------------------------------------------------------------- -// -void TMSRtAudioHdlr::MapcInitComplete(TInt aError, - const TTimeIntervalMicroSeconds& /*aDuration*/) - { - TRACE_PRN_FN_ENT; - TRACE_PRN_N2(_L("RT player type[%d], err[%d]"), iRtType, aError); - - __ASSERT_DEBUG((iFormat == EFormatSample) || - ((iFormat == EFormatTts) && (iPlayerStatus == EToneLoading)), - PANIC(TMS_RESULT_INVALID_STATE)); - - if (aError == TMS_RESULT_SUCCESS) - { - if (iToBePlaying) - { - iPlayerStatus = ETonePlaying; - iToBePlaying = EFalse; - DoPlay(); - } - else - { - iPlayerStatus = EToneReady; - } - } - iObserver.RtAudioHdlrEvent(ECmdRingToneOpenComplete, aError, iRtType); - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::MapcPlayComplete -// ----------------------------------------------------------------------------- -// -void TMSRtAudioHdlr::MapcPlayComplete(TInt aError) - { - TRACE_PRN_FN_ENT; - TRACE_PRN_N2(_L("RT player type[%d], err[%d]"), iRtType, aError); - - iPlayerStatus = EToneReady; - - // Delete 3D plugin before RT player. In case of continuous ringing type, - // 3D plugin is destructed in StopPlaying(). -/* if (i3DPlugin) - { - i3DPlugin->Stop(); - delete i3DPlugin; - i3DPlugin = NULL; - }*/ - iObserver.RtAudioHdlrEvent(ECmdRingTonePlayComplete, aError, iRtType); - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::MatoPrepareComplete -// ----------------------------------------------------------------------------- -// -void TMSRtAudioHdlr::MatoPrepareComplete(TInt aError) - { - TRACE_PRN_FN_ENT; - TRACE_PRN_N2(_L("RT player type[%d], err[%d]"), iRtType, aError); - - __ASSERT_DEBUG(((iFormat == EFormatTone) && - (iPlayerStatus == EToneLoading)), PANIC(TMS_RESULT_INVALID_STATE)); - - if (aError == TMS_RESULT_SUCCESS) - { - if (iToBePlaying) - { - iPlayerStatus = ETonePlaying; - iToBePlaying = EFalse; - DoPlay(); - } - else - { - iPlayerStatus = EToneReady; - } - } - iObserver.RtAudioHdlrEvent(ECmdRingToneOpenComplete, aError, iRtType); - TRACE_PRN_FN_ENT; - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::MatoPlayComplete -// ----------------------------------------------------------------------------- -// -void TMSRtAudioHdlr::MatoPlayComplete(TInt aError) - { - TRACE_PRN_FN_ENT; - TRACE_PRN_N2(_L("RT player type[%d], err[%d]"), iRtType, aError); - iObserver.RtAudioHdlrEvent(ECmdRingTonePlayComplete, aError, iRtType); - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::DoPlay -// ----------------------------------------------------------------------------- -// -void TMSRtAudioHdlr::DoPlay() - { - TRACE_PRN_FN_ENT; - - __ASSERT_DEBUG(iPlayerStatus == ETonePlaying, - PANIC(TMS_RESULT_INVALID_STATE)); - - //TInt err(TMS_RESULT_SUCCESS); - SetRingingTypeProperties(); - - if (iFormat == EFormatTone) - { - iTonePlayer->Play(); - } - else if (iFormat == EFormatTts) - { - iTtsPlayer->Play(); - } - else - { -#ifdef __WINSCW__ - iSamplePlayer->Play(); -#else -/* - //TODO: compare with phoneapp - TInt err = KErrNone; - TRAP(err, i3DPlugin = C3DRingingToneInterface::NewL(KNullUid)); - if (!err && i3DPlugin) - { - i3DPlugin->SetAttr(E3DRTIAttrAudioPlayerUtility, iSamplePlayer); - TRAP(err, i3DPlugin->PlayL()) - } - if (err || !i3DPlugin) - { - if (!iAudioOutput) - { - TRAP(err, iAudioOutput = CAudioOutput::NewL(*iSamplePlayer)); - } - if (!err && iAudioOutput) - { - TRAP(err, iAudioOutput->SetAudioOutputL(CAudioOutput::EAll)); - } - }*/ - iSamplePlayer->Play(); -#endif //__WINSCW__ - } - - TRACE_PRN_FN_EXT; - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::SetRingingTypeProperties -// ----------------------------------------------------------------------------- -// -void TMSRtAudioHdlr::SetRingingTypeProperties() - { - TInt rampTime(0); - if (iFormat == EFormatTone) - { - __ASSERT_DEBUG(iTonePlayer, PANIC(TMS_RESULT_UNINITIALIZED_OBJECT)); - switch (iRingType) - { - case ETypeRinging: - { - // If we have TTS activated and ringing type is "ringing", then - // we need to play TTS sequence again when ringtone restarts. - // That's why we need to set ringing type to ETypeRingingOnce, - // because it is the only way of knowing when ringtone playback - // is completed. Then we can restart it with new TTS iterations. - if (iTTsToBePlayed) - { - // Play only once - iTonePlayer->SetRepeats(0, TTimeIntervalMicroSeconds( - KTMSRingingRepeatsTrailPause)); - iTonePlayer->SetVolume(ConvertVolume(iVolume)); - } - else - { - iTonePlayer->SetRepeats(KTMSMdaAudioToneRepeatForever, - TTimeIntervalMicroSeconds( - KTMSRingingRepeatsTrailPause)); - iTonePlayer->SetVolume(ConvertVolume(iVolume)); - } - break; - } - case ETypeRingingOnce: - { - // Play only once - iTonePlayer->SetRepeats(0, TTimeIntervalMicroSeconds( - KTMSRingingRepeatsTrailPause)); - iTonePlayer->SetVolume(ConvertVolume(iVolume)); - break; - } - case ETypeAscending: - { - iTonePlayer->SetRepeats(KTMSMdaAudioToneRepeatForever, - TTimeIntervalMicroSeconds( - KTMSRingingRepeatsTrailPause)); - - // Special case for TTS + ascending profile. Volume and - // ramptime need to be different then usual - if (iTTsToBePlayed) - { - // RampTime is only 3 seconds and volume is 1. - rampTime = KTMSAudioAscendingRampDuration; - iTonePlayer->SetVolumeRamp(TTimeIntervalMicroSeconds( - rampTime)); - iCurrentVolume = 1; //we start from the lowest volume - iTonePlayer->SetVolume(ConvertVolume(iCurrentVolume)); - } - else - { - // RampTime: time for one step * volume level - rampTime = KTMSAudioAscendingRampDuration * iVolume; - iTonePlayer->SetVolumeRamp(TTimeIntervalMicroSeconds( - rampTime)); - iCurrentVolume = 1; //we start from the lowest volume - iTonePlayer->SetVolume(ConvertVolume(iVolume)); - } - break; - } - default: - //PANIC(TMS_RESULT_DOES_NOT_EXIST); - break; - } - //Set priority and preference - iTonePlayer->SetPriority(iPriority, iPreference); - } - else if (iFormat == EFormatTts) - { - __ASSERT_DEBUG(iTtsPlayer, PANIC(TMS_RESULT_UNINITIALIZED_OBJECT)); - switch (iRingType) - { - case ETypeRinging: - case ETypeAscending: - { - // Not allowed for TTS. - break; - } - case ETypeRingingOnce: - { - iTtsPlayer->SetRepeats(0, TTimeIntervalMicroSeconds( - KTMSRingingRepeatsTrailPause)); - iTtsPlayer->SetVolume(ConvertVolume(iVolume)); - break; - } - default: - { - __ASSERT_DEBUG(EFalse, PANIC(TMS_RESULT_DOES_NOT_EXIST)); - break; - } - } - } - else - { - __ASSERT_DEBUG(iSamplePlayer, PANIC(TMS_RESULT_UNINITIALIZED_OBJECT)); - switch (iRingType) - { - case ETypeRinging: - { - // If we have TTS activated and ringing type is "ringing", then - // we need to play TTS sequence again when ringtone restarts. - // That's why we need to set ringingtype to ETypeRingingOnce, - // because it is the only way of knowing when ringtone playback - // is completed. Then we can restart it with new TTS iterations. - if (iTTsToBePlayed) - { - // Play only once - iSamplePlayer->SetRepeats(0, TTimeIntervalMicroSeconds( - KTMSRingingRepeatsTrailPause)); - iSamplePlayer->SetVolume(ConvertVolume(iVolume)); - } - else - { - iSamplePlayer->SetRepeats( - KTMSMdaAudioToneRepeatForever, - TTimeIntervalMicroSeconds( - KTMSRingingRepeatsTrailPause)); - iSamplePlayer->SetVolume(ConvertVolume(iVolume)); - } - break; - } - case ETypeRingingOnce: - { - iSamplePlayer->SetRepeats(0, TTimeIntervalMicroSeconds( - KTMSRingingRepeatsTrailPause)); - iSamplePlayer->SetVolume(ConvertVolume(iVolume)); - break; - } - case ETypeAscending: - { - iSamplePlayer->SetRepeats(KTMSMdaAudioToneRepeatForever, - TTimeIntervalMicroSeconds( - KTMSRingingRepeatsTrailPause)); - - // Special case for TTS + ascending profile. Volume and - // ramptime need to be different then usual - if (iTTsToBePlayed) - { - // RampTime is only 3 seconds and volume is 1. - rampTime = KTMSAudioAscendingRampDuration; - iSamplePlayer->SetVolumeRamp(TTimeIntervalMicroSeconds( - rampTime)); - iCurrentVolume = 1; //we start from the lowest volume - iSamplePlayer->SetVolume(ConvertVolume(iCurrentVolume)); - } - else - { - // RampTime: time for one step * volume level - rampTime = KTMSAudioAscendingRampDuration * iVolume; - iSamplePlayer->SetVolumeRamp(TTimeIntervalMicroSeconds( - rampTime)); - - iCurrentVolume = 1; //we start from the lowest volume - iSamplePlayer->SetVolume(ConvertVolume(iVolume)); - } - break; - } - default: - { - break; - } - } - } - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::SetNewVolumeAndRamptime -// ----------------------------------------------------------------------------- -// -void TMSRtAudioHdlr::SetNewVolumeAndRamptime(TInt aVolume, TInt aRamptime) - { - // Check that volume is in a valid range. - TInt volume = aVolume < 1 ? 1 : aVolume; - - if (iFormat == EFormatTone) - { - if (iTonePlayer) - { - iTonePlayer->SetVolumeRamp(TTimeIntervalMicroSeconds(aRamptime)); - iTonePlayer->SetVolume(ConvertVolume(volume)); - } - } - else if (iFormat == EFormatTts) - { - if (iTtsPlayer) - { - iTtsPlayer->SetVolumeRamp(TTimeIntervalMicroSeconds(aRamptime)); - iTtsPlayer->SetVolume(ConvertVolume(volume)); - } - } - else - { - if (iSamplePlayer) - { - iSamplePlayer->SetVolumeRamp(TTimeIntervalMicroSeconds(aRamptime)); - iSamplePlayer->SetVolume(ConvertVolume(volume)); - } - } - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::ConvertVolume -// ----------------------------------------------------------------------------- -// -TInt TMSRtAudioHdlr::ConvertVolume(TInt aVolume) - { - TInt result(0); - - if (iFormat == EFormatTone) - { - if (iTonePlayer) - { - result = iTonePlayer->MaxVolume() * aVolume / KMaxVolumeLevel; - } - } - else if (iFormat == EFormatTts) - { - if (iTtsPlayer) - { - result = iTtsPlayer->MaxVolume() * aVolume / KMaxVolumeLevel; - } - } - else - { - if (iSamplePlayer) - { - result = iSamplePlayer->MaxVolume() * aVolume / KMaxVolumeLevel; - } - } - - // If user selected minimum volume level set HW volume 1 - if (aVolume == KMinVolumeLevel && result == 0) - { - result = 1; - } - return result; - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::SetTTsToBePlayed -// ----------------------------------------------------------------------------- -// -void TMSRtAudioHdlr::SetTTsToBePlayed(const TBool aTTsToBePlayed) - { - iTTsToBePlayed = aTTsToBePlayed; - } - -// ----------------------------------------------------------------------------- -// TMSRtAudioHdlr::MutePlaying -// ----------------------------------------------------------------------------- -// -void TMSRtAudioHdlr::MutePlaying() - { - if (iPlayerStatus == ETonePlaying) - { - if (iFormat == EFormatTone) - { - if (iTonePlayer) - { - iTonePlayer->SetVolume(0); - } - } - else if (iFormat == EFormatTts && iTtsPlayer) - { - if (iTtsPlayer) - { - iTtsPlayer->SetVolume(0); - } - } - else // EFormatSample - { - if (iSamplePlayer) - { - iSamplePlayer->SetVolume(0); - } - } - } - else - { - // Mute during EToneLoading state. - iToBePlaying = EFalse; - } - } -