mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioPlaybackTestModule/src/SimpleSoundPlayer.cpp
changeset 0 71ca22bcf22a
child 7 709f89d8c047
--- /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 <AudioPreference.h>
+
+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<CFileNameParameters*>(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<CDes8Parameters *>(aParams) )->GetDes8() , ETrue);
+			break;
+		case KPlayerActionReportVolume:
+			TInt tmpVolume;
+			GetVolume(tmpVolume);
+			return ETrue;
+		case KPlayerActionStopPlayUrl:
+			p = static_cast<CUrlParameters *>(aParams);
+			OpenUrlL(p->GetUrl() , p->GetIapId() , p->GetMimeType() );
+			break;
+
+		case KPlayerActionStopPlayFileHandler:
+			OpenFileHandlerL((static_cast<CFileNameParameters*>(aParams) )->GetFileName() , ETrue);
+		//	OpenFileHandlerL( (static_cast<CFileHandlerParameters*>(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;
+}*/