diff -r 7cee158cb8cd -r 26b2b12093af javauis/nokiasound/src/cmidclip.cpp --- a/javauis/nokiasound/src/cmidclip.cpp Wed Sep 15 12:05:25 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,196 +0,0 @@ -/* -* Copyright (c) 2006-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: This class implements wav playing. -* -*/ - - -#include -#include - -#include "com_nokia_mid_sound_Sound.h" -#include "CMIDClip.h" -#include "MMIDEventSender.h" - -namespace -{ -const TInt KMIDMaxJavaVolume = 255; -const TInt KMIDMinNativeVolume = 1; -const TInt KMIDHeaderLength = 4; -_LIT8(KMIDHeaderWAV, "RIFF"); -_LIT8(KMIDHeaderAMR, "#!AM"); -const TInt KMIDClipForever = 999999; -const TInt KMIDMinDataSize = 4; -} - -CMIDClip* CMIDClip::NewL(const TDesC8* aData, MMIDEventSender* aEventSender) -{ - CMIDClip* self = new(ELeave) CMIDClip(aEventSender); - CleanupStack::PushL(self); - self->ConstructL(aData); - CleanupStack::Pop(self); - return self; -} - -CMIDClip::~CMIDClip() -{ - if (iMdaAudioPlayerUtility) - { - if (iState == EPlaying) - { - iMdaAudioPlayerUtility->Stop(); - } - } - delete iMdaAudioPlayerUtility; - delete iClip; - delete iSchedulerWait; -} - -CMIDClip::CMIDClip(MMIDEventSender* aEventSender) - : CMIDSoundImpl(aEventSender) -{ -} - -void CMIDClip::ConstructL(const TDesC8* aData) -{ - CMIDSoundImpl::ConstructL(); - iSchedulerWait = new(ELeave) CActiveSchedulerWait; - - if (aData->Length() < KMIDMinDataSize) - { - iState = ENotSupported; - User::Leave(KErrArgument); - } - - TPtrC8 header = aData->Left(KMIDHeaderLength); - - if ((header != KMIDHeaderWAV()) && (header != KMIDHeaderAMR)) - { - iState = ENotSupported; - User::Leave(KErrArgument); - } - - iState = EInitialising; - iClip = aData->AllocL(); - iMdaAudioPlayerUtility = - CMdaAudioPlayerUtility:: - NewDesPlayerReadOnlyL(*iClip, *this, - KAudioPriorityRecording); - iMdaAudioPlayerUtility->UseSharedHeap(); - iSchedulerWait->Start(); -} - -TInt CMIDClip::Play(TInt aLoop) -{ - __ASSERT_DEBUG(iState == EReadyToPlay, User::Invariant()); - - if (aLoop == 0) - { - // There is no known working method to play clip forever, so we play - // it for a long time instead. - aLoop = KMIDClipForever; - } - - --aLoop; - - // Setting repeats to 1 causes sound played twice - if (aLoop > 0) - { - iMdaAudioPlayerUtility->SetRepeats(aLoop, TTimeIntervalMicroSeconds(0)); - } - - iEventSender->SendEvent(com_nokia_mid_sound_Sound_SOUND_PLAYING); - - iMdaAudioPlayerUtility->Play(); - iState = EPlaying; - iPlayed = ETrue; - return KErrNone; -} - -void CMIDClip::Stop() -{ - if (iState == EPlaying) - { - iEventSender->SendEvent(com_nokia_mid_sound_Sound_SOUND_STOPPED); - iMdaAudioPlayerUtility->Stop(); - iState = EReadyToPlay; - } -} - -void CMIDClip::SetVolume(TInt aVolume) -{ - iVolume = aVolume; - TInt volume = 0; - if (aVolume) - { - volume = (((iMdaAudioPlayerUtility->MaxVolume() - - KMIDMinNativeVolume + 1) - * aVolume) - / (KMIDMaxJavaVolume + 1)) + KMIDMinNativeVolume; - } - iMdaAudioPlayerUtility->SetVolume(volume); -} - -TInt CMIDClip::Volume() -{ - return iVolume; -} - -void CMIDClip::MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds& /*aDuration*/) -{ - if (aError == KErrNone) - { - //Setting iVolume to max because - //CMdaAudioPlayerUtility doesn't have Volume() - iVolume = KMIDMaxJavaVolume; - iState = EReadyToPlay; - } - else - { - if (aError == KErrNotSupported) - { - iState = ENotSupported; - } - else - { - iState = ENotReady; - } - } - iSchedulerWait->AsyncStop(); -} - -void CMIDClip::MapcPlayComplete(TInt /*aError*/) -{ - iEventSender->SendEvent(com_nokia_mid_sound_Sound_SOUND_STOPPED); - iState = EReadyToPlay; -} - -void CMIDClip::Release() -{ - if (iMdaAudioPlayerUtility) - { - if (iState == EPlaying) - { - iMdaAudioPlayerUtility->Stop(); - } - } - delete iMdaAudioPlayerUtility; - iMdaAudioPlayerUtility = NULL; - delete iClip; - iClip = NULL; - iState = ENotReady; -} - -//End of File -