mmlibs/mmfw/tsrc/mmfintegrationtest/vclnt/TestPlayer.cpp
changeset 24 2672ba96448e
parent 21 1c0a769d0cc5
child 33 0267baa9dea9
--- a/mmlibs/mmfw/tsrc/mmfintegrationtest/vclnt/TestPlayer.cpp	Thu May 27 14:24:04 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1208 +0,0 @@
-// Copyright (c) 2002-2009 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:
-//
-
-#include "TestPlayer.h"
-
-#include <e32math.h>
-
-/**
- * Constructor
- */
-CTestVclntVideoFile::CTestVclntVideoFile(const TDesC& aTestName,const TDesC& aSectName,const TDesC& aKeyName,const TBool aPlay)
-	:iPlay (aPlay)
-	{
-	// store the name of this test case
-	// this is the name that is used by the script file
-	// Each test step initialises it's own name
-	iTestStepName = aTestName;
-	iSectName = aSectName;
-	iKeyName = aKeyName;
-
-	// expand heap, so we can load 80k video
-	iHeapSize = 150000;
-	}
-
-CTestVclntVideoFile* CTestVclntVideoFile::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName,const TBool aPlay)
-	{
-	CTestVclntVideoFile* self = new (ELeave) CTestVclntVideoFile(aTestName,aSectName,aKeyName,aPlay);
-	return self;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
-	}
-
-CTestVclntVideoFile* CTestVclntVideoFile::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName,const TBool aPlay)
-	{
-	CTestVclntVideoFile* self = CTestVclntVideoFile::NewLC(aTestName,aSectName,aKeyName,aPlay);
-	CleanupStack::PushL(self);
-	return self;
-	}
-
-void CTestVclntVideoFile::MvpuoOpenComplete(TInt aError)
-	{
-	iError = aError;
-	INFO_PRINTF1(_L("Open Complete callback"));
-	CActiveScheduler::Stop();
-	}
-
-void CTestVclntVideoFile::MvpuoPrepareComplete(TInt aError)
-	{
-	iError = aError;
-	INFO_PRINTF1(_L("Open Complete callback"));
-	CActiveScheduler::Stop();
-	}
-
-void CTestVclntVideoFile::MvpuoFrameReady(CFbsBitmap& /*aFrame*/, TInt aError)
-	{
-	iError = aError;
-	INFO_PRINTF1(_L("Frame Ready callback"));
-	}
-
-void CTestVclntVideoFile::MvpuoPlayComplete(TInt aError)
-	{
-	iError = aError;
-	INFO_PRINTF1(_L("Play Complete callback"));
-	CActiveScheduler::Stop();
-	}
-	
-void CTestVclntVideoFile::MvpuoEvent(const TMMFEvent& /*aEvent*/)
-	{
-	}
-
-
-/**
- * Load and initialise an audio file.
- */
-TVerdict CTestVclntVideoFile::DoTestStepL()
-	{
-	TVerdict ret = EFail;
-	iError = KErrTimedOut;
-
-	INFO_PRINTF1(_L("Test : Video Player - File"));
-
-	TPtrC filename;
-	if(!GetStringFromConfig(iSectName,iKeyName,filename))
-		return EInconclusive;
-
-	InitWservL();
-
-	TRect rect, clipRect;
-	CVideoPlayerUtility* player = CVideoPlayerUtility::NewL(*this, EMdaPriorityNormal,
-															EMdaPriorityPreferenceTimeAndQuality,
-															iWs, *iScreen, *iWindow, rect, clipRect);
-	CleanupStack::PushL(player);
-	TRAP(iError,player->OpenFileL(filename));
-	
-	if(iError == KErrNone)
-		{
-		// Wait for initialisation callback
-		INFO_PRINTF1(_L("CVideoPlayerUtility: Opening file"));
-		CActiveScheduler::Start();
-		}
-
-	// Until JetStream
-#ifndef JETSTREAM_TESTS
-	if(iError == KErrNotSupported)
-		ret = EPass;
-#endif
-
-	// Check for errors.
-	if (iError == KErrNone && player != NULL)
-		{
-		player->Prepare();
-		CActiveScheduler::Start();
-		}
-
-	// Check for errors.
-	if (iError == KErrNone && player != NULL)
-		ret = DoTestL(player);
-		
-	INFO_PRINTF1(_L("CVideoPlayerUtility: Destroying"));
-	CleanupStack::PopAndDestroy(player);
-	if(iError != KErrNone)
-		ERR_PRINTF2( _L("CVideoPlayerUtility failed with error %d"),iError );
-	return	ret;
-	}
-
-TVerdict CTestVclntVideoFile::DoTestL(CVideoPlayerUtility* aPlayer)
-	{
-	TVerdict ret = EFail;
-
-// #ifdef JETSTREAM_TESTS
-	if(iPlay)
-		{
-		iError = KErrTimedOut;
-		aPlayer->Play();
-		INFO_PRINTF1(_L("CVideoPlayerUtility: Playing file"));
-		// Wait for init callback
-		CActiveScheduler::Start();
-		if(iError == KErrNone)
-			ret = EPass;
-		}
-	else
-		ret = EPass;
-// #else
-//	aPlayer->Stop();
-// #endif
-
-	return ret;
-	}
-
-//------------------------------------------------------------------
-
-/**
- * Constructor
- */
-CTestVclntVideoDes::CTestVclntVideoDes(const TDesC& aTestName,const TDesC& aSectName,const TDesC& aKeyName, const TBool aPlay)
-	:iPlay (aPlay)
-
-	{
-	// store the name of this test case
-	// this is the name that is used by the script file
-	// Each test step initialises it's own name
-	iTestStepName = aTestName;
-	iSectName = aSectName;
-	iKeyName = aKeyName;
-
-	// *** Jim : expand heap, so we can load 80k video
-	iHeapSize = 150000;
-	}
-
-CTestVclntVideoDes* CTestVclntVideoDes::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName,const TBool aPlay)
-	{
-	CTestVclntVideoDes* self = new (ELeave) CTestVclntVideoDes(aTestName,aSectName,aKeyName,aPlay);
-	return self;
-	}
-
-CTestVclntVideoDes* CTestVclntVideoDes::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName,const TBool aPlay)
-	{
-	CTestVclntVideoDes* self = CTestVclntVideoDes::NewLC(aTestName,aSectName,aKeyName,aPlay);
-	CleanupStack::PushL(self);
-	return self;
-	}
-
-void CTestVclntVideoDes::MvpuoOpenComplete(TInt aError)
-	{
-	iError = aError;
-	CActiveScheduler::Stop();
-	}
-
-void CTestVclntVideoDes::MvpuoPrepareComplete(TInt aError)
-	{
-	iError = aError;
-	CActiveScheduler::Stop();
-	}
-
-void CTestVclntVideoDes::MvpuoFrameReady(CFbsBitmap& /*aFrame*/,TInt aError)
-	{
-	iError = aError;
-	// Will this function require a Active Scheduler Stop?
-	}
-
-void CTestVclntVideoDes::MvpuoPlayComplete(TInt aError)
-	{
-	iError = aError;
-	CActiveScheduler::Stop();
-	}
-	
-void CTestVclntVideoDes::MvpuoEvent(const TMMFEvent& /*aEvent*/)
-	{
-	}
-
-
-TVerdict  CTestVclntVideoDes::DoTestStepPreambleL()
-	{
-	TPtrC filename; 
-	if(!GetStringFromConfig(iSectName, iKeyName, filename))
-		return EInconclusive;
-
-	RFs fs;
-	RFile file;
-	TInt size = 0;
-
-	// connect to file system and open file
-	User::LeaveIfError(fs.Connect());
-	User::LeaveIfError(file.Open(fs,filename,EFileRead));
-	CleanupClosePushL(file);
-
-	// Set HBuf size
-	User::LeaveIfError(file.Size(size));
-	INFO_PRINTF2(_L("size of file = %d\n"),size);//Statement Changed under DEF105143
-
-	iVideo = HBufC8::NewMaxL(size);
-
-	// read data into Hbuf
-	TPtr8 bufferDes(iVideo->Des());
-	User::LeaveIfError(file.Read(bufferDes));
-	
-	CleanupStack::PopAndDestroy(); //file
-	return CTestMmfVclntStep::DoTestStepPreambleL();
-	}
-
-TVerdict CTestVclntVideoDes::DoTestStepPostambleL()
-	{
-	delete iVideo;
-	iVideo = NULL;
-	return CTestMmfVclntStep::DoTestStepPostambleL();
-	}
-
-/**
- * Load and initialise an audio descriptor.
- */
-TVerdict CTestVclntVideoDes::DoTestStepL()
-	{
-	TVerdict ret = EFail;
-
-	INFO_PRINTF1(_L("Test : Video Player - Descriptor"));
-
-	iError = KErrTimedOut;
-
-	InitWservL();
-
-	TRect rect, clipRect;
-	CVideoPlayerUtility* player = CVideoPlayerUtility::NewL(*this, EMdaPriorityNormal,
-															EMdaPriorityPreferenceTimeAndQuality,
-															iWs, *iScreen, *iWindow, rect, clipRect);
-	CleanupStack::PushL(player);
-	
-
-	TRAP(iError, player->OpenDesL(iVideo->Des()));
-	
-	if(iError == KErrNone)
-		{
-		INFO_PRINTF1(_L("CVideoPlayerUtility: Opening descriptor"));
-		// Wait for init callback
-		CActiveScheduler::Start();
-		}
-
-	// Until JetStream
-#ifndef JETSTREAM_TESTS
-	if(iError == KErrNotSupported)
-		ret = EPass;
-#endif
-
-	if (iError == KErrNone && player != NULL)
-		{
-		player->Prepare();
-		CActiveScheduler::Start();
-		}
-
-
-	if ((iError == KErrNone) && (player != NULL))
-		ret = DoTestL(player);
-	
-	INFO_PRINTF1(_L("CVideoPlayerUtility: Destroying"));
-	CleanupStack::PopAndDestroy(player);
-	if(iError != KErrNone)
-		ERR_PRINTF2( _L("CVideoPlayerUtility failed with error %d"),iError );
-	return	ret;
-	}
-
-TVerdict CTestVclntVideoDes::DoTestL(CVideoPlayerUtility* aPlayer)
-	{
-	TVerdict ret = EFail;
-// #ifdef JETSTREAM_TESTS
-
-	if(iPlay)
-		{
-		iError = KErrTimedOut;
-		aPlayer->Play();
-		INFO_PRINTF1(_L("CVideoPlayerUtility: Playing descriptor"));
-		// Wait for init callback
-		CActiveScheduler::Start();
-		if(iError == KErrNone)
-			ret = EPass;
-		}
-	else
-		ret = EPass;	
-//#else
-//	aPlayer->Stop();
-//#endif
-	return ret;		
-	}
-
-
-//------------------------------------------------------------------
-
-/**
- * Constructor
- */
-CTestVclntVideoUrl::CTestVclntVideoUrl(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName,const TBool aPlay)
-	:iPlay (aPlay)
-	{
-	// store the name of this test case
-	// this is the name that is used by the script file
-	// Each test step initialises it's own name
-	iTestStepName = aTestName;
-	iSectName = aSectName;
-	iKeyName = aKeyName;
-	}
-
-CTestVclntVideoUrl* CTestVclntVideoUrl::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName,const TBool aPlay)
-	{
-	CTestVclntVideoUrl* self = CTestVclntVideoUrl::NewLC(aTestName,aSectName,aKeyName,aPlay);
-	CleanupStack::Pop();
-	return self;
-	}
-
-CTestVclntVideoUrl* CTestVclntVideoUrl::NewLC(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName,const TBool aPlay)
-	{
-	CTestVclntVideoUrl* self = new (ELeave) CTestVclntVideoUrl(aTestName,aSectName,aKeyName,aPlay);
-	CleanupStack::PushL(self);
-	return self;
-	}
-
-void CTestVclntVideoUrl::MvpuoOpenComplete(TInt aError)
-	{
-	iError = aError;
-	INFO_PRINTF1(_L("Open complete callback"));
-	CActiveScheduler::Stop();
-	}
-
-void CTestVclntVideoUrl::MvpuoPrepareComplete(TInt aError)
-	{
-	iError = aError;
-	INFO_PRINTF1(_L("Open complete callback"));
-	CActiveScheduler::Stop();
-	}
-
-void CTestVclntVideoUrl::MvpuoFrameReady(CFbsBitmap& /*aFrame*/, TInt aError)
-	{
-	iError = aError;
-	// ???
-	INFO_PRINTF1(_L("Frame Ready callback"));
-	}
-
-void CTestVclntVideoUrl::MvpuoPlayComplete(TInt aError)
-	{
-	iError = aError;
-	INFO_PRINTF1(_L("Play complete callback"));
-	CActiveScheduler::Stop();
-	}
-	
-void CTestVclntVideoUrl::MvpuoEvent(const TMMFEvent& /*aEvent*/)
-	{
-	}
-
-
-/**
- * Open audio from a URL and play.
- */
-TVerdict CTestVclntVideoUrl::DoTestStepL()
-	{
-	TVerdict ret = EFail;
-
-	INFO_PRINTF1(_L("Test : Video Player - URL"));
-
-	iError = KErrTimedOut;	
-
-	TPtrC urlname;
-	if(!GetStringFromConfig(iSectName,iKeyName,urlname))
-		return EInconclusive;
-
-	InitWservL();
-
-	TRect rect, clipRect;
-	CVideoPlayerUtility* player = CVideoPlayerUtility::NewL(*this, EMdaPriorityNormal,
-															EMdaPriorityPreferenceTimeAndQuality,
-															iWs, *iScreen, *iWindow, rect, clipRect);
-	// wait for init to complete
-	CleanupStack::PushL(player);
-	player->OpenUrlL(urlname);
-	INFO_PRINTF1(_L("CVideoPlayerUtility: Opening URL"));
-	CActiveScheduler::Start();
-
-	// Until JetStream
-#ifndef JETSTREAM_TESTS
-	if(iError == KErrNotSupported)
-		ret = EPass;
-#endif
-
-	if (iError == KErrNone)
-		{
-		player->Prepare();
-		CActiveScheduler::Start();
-		}
-
-	if (iError == KErrNone)
-		ret = DoTestL(player);
-
-	INFO_PRINTF1(_L("CVideoPlayerUtility: Destroying"));
-	CleanupStack::PopAndDestroy(player);
-	if(iError != KErrNone)
-		ERR_PRINTF2( _L("CVideoPlayerUtility failed with error %d"),iError );
-	return	ret;
-	}
-
-TVerdict CTestVclntVideoUrl::DoTestL(CVideoPlayerUtility* aPlayer)
-	{
-	TVerdict ret = EFail;
-
-//#ifdef JETSTREAM_TESTS
-
-	iError = KErrTimedOut;	
-
-	aPlayer->Play();
-	INFO_PRINTF1(_L("CVideoPlayerUtility: Playing URL"));
-	// Wait for play to complete
-	CActiveScheduler::Start();
-
-	if(iError == KErrNone)
-		ret = EPass;
-//#else
-//	aPlayer->Stop();
-//#endif
-
-	return ret;
-	}
-
-
-//------------------------------------------------------------------
-
-
-CTestVclntEnqFrameRate::CTestVclntEnqFrameRate(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TInt aFrameRate)
-	: CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse)
-	{
-	iFrameRate = aFrameRate;
-	}
-
-CTestVclntEnqFrameRate* CTestVclntEnqFrameRate::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TInt aFrameRate)
-	{
-	CTestVclntEnqFrameRate* self = new (ELeave) CTestVclntEnqFrameRate(aTestName,aSectName,aKeyName,aFrameRate);
-	return self;
-	}
-
-TVerdict CTestVclntEnqFrameRate::DoTestL(CVideoPlayerUtility* aPlayer)
-	{
-	INFO_PRINTF1(_L("Test : Video Player - Enquire Frame Rate"));
-
-	TVerdict ret = EFail;
-
-	TInt32 theFrameRate;
-	Math::Int(theFrameRate, aPlayer->VideoFrameRateL());
-	INFO_PRINTF2(_L("(Frame rate : %d)"), theFrameRate); 
-
-	// if we get here, we pass. The player does not have a SetVideoFrameRate()
-	ret = EPass;
-
-	return ret;
-	}
-
-
-//------------------------------------------------------------------
-
-CTestVclntPosition::CTestVclntPosition(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TTimeIntervalMicroSeconds aPosition)
-	: CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse)
-	{
-	iPosition = aPosition;
-	}
-
-CTestVclntPosition* CTestVclntPosition::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TTimeIntervalMicroSeconds aPosition)
-	{
-	CTestVclntPosition* self = new (ELeave) CTestVclntPosition(aTestName,aSectName,aKeyName,aPosition);
-	return self;
-	}
-
-TVerdict CTestVclntPosition::DoTestL(CVideoPlayerUtility* aPlayer)
-	{
-	// NB test video controller is stubbing certain functions. May have to rewrite this
-	// for Jet Stream
-
-	TVerdict ret = EFail;
-
-	INFO_PRINTF1(_L("Test : Video Player - Position"));
-
-	TBool validPosition = EFalse;
-
-	INFO_PRINTF3(_L("Set Position %d Duration = %d"), 
-		I64INT(iPosition.Int64()), I64INT(aPlayer->DurationL().Int64()));
-
-	//  Set position: middle of clip.
-	if (I64INT(iPosition.Int64()) == 0)
-		iPosition = I64INT(aPlayer->DurationL().Int64()) / 2;
-	// Set position: end of clip.
-	if (I64INT(iPosition.Int64()) == -1)
-		iPosition = aPlayer->DurationL();
-
-	// Position is beyond the end of the clips duration
-	// so check that the value is clipped.
-	if(aPlayer->DurationL() < iPosition)
-		{
-		INFO_PRINTF2(_L("Longer than duration : Setting position to %d"), I64INT(iPosition.Int64()));
-		aPlayer->SetPositionL(iPosition);
-		INFO_PRINTF3(_L("Set : position = %d (if clipped : %d)"), 
-			I64INT(aPlayer->PositionL().Int64()), I64INT(aPlayer->DurationL().Int64()));
-		if(aPlayer->PositionL() == aPlayer->DurationL())
-			validPosition = ETrue;
-		}
-	// Position is negative
-	// so check that the value is clipped.
-	else if (I64INT(iPosition.Int64()) < 0)
-		{
-		INFO_PRINTF2(_L("Negative value : Setting position to %d"), I64INT(iPosition.Int64()));
-		aPlayer->SetPositionL(iPosition);
-		INFO_PRINTF2(_L("Set : position = %d (if clipped : 0)"), I64INT(aPlayer->PositionL().Int64()));
-		if (I64INT(aPlayer->PositionL().Int64()) == 0)
-			validPosition = ETrue;
-		}
-	else
-		{
-		INFO_PRINTF2(_L("Normal : Setting position to %d"), I64INT(iPosition.Int64()));
-		aPlayer->SetPositionL(iPosition);
-		INFO_PRINTF3(_L("Set : position = %d (if clipped : %d)"), 
-			I64INT(aPlayer->PositionL().Int64()), I64INT(iPosition.Int64()));
-		if(aPlayer->PositionL() == iPosition)
-			validPosition = ETrue;
-		}
-
-	// Position was set to a valid value.
-	if(validPosition)
-		{
-		aPlayer->Play();
-		INFO_PRINTF1(_L("CVideoPlayerUtility: Playing"));
-		// wait for play to complete
-		CActiveScheduler::Start();
-
-		INFO_PRINTF2(_L("Error : %d"), iError);
-		if (iError == KErrNone)
-			ret = EPass;
-		}
-	else
-		{
-		// We've got an invalid position, attempt to play anyway...
-		// the test controller should handle it
-		aPlayer->Play();
-		INFO_PRINTF1(_L("CVideoPlayerUtility: Playing from invalid position"));
-		// wait for play to complete
-		CActiveScheduler::Start();
-
-		INFO_PRINTF2(_L("Error : %d"), iError);
-		if (iError == KErrNone)
-			ret = EPass;
-
-		}
-
-	return ret;
-	}
-
-
-//------------------------------------------------------------------
-
-CTestVclntPriority::CTestVclntPriority(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TInt aPriority)
-	: CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse)
-	{
-	iPriority = aPriority;
-	}
-
-CTestVclntPriority* CTestVclntPriority::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TInt aPriority)
-	{
-	CTestVclntPriority* self = new (ELeave) CTestVclntPriority(aTestName,aSectName,aKeyName,aPriority);
-	return self;
-	}
-
-TVerdict CTestVclntPriority::DoTestL(CVideoPlayerUtility* aPlayer)
-	{
-	TVerdict ret = EFail;
-
-	INFO_PRINTF1(_L("Test : Video Player - Priority"));
-
-	aPlayer->SetPriorityL(iPriority, EMdaPriorityPreferenceNone);	
-	TInt thePriority;
-	TMdaPriorityPreference thePref;
-	aPlayer->PriorityL(thePriority, thePref);
-	INFO_PRINTF3(_L("Priority = %d (expecting %d)"), thePriority, iPriority);
-	INFO_PRINTF3(_L("Pref = %d (expecting %d)"), thePref, EMdaPriorityPreferenceNone);
-	if( (thePriority == iPriority) && (thePref == EMdaPriorityPreferenceNone) )
-		return EPass;
-	return ret;
-	}
-
-
-//------------------------------------------------------------------
-
-CTestVclntDuration::CTestVclntDuration(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TTimeIntervalMicroSeconds aDuration)
-	: CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse)
-	{
-	iDuration = aDuration;
-	}
-
-CTestVclntDuration* CTestVclntDuration::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TTimeIntervalMicroSeconds aDuration)
-	{
-	CTestVclntDuration* self = new (ELeave) CTestVclntDuration(aTestName,aSectName,aKeyName,aDuration);
-	return self;
-	}
-
-TVerdict CTestVclntDuration::DoTestL(CVideoPlayerUtility* aPlayer)
-	{
-	TVerdict ret = EFail;
-
-	INFO_PRINTF1(_L("Test : Video Player - Duration"));
-
-	if (I64INT(iDuration.Int64()) == 0)
-		{
-		TInt duration = I64INT(aPlayer->DurationL().Int64());
-		aPlayer->Play();
-		INFO_PRINTF1(_L("CVideoPlayerUtility: Playing"));
-		TTime start;
-		start.HomeTime();
-		CActiveScheduler::Start();
-		TTime stop;
-		stop.HomeTime();
-
-		TUint actualDuration = I64INT(stop.MicroSecondsFrom(start).Int64());
-
-		INFO_PRINTF6(_L("Error : %d Start = %d Stop = %d Duration = %d ActualDuration = %d"),
-			iError, I64INT(start.Int64()), I64INT(stop.Int64()), duration, actualDuration);
-		if((iError == KErrNone) && (TimeComparison(actualDuration, duration, KExpectedDeviation)))
-			ret = EPass;
-		}
-	else
-		{
-		if(aPlayer->DurationL() == iDuration)
-			ret = EPass;
-		}
-	return ret;
-	}
-
-//------------------------------------------------------------------
-
-CTestVclntVolume::CTestVclntVolume(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TInt aVolume)
-	: CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse)
-	{
-	iVolume = aVolume;
-	}
-
-CTestVclntVolume* CTestVclntVolume::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TInt aVolume)
-	{
-	CTestVclntVolume* self = new (ELeave) CTestVclntVolume(aTestName,aSectName,aKeyName,aVolume);
-	return self;
-	}
-
-TVerdict CTestVclntVolume::DoTestL(CVideoPlayerUtility* aPlayer)
-	{
-	TVerdict ret = EFail;
-
-	// NB : test video controller does not adjust invalid volumes
-	// comment the checks back in for JS
-
-	INFO_PRINTF1(_L("Test : Video Player - Volume"));
-
-	INFO_PRINTF1(_L("Warning : test video controller does not adjust invalid volumes"));
-
-	// Check maxvolume function
-	if(iVolume == -1)
-		{
-		iVolume = aPlayer->MaxVolume();
-		INFO_PRINTF3(_L("Volume = %d MaxVolume = %d"), iVolume, KMaxVolume);
-		//if(iVolume == KMaxVolume) 
-			ret = EPass;
-		}
-	// Volume is truncated to maxvolume
-	else if(iVolume > aPlayer->MaxVolume())
-		{
-		aPlayer->SetVolumeL(iVolume);
-		INFO_PRINTF3(_L("Volume = %d MaxVolume = %d"), aPlayer->Volume(), aPlayer->MaxVolume());
-		//if(aPlayer->Volume() == aPlayer->MaxVolume())
-			ret = EPass;
-		}
-	// Volume is truncated to 0
-	else if(iVolume < 0)
-		{
-		aPlayer->SetVolumeL(iVolume);
-		INFO_PRINTF2(_L("Volume = %d (expecting 0)"), aPlayer->Volume());
-		//if(aPlayer->Volume() == 0)
-			ret = EPass;
-		}
-	// Set volume and check
-	else
-		{
-		aPlayer->SetVolumeL(iVolume);
-		INFO_PRINTF3(_L("Volume = %d (expecting %d)"), aPlayer->Volume(), iVolume);
-		if(aPlayer->Volume() == iVolume)
-			ret = EPass;
-		}
-
-	return ret;
-	}
-
-//------------------------------------------------------------------
-
-CTestVclntCloseOpen::CTestVclntCloseOpen(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
-	: CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse)
-	{}
-
-CTestVclntCloseOpen* CTestVclntCloseOpen::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
-	{
-	CTestVclntCloseOpen* self = new (ELeave) CTestVclntCloseOpen(aTestName,aSectName,aKeyName);
-	return self;
-	}
-
-TVerdict CTestVclntCloseOpen::DoTestL(CVideoPlayerUtility* aPlayer)
-	{
-	TVerdict ret = EFail;
-
-	INFO_PRINTF1(_L("Test : Video Player - Close/Open"));
-
-//#ifdef JETSTREAM_TESTS
-
-	TPtrC filename;
-	if(!GetStringFromConfig(iSectName,iKeyName,filename))
-		return EInconclusive;
-
-	aPlayer->Close();
-	User::After(KOneSecond);
-
-	TRAP(iError,aPlayer->OpenFileL(filename));
-	if(iError == KErrNone)
-		{
-		// Wait for initialisation callback
-		INFO_PRINTF1(_L("CVideoPlayerUtility: Opening file"));
-		ret = EPass;
-		}
-
-//#else
-//	aPlayer->Stop();
-//#endif
-
-	return ret;
-	}
-
-//------------------------------------------------------------------
-
-CTestVclntPause::CTestVclntPause(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
-	: CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse)
-	{}
-
-CTestVclntPause* CTestVclntPause::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
-	{
-	CTestVclntPause* self = new (ELeave) CTestVclntPause(aTestName,aSectName,aKeyName);
-	return self;
-	}
-
-TVerdict CTestVclntPause::DoTestL(CVideoPlayerUtility* aPlayer)
-	{
-	TVerdict ret = EFail;
-
-	INFO_PRINTF1(_L("Test : Video Player - Pause"));
-
-	// Tests pause functionality
-	// NB : not implemented in test controller
-	INFO_PRINTF1(_L("CVideoPlayerUtility: Playing"));
-	aPlayer->Play();
-	CActiveScheduler::Start();
-	aPlayer->PauseL();
-
-#ifdef JETSTREAM_TESTS
-	TInt duration = I64INT(aPlayer->DurationL().Int64());
-
-	iError = KErrTimedOut;
-	aPlayer->Play();
-	INFO_PRINTF1(_L("CVideoPlayerUtility: Playing"));
-	TTime start;
-	start.HomeTime();
-	CActiveScheduler::Start();
-	TTime stop;
-	stop.HomeTime();
-
-	TUint actualDuration = I64INT(stop.MicroSecondsFrom(start).Int64());
-
-	INFO_PRINTF6(_L("Error : %d Start = %d Stop = %d Duration = %d ActualDuration = %d"),
-		iError, I64INT(start.Int64()), I64INT(stop.Int64()), duration, actualDuration);
-	if((iError == KErrNone) && (TimeComparison(actualDuration, duration, KExpectedDeviation)))
-		ret = EPass;
-#else
-	INFO_PRINTF1(_L("Warning : PauseL() functionality not supported in test controller"));
-	aPlayer->Stop();
-	ret = EPass;
-#endif
-
-	return ret;
-	}
-
-//------------------------------------------------------------------
-
-CTestVclntBalance::CTestVclntBalance(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TInt aBalance)
-	: CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse)
-	{
-	iBalance = aBalance;
-	}
-
-CTestVclntBalance* CTestVclntBalance::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TInt aBalance)
-	{
-	CTestVclntBalance* self = new (ELeave) CTestVclntBalance(aTestName,aSectName,aKeyName,aBalance);
-	return self;
-	}
-
-TVerdict CTestVclntBalance::DoTestL(CVideoPlayerUtility* aPlayer)
-	{
-	INFO_PRINTF1(_L("Test : Video Player - Balance"));
-
-#ifdef JETSTREAM_TESTS
-	if (iBalance < KMinBalance)
-		{
-		aPlayer->SetBalanceL(iBalance);		
-		INFO_PRINTF3(_L("Balance = %d (expecting %d)"), aPlayer->Balance(), KMinBalance);
-		if(aPlayer->Balance() == KMinBalance)
-			return EPass;
-		}
-	else if (iBalance > KMaxBalance)
-		{
-		aPlayer->SetBalanceL(iBalance);		
-		INFO_PRINTF3(_L("Balance = %d (expecting %d)"), aPlayer->Balance(), KMaxBalance);
-		if(aPlayer->Balance() == KMaxBalance)
-			return EPass;
-		}
-	else
-		{
-		aPlayer->SetBalanceL(iBalance);		
-		INFO_PRINTF3(_L("Balance = %d (expecting %d)"), aPlayer->Balance(), iBalance);
-		if(aPlayer->Balance() == iBalance)
-			return EPass;
-		}
-#else
-	// the test video controller returns 1 for all calls of Balance()
-	// call SetBalanceL() to show it doesn't leave
-	aPlayer->SetBalanceL(iBalance);		
-	INFO_PRINTF1(_L("Test controller should return 1 for all calls of Balance()"));
-	INFO_PRINTF2(_L("Balance = %d (expecting 1)"), aPlayer->Balance());
-	if(aPlayer->Balance() == 1)
-		return EPass;
-#endif
-
-	return EFail;
-	}
-
-
-//------------------------------------------------------------------
-
-CTestVclntPlayWindow::CTestVclntPlayWindow(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TTimeIntervalMicroSeconds aStart, const TTimeIntervalMicroSeconds aEnd)
-	: CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse)
-	{
-	iStart = aStart;
-	iEnd = aEnd;
-	}
-
-CTestVclntPlayWindow* CTestVclntPlayWindow::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, const TTimeIntervalMicroSeconds aStart, const TTimeIntervalMicroSeconds aEnd)
-	{
-	CTestVclntPlayWindow* self = new (ELeave) CTestVclntPlayWindow(aTestName,aSectName,aKeyName,aStart,aEnd);
-	return self;
-	}
-
-TVerdict CTestVclntPlayWindow::DoTestL(CVideoPlayerUtility* aPlayer)
-	{
-	TVerdict ret = EFail;
-
-	INFO_PRINTF1(_L("Test : Video Player - Window"));
-
-//	InitWservL();
-
-	TRect rect, clipRect;
-	TRAPD(err, aPlayer->SetDisplayWindowL(iWs, *iScreen, *iWindow, rect, clipRect));
-	if(err)
-		{
-		ERR_PRINTF2(_L("SetDisplayWindowL() failed, error %d"), err);
-		ret = EFail;
-		}
-	else
-		{
-		ret = EPass;
-		}
-
-	// removed an attempt at opening a window server manually - it seemed to work, but a RWsSession
-	// couldn't Connect(), connectL() claimed no asynchronous operation...
-	
-	// we have no window server, so the test can't run - 
-	// so call it with dummy parameters and add explanatory note to the test
-
-	// NB ws.Connect() will panic on the target, hence don't run it
-/*
-#if defined (__WINS__)
-	TBool testInvalid = EFalse;
- 	RWsSession ws;
-	if(ws.Connect() != KErrNone)
-		testInvalid = ETrue;
-
-	// we can't call it at all - SetDisplayWindowL() will cause an access violation if ws is null
-	if(testInvalid)
-		{
-		INFO_PRINTF1(_L("Warning : SetDisplayWindowL() cannot be tested, no window server available"));
-		ret = EPass;
-		}
-	else
-		{
-		// TBD - arguments to be correctly set
-		CWsScreenDevice sd;
-		RBlankWindow window;
-		TRect rect, clipRect;
-
-		TRAPD(err, aPlayer->SetDisplayWindowL(ws, sd, window, rect, clipRect));
-		if(err)
-			{
-				ERR_PRINTF2(_L("SetDisplayWindowL() failed, error %d"), err);
-				ret = EFail;
-			}
-		else
-			ret = EPass;
-		
-		}
-#else
-	INFO_PRINTF1(_L("Warning : SetDisplayWindowL() cannot be tested on target"));
-	ret = EPass;
-#endif
-*/
-	aPlayer->Stop();
-	return ret;
-	}
-
-
-//------------------------------------------------------------------
-
-CTestVclntMeta::CTestVclntMeta(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
-	: CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse)
-	{}
-
-CTestVclntMeta* CTestVclntMeta::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
-	{
-	CTestVclntMeta* self = new (ELeave) CTestVclntMeta(aTestName,aSectName,aKeyName);
-	return self;
-	}
-
-TVerdict CTestVclntMeta::DoTestL(CVideoPlayerUtility* aPlayer)
-	{
-	INFO_PRINTF1(_L("Test : Video Player - Metadata"));
-
-	TInt numOfMeta = -1;
-	TRAPD(err, numOfMeta = aPlayer->NumberOfMetaDataEntriesL() );
-	INFO_PRINTF3(_L("Error : %d Entries = %d"), err, numOfMeta);
-	if (err != KErrNone || numOfMeta != 0)
-		return EFail;
-	// call that goes to the dummy controller
-	// NB we expect zero metadata entries
-	CMMFMetaDataEntry* theEntry=NULL;
-	TRAP(err, theEntry = aPlayer->MetaDataEntryL(1));
-	INFO_PRINTF2(_L("Error : %d"), err);
-	if (err != KErrNone)
-		return EFail;
-	else 
-		{
-		delete theEntry;
-		return EPass;
-		}
-	}
-
-
-//------------------------------------------------------------------
-
-CTestVclntFrameSize::CTestVclntFrameSize(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName,const TInt aFrameSize)
-	: CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse)
-	{
-	iFrameSize = aFrameSize;
-	}
-
-CTestVclntFrameSize* CTestVclntFrameSize::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName,const TInt aFrameSize)
-	{
-	CTestVclntFrameSize* self = new (ELeave) CTestVclntFrameSize(aTestName,aSectName,aKeyName,aFrameSize);
-	return self;
-	}
-
-TVerdict CTestVclntFrameSize::DoTestL(CVideoPlayerUtility* aPlayer)
-	{
-	TVerdict ret = EFail;
-
-	INFO_PRINTF1(_L("Test : Video Player - Frame Size"));
-
-	TSize	frameSize;
-	TRAPD(err, aPlayer->VideoFrameSizeL(frameSize) );
-
-	INFO_PRINTF4(_L("Error : %d, Frame size : (%d, %d)"), err, frameSize.iWidth, frameSize.iHeight);
-	if (err == KErrNone &&
-		frameSize.iWidth >= 0 && frameSize.iHeight >= 0 )  
-		return EPass;
-
-	return ret;
-	}
-
-//------------------------------------------------------------------
-
-CTestVclntMimeType::CTestVclntMimeType(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
-	: CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse)
-	{
-	}
-
-CTestVclntMimeType* CTestVclntMimeType::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
-	{
-	CTestVclntMimeType* self = new (ELeave) CTestVclntMimeType(aTestName,aSectName,aKeyName);
-	return self;
-	}
-
-TVerdict CTestVclntMimeType::DoTestL(CVideoPlayerUtility* aPlayer)
-	{
-	INFO_PRINTF1(_L("Test : Video Player - MimeType"));
-
-	// NB we cannot check whether the mime type returned is valid, or even exists.
-	TPtrC8 mimeType = aPlayer->VideoFormatMimeType();
-
-	// take it to a 16-bit string
-	TBuf<64> mimeType16;
-	mimeType16.Copy(mimeType);
-	INFO_PRINTF2(_L("Mime type : \'%S\'"), &mimeType16);
-	return EPass;
-	}
-
-//------------------------------------------------------------------
-
-CTestVclntRebuffering::CTestVclntRebuffering(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
-	: CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse)
-	{
-	}
-
-CTestVclntRebuffering* CTestVclntRebuffering::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
-	{
-	CTestVclntRebuffering* self = new (ELeave) CTestVclntRebuffering(aTestName,aSectName,aKeyName);
-	return self;
-	}
-
-TVerdict CTestVclntRebuffering::DoTestL(CVideoPlayerUtility* aPlayer)
-	{
-	INFO_PRINTF1(_L("Test : Video Player - Rebuffering"));
-
-	aPlayer->RegisterForVideoLoadingNotification(*this);
-
-	INFO_PRINTF1(_L("Rebuffering request completed"));
-	return EPass;
-	}
-
-// from MRebufferCallback
-void CTestVclntRebuffering::MvloLoadingStarted()
-	{
-	INFO_PRINTF1(_L("CTestVclntRebuffering::MvloLoadingStarted"));
-	}
-
-void CTestVclntRebuffering::MvloLoadingComplete()
-	{
-	INFO_PRINTF1(_L("CTestVclntRebuffering::MvloLoadingComplete"));
-	}
-
-//------------------------------------------------------------------
-
-CTestVclntRepeat::CTestVclntRepeat(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName,const TInt aRepeat)
-	: CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse)
-	{
-	iRepeat = aRepeat;
-	}
-
-CTestVclntRepeat* CTestVclntRepeat::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName,const TInt aRepeat)
-	{
-	CTestVclntRepeat* self = new (ELeave) CTestVclntRepeat(aTestName,aSectName,aKeyName,aRepeat);
-	return self;
-	}
-
-TVerdict CTestVclntRepeat::DoTestL(CVideoPlayerUtility* aPlayer)
-	{
-	TVerdict ret = EFail;
-
-	INFO_PRINTF1(_L("Test : Video Player - Repeats"));
-
-	TInt duration = I64INT(aPlayer->DurationL().Int64());
-
-	// SetRepeats() doesn't exist in the video controller, so set iRepeat to 1
-	iRepeat = 1;
-	INFO_PRINTF1(_L("Warning : SetRepeats() does not exist in player API. Repeat count set to 1"));
-	
-	aPlayer->Play();
-	INFO_PRINTF1(_L("CVideoPlayerUtility: Playing"));
-	TTime start;
-	start.HomeTime();
-	CActiveScheduler::Start();
-	TTime stop;
-	stop.HomeTime();
-
-	TUint actualDuration = I64INT(stop.MicroSecondsFrom(start).Int64());
-
-	INFO_PRINTF6(_L("Error : %d Start = %d Stop = %d Duration = %d ActualDuration = %d"),
-		iError, I64INT(start.Int64()), I64INT(stop.Int64()), duration, actualDuration);
-	if((iError == KErrNone) && (TimeComparison(actualDuration, duration * (iRepeat + 1), 
-											   KExpectedDeviation * iRepeat)))
-		ret = EPass;
-
-	return ret;
-	}
-
-//------------------------------------------------------------------
-
-CTestVclntDelete::CTestVclntDelete(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
-	: CTestVclntVideoFile(aTestName,aSectName,aKeyName,EFalse)
-	{}
-
-CTestVclntDelete* CTestVclntDelete::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName)
-	{
-	CTestVclntDelete* self = new (ELeave) CTestVclntDelete(aTestName,aSectName,aKeyName);
-	return self;
-	}
-
-TVerdict CTestVclntDelete::DoTestL(CVideoPlayerUtility* /* aPlayer */)
-	{
-	// this is never called
-	return EFail;
-	}
-
-TVerdict CTestVclntDelete::DoTestStepL()
-	{
-	TVerdict ret = EFail;
-
-	INFO_PRINTF1(_L("Test : Video Player - Delete"));
-
-	TPtrC filename;
-	if(!GetStringFromConfig(iSectName,iKeyName,filename))
-		return EInconclusive;
-
-	InitWservL();
-
-	TRect rect, clipRect;
-	CVideoPlayerUtility* player = CVideoPlayerUtility::NewL(*this, EMdaPriorityNormal,
-															EMdaPriorityPreferenceTimeAndQuality,
-															iWs, *iScreen, *iWindow, rect, clipRect);
-	CleanupStack::PushL(player);
-
-	iError = KErrTimedOut;
-	INFO_PRINTF2(_L("Attempting to open file %S"), &filename);
-	TRAP(iError,player->OpenFileL(filename));
-	
-	if(iError == KErrNone)
-		{
-		// Wait for initialisation callback
-		INFO_PRINTF1(_L("CVideoPlayerUtility: Opening file"));
-		CActiveScheduler::Start();
-		}
-
-	if (iError == KErrNone)
-		{
-		player->Prepare();
-		CActiveScheduler::Start();
-		}
-
-	if(iError == KErrNone)
-		{
-		player->Play();
-		INFO_PRINTF1(_L("CVideoPlayerUtility: Playing"));
-		INFO_PRINTF1(_L("CVideoPlayerUtility: Destroying before play complete"));
-		CleanupStack::Pop(player); // destroy player before play has completed
-
-		User::Heap().Check();
-		return EPass;
-		}
-
-	CleanupStack::Pop(player);
-	ERR_PRINTF2( _L("CVideoPlayerUtility failed with error %d"),iError );
-	return ret;
-	}
-