diff -r 000000000000 -r 71ca22bcf22a mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioPlaybackTestModule/src/SimpleSoundPlayer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioPlaybackTestModule/src/SimpleSoundPlayer.cpp Tue Feb 02 01:08:46 2010 +0200 @@ -0,0 +1,1125 @@ +/* +* Copyright (c) 2002 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: mmftsplay test component +* +*/ + +#include "SimpleSoundPlayer.h" +#include + +const TInt CSimpleSoundPlayer::KPlayerActionPlay = 1; +const TInt CSimpleSoundPlayer::KPlayerActionPause = 2; +const TInt CSimpleSoundPlayer::KPlayerActionStopPlayFile = 3; +const TInt CSimpleSoundPlayer::KPlayerActionReportPosition = 4; +const TInt CSimpleSoundPlayer::KPlayerActionReportDuration = 5; + +const TInt CSimpleSoundPlayer::KPlayerActionStopPlayDes = 6; + +const TInt CSimpleSoundPlayer::KPlayerActionReportVolume = 7; + +const TInt CSimpleSoundPlayer::KPlayerActionStopPlayUrl = 8; + +const TInt CSimpleSoundPlayer::KPlayerActionStopPlayFileHandler = 9; + +const TInt CSimpleSoundPlayer::KPlayerActionReportDuration_Para = 10; +const TInt CSimpleSoundPlayer::KPlayerActionPauseResume = 11; + + + + +CSimpleSoundPlayer::CSimpleSoundPlayer(CTestModuleIf &aConsole, CStifLogger &aLogger, TBool aImmediate) + : iConsole(aConsole) , iImmediate(aImmediate) , iLogger(aLogger) , iSoundOpen(EFalse), + iFinalError(KErrNone) + { + iSupervisor =0 ; + iEventTarget=0; + iParameters =0; + iPlayerId =0 ; + playVolume = false; + metaInfo = false; + playWindow = false; + clearWindow = false; + setBalance = false; + iDontPlayAudioClip = false; // Binh + iIsLoopPlayEnabled = EFalse; + } + +void CSimpleSoundPlayer::ConstructUrlL(const TDesC &aUrl, TInt aIapId, const TDesC8 &aMime) + { + iMdaPlayer=CMdaAudioPlayerUtility::NewL(*this); + //KUseDefaultIap + iMdaPlayer->OpenUrlL(aUrl, aIapId, aMime ); + iSoundOpen=ETrue; + + _LIT(KPlayerCreated, "SoundPlayerCreated"); + iConsole.Printf(100, KPlayerCreated, KPlayerCreated); + } +CSimpleSoundPlayer* CSimpleSoundPlayer::NewUrlL(const TDesC &aUrl, TInt aIapId, const TDesC8 &aMime, CTestModuleIf &aConsole, CStifLogger &aLogger, TBool aImmediate) + { + CSimpleSoundPlayer* self = NewUrlLC(aUrl, aIapId, aMime, aConsole, aLogger, aImmediate); + CleanupStack::Pop(self); + return self; + } +CSimpleSoundPlayer* CSimpleSoundPlayer::NewUrlLC(const TDesC &aUrl, TInt aIapId, const TDesC8 &aMime, CTestModuleIf &aConsole, CStifLogger &aLogger, TBool aImmediate) + { + CSimpleSoundPlayer* self = new (ELeave) CSimpleSoundPlayer(aConsole, aLogger, aImmediate); + CleanupStack::PushL(self); + self->ConstructUrlL(aUrl, aIapId, aMime); + return self; + } + + +void CSimpleSoundPlayer::ConstructL(const TDesC8 &aDescriptor) + { + // Create a file audio player utility instance + + + iMdaPlayer=CMdaAudioPlayerUtility::NewL(*this); //Por Pasos + iMdaPlayer->OpenDesL(aDescriptor); + iSoundOpen=ETrue; + + _LIT(KPlayerCreated, "SoundPlayerCreated"); + iConsole.Printf(100, KPlayerCreated, KPlayerCreated); + } + + + + + + + +void CSimpleSoundPlayer::ConstructL(TBool aUseSharedHeap) +{ + + iMdaPlayer=CMdaAudioPlayerUtility::NewL(*this, EMdaPriorityNormal, + EMdaPriorityPreferenceTimeAndQuality); + + + _LIT(KRootDir,"\\"); + _LIT(KTestMP3File,"10s_smooth.mp3"); + TBuf8<60> buf2; + RFs iFs2; + User::LeaveIfError(iFs2.Connect()); + TFindFile fileFind2(iFs2); + TRAPD(err2,fileFind2.FindByDir(KTestMP3File,KRootDir)); + buf2.Copy((TDesC&) fileFind2.File()); + + TBuf8<60> buf3; + RFs iFs3; + User::LeaveIfError(iFs3.Connect()); + TFindFile fileFind3(iFs3); + TRAPD(err3,fileFind3.FindByDir(KTestMP3File,KRootDir)); + buf3.Copy((TDesC&) fileFind3.File()); + + + iMdaPlayer_1=CMdaAudioPlayerUtility::NewFilePlayerL(KTestMP3File, *this, EMdaPriorityNormal, + EMdaPriorityPreferenceTimeAndQuality); + + iMdaPlayer_2=CMdaAudioPlayerUtility::NewDesPlayerL(buf2, *this); // creación inmediata + iMdaPlayer_3=CMdaAudioPlayerUtility::NewDesPlayerReadOnlyL(buf3, *this); + + + iFs2.Close(); + iFs3.Close(); + + iLogger.Log(_L("Trying to stop player") ); + iMdaPlayer_1->Stop(); + iLogger.Log(_L("Trying to close player") ); + iMdaPlayer_1->Close(); + iLogger.Log(_L(" Player stopped") ); + delete iMdaPlayer_1; + iMdaPlayer_1 = NULL; + + iLogger.Log(_L("Trying to stop player") ); + iMdaPlayer_2->Stop(); + iLogger.Log(_L("Trying to close player") ); + iMdaPlayer_2->Close(); + iLogger.Log(_L(" Player stopped") ); + delete iMdaPlayer_2; + iMdaPlayer_2 = NULL; + + iLogger.Log(_L("Trying to stop player") ); + iMdaPlayer_3->Stop(); + iLogger.Log(_L("Trying to close player") ); + iMdaPlayer_3->Close(); + iLogger.Log(_L(" Player stopped") ); + delete iMdaPlayer_3; + iMdaPlayer_3 = NULL; + + +} + +CSimpleSoundPlayer* CSimpleSoundPlayer::NewLC(CTestModuleIf &aConsole, CStifLogger &iLogger, + TBool aUseSharedHeap) +{ + CSimpleSoundPlayer* self = new (ELeave) CSimpleSoundPlayer(aConsole, iLogger); + CleanupStack::PushL(self); + self->ConstructL(aUseSharedHeap); + return self; +} + +CSimpleSoundPlayer* CSimpleSoundPlayer::NewL(CTestModuleIf &aConsole, CStifLogger &iLogger, + TBool aUseSharedHeap) +{ + RDebug::Print(_L("CSimpleSoundPlayer::NewL:")); + + CSimpleSoundPlayer* self = NewLC(aConsole, iLogger, aUseSharedHeap); + CleanupStack::Pop(self); + return self; +} + + + + + + +CSimpleSoundPlayer* CSimpleSoundPlayer::NewL(const TDesC8 &aDescriptor, CTestModuleIf &aConsole, CStifLogger &aLogger, TBool aImmediate) + { + CSimpleSoundPlayer* self = NewLC(aDescriptor, aConsole, aLogger, aImmediate); + CleanupStack::Pop(self); + return self; + } +CSimpleSoundPlayer* CSimpleSoundPlayer::NewLC(const TDesC8 &aDescriptor, CTestModuleIf &aConsole, CStifLogger &aLogger, TBool aImmediate) + { + CSimpleSoundPlayer* self = new (ELeave) CSimpleSoundPlayer(aConsole, aLogger, aImmediate); + CleanupStack::PushL(self); + self->ConstructL(aDescriptor); + return self; + } + +void CSimpleSoundPlayer::ConstructL(const TFileName &aFile) + { + + + iMdaPlayer=CMdaAudioPlayerUtility::NewL(*this); //Instantiation by steps + + // Create a file audio player utility instance + //iMdaPlayer_1=CMdaAudioPlayerUtility::NewFilePlayerL(aFile, *this); //For inmediate instantiation + + + iMdaPlayer->UseSharedHeap(); // Ensures that any subsequent calls to OpenXYZ() will create controllers that share a heap. + + iMdaPlayer->OpenFileL(aFile); + iSoundOpen=ETrue; + + _LIT(KPlayerCreated, "SoundPlayerCreated"); + iConsole.Printf(100, KPlayerCreated, KPlayerCreated); + + iAudioOutput=NULL; + } + + + + +CSimpleSoundPlayer* CSimpleSoundPlayer::NewLC(const TFileName &aFile, CTestModuleIf &aConsole, CStifLogger &aLogger, TBool aImmediate) + { + CSimpleSoundPlayer* self = new (ELeave) CSimpleSoundPlayer(aConsole, aLogger, aImmediate); + + CleanupStack::PushL(self); + self->ConstructL(aFile); + return self; + } + +CSimpleSoundPlayer* CSimpleSoundPlayer::NewL(const TFileName &aFile, CTestModuleIf &aConsole, CStifLogger &aLogger, TBool aImmediate) + { + CSimpleSoundPlayer* self = NewLC(aFile, aConsole, aLogger, aImmediate); + CleanupStack::Pop(self); + return self; + } + +void CSimpleSoundPlayer::ConstructL(const RFile &aFile) + { + // Create a file audio player utility instance + //iMdaPlayer=CMdaAudioPlayerUtility::NewFilePlayerL(aFile, *this); //For inmediate instantiation + + iMdaPlayer=CMdaAudioPlayerUtility::NewL(*this); //Instantiation by steps + iMdaPlayer->OpenFileL(aFile); + iSoundOpen=ETrue; + + _LIT(KPlayerCreated, "SoundPlayerCreated"); + iConsole.Printf(100, KPlayerCreated, KPlayerCreated); + } + +CSimpleSoundPlayer* CSimpleSoundPlayer::NewLC(const RFile &aFile, CTestModuleIf &aConsole, CStifLogger &aLogger, TBool aImmediate) + { + CSimpleSoundPlayer* self = new (ELeave) CSimpleSoundPlayer(aConsole, aLogger, aImmediate); + CleanupStack::PushL(self); + self->ConstructL(aFile); + return self; + } + +CSimpleSoundPlayer* CSimpleSoundPlayer::NewL(const RFile &aFile, CTestModuleIf &aConsole, CStifLogger &aLogger, TBool aImmediate) + { + CSimpleSoundPlayer* self = NewLC(aFile, aConsole, aLogger, aImmediate); + CleanupStack::Pop(self); + return self; + } + + + + + +TInt CSimpleSoundPlayer::OpenL(const TFileName &aFileName , const TBool &aImmediate=ETrue) + { + iImmediate = aImmediate; + Stop(); + iLogger.Log(_L("Stop before opening file")); + + iLogger.Log(_L("Closed, opening [%S]") , &aFileName); + iMdaPlayer->OpenFileL(aFileName); + iSoundOpen=ETrue; + iLogger.Log(_L("Opened")); + + return KErrNone; + } + +TInt CSimpleSoundPlayer::OpenFileHandlerL(const TFileName &aFileName , const TBool &aImmediate=ETrue) + { + iImmediate = aImmediate; + Stop(); + iLogger.Log(_L("Stop before opening file")); + + iLogger.Log(_L("Closed, opening [%S]") , &aFileName); + + RFs aFs; + RFile aFileHandler; + User::LeaveIfError(aFs.Connect()); + + User::LeaveIfError(aFileHandler.Open( aFs, aFileName, EFileRead)); + iMdaPlayer->OpenFileL(aFileHandler); + + aFileHandler.Close(); + aFs.Close(); + + iSoundOpen=ETrue; + iLogger.Log(_L("Opened")); + return KErrNone; + } + +TInt CSimpleSoundPlayer::OpenUrlL(const TDesC &aUrl, TInt aIapId, const TDesC8 &aMime) + { + iLogger.Log(_L("Opening url [%S] with IapId [%s]") , &aUrl , aIapId ); + iLogger.Log(_L8(" and MIME Type [%S]") , &aMime); + iMdaPlayer->OpenUrlL(aUrl, aIapId, aMime); + return ETrue; + } + + + + +TInt CSimpleSoundPlayer::OpenDesL(const TDesC8 &aSoundDes , const TBool &aImmediate) + { + iImmediate = aImmediate; + Stop(); + iLogger.Log(_L("Stop before opening descriptor")); + + iLogger.Log(_L("Closed, opening second descriptor of length (%d)") , aSoundDes.Length() ); + + iMdaPlayer->OpenDesL(aSoundDes); + iSoundOpen=ETrue; + iLogger.Log(_L("Opened")); + ////iAutoClose = ETrue; ///K + return KErrNone; + } + +TInt CSimpleSoundPlayer::Play() + { + if(iState==EReady || iState==EPaused) + { + iState=EPlaying; + iLastPlayTime.HomeTime(); + iLastStopTime.HomeTime(); + iMdaPlayer->Play(); + iLogger.Log(_L("Requested Play")); + } + else + { + iLogger.Log(_L("Requested Play, Not Ready to play")); + iImmediate = true; + } + return KErrNone; + } + +TInt CSimpleSoundPlayer::Stop(const TBool &aAlsoClose) + { + iLogger.Log(_L("Requested Stop,,,,,")); + iMdaPlayer->Stop(); + + iLogger.Log(_L("Requested Stop,,,,, successful")); + iLastStopTime.HomeTime(); + if (aAlsoClose) + { + iLogger.Log(_L("iMdaPlayer->Close()" )); + iMdaPlayer->Close(); + iLogger.Log(_L("iMdaPlayer->Close() successful" )); + iSoundOpen=EFalse; + iState = ENotReady; + } + else + { + if (iState==EPlaying || iState==EPaused) {iState = EReady;} + } + return KErrNone; + } + + +TInt CSimpleSoundPlayer::Pause() + { + iLogger.Log(_L("Requested Pause")); + iState=EPaused; + // Resume is not supported in Devsound adaptation on HW ... this will crash the phone for WAV. +#ifdef __WINS__ + iMdaPlayer->WillResumePlay(); +#endif + iMdaPlayer->Pause(); + return KErrNone; + } + +TInt CSimpleSoundPlayer::PauseResume() + { + iLogger.Log(_L("Requested Pause")); + iState=EPaused; + // Resume is not supported in Devsound adaptation on HW ... this will crash the phone for WAV. +#ifdef __WINS__ + iMdaPlayer->WillResumePlay(); +#endif + iMdaPlayer->Pause(); + return KErrNone; + } + +void CSimpleSoundPlayer::MapcInitComplete(TInt aError, const TTimeIntervalMicroSeconds &/*aDuration*/) + { + iLogger.Log(_L("MapcInitComplete")); + + if (iImmediate) + { + if (aError == KErrNone) + { + _LIT(KGonnaPlay, "MapcInitComplete, GoingToPlay"); + _LIT(KGoing, "Going to"); + _LIT(KDone, "Done Started Playing"); + iConsole.Printf(100, KGonnaPlay, KGoing); + + + + if (playVolume) + { + // TInt VolumeHigh; + iLogger.Log(_L("SetVolume") ); + TInt maxVolume = iMdaPlayer->MaxVolume(); + iLogger.Log(_L("MaxVolume is %d"), maxVolume ); + iMdaPlayer->SetVolume(maxVolume); + iLogger.Log(_L("SetVolume(iMdaPlayer->MaxVolume()) max=(%d)"), iMdaPlayer->MaxVolume() ); + } + + if (metaInfo) + { + TInt NumMetaDatas; + TInt MetaDataError = iMdaPlayer->GetNumberOfMetaDataEntries(NumMetaDatas); + if ( MetaDataError ) + { //Error getting meta data info + Exit(MetaDataError); + } + else + { //No error yet + TInt currMetaDataIndex; + for ( currMetaDataIndex=0 ; currMetaDataIndex < NumMetaDatas ; currMetaDataIndex++) + { + CMMFMetaDataEntry *currMetaData = iMdaPlayer->GetMetaDataEntryL(currMetaDataIndex); + // check for jpeg image + if (currMetaData->Name() == _L("attachedpicture")) + iLogger.Log(_L("MetaData[%d]: Name: [%S], Value: [image]") , currMetaDataIndex , &(currMetaData->Name()) ); + else + iLogger.Log(_L("MetaData[%d]: Name: [%S], Value: [%S]") , currMetaDataIndex , &(currMetaData->Name()) , &(currMetaData->Value()) ); + delete currMetaData; + } + } + } + + + + if (playWindow) + { + iLogger.Log(_L("SetPlayWindow, start=[%d]"),startPosition.Int64()); + iLogger.Log(_L("SetPlayWindow, end=[%d]"), endPosition.Int64() ); + TInt pwErr = iMdaPlayer->SetPlayWindow(startPosition, endPosition); + iLogger.Log(_L("SetPlayWindow err=[%d]"), pwErr); + if (clearWindow) + { + iLogger.Log(_L("ClearPlayWindow")); + iMdaPlayer->ClearPlayWindow(); + + } + } + + if (setBalance) + { + SetBalance(aBalance); + } + + // Binh + if (iDontPlayAudioClip) + { + iState = EReady; + Exit(aError); + } + else + { + iState = EPlaying; + iLastPlayTime.HomeTime(); + iLastStopTime.HomeTime(); + if (! playWindow) + { + iLogger.Log(_L("Position before Play (%d)"), I64INT(iPosition.Int64())/1000000); + iMdaPlayer->SetPosition(iPosition); + } + iMdaPlayer->Play(); + + iLogger.Log(_L("Play() was called")); + + iConsole.Printf(100, KGonnaPlay, KDone); + } + } + else + { + iLogger.Log(_L("InitError (%d)"), aError); + iState = ENotReady; + Exit(aError); + } + } + else + { + iLogger.Log(_L("InitComplete, error(%d)") , aError); + iState = aError ? ENotReady : EReady; + if (aError) + { + Exit(aError); + } + //added + else + { + CActiveScheduler::Stop(); + } + + } + } + +void CSimpleSoundPlayer::MapcPlayComplete(TInt aError) + { + iLastStopTime.HomeTime(); + iLogger.Log(_L("MapcPlayComplete, error (%d)") , aError); + + _LIT(KGonnaPlay, "MapcPlayComplete, GoingToPlay"); + _LIT(KGoing, "Going to"); + + iConsole.Printf(100, KGonnaPlay, KGoing); + + iState = aError ? ENotReady : EReady; + iConsole.Printf(100, KGonnaPlay, KGoing); + + Exit(aError); + if (iEventTarget && iParameters) + { + Stop(); + iEventTarget->ExecuteL(iParameters) ; + } + } + + +void CSimpleSoundPlayer::DoCancel() +{ + iLogger.Log(_L("DoCancel")); +} + +void CSimpleSoundPlayer::MaloLoadingStarted() +{ + iLogger.Log(_L("MaloLoadingStarted")); +} + +void CSimpleSoundPlayer::MaloLoadingComplete() +{ + iLogger.Log(_L("MaloLoadingComplete")); +} + +void CSimpleSoundPlayer::MarncResourceAvailable(TUid aNotificationEventId, const TDesC8 &aNotificationData) +{ + iLogger.Log(_L("MarncResourceAvailable")); +} + +CSimpleSoundPlayer::~CSimpleSoundPlayer() + { + if(iAudioOutput) + { + delete iAudioOutput; + iAudioOutput=NULL; + } + iLogger.Log(_L("Trying to stop player") ); + iMdaPlayer->Stop(); + iLogger.Log(_L("Trying to close player") ); + iMdaPlayer->Close(); + iLogger.Log(_L(" Player stopped") ); + delete iMdaPlayer; + iMdaPlayer = NULL; + } + +TTimeIntervalMicroSeconds CSimpleSoundPlayer::GetDuration() + { + TTimeIntervalMicroSeconds Duration = iMdaPlayer->Duration(); + iLogger.Log(_L("CMdaAudioPlayerUtility::Duration() returned [%d]") , Duration.Int64()); + return Duration; + } + + +TTimeIntervalMicroSeconds CSimpleSoundPlayer::GetDuration_Para() + { + + TTimeIntervalMicroSeconds Duration = iMdaPlayer->Duration(); + iLogger.Log(_L("CMdaAudioPlayerUtility::Duration() returned [%d]") , Duration.Int64()); + + + TTimeIntervalMicroSeconds duration; + TMMFDurationInfo durationInfo; + + + durationInfo = iMdaPlayer->Duration(duration); + iLogger.Log(_L("CMdaAudioPlayerUtility::Duration(duration) returned [%d]") , duration.Int64()); + return duration; + } + +TTimeIntervalMicroSeconds CSimpleSoundPlayer::GetPlayDuration() { return iLastStopTime.MicroSecondsFrom(iLastPlayTime); } + +TTime CSimpleSoundPlayer::GetPlayStartTime() { return iLastPlayTime; } + +TTime CSimpleSoundPlayer::GetPlayStopTime() { return iLastStopTime; } + +TInt CSimpleSoundPlayer::GetBalance(TInt &aBalance) + { + TInt error = iMdaPlayer->GetBalance(aBalance); + iLogger.Log(_L("Retrieving Balance (%d), error(%d)") , aBalance, error); + return error; + } + +TInt CSimpleSoundPlayer::SetBalance(TInt aBalance=KMMFBalanceCenter) + { + TInt error=KErrNone; + TInt error2=KErrNone; + TInt OldBalance=0; + + iLogger.Log(_L("Changing Balance ")); + + error=iMdaPlayer->GetBalance(OldBalance); + if (error) + { + iLogger.Log(_L(" Error getting old balance (%d)"), error) ; + } + else + { + iLogger.Log(_L(" Previous balance: %d"), OldBalance); + } + iLogger.Log(_L(" Setting balance to %d"), aBalance); + error2 = iMdaPlayer->SetBalance(aBalance); + if (error2) + { + iLogger.Log(_L(" Error setting new balance (%d)") , error); + } + else + { + error=iMdaPlayer->GetBalance(OldBalance); + if (error) + { + iLogger.Log(_L(" Error getting new balance (%d)"), error) ; + } + else + { + iLogger.Log(_L(" Current balance: %d"), OldBalance); + } + } + + if (OldBalance!= aBalance) + { + Exit(-1502); + } + + return error2; + } + +TInt CSimpleSoundPlayer::SetPriority(TInt aPriority, TMdaPriorityPreference aPref) + { + iLogger.Log(_L("Trying to set priority settings to (%d),(%d) ") , aPriority, aPref); + TInt PriorityError = iMdaPlayer->SetPriority(aPriority, aPref); + if (PriorityError) + { + iLogger.Log(_L("Error setting priority to (%d),(%d) ") , aPriority, aPref); + } + else + { + iLogger.Log(_L("Priority set to (%d),(%d)") , aPriority, aPref); + } + + + return PriorityError; + } + +TInt CSimpleSoundPlayer::SetThread_Priority() + { + TThreadPriority threadPriority = EPriorityNormal; + iLogger.Log(_L("Trying to set thread priority settings to (%d) ") , threadPriority); + TInt PriorityError = iMdaPlayer->SetThreadPriority(threadPriority); + if (PriorityError) + { + iLogger.Log(_L("Error setting thread priority to (%d) ") , threadPriority); + } + else + { + iLogger.Log(_L("Thread Priority set to (%d)") , threadPriority); + } + return PriorityError; + } + + +void CSimpleSoundPlayer::GetLoad_Percentage() + { + TInt percentage; + iLogger.Log(_L("Trying to GetLoad_Percentage\n ") ); + iMdaPlayer->GetAudioLoadingProgressL(percentage); + iLogger.Log(_L("GetAudioLoadingProgressL (%d)") , percentage); + } + +void CSimpleSoundPlayer::GetBit_Rate() + { + TUint bitRate; + iLogger.Log(_L("Trying to GetLoad_Percentage\n ") ); + iMdaPlayer->GetBitRate(bitRate); + iLogger.Log(_L("GetAudioLoadingProgressL (%d)") , bitRate); + } + +void CSimpleSoundPlayer::GetDRMCmd() + { + + // Create DRM custom command + MMMFDRMCustomCommand* drmCustomCommand; + drmCustomCommand = iMdaPlayer->GetDRMCustomCommand(); + iLogger.Log(_L("called iMdaPlayer->GetDRMCustomCommand ")); + if (drmCustomCommand == NULL) + { + iLogger.Log(_L("MMMFDRMCustomCommand is NULL")); + } + else if(drmCustomCommand) + { + TBool DisableAutoIntent=ETrue; + TInt error=KErrNone; + error=drmCustomCommand->DisableAutomaticIntent(DisableAutoIntent); + iLogger.Log(_L("Error getting from drmCustomCommand[%d]") , error); + if (error==KErrPermissionDenied) + { + iLogger.Log(_L("MMMFDRMCustomCommand is not NULL-DisableAutomaticIntent[%d]"),error); + } + else + { + iLogger.Log(_L("MMMFDRMCustomCommand -DisableAutomaticIntent[%d]"),error); + } + error=drmCustomCommand->EvaluateIntent(ContentAccess::EPlay); + if (error==KErrPermissionDenied) + { + iLogger.Log(_L("MMMFDRMCustomCommand is not NULL-EvaluateIntent[%d]"),error); + } + else + { + iLogger.Log(_L("MMMFDRMCustomCommand-EvaluateIntent[%d]"),error); + } + error=drmCustomCommand->ExecuteIntent(ContentAccess::EPlay); + if (error==KErrPermissionDenied) + { + iLogger.Log(_L("MMMFDRMCustomCommand is not NULL-ExecuteIntent[%d]"),error); + } + else + { + iLogger.Log(_L("MMMFDRMCustomCommand-ExecuteIntent[%d]"),error); + } + error=drmCustomCommand->SetAgentProperty(ContentAccess::EAgentPropertyAgentUI,0); + if (error==KErrPermissionDenied) + { + iLogger.Log(_L("MMMFDRMCustomCommand is not NULL-SetAgentProperty[%d]"),error); + } + else + { + iLogger.Log(_L("MMMFDRMCustomCommand-SetAgentProperty[%d]"),error); + } + } + + iLogger.Log(_L("Exits CSimpleSoundPlayer::GetDRMCmd ")); + + } + + +void CSimpleSoundPlayer::RegNotification() + { + iLogger.Log(_L("Trying to GetLoad_Percentage\n ") ); + + iMdaPlayer->RegisterAudioResourceNotification(*this, KUidInterfaceMMFController,KNullDesC8); + iLogger.Log(_L("RegisterAudioResourceNotification() finished") ); + } + + +void CSimpleSoundPlayer::RegLoadNotification() + { + iLogger.Log(_L("Trying to GetLoad_Percentage\n ") ); + MMMFDRMCustomCommand* cmd = iMdaPlayer->GetDRMCustomCommand(); + + iMdaPlayer->RegisterForAudioLoadingNotification(*this); + iLogger.Log(_L("RegisterForAudioLoadingNotification() finished ") ); + } + +void CSimpleSoundPlayer::CancelNotification() + { + + iLogger.Log(_L("Trying to GetLoad_Percentage\n ") ); + TInt CanError = iMdaPlayer->CancelRegisterAudioResourceNotification(KUidInterfaceMMFController); + iLogger.Log(_L("CancelRegisterAudioResourceNotification finished") ); + } + +void CSimpleSoundPlayer::CtrImpInfo() + { + iLogger.Log(_L("Trying to GetLoad_Percentage\n ") ); + const CMMFControllerImplementationInformation& info = iMdaPlayer->ControllerImplementationInformationL(); + iLogger.Log(_L("GetDRMCustomCommand() finished") ); + } + +void CSimpleSoundPlayer::Set_Priority() + { + iLogger.Log(_L("Trying to Set_Prioritye\n ") ); + + TInt PriError = iMdaPlayer->SetPriority(KAudioPriorityRealOnePlayer, (TMdaPriorityPreference)KAudioPrefRealOneLocalPlayback); + iLogger.Log(_L("Set_Prioritye() finished [%d]"), PriError ); + } + + + +void CSimpleSoundPlayer::SetPosition(const TTimeIntervalMicroSeconds &aPosition) + { + iMdaPlayer->SetPosition(aPosition); + } + + +TInt CSimpleSoundPlayer::GetPosition(TTimeIntervalMicroSeconds &aPosition) + { + TTimeIntervalMicroSeconds Position; + TInt PositionError = iMdaPlayer->GetPosition(Position); + + if (!PositionError) + { + iLogger.Log(_L("Current position [%d]") , Position.Int64()); + if (iState != EPlaying) {iLogger.Log(_L(" But not playing"));} + if ( ! iSoundOpen ) {iLogger.Log(_L(" But not open"));} + aPosition=Position; + } + else + { + Exit(PositionError); + } + return PositionError; + } + +void CSimpleSoundPlayer::Exit(TInt aExitCode) + { + iFinalError = aExitCode; + if (iSupervisor) + { + iSupervisor->NotifyDestruction(); + } + else + { + CActiveScheduler::Stop(); + } + } + +void CSimpleSoundPlayer::SetVolumeRamp(const TTimeIntervalMicroSeconds &aRampDuration) + { + iMdaPlayer->SetVolumeRamp(aRampDuration); + } + +void CSimpleSoundPlayer::SetVolume(TInt aNewVolume) + { + iMdaPlayer->SetVolume(aNewVolume); + } + +TInt CSimpleSoundPlayer::GetVolume(TInt &aVolume) + { + TInt VolumeError = iMdaPlayer->GetVolume(aVolume); + if (VolumeError) + { + iLogger.Log(_L("Error (%d) getting volume") , VolumeError ); + } + else + { + iLogger.Log(_L("Getting volume: (%d)") , aVolume); + } + return VolumeError; + } + +TInt CSimpleSoundPlayer::MaxVolume() + { + return iMdaPlayer->MaxVolume(); + } + +void CSimpleSoundPlayer::SetRepeats(TInt aRepeatNumberOfTimes, const TTimeIntervalMicroSeconds &aTrailingSilence) + { + iMdaPlayer->SetRepeats(aRepeatNumberOfTimes , aTrailingSilence); + if ((aRepeatNumberOfTimes == -2) || (aRepeatNumberOfTimes > 0)) + iIsLoopPlayEnabled = ETrue; + else + iIsLoopPlayEnabled = EFalse; + } + +TInt CSimpleSoundPlayer::SetPlayWindow(const TTimeIntervalMicroSeconds &aStart, const TTimeIntervalMicroSeconds &aEnd) + { + iLogger.Log(_L("iMdaPlayer->SetPlayWindow() Start[%d] End[%d]"), aStart.Int64(), aEnd.Int64()); + return iMdaPlayer->SetPlayWindow(aStart, aEnd); + } + +TInt CSimpleSoundPlayer::ClearPlayWindow() + { + iLogger.Log(_L("iMdaPlayer->ClearPlayWindow()")); + return iMdaPlayer->ClearPlayWindow(); + } + + + +void CSimpleSoundPlayer::SetSupervisor(TObjectCountDown *aCounter) + { + iSupervisor = aCounter; + iSupervisor->NotifyCreation(); + } + +void CSimpleSoundPlayer::SetPlayCompleteTarget(MEventTarget *aTarget, CParameters *aParameters) + { + iEventTarget = aTarget; + iParameters = aParameters; + } + + + + + +TInt CSimpleSoundPlayer::GetNumberOfMetaDataEntries(TInt &aNumEntries) + { + + + TInt ErrorCode = iMdaPlayer->GetNumberOfMetaDataEntries(aNumEntries); + if (ErrorCode) + { + iLogger.Log(_L("Error (%d) getting number of meta data entries") , ErrorCode); + } + else + { + iLogger.Log(_L("Clip has (%d) meta data entries") , aNumEntries); + } + return ErrorCode; + } + +CMMFMetaDataEntry *CSimpleSoundPlayer::GetMetaDataEntryL(TInt aMetaDataIndex) + { + iLogger.Log(_L("Obtaining meta data with index (%d)") , aMetaDataIndex); + return iMdaPlayer->GetMetaDataEntryL(aMetaDataIndex); + } + +TInt CSimpleSoundPlayer::ExecuteL(CParameters *aParams) + { + TTimeIntervalMicroSeconds tmpPosition = TTimeIntervalMicroSeconds(0); + CUrlParameters *p; + switch (aParams->iAction) + { + case KPlayerActionPause: + Pause(); + break; + case KPlayerActionPauseResume: + PauseResume(); + break; + case KPlayerActionPlay: + Play(); + break; + case KPlayerActionStopPlayFile: + OpenL( (static_cast(aParams) )->GetFileName() , ETrue); + break; + case KPlayerActionReportPosition: + GetPosition(tmpPosition); + return ETrue; + case KPlayerActionReportDuration: + GetDuration(); + return ETrue; + case KPlayerActionReportDuration_Para: + GetDuration_Para(); + return ETrue; + case KPlayerActionStopPlayDes: + OpenDesL( (static_cast(aParams) )->GetDes8() , ETrue); + break; + case KPlayerActionReportVolume: + TInt tmpVolume; + GetVolume(tmpVolume); + return ETrue; + case KPlayerActionStopPlayUrl: + p = static_cast(aParams); + OpenUrlL(p->GetUrl() , p->GetIapId() , p->GetMimeType() ); + break; + + case KPlayerActionStopPlayFileHandler: + OpenFileHandlerL((static_cast(aParams) )->GetFileName() , ETrue); + // OpenFileHandlerL( (static_cast(aParams) )->GetFileHandler() , ETrue); + break; + } + if (iIsLoopPlayEnabled) + return ETrue; + else + return EFalse; + } + + +TInt CSimpleSoundPlayer::OpenFile(const TFileName &aFile) +{ + iLogger.Log(_L("CSimpleSoundPlayer::OpenFile")); + + TRAPD(err, iMdaPlayer->SetPriority(KAudioPriorityRealOnePlayer, + (TMdaPriorityPreference)KAudioPrefRealOneLocalPlayback)); + { + if (err != KErrNone) + { + iFinalError = err; + return err; + } + } + + + iMdaPlayer->OpenFileL(aFile); + + return KErrNone; +} + + +TInt CSimpleSoundPlayer::OpenWithFileHandler(const RFile &aFile) +{ + iLogger.Log(_L("CSimpleSoundPlayer::OpenWithFileHandler")); + + /* TRAPD(err, iMdaPlayer->SetPriority(KAudioPriorityRealOnePlayer, + (TMdaPriorityPreference)KAudioPrefRealOneLocalPlayback)); + { + if (err != KErrNone) + { + iFinalError = err; + return err; + } + }*/ + + + iMdaPlayer->OpenFileL(aFile); + + return KErrNone; +} + + +TInt CSimpleSoundPlayer::OpenWithFileSource(const TMMSource &aSource) +{ + iLogger.Log(_L("CSimpleSoundPlayer::OpenWithFileSource")); + + TRAPD(err, iMdaPlayer->SetPriority(KAudioPriorityRealOnePlayer, + (TMdaPriorityPreference)KAudioPrefRealOneLocalPlayback)); + { + if (err != KErrNone) + { + iFinalError = err; + return err; + } + } + + + iMdaPlayer->OpenFileL(aSource); + + return KErrNone; +} + +TInt CSimpleSoundPlayer::OpenWithDesc(const TDesC8 &aDescriptor) +{ + iLogger.Log(_L("CSimpleSoundPlayer::OpenWithDesc")); + + TRAPD(err, iMdaPlayer->SetPriority(KAudioPriorityRealOnePlayer, + (TMdaPriorityPreference)KAudioPrefRealOneLocalPlayback)); + { + if (err != KErrNone) + { + iFinalError = err; + return err; + } + } + + + iMdaPlayer->OpenDesL(aDescriptor); + + return KErrNone; +} + +void CSimpleSoundPlayer::AudioOutputCreationL() + { + CAudioOutput::TAudioOutputPreference output(CAudioOutput::EAll); + TBool secure=ETrue; + TInt err=KErrNone; + + iLogger.Log(_L("calling CAudioOutput")); + TRAP(err,iAudioOutput=CAudioOutput::NewL(*iMdaPlayer)); + if(err!=KErrNone) + { + iLogger.Log(_L("AudioOutput Creation Error - err=%d"),err); + User::Leave(err); + } + else + { + iLogger.Log(_L("AudioOutput Created successfully - err=%d"),err); + } + TRAP(err,iAudioOutput->SetAudioOutputL(output)); + if (err == KErrNone) + { + iLogger.Log(_L("CAudioOutput/SetAudioOutputL - err=%d"),err); + + } + else + iLogger.Log(_L("CAudioOutput/SetAudioOutputL else - err=%d"),err); + iLogger.Log(_L("calling setsecureoutputl")); + TRAP(err,iAudioOutput->SetSecureOutputL(secure)); + if(err!=KErrNone) + { + iLogger.Log(_L("CAudioOutput/SetSecureOutputL - err if=%d"),err); + + } + else + { + iLogger.Log(_L("CAudioOutput/SetSecureOutputL - err else=%d"),err); + } + } + +void CSimpleSoundPlayer::LoopPlayL() + { + iLogger.Log(_L("CMyPlayer::SetRepeatsForever")); + //iMdaPlayer->SetRepeats(KMdaRepeatForever, TTimeIntervalMicroSeconds(3000000)); + iMdaPlayer->SetRepeats(KRepeatTimes, TTimeIntervalMicroSeconds(3000000)); + } + + + +/*void CSimpleSoundPlayer::SetRunCase(TInt aRunCase) +{ + iRunCase = aRunCase; +} + +void CSimpleSoundPlayer::SetSubCase(TInt aSubCase) +{ + iSubCase = aSubCase; +}*/