2010wk44_01
authorhgs
Mon, 18 Oct 2010 12:47:26 +0100
changeset 4 9d4397b300d1
parent 1 fcaf4606ba4e
child 5 b220a9341636
2010wk44_01
devsound/a3fcharacterisationtest/eabi/char_a3f_devsound.def
devsound/a3fcharacterisationtest/scripts/mm_a3f_devsound_init.script
devsound/a3fcharacterisationtest/scripts/mm_a3f_devsound_play_tone.script
devsound/a3fcharacterisationtest/src/char_a3f_devsound_compliancesuite.cpp
devsound/a3fcharacterisationtest/src/char_a3f_devsound_initializationtest.cpp
devsound/a3fcharacterisationtest/src/char_a3f_devsound_tonetest.cpp
devsound/a3fcharacterisationtest/src/char_a3f_devsound_tonetest.h
devsound/a3fdevsound/src/devsoundadaptor/cdevcommoncontrol.cpp
devsound/a3fdevsound/src/mmfdevsoundproxy/mmfdevsoundcallbackhandler.cpp
devsoundextensions/audiorouting/Output/AudioOutputMessageHandler/src/AudioOutputMessageHandler.cpp
devsoundextensions/audiorouting/Output/AudioOutputProxy/src/AudioOutputProxy.cpp
devsoundextensions/ciextnfactoryplugins/ciextnserverplugin/group/ciextnserverplugin.mmp
devsoundextensions/ciextnfactoryplugins/ciextnserverplugin/src/ciextnserverplugin.cpp
devsoundextensions/ciextnfactoryplugins/ciextnserverplugin/src/ciextnserverplugin.h
devsoundextensions/ciextnfactoryplugins/ciextnserverplugin/src/ciextnserverpluginwrapper.cpp
devsoundextensions/ciextnfactoryplugins/ciextnserverplugin/src/ciextnserverpluginwrapper.h
devsoundextensions/drmaudioplayer/DRMPlayServer/src/DRMPlaySession.cpp
devsoundextensions/drmaudioplayer/DRMPlayUtility/src/MediaClientDrm.cpp
devsoundextensions/effects/AudioEqualizer/AudioEqualizerMessageHandler/src/AudioEqualizerMessageHandler.cpp
devsoundextensions/effects/BassBoost/BassBoostMessageHandler/src/BassBoostMessageHandler.cpp
devsoundextensions/effects/DistAtten/DistanceAttenuationMessageHandler/src/DistanceAttenuationMessageHandler.cpp
devsoundextensions/effects/EnvReverb/EnvironmentalReverbMessageHandler/src/EnvironmentalReverbMessageHandler.cpp
devsoundextensions/effects/ListDoppler/ListenerDopplerMessageHandler/src/ListenerDopplerMessageHandler.cpp
devsoundextensions/effects/ListLocation/ListenerLocationMessageHandler/src/ListenerLocationMessageHandler.cpp
devsoundextensions/effects/ListOrient/ListenerOrientationMessageHandler/src/ListenerOrientationMessageHandler.cpp
devsoundextensions/effects/Loudness/LoudnessMessageHandler/src/LoudnessMessageHandler.cpp
devsoundextensions/effects/RoomLevel/RoomLevelMessageHandler/src/RoomLevelMessageHandler.cpp
devsoundextensions/effects/SrcDoppler/SourceDopplerMessageHandler/src/SourceDopplerMessageHandler.cpp
devsoundextensions/effects/SrcLocation/SourceLocationMessageHandler/src/SourceLocationMessageHandler.cpp
devsoundextensions/effects/SrcOrientation/SourceOrientationMessageHandler/src/SourceOrientationMessageHandler.cpp
devsoundextensions/effects/StereoWidening/StereoWideningMessageHandler/src/StereoWideningMessageHandler.cpp
devsoundextensions/mmextfw/custominterfaceutility/CustomInterfaceUtility/src/CustomInterfaceUtility.cpp
devsoundextensions/restrictedaudiooutput/RestrictedAudioOutputMessageHandler/src/RestrictedAudioOutputMessageHandler.cpp
mmaudio_pub/drm_audio_player_api/tsrc/Conf/DRMAudioPlaybackRegressionTestModuleFH.cfg
mmaudio_pub/drm_audio_player_api/tsrc/DRMAudioPlay/src/DRMAudioPlay_core.cpp
mmaudio_pub/drm_audio_player_api/tsrc/data/mmc/drm/test3gp.dcf
mmaudio_pub/drm_audio_player_api/tsrc/data/mmc/drm/testmp3.dcf
mmlibs/mmfw/SecureDRM/src/Client/MmfDrmPluginServerProxy.cpp
mmlibs/mmfw/src/Client/Video/mediaclientvideodisplaybody.cpp
mmlibs/mmfw/tsrc/mmfintegrationtest/conf/externaldisplaytest_1020730b.txt
mmlibs/mmfw/tsrc/mmfintegrationtest/group/videogroup/bld.inf
mmlibs/mmfw/tsrc/mmfintegrationtest/mmfmediaclienttestplugin/group/bld.inf
mmlibs/mmfw/tsrc/mmfintegrationtest/mmfmediaclienttestplugin/group/mmfmediaclientextdisplaytestprovider.mmp
mmlibs/mmfw/tsrc/mmfintegrationtest/mmfmediaclienttestplugin/rom/mmfmediaclientextdisplaytestprovider.iby
mmlibs/mmfw/tsrc/mmfintegrationtest/mmfmediaclienttestplugin/src/mmfmediaclientextdisplaytestfactory.cpp
mmlibs/mmfw/tsrc/mmfintegrationtest/mmfmediaclienttestplugin/src/mmfmediaclientextdisplaytestprovider.cpp
mmlibs/mmfw/tsrc/mmfintegrationtest/mmfmediaclienttestplugin/src/mmfmediaclientextdisplaytestprovider.h
mmlibs/mmfw/tsrc/mmfintegrationtest/mmfmediaclienttestplugin/src/mmfmediaclientextdisplaytestprovider.hrh
mmlibs/mmfw/tsrc/mmfintegrationtest/mmfmediaclienttestplugin/src/mmfmediaclientextdisplaytestprovider.rss
mmlibs/mmfw/tsrc/mmfintegrationtest/mmfmediaclienttestplugin/src/mmfmediaclientextdisplaytesttrace.h
mmlibs/mmfw/tsrc/mmfintegrationtest/vclnt/inc/TSI_MMFVCLNT.h
mmlibs/mmfw/tsrc/mmfintegrationtest/vclnt/src/OpenFileByHandle0036.cpp
mmlibs/mmfw/tsrc/mmfintegrationtest/vclnt/src/OpenFileByHandle0524.cpp
mmlibs/mmfw/tsrc/mmfintegrationtest/vclnt/src/TestPlayer.cpp
mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/group/tsi_mmf_vclntavi_excl_test.iby
mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/inc/testvideoplayer.h
mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/inc/testvideoplayer2.h
mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/mmpfiles/tsi_mmf_vclntavi.mmp
mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/scripts/tsi_mmf_vclntavi_play.script
mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/scripts/tsi_mmf_vclntavi_surf.script
mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/scripts/video_avi.ini
mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/src/testexternaldisplay.cpp
mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/src/testvideoplayer.cpp
mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/src/testvideoplayer2.cpp
mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/src/tsi_mmf_vclntavi_suite.cpp
mmplugins/mmfwplugins/src/Plugin/Controller/Video/AviPlayController/srtdecoder/srtdecoder.cpp
--- a/devsound/a3fcharacterisationtest/eabi/char_a3f_devsound.def	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsound/a3fcharacterisationtest/eabi/char_a3f_devsound.def	Mon Oct 18 12:47:26 2010 +0100
@@ -362,4 +362,6 @@
 	_ZTV44RA3FDevSoundPlayEmptyBuffersWhilePlayingTest @ 361 NONAME
 	_ZTI49RA3FDevSoundPlayPreemptedByToneAfterSetVolumeTest @ 362 NONAME
 	_ZTV49RA3FDevSoundPlayPreemptedByToneAfterSetVolumeTest @ 363 NONAME
+	_ZTI41RA3FDevSoundTonePlayToneFixedSequenceTest @ 364 NONAME
+	_ZTV41RA3FDevSoundTonePlayToneFixedSequenceTest @ 365 NONAME
 
--- a/devsound/a3fcharacterisationtest/scripts/mm_a3f_devsound_init.script	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsound/a3fcharacterisationtest/scripts/mm_a3f_devsound_init.script	Mon Oct 18 12:47:26 2010 +0100
@@ -48,6 +48,7 @@
 //4. Start CPeriodic to trigger timer events.
 //5. Call CancelInitialize() before receiving InitializeComplete() callback.
 //6. Wait 2 seconds to verify that InitializeComplete() callback is not received.
+//7. Repeat steps 3 to 6 one more time to ensure a call to Initialise passes after CancelInitialize is called. 
 //!@SYMTestExpectedResults: 
 //CancelInitialize() returns KErrNone. InitializeComplete() callback shall be not received.
 PRINT Play tone initialisation - Call CancelInitialize() to abort initialisation for tones
@@ -166,6 +167,7 @@
 //4. Start CPeriodic to trigger timer events every 2 seconds.
 //5. Call CancelInitialize() before receiving InitializeComplete() callback .
 //6. On timer event, verify that InitializeComplete() callback was not received.
+//7. Repeat steps 3 to 6 one more time to ensure a call to Initialise passes after CancelInitialize is called. 
 //!@SYMTestExpectedResults: 
 //CancelInitialize() returns KErrNone.
 //InitializeComplete(KErrNone) callback shall be not received.
--- a/devsound/a3fcharacterisationtest/scripts/mm_a3f_devsound_play_tone.script	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsound/a3fcharacterisationtest/scripts/mm_a3f_devsound_play_tone.script	Mon Oct 18 12:47:26 2010 +0100
@@ -1139,4 +1139,22 @@
 //Tone play is paused at current playing tone position. DevSound goes to “Pause Playing Tone” state.
 PRINT Play tone - Tone sequence - Pause. The client wants to play a tone sequence and pause it.
 RUN_TEST_STEP 15000, char_a3f_devsound, MM-A3F-DEVSOUND-CHRTZ-TONE-0050, c:\mm_a3f_devsound_play_tone.ini
-TEST_COMPLETE
\ No newline at end of file
+TEST_COMPLETE
+
+//!@SYMTestCaseID: MM-A3F-DEVSOUND-CHRTZ-TONE-0064
+//!@SYMREQ: 
+//!@SYMPREQ: 
+//!@SYMTestCaseDec: Play tone - Tone sequence - Pause. The client wants to play a tone sequence and pause it.
+//!@SYMTestPriority: Normal
+//!@SYMTestType: Alternative Usecase
+//!@SYMTestActions: 
+//1. Create and Initialize DevSound instance to play tones.
+//1.1 Wait for InitializeComplete(KErrNone) callback response.
+//2. Call CMMFDevSound->FixedSequenceCount() this should return 0
+//3. Call CMMFDevSound->FixedSequenceName() this should return KNullDesC
+//4. Call CMMFDevSound->PlayFixedSequenceL this should leave with KErrNotSupported
+//!@SYMTestExpectedResults: 
+//Calls to depricated api should return correct values
+PRINT Tone - Call deprocated API's
+RUN_TEST_STEP 15000, char_a3f_devsound, MM-A3F-DEVSOUND-CHRTZ-TONE-0064, c:\mm_a3f_devsound_play_tone.ini
+TEST_COMPLETE
--- a/devsound/a3fcharacterisationtest/src/char_a3f_devsound_compliancesuite.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsound/a3fcharacterisationtest/src/char_a3f_devsound_compliancesuite.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -192,6 +192,7 @@
 	AddTestStepL(RA3FDevSoundTonePlayDTMFStringWithoutCallingInitializeTest::NewL(_L("MM-A3F-DEVSOUND-CHRTZ-TONE-0061")));
 	AddTestStepL(RA3FDevSoundTonePlayToneSequenceWithoutCallingInitializeTest::NewL(_L("MM-A3F-DEVSOUND-CHRTZ-TONE-0062")));
 	AddTestStepL(RA3FDevSoundTonePlayToneSequenceUsingInvalidDescriptorTest::NewL(_L("MM-A3F-DEVSOUND-CHRTZ-TONE-0063")));
+	AddTestStepL(RA3FDevSoundTonePlayToneFixedSequenceTest::NewL(_L("MM-A3F-DEVSOUND-CHRTZ-TONE-0064")));
 
 	//- Record Audio Test Cases ---------------------------------------------------------
 	AddTestStepL(RA3FDevSoundRecordConfigurationSetConfigTest::NewL(_L("MM-A3F-DEVSOUND-CHRTZ-REC-RAW-0001")));
--- a/devsound/a3fcharacterisationtest/src/char_a3f_devsound_initializationtest.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsound/a3fcharacterisationtest/src/char_a3f_devsound_initializationtest.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -147,6 +147,22 @@
 					ERR_PRINTF2(_L("Unexpected error on CancelInitialize = %d"), err);
 					StopTest(err);
 					}
+                INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+                TRAP(err, iMMFDevSound->InitializeL(*this, EMMFStateTonePlaying));
+                if(err != KErrNone)
+                    {
+                    ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+                    StopTest(err);
+                    break;
+                    }
+                User::After(2000);
+                INFO_PRINTF1(_L("Calling CMMFDevSound::CancelInitialize")); 
+                err = iMMFDevSound->CancelInitialize();
+                if(err != KErrNone)
+                    {
+                    ERR_PRINTF2(_L("Unexpected error on CancelInitialize = %d"), err);
+                    StopTest(err);
+                    }
 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
 				iDevSoundState = EStateInitializing;
 				}
@@ -744,6 +760,22 @@
 					ERR_PRINTF2(_L("Unexpected error on CancelInitialize = %d"), err);
 					StopTest(err);
 					}
+                INFO_PRINTF1(_L("Calling CMMFDevSound::InitializeL"));
+                TRAP(err, iMMFDevSound->InitializeL(*this, iFourCCCode, EMMFStatePlaying));
+                if(err != KErrNone)
+                    {
+                    ERR_PRINTF2(_L("CMMFDevSound::InitializeL left with error = %d"), err);
+                    StopTest(err);
+                    break;
+                    }       
+                User::After(2000);
+                INFO_PRINTF1(_L("Calling CMMFDevSound::CancelInitialize"));
+                err = iMMFDevSound->CancelInitialize();
+                if(err != KErrNone)
+                    {
+                    ERR_PRINTF2(_L("Unexpected error on CancelInitialize = %d"), err);
+                    StopTest(err);
+                    }
 				INFO_PRINTF1(_L("DevSound State: EStateInitializing"));
 				iDevSoundState = EStateInitializing;
 				}
--- a/devsound/a3fcharacterisationtest/src/char_a3f_devsound_tonetest.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsound/a3fcharacterisationtest/src/char_a3f_devsound_tonetest.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -8387,3 +8387,78 @@
 		}
 	}
 
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-TONE-0064
+ */
+
+RA3FDevSoundTonePlayToneFixedSequenceTest::RA3FDevSoundTonePlayToneFixedSequenceTest(const TDesC& aTestName)
+    :   RA3FDevSoundTestBase(aTestName)
+    {
+    }
+
+RA3FDevSoundTonePlayToneFixedSequenceTest* RA3FDevSoundTonePlayToneFixedSequenceTest::NewL(const TDesC& aTestName)
+    {
+    RA3FDevSoundTonePlayToneFixedSequenceTest * self = new(ELeave)RA3FDevSoundTonePlayToneFixedSequenceTest(aTestName);
+    return self;
+    }
+
+void RA3FDevSoundTonePlayToneFixedSequenceTest::DoKickoffTestL()
+    {
+    }
+
+void RA3FDevSoundTonePlayToneFixedSequenceTest::Fsm(TMmfDevSoundEvent aDevSoundEvent,  TInt aError)
+    {
+    switch (iDevSoundState)
+        {
+        case EStateCreated:
+           {
+           __ASSERT_ALWAYS((aError == KErrNone), Panic(_L("RA3FDevSoundTonePlayToneFixedSequenceTest"), EFsmIncorrectErrorPassed));
+           if (aDevSoundEvent == EEventInitialize)
+               {
+               //FixedSequenceCount is deprecated and should return 0
+               INFO_PRINTF1(_L("Calling CMMFDevSound->FixedSequenceCount()"));
+               iFixedSequenceCount = iMMFDevSound->FixedSequenceCount();
+               if(iFixedSequenceCount != 0)
+                   {
+                   INFO_PRINTF2(_L("CMMFDevSound->FixedSequenceCount() returned incorrect value %d"),iFixedSequenceCount);
+                   StopTest(EFail);
+                   break;
+                   }
+          
+               //FixedSequenceName is deprecated and should return a Null descriptor
+               INFO_PRINTF1(_L("Calling CMMFDevSound->FixedSequenceName()"));
+               TDesC fSeqName = iMMFDevSound->FixedSequenceName(0);
+               if(fSeqName != KNullDesC)
+                   {
+                   INFO_PRINTF1(_L("CMMFDevSound->FixedSequenceName() returned wrong name"));
+                   StopTest(EFail);
+                   break;
+                   }
+                   
+               //PlayFixedSequenceL is not supported
+               INFO_PRINTF1(_L("Calling iMMFDevSound->PlayFixedSequenceL()"));
+               TRAPD(err, iMMFDevSound->PlayFixedSequenceL(0));
+               if(err!=KErrNotSupported)
+                   {
+                   INFO_PRINTF1(_L("CMMFDevSound->PlayFixedSequenceL() did not leave with KErrNotSupported"));
+                   StopTest(EFail);
+                   break;
+                   }
+               StopTest(); 
+               }
+               break;
+           }
+           
+           default:
+                {
+                ERR_PRINTF2(_L("Invalid DevSound state received: %d"), iDevSoundState);
+                StopTest(aError, EFail);
+                }
+                   
+        }
+        
+    }
+
+
+
--- a/devsound/a3fcharacterisationtest/src/char_a3f_devsound_tonetest.h	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsound/a3fcharacterisationtest/src/char_a3f_devsound_tonetest.h	Mon Oct 18 12:47:26 2010 +0100
@@ -1351,6 +1351,23 @@
 	TBuf8<KMaxStringLength> iInvalidToneSequence;
 	};
 
+/*
+ *========================================================================================================
+ * MM-A3F-DEVSOUND-CHRTZ-TONE-0064
+ */
+
+class RA3FDevSoundTonePlayToneFixedSequenceTest : public RA3FDevSoundTestBase
+    {
+public:
+    static RA3FDevSoundTonePlayToneFixedSequenceTest* NewL(const TDesC& aTestName);
+private:
+    RA3FDevSoundTonePlayToneFixedSequenceTest(const TDesC& aTestName);
+    void Fsm(TMmfDevSoundEvent aDevSoundEvent, TInt aError);
+    void DoKickoffTestL();
+
+private:
+    TInt iFixedSequenceCount;
+    };
 
 #endif //CHAR_A3F_DEVSOUND_TONETEST_H
 
--- a/devsound/a3fdevsound/src/devsoundadaptor/cdevcommoncontrol.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsound/a3fdevsound/src/devsoundadaptor/cdevcommoncontrol.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -640,10 +640,11 @@
 
     iDevAudio->iActiveState = EDevSoundAdaptorCreated_Uninitialised;
     
+    // This will unregister audio callback observers in case they are registered again
+    ContextEventStopDevSoundNotifications();
+    
     if (iDevAudio->iReinitializing)
         {
-        ContextEventStopDevSoundNotifications();
-        
         TInt err = iDevAudio->Initialize(iDevAudio->iTargetFormat, iDevAudio->iTargetMode);
         if(err)
             {
--- a/devsound/a3fdevsound/src/mmfdevsoundproxy/mmfdevsoundcallbackhandler.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsound/a3fdevsound/src/mmfdevsoundproxy/mmfdevsoundcallbackhandler.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -288,22 +288,20 @@
 	// the chunk has been closed by the server. No action should be taken.
 	TBool requestChunk = iDataBuffer==NULL; // if we have no buffer, tell server we need a chunk handle
 	TInt handle = iDevSoundProxy->BufferToBeFilledData(requestChunk, iSetPckg);
-	if(handle >= KErrNone)
+	User::LeaveIfError(handle);
+	
+	if ( iSetPckg().iChunkOp == EOpen )
 		{
-		if ( iSetPckg().iChunkOp == EOpen )
-			{
-			AssignDataBufferToChunkL(handle);
-			}
-		else
-			{
-			UpdateDataBufferL();
-			}
-		iDataBuffer->SetStatus(EAvailable);
-		
-		// Let the MMF fill the buffer with data
-		
-		iDevSoundObserver.BufferToBeFilled(iDataBuffer);
+		AssignDataBufferToChunkL(handle);
 		}
+	else
+		{
+		UpdateDataBufferL();
+		}
+	iDataBuffer->SetStatus(EAvailable);
+	
+	// Let the MMF fill the buffer with data
+	iDevSoundObserver.BufferToBeFilled(iDataBuffer);
 	SYMBIAN_DEBPRN0(_L("CMsgQueueHandler[0x%x]::DoBTBFCompleteL - Exit"));
 	}
 
@@ -320,16 +318,18 @@
 	// any error is assumed to be due to a pending RecordError(), so the error here is ignored - the RecordError() call will ensure the client remains lively
 	// the chunk has been closed by the server. No action should be taken.
 	TInt handle = iDevSoundProxy->BufferToBeEmptiedData(iSetPckg);
-	if(handle >= KErrNone)
+	User::LeaveIfError(handle);
+	
+	if ( iSetPckg().iChunkOp == EOpen )
 		{
-		if ( iSetPckg().iChunkOp == EOpen )
-			{
-			AssignDataBufferToChunkL(handle);
-			}
-		iDataBuffer->SetStatus(EFull);	
-		iDataBuffer->Data().SetLength(iSetPckg().iRequestSize);
-		iDevSoundObserver.BufferToBeEmptied(iDataBuffer);
+		AssignDataBufferToChunkL(handle);
 		}
+	
+	__ASSERT_ALWAYS(iDataBuffer, User::Leave(KErrGeneral)); //iDataBuffer should never be empty here
+	iDataBuffer->SetStatus(EFull);	
+	iDataBuffer->Data().SetLength(iSetPckg().iRequestSize);
+	iDevSoundObserver.BufferToBeEmptied(iDataBuffer);
+	
 	SYMBIAN_DEBPRN0(_L("CMsgQueueHandler[0x%x]::DoBTBECompleteL - Exit"));
 	}
 
@@ -416,7 +416,7 @@
 void CMsgQueueHandler::UpdateDataBufferL()
 	{
     SYMBIAN_DEBPRN0(_L("CMsgQueueHandler[0x%x]::UpdateDataBufferL - Enter"));
-    ASSERT(iDataBuffer); // to get here, we should have a data buffer
+    __ASSERT_ALWAYS(iDataBuffer, User::Leave(KErrGeneral)); // to get here, we should have a data buffer
 	iDataBuffer->SetPtr(iChunkDataPtr);
 	iDataBuffer->SetRequestSizeL(iSetPckg().iRequestSize);
 	iDataBuffer->SetLastBuffer(EFalse);
--- a/devsoundextensions/audiorouting/Output/AudioOutputMessageHandler/src/AudioOutputMessageHandler.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/audiorouting/Output/AudioOutputMessageHandler/src/AudioOutputMessageHandler.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -47,8 +47,9 @@
     CAudioOutput* audioOutput = (CAudioOutput*)aCustomInterface;
     CAudioOutputMessageHandler* self = new (ELeave) CAudioOutputMessageHandler(audioOutput,
                                                                                aContainer);
-
+    CleanupStack::PushL(self);
 	self->ConstructL();
+	CleanupStack::Pop(self);
     return self;
     }
 
--- a/devsoundextensions/audiorouting/Output/AudioOutputProxy/src/AudioOutputProxy.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/audiorouting/Output/AudioOutputProxy/src/AudioOutputProxy.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -52,7 +52,9 @@
 							CCustomInterfaceUtility* aCustomInterfaceUtility)
     {
     CAudioOutputProxy* self = new(ELeave) CAudioOutputProxy(aMessageHandler,aCustomCommand,aCustomInterfaceUtility);
+    CleanupStack::PushL(self);
     self->ConstructL();
+    CleanupStack::Pop(self);
     return self;
     }
 
--- a/devsoundextensions/ciextnfactoryplugins/ciextnserverplugin/group/ciextnserverplugin.mmp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/ciextnfactoryplugins/ciextnserverplugin/group/ciextnserverplugin.mmp	Mon Oct 18 12:47:26 2010 +0100
@@ -28,7 +28,6 @@
 
 SOURCEPATH          ../src
 SOURCE              ciextnserverplugin.cpp
-SOURCE              ciextnserverpluginwrapper.cpp
 SOURCE              main.cpp
 
 USERINCLUDE         .
--- a/devsoundextensions/ciextnfactoryplugins/ciextnserverplugin/src/ciextnserverplugin.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/ciextnfactoryplugins/ciextnserverplugin/src/ciextnserverplugin.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -59,11 +59,7 @@
     {
     DEB_TRACE0(_L("*CI* CCIExtnServerPlugin::Setup"));
     TInt status(KErrNone);
-    TRAPD(err, iCiExtnServerPluginWrapper = CIExtnServerPluginWrapper::NewL(aInterface));
-    if (err == KErrNone)
-        {
-        iMCustomInterface = iCiExtnServerPluginWrapper->GetInterface();
-        }
+    iMCustomInterface = &aInterface;
     TRAP_IGNORE(InitializeMsgHndlrPluginsL());
     return status;
     }
@@ -111,7 +107,6 @@
     iMCIMsgHndlrIntfcList.Reset();
     iMCIMsgHndlrIntfcList.Close();
 
-    iCiExtnServerPluginWrapper->Release();
 
     REComSession::DestroyedImplementation(iDestructorKey);
 
--- a/devsoundextensions/ciextnfactoryplugins/ciextnserverplugin/src/ciextnserverplugin.h	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/ciextnfactoryplugins/ciextnserverplugin/src/ciextnserverplugin.h	Mon Oct 18 12:47:26 2010 +0100
@@ -24,7 +24,6 @@
 // Include files
 #include <e32base.h>
 #include <a3f/mmfdevsoundcustominterfaceextensions.h>
-#include "ciextnserverpluginwrapper.h"
 
 // Forward declarations
 class MCustomInterface;
@@ -99,12 +98,6 @@
     MCustomInterface*               iMCustomInterface;
 
     /**
-     * Reference to MCustomInterface interface
-     * Not own.
-     */
-    CIExtnServerPluginWrapper*       iCiExtnServerPluginWrapper;
-    
-    /**
      * Uid of the plugin object passed by the framework via PassDestructorKey()
      */
     TUid                            iDestructorKey;
--- a/devsoundextensions/ciextnfactoryplugins/ciextnserverplugin/src/ciextnserverpluginwrapper.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,149 +0,0 @@
-/*
- * Copyright (c) 2002-2008 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:   Class definition of server plugin wrapper implementing S60 custom interface.
- *
- */
-
-#include "ciextnserverpluginwrapper.h"
-#include "citraces.h"
-#include <AudioInputMessageTypes.h>
-#include <ecom.h>
-
-#define KMuxTempBufferSize 20
-
-#ifdef __WINSCW__
-class MyMCustomInterface
-    {
-public:
-    virtual TAny* CustomInterface(TUid aCustomeInterface) = 0;
-    virtual void Release() = 0;
-    virtual void PassDestructionKey(TUid aUid) = 0;
-    };
-#endif
-
-CIExtnServerPluginWrapper* CIExtnServerPluginWrapper::NewL(
-        MCustomInterface& aInterfaceRef)
-    {
-    DEB_TRACE0(_L("CIExtnServerPluginWrapper::NewL Begin"));
-    CIExtnServerPluginWrapper* self = new (ELeave) CIExtnServerPluginWrapper(
-            aInterfaceRef);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    DEB_TRACE0(_L("CIExtnServerPluginWrapper::NewL End"));
-    return self;
-    }
-
-CIExtnServerPluginWrapper::~CIExtnServerPluginWrapper()
-    {
-    DEB_TRACE0(_L("CIExtnServerPluginWrappers::~CIExtnServerPluginWrapper Begin"));
-    DEB_TRACE0(_L("CIExtnServerPluginWrapper::~CIExtnServerPluginWrapper End"));
-    }
-
-CIExtnServerPluginWrapper::CIExtnServerPluginWrapper(
-        MCustomInterface& aInterfaceRef) :
-    iCustomInterfaceRef(&aInterfaceRef)
-    {
-    }
-
-void CIExtnServerPluginWrapper::ConstructL()
-    {
-#ifdef __WINSCW__
-    DEB_TRACE0(_L("Try Loading CI Stub Plugin"));
-    TUid interfaceUid =
-        {
-        0x10207C71
-        };
-    TAny* pluginRef;
-    TRAPD(error, pluginRef = REComSession::CreateImplementationL( interfaceUid, iDtor_ID_Key ));
-    if (pluginRef)
-        {
-        DEB_TRACE1(_L("CreateImplementationL Uid [0x%x]"), iDtor_ID_Key.iUid);
-        iCustomInterfaceStub = (MyMCustomInterface*) pluginRef;
-        iCustomInterfaceStub->PassDestructionKey(iDtor_ID_Key);
-        DEB_TRACE0(_L("CI Stub Loaded"));
-        }
-#endif    
-
-    }
-
-MCustomInterface* CIExtnServerPluginWrapper::GetInterface()
-    {
-    DEB_TRACE0(_L("CIExtnServerPluginWrappers::GetInterface"));
-    return (MCustomInterface*) this;
-    }
-
-TAny* CIExtnServerPluginWrapper::CustomInterface(TUid aInterfaceId)
-    {
-    DEB_TRACE0(_L("*CI* CIExtnServerPluginWrapper::CustomInterface"));
-    TAny* pluginRef = NULL;
-    pluginRef = iCustomInterfaceRef->CustomInterface(aInterfaceId);
-#ifdef __WINSCW__
-    if (!pluginRef)
-        {
-        DEB_TRACE0(_L("*CI* Try Loading CI Stub if present"));
-        pluginRef = iCustomInterfaceStub->CustomInterface(aInterfaceId);
-        if (pluginRef)
-            {
-            DEB_TRACE0(_L("*CI* CI Stub Loaded"));
-            }
-        }
-#endif
-    return pluginRef;
-    }
-
-void CIExtnServerPluginWrapper::Release()
-    {
-    DEB_TRACE0(_L("CIExtnServerPluginWrappers::Release >> ENTER"));
-#ifdef __WINSCW__    
-    iCustomInterfaceStub->Release();
-#endif    
-    DEB_TRACE0(_L("CIExtnServerPluginWrappers::Release >> EXIT"));
-    delete this;
-    }
-
-/*
- TAny* CIExtnServerPluginWrapper::CustomInterface(TUid aInterfaceId)
- {
- DEB_TRACE0(_L("CIExtnServerPluginWrappers::CustomInterface"));
- TUid interfaceUid =
- {
- 0x10207C49
- };
- TEComResolverParams resolverParams;
- DEB_TRACE1(_L("Findig CustomInterface with Uid [0x%x]"),aInterfaceId.iUid);
- TInt uidAsInteger = aInterfaceId.iUid;
- TBuf8<KMuxTempBufferSize> tempBuffer;
- tempBuffer.Num(uidAsInteger, EHex);
- resolverParams.SetDataType(tempBuffer);
-
- TAny* ptr = NULL;
- TRAPD(err, ptr=REComSession::CreateImplementationL(
- interfaceUid,
- _FOFF(CIExtnServerPluginWrapper, iDtor_ID_Key),resolverParams));
- if (err != KErrNone)
- {
- DEB_TRACE1(_L("No Custom Interface found:  Error [%d]"),err);
- }
- if (ptr)
- {
- DEB_TRACE1(_L("Stub Present for Uid [0x%x]"),interfaceUid);
- return ptr;
- }
- else
- {
- return iCustomInterfaceRef->CustomInterface(aInterfaceId);
- }
- }
- */
--- a/devsoundextensions/ciextnfactoryplugins/ciextnserverplugin/src/ciextnserverpluginwrapper.h	Thu Oct 07 23:44:30 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,78 +0,0 @@
-/*
-* Copyright (c) 2002-2008 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:   Header definition of server plugin wrapper class implementig S60 custom interface.
-*
-*/
-
-
-#ifndef CIEXTNSERVERPLUGINWRAPPER_H
-#define CIEXTNSERVERPLUGINWRAPPER_H
-
-#include <e32base.h>
-#include <MCustomInterface.h>
-
-// Forward declarations
-class MCustomInterface;
-class MyMCustomInterface;
-
-class CIExtnServerPluginWrapper : public CBase, 
-                                  public MCustomInterface
-    {
-    public:  // Constructors and destructor
-
-        /**
-        * Constructs, and returns a pointer to, a new CIExtnCustomInterfaceS60 object.
-        * Leaves on failure..
-        * @param MCustomInterface& aInterfaceRef A reference to MCustomInterface.
-        * @return CIExtnCustomInterfaceS60* A pointer to newly created object.
-        */
-        static CIExtnServerPluginWrapper* NewL(MCustomInterface& aInterfaceRef);
-
-        /**
-        * Destructor.
-        */
-        ~CIExtnServerPluginWrapper();
-        
-    public: 
-        /**
-        Obtain a custom interface
-        @param aInterfaceId  The UID of the required custom interface
-        @return a pointer to the custom interface
-         */
-        TAny* CustomInterface(TUid aInterfaceId);
-        
-    public:
-        MCustomInterface* GetInterface();
-        void Release();
-    private:
-
-        /**
-        * Default Constructor 
-        */
-        CIExtnServerPluginWrapper(MCustomInterface& aInterfaceRef);
-
-        /**
-        * Second phase constructor.
-        */
-        void ConstructL();
-
-    private:
-        MCustomInterface* iCustomInterfaceRef;
-        MyMCustomInterface* iCustomInterfaceStub;
-
-    private:
-        TUid iDtor_ID_Key;
-    };
-
-#endif // CIEXTNSERVERPLUGINWRAPPER_H
--- a/devsoundextensions/drmaudioplayer/DRMPlayServer/src/DRMPlaySession.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/drmaudioplayer/DRMPlayServer/src/DRMPlaySession.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -362,6 +362,7 @@
     aMessage.Read(1,params);
     aMessage.Read(2,iErrDurPckg);
     HBufC16* inputBuf = HBufC16::NewL(aMessage.GetDesLengthL(3));
+    CleanupStack::PushL(inputBuf);
     TPtr16 ptr = inputBuf->Des();
     aMessage.Read(3,ptr);
     const TDataStruct &theStruct = params();
@@ -371,6 +372,7 @@
                                                        *this,
                                                        iPriority,
                                                        iPref);
+    CleanupStack::Pop(inputBuf);
     delete inputBuf;
     }
 
--- a/devsoundextensions/drmaudioplayer/DRMPlayUtility/src/MediaClientDrm.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/drmaudioplayer/DRMPlayUtility/src/MediaClientDrm.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -1160,7 +1160,9 @@
     s.Open(*iMetaDataBuffer);
     CleanupClosePushL(s);
     CMMFMetaDataEntry* theMetaDataEntry  = CMMFMetaDataEntry::NewL();
+    CleanupStack::PushL(theMetaDataEntry);
     theMetaDataEntry->InternalizeL(s);
+    CleanupStack::Pop(theMetaDataEntry);
     CleanupStack::PopAndDestroy();//s
     return theMetaDataEntry;
     }
--- a/devsoundextensions/effects/AudioEqualizer/AudioEqualizerMessageHandler/src/AudioEqualizerMessageHandler.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/effects/AudioEqualizer/AudioEqualizerMessageHandler/src/AudioEqualizerMessageHandler.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -48,7 +48,9 @@
     {
     CAudioEqualizer* audioEqualizer = (CAudioEqualizer*)aCustomInterface;
     CAudioEqualizerMessageHandler* self = new (ELeave) CAudioEqualizerMessageHandler(audioEqualizer);
+    CleanupStack::PushL(self);
 	self->ConstructL();
+	CleanupStack::Pop(self);
     return self;
     }
 
--- a/devsoundextensions/effects/BassBoost/BassBoostMessageHandler/src/BassBoostMessageHandler.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/effects/BassBoost/BassBoostMessageHandler/src/BassBoostMessageHandler.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -48,7 +48,9 @@
     {
     CBassBoost* bassboost = (CBassBoost*)aCustomInterface;
     CBassBoostMessageHandler* self = new (ELeave) CBassBoostMessageHandler(bassboost);
+    CleanupStack::PushL(self);
 	self->ConstructL();
+	CleanupStack::Pop(self);
     return self;
     }
 
--- a/devsoundextensions/effects/DistAtten/DistanceAttenuationMessageHandler/src/DistanceAttenuationMessageHandler.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/effects/DistAtten/DistanceAttenuationMessageHandler/src/DistanceAttenuationMessageHandler.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -47,7 +47,9 @@
     {
     CDistanceAttenuation* aDistanceAttenuation = (CDistanceAttenuation*)aCustomInterface;
     CDistanceAttenuationMessageHandler* self = new (ELeave) CDistanceAttenuationMessageHandler(aDistanceAttenuation);
+    CleanupStack::PushL(self);
 	self->ConstructL();
+	CleanupStack::Pop(self);
     return self;
     }
 
--- a/devsoundextensions/effects/EnvReverb/EnvironmentalReverbMessageHandler/src/EnvironmentalReverbMessageHandler.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/effects/EnvReverb/EnvironmentalReverbMessageHandler/src/EnvironmentalReverbMessageHandler.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -48,7 +48,9 @@
     {
     CEnvironmentalReverb* environmentalReverb = (CEnvironmentalReverb*)aCustomInterface;
     CEnvironmentalReverbMessageHandler* self = new (ELeave) CEnvironmentalReverbMessageHandler(environmentalReverb);
+    CleanupStack::PushL(self);
 	self->ConstructL();
+	CleanupStack::Pop(self);
     return self;
     }
 
--- a/devsoundextensions/effects/ListDoppler/ListenerDopplerMessageHandler/src/ListenerDopplerMessageHandler.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/effects/ListDoppler/ListenerDopplerMessageHandler/src/ListenerDopplerMessageHandler.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -48,7 +48,9 @@
     {
     CListenerDoppler* doppler = (CListenerDoppler*)aCustomInterface;
     CListenerDopplerMessageHandler* self = new (ELeave) CListenerDopplerMessageHandler(doppler);
+    CleanupStack::PushL(self);
 	self->ConstructL();
+	CleanupStack::Pop(self);
     return self;
     }
 
--- a/devsoundextensions/effects/ListLocation/ListenerLocationMessageHandler/src/ListenerLocationMessageHandler.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/effects/ListLocation/ListenerLocationMessageHandler/src/ListenerLocationMessageHandler.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -48,7 +48,9 @@
     {
     CListenerLocation* bassboost = (CListenerLocation*)aCustomInterface;
     CListenerLocationMessageHandler* self = new (ELeave) CListenerLocationMessageHandler(bassboost);
+    CleanupStack::PushL(self);
 	self->ConstructL();
+	CleanupStack::Pop(self);
     return self;
     }
 
--- a/devsoundextensions/effects/ListOrient/ListenerOrientationMessageHandler/src/ListenerOrientationMessageHandler.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/effects/ListOrient/ListenerOrientationMessageHandler/src/ListenerOrientationMessageHandler.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -48,7 +48,9 @@
     {
     CListenerOrientation* bassboost = (CListenerOrientation*)aCustomInterface;
     CListenerOrientationMessageHandler* self = new (ELeave) CListenerOrientationMessageHandler(bassboost);
+    CleanupStack::PushL(self);
 	self->ConstructL();
+	CleanupStack::Pop(self);
     return self;
     }
 
--- a/devsoundextensions/effects/Loudness/LoudnessMessageHandler/src/LoudnessMessageHandler.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/effects/Loudness/LoudnessMessageHandler/src/LoudnessMessageHandler.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -47,7 +47,9 @@
     {
     CLoudness* aLoudness = (CLoudness*)aCustomInterface;
     CLoudnessMessageHandler* self = new (ELeave) CLoudnessMessageHandler(aLoudness);
+    CleanupStack::PushL(self);
 	self->ConstructL();
+	CleanupStack::Pop(self);
     return self;
     }
 
--- a/devsoundextensions/effects/RoomLevel/RoomLevelMessageHandler/src/RoomLevelMessageHandler.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/effects/RoomLevel/RoomLevelMessageHandler/src/RoomLevelMessageHandler.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -49,7 +49,9 @@
     {
     CRoomLevel* roomLevel = (CRoomLevel*)aCustomInterface;
     CRoomLevelMessageHandler* self = new (ELeave) CRoomLevelMessageHandler(roomLevel);
+    CleanupStack::PushL(self);
 	self->ConstructL();
+	CleanupStack::Pop(self);
     return self;
     }
 
--- a/devsoundextensions/effects/SrcDoppler/SourceDopplerMessageHandler/src/SourceDopplerMessageHandler.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/effects/SrcDoppler/SourceDopplerMessageHandler/src/SourceDopplerMessageHandler.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -48,7 +48,9 @@
     {
     CSourceDoppler* doppler = (CSourceDoppler*)aCustomInterface;
     CSourceDopplerMessageHandler* self = new (ELeave) CSourceDopplerMessageHandler(doppler);
+    CleanupStack::PushL(self);
 	self->ConstructL();
+	CleanupStack::Pop(self);
     return self;
     }
 
--- a/devsoundextensions/effects/SrcLocation/SourceLocationMessageHandler/src/SourceLocationMessageHandler.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/effects/SrcLocation/SourceLocationMessageHandler/src/SourceLocationMessageHandler.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -48,7 +48,9 @@
     {
     CSourceLocation* bassboost = (CSourceLocation*)aCustomInterface;
     CSourceLocationMessageHandler* self = new (ELeave) CSourceLocationMessageHandler(bassboost);
+    CleanupStack::PushL(self);
 	self->ConstructL();
+	CleanupStack::Pop(self);
     return self;
     }
 
--- a/devsoundextensions/effects/SrcOrientation/SourceOrientationMessageHandler/src/SourceOrientationMessageHandler.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/effects/SrcOrientation/SourceOrientationMessageHandler/src/SourceOrientationMessageHandler.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -48,7 +48,9 @@
     {
     CSourceOrientation* bassboost = (CSourceOrientation*)aCustomInterface;
     CSourceOrientationMessageHandler* self = new (ELeave) CSourceOrientationMessageHandler(bassboost);
+    CleanupStack::PushL(self);
 	self->ConstructL();
+	CleanupStack::Pop(self);
     return self;
     }
 
--- a/devsoundextensions/effects/StereoWidening/StereoWideningMessageHandler/src/StereoWideningMessageHandler.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/effects/StereoWidening/StereoWideningMessageHandler/src/StereoWideningMessageHandler.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -47,7 +47,9 @@
     {
     CStereoWidening* aStereoWidening = (CStereoWidening*)aCustomInterface;
     CStereoWideningMessageHandler* self = new (ELeave) CStereoWideningMessageHandler(aStereoWidening);
+    CleanupStack::PushL(self);
 	self->ConstructL();
+	CleanupStack::Pop(self);
     return self;
     }
 
--- a/devsoundextensions/mmextfw/custominterfaceutility/CustomInterfaceUtility/src/CustomInterfaceUtility.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/mmextfw/custominterfaceutility/CustomInterfaceUtility/src/CustomInterfaceUtility.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -30,16 +30,18 @@
 EXPORT_C CCustomInterfaceUtility* CCustomInterfaceUtility::NewL(CMdaAudioConvertUtility& aUtility)
 	{
 	CCustomCommandUtility* customCommandUtility = CCustomCommandUtility::NewL(aUtility);
+	CleanupStack::PushL(customCommandUtility);
 	CProxyCustomInterfaceUtility* util = CProxyCustomInterfaceUtility::NewL(customCommandUtility);
-
+	CleanupStack::Pop(customCommandUtility);
 	return util;
 	}
 
 EXPORT_C CCustomInterfaceUtility* CCustomInterfaceUtility::NewL(CMdaAudioPlayerUtility& aUtility)
 	{
 	CCustomCommandUtility* customCommandUtility = CCustomCommandUtility::NewL(aUtility);
+	CleanupStack::PushL(customCommandUtility);
 	CProxyCustomInterfaceUtility* util = CProxyCustomInterfaceUtility::NewL(customCommandUtility);
-
+	CleanupStack::Pop(customCommandUtility);
 	return util;
 	}
 
@@ -47,8 +49,9 @@
                                                                 TBool aRecordStream)
 	{
 	CCustomCommandUtility* customCommandUtility = CCustomCommandUtility::NewL(aUtility,aRecordStream);
+	CleanupStack::PushL(customCommandUtility);
 	CProxyCustomInterfaceUtility* util = CProxyCustomInterfaceUtility::NewL(customCommandUtility);
-
+	CleanupStack::Pop(customCommandUtility);
 	return util;
 	}
 
@@ -78,8 +81,9 @@
 EXPORT_C CCustomInterfaceUtility* CCustomInterfaceUtility::NewL(CMidiClientUtility& aUtility)
 	{
 	CCustomCommandUtility* customCommandUtility = CCustomCommandUtility::NewL(aUtility);
+	CleanupStack::PushL(customCommandUtility);
 	CProxyCustomInterfaceUtility* util = CProxyCustomInterfaceUtility::NewL(customCommandUtility);
-
+	CleanupStack::Pop(customCommandUtility);
 	return util;
 	}
 
@@ -93,24 +97,27 @@
 EXPORT_C CCustomInterfaceUtility* CCustomInterfaceUtility::NewL(CDrmPlayerUtility& aUtility)
 	{
 	CCustomCommandUtility* customCommandUtility = CCustomCommandUtility::NewL(aUtility);
+	CleanupStack::PushL(customCommandUtility);
 	CProxyCustomInterfaceUtility* util = CProxyCustomInterfaceUtility::NewL(customCommandUtility);
-
+	CleanupStack::Pop(customCommandUtility);
 	return util;
 	}
 
 EXPORT_C CCustomInterfaceUtility* CCustomInterfaceUtility::NewL(CVideoPlayerUtility& aUtility)
 	{
 	CCustomCommandUtility* customCommandUtility = CCustomCommandUtility::NewL(aUtility);
+	CleanupStack::PushL(customCommandUtility);
 	CProxyCustomInterfaceUtility* util = CProxyCustomInterfaceUtility::NewL(customCommandUtility);
-
+	CleanupStack::Pop(customCommandUtility);
 	return util;
 	}
 
 EXPORT_C CCustomInterfaceUtility* CCustomInterfaceUtility::NewL(CVideoRecorderUtility& aUtility)
 	{
 	CCustomCommandUtility* customCommandUtility = CCustomCommandUtility::NewL(aUtility);
+	CleanupStack::PushL(customCommandUtility);
 	CProxyCustomInterfaceUtility* util = CProxyCustomInterfaceUtility::NewL(customCommandUtility);
-
+	CleanupStack::Pop(customCommandUtility);
 	return util;
 	}
 		
--- a/devsoundextensions/restrictedaudiooutput/RestrictedAudioOutputMessageHandler/src/RestrictedAudioOutputMessageHandler.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/devsoundextensions/restrictedaudiooutput/RestrictedAudioOutputMessageHandler/src/RestrictedAudioOutputMessageHandler.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -39,8 +39,9 @@
     {
     CRestrictedAudioOutput* audioOutput = (CRestrictedAudioOutput*)aCustomInterface;
     CRestrictedAudioOutputMessageHandler* self = new (ELeave) CRestrictedAudioOutputMessageHandler(audioOutput);
-
+    CleanupStack::PushL(self);
 	self->ConstructL();
+	CleanupStack::Pop(self);
     return self;
     }
     
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmaudio_pub/drm_audio_player_api/tsrc/Conf/DRMAudioPlaybackRegressionTestModuleFH.cfg	Mon Oct 18 12:47:26 2010 +0100
@@ -0,0 +1,4518 @@
+
+//**************************
+//* Play 3GPP , 3g2 and MP4
+//**************************
+// Testing Playback to EOF
+
+[TestCase]
+id 1020
+Title Plugin.DRM.3GP.3g2.mp4.FH.1 - Play mp4 audio
+SoundFile e:\sounds\3gpp\10s_MP4_16kbps_22.05khz_mono.mp4
+Expected Duration 28 978 000
+ErrorRange 1 500 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.3GP.3g2.mp4.FH.2 - Play 3gpp-aac audio
+SoundFile e:\sounds\3gpp\10s_3GP_AAC+_24kbps_16khz_mono.3gp
+Expected Duration 29 1020 000
+ErrorRange 1 500 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.3GP.3g2.mp4.FH.3 - Play 3gpp-amr audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_NB_mode3.3gp
+Expected Duration 37 420 000
+ErrorRange 1 500 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.3GP.3g2.mp4.FH.4 - Play 3gpp-awb audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_WB_mode0.3gp
+Expected Duration 38 460 000
+ErrorRange 1 500 000
+[End_TestCase]
+
+
+[TestCase]
+id 1020
+Title Plugin.DRM.3GP.3g2.mp4.FH.5 - Play 3gpp2-aac audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+ErrorRange 1 500 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.3GP.3g2.mp4.FH.6 - Play 3gpp2-amr audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+ErrorRange 1 500 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.3GP.3g2.mp4.FH.7 - Play 3gpp2-awb audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AWB_Generic.3g2
+ErrorRange 1 500 000
+[End_TestCase]
+
+
+
+
+//**************************
+//* Play and Stop (ID 1021)
+//**************************
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.3GP.3g2.mp4.FH.8 - PlayStop mp4 audio
+#SoundFile e:\sounds\3gpp\10s_MP4_16kbps_22.05khz_mono.mp4
+#SoundFile e:\sounds\3gpp\10s_MP4_16kbps_22.05khz_mono.mp4
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.3GP.3g2.mp4.FH.9 - PlayStop 3gpp-aac audio
+#SoundFile e:\sounds\3gpp\10s_3GP_AAC+_24kbps_16khz_mono.3gp
+#SoundFile e:\sounds\3gpp\10s_3GP_AAC+_24kbps_16khz_mono.3gp
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.3GP.3g2.mp4.FH.10 - PlayStop 3gpp-amr audio
+#SoundFile e:\sounds\3gpp\10s_3GP_AMR_NB_mode3.3gp
+#SoundFile e:\sounds\3gpp\10s_3GP_AMR_NB_mode3.3gp
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.3GP.3g2.mp4.FH.11 - PlayStop 3gpp-awb audio 
+#SoundFile e:\sounds\3gpp\10s_3GP_AMR_WB_mode0.3gp
+#SoundFile e:\sounds\3gpp\10s_3GP_AMR_WB_mode0.3gp
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.3GP.3g2.mp4.FH.12 - Play 3gpp2-aac audio
+#SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+#SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.3GP.3g2.mp4.FH.13 - Play 3gpp2-amr audio
+#SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+#SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.3GP.3g2.mp4.FH.14 - Play 3gpp2-awb audio
+#SoundFile e:\sounds\3gpp2\10s_3GPP2_AWB_Generic.3g2
+#SoundFile e:\sounds\3gpp2\10s_3GPP2_AWB_Generic.3g2
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+
+//**************************
+//* Play Pause Play (ID 1022)
+//**************************
+
+[TestCase]
+id 1022
+Title Plugin.DRM.3GP.3g2.mp4.FH.15 - PlayPausePlay mp4 audio
+SoundFile e:\sounds\3gpp\10s_MP4_16kbps_22.05khz_mono.mp4
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 500 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.3GP.3g2.mp4.FH.16 - PlayPausePlay 3gpp-aac audio
+SoundFile e:\sounds\3gpp\10s_3GP_AAC+_24kbps_16khz_mono.3gp
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 500 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.3GP.3g2.mp4.FH.17 - PlayPausePlay 3gpp-amr audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_NB_mode3.3gp
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 500 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.3GP.3g2.mp4.FH.18 - PlayPausePlay 3gpp-awb audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_WB_mode0.3gp
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 500 000
+[End_TestCase]
+
+
+[TestCase]
+id 1022
+Title Plugin.DRM.3GP.3g2.mp4.FH.19 - Play 3gpp2-aac audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 500 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.3GP.3g2.mp4.FH.20 - Play 3gpp2-amr audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 500 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.3GP.3g2.mp4.FH.21 - Play 3gpp2-awb audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AWB_Generic.3g2
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 500 000
+[End_TestCase]
+
+
+//**************************
+//* Set Position - Play (ID 1024)
+//**************************
+
+[TestCase]
+id 1024
+Title Plugin.DRM.3GP.3g2.mp4.FH.22 - SetPosition_Play mp4 audio
+SoundFile e:\sounds\3gpp\10s_MP4_16kbps_22.05khz_mono.mp4
+Position 20 000 000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.3GP.3g2.mp4.FH.23 - SetPosition_Play 3gpp-aac audio
+SoundFile e:\sounds\3gpp\10s_3GP_AAC+_24kbps_16khz_mono.3gp
+Position 10 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.3GP.3g2.mp4.FH.24 - SetPosition_Play 3gpp-amr audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_NB_mode3.3gp
+Position 10 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.3GP.3g2.mp4.FH.25 - SetPosition_Play 3gpp-awb audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_WB_mode0.3gp
+Position 10 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.3GP.3g2.mp4.FH.26 - Play 3gpp2-aac audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+Position 10 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.3GP.3g2.mp4.FH.27 - Play 3gpp2-amr audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+Position 10 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.3GP.3g2.mp4.FH.28 - Play 3gpp2-awb audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AWB_Generic.3g2
+Position 10 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+//**************************
+//* Play - Get Position (ID 1025)
+//**************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+[TestCase]
+id 1025
+Title Plugin.DRM.3GP.3g2.mp4.FH.29 - GetPosition_Play mp4 audio
+SoundFile e:\sounds\3gpp\10s_MP4_16kbps_22.05khz_mono.mp4
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.3GP.3g2.mp4.FH.30 - GetPosition_Play 3gpp-aac audio
+SoundFile e:\sounds\3gpp\10s_3GP_AAC+_24kbps_16khz_mono.3gp
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.3GP.3g2.mp4.FH.31 - GetPosition_Play 3gpp-amr audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_NB_mode3.3gp
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.3GP.3g2.mp4.FH.32 - GetPosition_Play 3gpp-awb audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_WB_mode0.3gp
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.3GP.3g2.mp4.FH.33 - Play 3gpp2-aac audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.3GP.3g2.mp4.FH.34 - Play 3gpp2-amr audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.3GP.3g2.mp4.FH.35 - Play 3gpp2-awb audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AWB_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Get Duration (ID 1026)
+//**************************
+
+[TestCase]
+id 1026
+Title Plugin.DRM.3GP.3g2.mp4.FH.36 - GetDuration mp4 audio
+SoundFile e:\sounds\3gpp\10s_MP4_16kbps_22.05khz_mono.mp4
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.3GP.3g2.mp4.FH.37 - GetDuration 3gpp-aac audio
+SoundFile e:\sounds\3gpp\10s_3GP_AAC+_24kbps_16khz_mono.3gp
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.3GP.3g2.mp4.FH.38 - GetDuration 3gpp-amr audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_NB_mode3.3gp
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.3GP.3g2.mp4.FH.39 - GetDuration 3gpp-awb audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_WB_mode0.3gp
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.3GP.3g2.mp4.FH.40 - GetDuration 3gpp2-aac audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.3GP.3g2.mp4.FH.41 - GetDuration 3gpp2-amr audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.3GP.3g2.mp4.FH.42 - GetDuration 3gpp2-awb audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AWB_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+
+
+
+//**************************
+//* Play - Volume Ramping (ID 1023)
+//**************************
+
+[TestCase]
+id 1023
+Title Plugin.DRM.3GP.3g2.mp4.FH.43 - VolumeRamping mp4 audio
+SoundFile e:\sounds\3gpp\10s_MP4_16kbps_22.05khz_mono.mp4
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.3GP.3g2.mp4.FH.44 - VolumeRamping 3gpp-aac audio
+SoundFile e:\sounds\3gpp\10s_3GP_AAC+_24kbps_16khz_mono.3gp
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.3GP.3g2.mp4.FH.45 - VolumeRamping 3gpp-amr audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_NB_mode3.3gp
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.3GP.3g2.mp4.FH.46 - VolumeRamping 3gpp-awb audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_WB_mode0.3gp
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.3GP.3g2.mp4.FH.47 - VolumeRamping 3gpp2-aac audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.3GP.3g2.mp4.FH.48 - VolumeRamping 3gpp2-amr audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.3GP.3g2.mp4.FH.49 - VolumeRamping 3gpp2-awb audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AWB_Generic.3g2
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Set Playback Window (ID 1027)
+//**************************
+
+[TestCase]
+id 1027
+Title Plugin.DRM.3GP.3g2.mp4.FH.50 - SetPlaybackWindow mp4 audio
+SoundFile e:\sounds\3gpp\10s_MP4_16kbps_22.05khz_mono.mp4
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.3GP.3g2.mp4.FH.51 - SetPlaybackWindow 3gpp-aac audio
+SoundFile e:\sounds\3gpp\10s_3GP_AAC+_24kbps_16khz_mono.3gp
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.3GP.3g2.mp4.FH.52 - SetPlaybackWindow 3gpp-amr audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_NB_mode3.3gp
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.3GP.3g2.mp4.FH.53 - SetPlaybackWindow 3gpp-awb audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_WB_mode0.3gp
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.3GP.3g2.mp4.FH.54 - SetPlaybackWindow 3gpp2-aac audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.3GP.3g2.mp4.FH.55 - SetPlaybackWindow 3gpp2-amr audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.3GP.3g2.mp4.FH.56 - SetPlaybackWindow 3gpp2-awb audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AWB_Generic.3g2
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+
+//**************************
+//* Play - Delete Playback Window (ID 1028)
+//**************************
+
+[TestCase]
+id 1028
+Title Plugin.DRM.3GP.3g2.mp4.FH.57 - DeletePlaybackWindow mp4 audio
+SoundFile e:\sounds\3gpp\10s_MP4_16kbps_22.05khz_mono.mp4
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.3GP.3g2.mp4.FH.58 - DeletePlaybackWindow 3gpp-aac audio
+SoundFile e:\sounds\3gpp\10s_3GP_AAC+_24kbps_16khz_mono.3gp
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.3GP.3g2.mp4.FH.59 - DeletePlaybackWindow 3gpp-amr audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_NB_mode3.3gp
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.3GP.3g2.mp4.FH.60 - DeletePlaybackWindow 3gpp-awb audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_WB_mode0.3gp
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 1028
+Title Plugin.DRM.3GP.3g2.mp4.FH.61 - DeletePlaybackWindow 3gpp2-aac audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+StartPosition 15 000 000
+EndPosition   35 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.3GP.3g2.mp4.FH.62 - DeletePlaybackWindow 3gpp2-amr audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+StartPosition 15 000 000
+EndPosition   35 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.3GP.3g2.mp4.FH.63 - DeletePlaybackWindow 3gpp2-awb audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AWB_Generic.3g2
+StartPosition 15 000 000
+EndPosition   35 000 000
+Delay 1000000
+[End_TestCase]
+
+
+//************************************
+//* Play AAC-ADTS LC (ID 1020)
+//************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AAC.FH.1 - Play 8Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_16kbps_8khz_stereo.aac
+# ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AAC.FH.2 - Play 11Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_16kbps_11.025khz_stereo.aac
+# ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AAC.FH.3 - Play 12Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_20kbps_12khz_stereo.aac
+# ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AAC.FH.4 - Play 16Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_20kbps_16khz_stereo.aac
+# ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AAC.FH.5 - Play 22Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_20kbps_22.05khz_stereo.aac
+# ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AAC.FH.6 - Play 24Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_56kbps_24khz_stereo.aac
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AAC.FH.7 - Play 32Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_56kbps_32khz_stereo.aac
+# ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AAC.FH.8 - Play 44Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_56kbps_44.1khz_stereo.aac
+# ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AAC.FH.9 - Play 48Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_16kbps_48khz_stereo.aac
+# ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AAC.FH.10 - Play 64Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_44kbps_64khz_stereo.aac
+# ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AAC.FH.11 - Play 88Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_44kbps_88khz_stereo.aac
+# ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AAC.FH.12 - Play 96Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_44kbps_96khz_stereo.aac
+# ErrorRange 1 000 000
+[End_TestCase]
+
+
+
+//************************************
+//* Play AAC-ADTS MPEG2 (ID 1020)
+//************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AAC.FH.13 - Play 44Khz ADTS MPEG2
+SoundFile e:\sounds\aac\ADTS\MPEG2\10s_AAC_LC_42kbps_44.1khz_stereo.aac
+# ErrorRange 1 000 000
+[End_TestCase]
+
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AAC.FH.14 - Play 88Khz ADTS MPEG2
+SoundFile e:\sounds\aac\ADTS\MPEG2\10s_AAC_LC_68kbps_88khz_stereo.aac
+# ErrorRange 1 000 000
+[End_TestCase]
+
+
+//************************************
+//* Play AAC-ADTS MPEG4 (ID 1020)
+//************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AAC.FH.15 - Play 11Khz ADTS MPEG4
+SoundFile e:\sounds\aac\ADTS\MPEG4\10s_AAC_LC_64kbps_11.025khz_stereo.aac
+# ErrorRange 1 000 000
+[End_TestCase]
+
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AAC.FH.16 - Play 48Khz ADTS MPEG4
+SoundFile e:\sounds\aac\ADTS\MPEG4\10s_AAC_LC_44kbps_48khz_stereo.aac
+# ErrorRange 1 000 000
+[End_TestCase]
+
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AAC.FH.17 - Play 88Khz ADTS MPEG4
+SoundFile e:\sounds\aac\ADTS\MPEG4\10s_AAC_LC_83kbps_88khz_stereo.aac
+# ErrorRange 1 000 000
+[End_TestCase]
+
+
+//************************************
+//* Play AAC-ADTS LC (ID 1021)
+//************************************
+// Testing Play Stop Play to EOF
+
+[TestCase]
+id 1021
+Title Plugin.DRM.AAC.FH.18 - PlayStop 8Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_16kbps_8khz_stereo.aac
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_16kbps_8khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1021
+Title Plugin.DRM.AAC.FH.19 - PlayStop 11Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_16kbps_11.025khz_stereo.aac
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_16kbps_11.025khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1021
+Title Plugin.DRM.AAC.FH.20 - PlayStop 12Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_20kbps_12khz_stereo.aac
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_20kbps_12khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1021
+Title Plugin.DRM.AAC.FH.21 - PlayStop 16Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_20kbps_16khz_stereo.aac
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_20kbps_16khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1021
+Title Plugin.DRM.AAC.FH.22 - PlayStop 22Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_20kbps_22.05khz_stereo.aac
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_20kbps_22.05khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1021
+Title Plugin.DRM.AAC.FH.23 - PlayStop 24Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_56kbps_24khz_stereo.aac
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_56kbps_24khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1021
+Title Plugin.DRM.AAC.FH.24 - PlayStop 32Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_56kbps_32khz_stereo.aac
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_56kbps_32khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1021
+Title Plugin.DRM.AAC.FH.25 - PlayStop 44Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_56kbps_44.1khz_stereo.aac
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_56kbps_44.1khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1021
+Title Plugin.DRM.AAC.FH.26 - PlayStop 48Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_16kbps_48khz_stereo.aac
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_16kbps_48khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1021
+Title Plugin.DRM.AAC.FH.27 - PlayStop 64Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_44kbps_64khz_stereo.aac
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_44kbps_64khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1021
+Title Plugin.DRM.AAC.FH.28 - PlayStop 88Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_44kbps_88khz_stereo.aac
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_44kbps_88khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1021
+Title Plugin.DRM.AAC.FH.29 - PlayStop 96Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_44kbps_96khz_stereo.aac
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_44kbps_96khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+
+//************************************
+//* Play AAC-ADIF (ID 1020)
+//************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AAC.FH.30 - Play ADIF mono
+SoundFile e:\sounds\aac\ADIF\10s_AAC_44khz_mono.aac
+# ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AAC.FH.31 - Play ADIF stereo
+SoundFile e:\sounds\aac\ADIF\10s_AAC_LC_56kbps_44.1khz_stereo.aac
+# ErrorRange 1 000 000
+[End_TestCase]
+
+
+//************************************
+//* Play AAC-ADIF (ID 1021)
+//************************************
+// Testing Play Stop Play to EOF 
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AAC.FH.32 - PlayStop ADIF mono
+#SoundFile e:\sounds\aac\ADIF\10s_AAC_44khz_mono.aac
+#SoundFile e:\sounds\aac\ADIF\10s_AAC_44khz_mono.aac
+#Delay 1000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AAC.FH.33 - PlayStop ADIF stereo
+#SoundFile e:\sounds\aac\ADIF\10s_AAC_LC_56kbps_44.1khz_stereo.aac
+#SoundFile e:\sounds\aac\ADIF\10s_AAC_LC_56kbps_44.1khz_stereo.aac
+#Delay 1000000
+#[End_TestCase]
+
+
+
+//********************************
+//* Play - Volume Ramping (ID 1023)
+//********************************
+
+[TestCase]
+id 1023
+Title Plugin.DRM.AAC.FH.34 - VolumeRamping AAC ADTS
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_16kbps_11.025khz_stereo.aac
+RampDuration 5 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.AAC.FH.35 - VolumeRamping AAC ADTS
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_20kbps_22.05khz_stereo.aac
+RampDuration 5 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.AAC.FH.36 - VolumeRamping AAC ADIF
+SoundFile e:\sounds\aac\ADIF\10s_AAC_44khz_mono.aac
+RampDuration 5 000 000
+Delay 1000000
+[End_TestCase]
+
+
+//----------------------------
+//Add following cases for Inc9
+//----------------------------
+
+
+//**************************
+//* Play Pause Play (ID 1022)
+//**************************
+[TestCase]
+id 1022
+Title Plugin.DRM.AAC.FH.37 - PlayPausePlay AAC 24Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_56kbps_24khz_stereo.aac
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 5 000 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.AAC.FH.38 - PlayPausePlay AAC 44Khz ADTS MPEG2
+SoundFile e:\sounds\aac\ADTS\MPEG2\10s_AAC_LC_42kbps_44.1khz_stereo.aac
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 5 000 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.AAC.FH.39 - PlayPausePlay AAC 48Khz ADTS MPEG4
+SoundFile e:\sounds\aac\ADTS\MPEG4\10s_AAC_LC_44kbps_48khz_stereo.aac
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 4 000 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.AAC.FH.40 - PlayPausePlay AAC ADIF mono
+SoundFile e:\sounds\aac\ADIF\10s_AAC_44khz_mono.aac
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 4 000 000
+[End_TestCase]
+
+
+
+//******************************
+//* Set Position - Play (ID 1024)
+//******************************
+
+[TestCase]
+id 1024
+Title Plugin.DRM.AAC.FH.41 - SetPosition_Play AAC 24Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_56kbps_24khz_stereo.aac
+Position 000 500 000
+ErrorRange 4 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.AAC.FH.42 - SetPosition_Play AAC 44Khz ADTS MPEG2
+SoundFile e:\sounds\aac\ADTS\MPEG2\10s_AAC_LC_42kbps_44.1khz_stereo.aac
+Position 5 000 000
+ErrorRange 4 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.AAC.FH.43 - SetPosition_Play AAC 48Khz ADTS MPEG4
+SoundFile e:\sounds\aac\ADTS\MPEG4\10s_AAC_LC_44kbps_48khz_stereo.aac
+Position 5 000 000
+ErrorRange 4 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.AAC.FH.44 - SetPosition_Play AAC ADIF mono
+SoundFile e:\sounds\aac\ADIF\10s_AAC_44khz_mono.aac
+Position 20 000 000
+ErrorRange 4 000 000
+[End_TestCase]
+
+
+
+//*******************************
+//* Play - Get Position (ID 1025)
+//*******************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+
+[TestCase]
+id 1025
+Title Plugin.DRM.AAC.FH.45 - GetPosition_Play AAC 24Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_56kbps_24khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.AAC.FH.46 - GetPosition_Play AAC 44Khz ADTS MPEG2
+SoundFile e:\sounds\aac\ADTS\MPEG2\10s_AAC_LC_42kbps_44.1khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.AAC.FH.47 - GetPosition_Play AAC 48Khz ADTS MPEG4
+SoundFile e:\sounds\aac\ADTS\MPEG4\10s_AAC_LC_44kbps_48khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.AAC.FH.48 - GetPosition_Play AAC ADIF mono
+SoundFile e:\sounds\aac\ADIF\10s_AAC_44khz_mono.aac
+Delay 1000000
+[End_TestCase]
+
+
+//******************************
+//* Play - Get Duration (ID 126)
+//******************************
+
+[TestCase]
+id 1026
+Title Plugin.DRM.AAC.FH.49 - GetDuration AAC 24Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_56kbps_24khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.AAC.FH.50 - GetDuration AAC 44Khz ADTS MPEG2
+SoundFile e:\sounds\aac\ADTS\MPEG2\10s_AAC_LC_42kbps_44.1khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.AAC.FH.51 - GetDuration AAC 48Khz ADTS MPEG4
+SoundFile e:\sounds\aac\ADTS\MPEG4\10s_AAC_LC_44kbps_48khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.AAC.FH.52 - GetDuration AAC ADIF mono
+SoundFile e:\sounds\aac\ADIF\10s_AAC_44khz_mono.aac
+Delay 1000000
+[End_TestCase]
+
+//*************************************
+//* Play - Set Playback Window (ID 1027)
+//*************************************
+
+#[TestCase]
+#id 1027
+#Title Plugin.DRM.AAC.FH.53 - SetPlaybackWindow AAC 24Khz ADTS LC
+#SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_56kbps_24khz_stereo.aac
+#StartPosition 3 000 000
+#EndPosition   7 000 000
+#ErrorRange 2 000 000
+#Delay 1000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1027
+#Title Plugin.DRM.AAC.FH.54 - SetPlaybackWindow AAC 44Khz ADTS MPEG2
+#SoundFile e:\sounds\aac\ADTS\MPEG2\10s_AAC_LC_42kbps_44.1khz_stereo.aac
+#StartPosition 3 000 000
+#EndPosition   7 000 000
+#ErrorRange 2 000 000
+#Delay 1000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1027
+#Title Plugin.DRM.AAC.FH.55 - SetPlaybackWindow AAC 48Khz ADTS MPEG4
+#SoundFile e:\sounds\aac\ADTS\MPEG4\10s_AAC_LC_44kbps_48khz_stereo.aac
+#StartPosition 3 000 000
+#EndPosition   7 000 000
+#ErrorRange 2 000 000
+#Delay 1000000
+#[End_TestCase]
+
+#[TestCase]
+#id 127
+#Title Plugin.DRM.AAC.FH.56 - SetPlaybackWindow AAC ADIF mono
+#SoundFile e:\sounds\aac\ADIF\10s_AAC_44khz_mono.aac
+#StartPosition 3 000 000
+#EndPosition   7 000 000
+#ErrorRange 2 000 000
+#Delay 1000000
+#[End_TestCase]
+
+
+
+//****************************************
+//* Play - Delete Playback Window (ID 1028)
+//****************************************
+[TestCase]
+id 1028
+Title Plugin.DRM.AAC.FH.57 - DeletePlaybackWindow AAC 24Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_56kbps_24khz_stereo.aac
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.AAC.FH.58 - DeletePlaybackWindow AAC 44Khz ADTS MPEG2
+SoundFile e:\sounds\aac\ADTS\MPEG2\10s_AAC_LC_42kbps_44.1khz_stereo.aac
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.AAC.FH.59 - DeletePlaybackWindow AAC 48Khz ADTS MPEG4
+SoundFile e:\sounds\aac\ADTS\MPEG4\10s_AAC_LC_44kbps_48khz_stereo.aac
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.AAC.FH.60 - DeletePlaybackWindow AAC ADIF mono
+SoundFile e:\sounds\aac\ADIF\10s_AAC_44khz_mono.aac
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play AMR NB Modes 0-7 (ID 1020)
+//**************************
+// Testing Playback to EOF
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AMR.FH.1 - Play 10s_AMR_NB_mode0.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0.amr
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AMR.FH.2 - Play 10s_AMR_NB_mode1.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode1.amr
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AMR.FH.3 - Play 10s_AMR_NB_mode1.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode1.amr
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AMR.FH.4 - Play 10s_AMR_NB_mode3.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode3.amr
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AMR.FH.5 - Play 10s_AMR_NB_mode4.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode4.amr
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AMR.FH.6 - Play 10s_AMR_NB_mode5.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode5.amr
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AMR.FH.7 - Play 10s_AMR_NB_mode6.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode6.amr
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AMR.FH.8 - Play 10s_AMR_NB_mode7.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode7.amr
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AMR.FH.9 - Play AMR without ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode4_no_ext
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AMR.FH.10 - Play AMR with other ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode7_other_ext.3gp
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+//**************************
+//* Play and Stop (ID 1021)
+//**************************
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.11 - PlayStop 10s_AMR_NB_mode0.amr 
+#SoundFile e:\sounds\amr\10s_AMR_NB_mode0.amr
+#SoundFile e:\sounds\amr\10s_AMR_NB_mode0.amr
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.12 - PlayStop 10s_AMR_NB_mode1.amr 
+#SoundFile e:\sounds\amr\10s_AMR_NB_mode1.amr
+#SoundFile e:\sounds\amr\10s_AMR_NB_mode1.amr
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.13 - PlayStop 10s_AMR_NB_mode1.amr 
+#SoundFile e:\sounds\amr\10s_AMR_NB_mode1.amr
+#SoundFile e:\sounds\amr\10s_AMR_NB_mode1.amr
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.14 - PlayStop 10s_AMR_NB_mode3.amr 
+#SoundFile e:\sounds\amr\10s_AMR_NB_mode3.amr
+#SoundFile e:\sounds\amr\10s_AMR_NB_mode3.amr
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.15 - PlayStop 10s_AMR_NB_mode4.amr 
+#SoundFile e:\sounds\amr\10s_AMR_NB_mode4.amr
+#SoundFile e:\sounds\amr\10s_AMR_NB_mode4.amr
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.16 - PlayStop 10s_AMR_NB_mode5.amr 
+#SoundFile e:\sounds\amr\10s_AMR_NB_mode5.amr
+#SoundFile e:\sounds\amr\10s_AMR_NB_mode5.amr
+#StopDelay 2500000
+#PlayDelay 10000000
+[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.17 - PlayStop 10s_AMR_NB_mode6.amr 
+#SoundFile e:\sounds\amr\10s_AMR_NB_mode6.amr
+#SoundFile e:\sounds\amr\10s_AMR_NB_mode6.amr
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.18 - PlayStop 10s_AMR_NB_mode7.amr 
+#SoundFile e:\sounds\amr\10s_AMR_NB_mode7.amr
+#SoundFile e:\sounds\amr\10s_AMR_NB_mode7.amr
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.19 - PlayStop AMR without ext
+#SoundFile e:\sounds\amr\10s_AMR_NB_mode4_no_ext
+#SoundFile e:\sounds\amr\10s_AMR_NB_mode4_no_ext
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.20 - PlayStop AMR with other ext
+#SoundFile e:\sounds\amr\10s_AMR_NB_mode7_other_ext.3gp
+#SoundFile e:\sounds\amr\10s_AMR_NB_mode7_other_ext.3gp
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+
+
+//**************************
+//* Play Pause Play (ID 1022)
+//**************************
+
+[TestCase]
+id 1022
+Title Plugin.DRM.AMR.FH.21 - PlayPausePlay 10s_AMR_NB_mode0.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0.amr
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.AMR.FH.22 - PlayPausePlay AMR without ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_no_ext
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.AMR.FH.23 - PlayPausePlay AMR with other ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_other_ext.3gp
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+//**************************
+//* Set Position - Play (ID 1024)
+//**************************
+
+[TestCase]
+id 1024
+Title Plugin.DRM.AMR.FH.24 - SetPosition_Play 10s_AMR_NB_mode0.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0.amr
+Position 10 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.AMR.FH.25 - SetPosition_Play AMR without ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_no_ext
+Position 10 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.AMR.FH.26 - SetPosition_Play AMR with other ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_other_ext.3gp
+Position 20 000 000
+ErrorRange 2 000 000
+[End_TestCase]
+
+//**************************
+//* Play - Get Position (ID 1025)
+//**************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+[TestCase]
+id 1025
+Title Plugin.DRM.AMR.FH.27 - GetPosition_Play 10s_AMR_NB_mode0.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.AMR.FH.28 - GetPosition_Play AMR without ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.AMR.FH.29 - GetPosition_Play AMR with other ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_other_ext.3gp
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Get Duration (ID 1026)
+//**************************
+
+[TestCase]
+id 1026
+Title Plugin.DRM.AMR.FH.30 - GetDuration 10s_AMR_NB_mode0.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.AMR.FH.31 - GetDuration AMR without ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.AMR.FH.32 - GetDuration AMR with other ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_other_ext.3gp
+Delay 1000000
+[End_TestCase]
+
+
+//**************************
+//* Play - Volume Ramping (ID 1023)
+//**************************
+
+[TestCase]
+id 1023
+Title Plugin.DRM.AMR.FH.33 - VolumeRamping 10s_AMR_NB_mode0.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0.amr
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.AMR.FH.34 - VolumeRamping AMR without ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_no_ext
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.AMR.FH.35 - VolumeRamping AMR with other ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_other_ext.3gp
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Set Playback Window (ID 1027)
+//**************************
+
+[TestCase]
+id 1027
+Title Plugin.DRM.AMR.FH.36 - SetPlaybackWindow 10s_AMR_NB_mode7.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode7.amr
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.AMR.FH.37 - SetPlaybackWindow AMR without ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode7_no_ext
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.AMR.FH.38 - SetPlaybackWindow AMR with other ext
+SoundFile e:\sounds\amr\10s_3GP_AMR_NB_12.2kbps.3gp
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Delete Playback Window (ID 1028)
+//**************************
+
+[TestCase]
+id 1028
+Title Plugin.DRM.AMR.FH.39 - DeletePlaybackWindow 10s_AMR_NB_mode0.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0.amr
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.AMR.FH.40 - DeletePlaybackWindow AMR without ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_no_ext
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.AMR.FH.41 - DeletePlaybackWindow AMR with other ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_other_ext.3gp
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play AMR WB Modes 0-8 (ID 1020)
+//**************************
+// Testing Playback to EOF
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AWB.FH.1 - Play 10s_AMR_WB_6.6kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_6.6kbps.amr
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AWB.FH.2 - Play 10s_AMR_WB_8.85kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_8.85kbps.amr
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AWB.FH.3 - Play 10s_AMR_WB_12.65kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_12.65kbps.amr
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AWB.FH.4 - Play 10s_AMR_WB_14.25kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_14.25kbps.amr
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AWB.FH.5 - Play 10s_AMR_WB_15.85kbps.awb
+SoundFile e:\sounds\awb\10s_AMR_WB_15.85kbps.awb
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AWB.FH.6 - Play 10s_AMR_WB_18.25kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_18.25kbps.amr
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AWB.FH.7 - Play 10s_AMR_WB_19.85kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_19.85kbps.amr
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AWB.FH.8 - Play 10s_AMR_WB_23.05kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_23.05kbps.amr
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AWB.FH.9 - Play 10s_AMR_WB_23.85kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_23.85kbps.amr
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AWB.FH.10 - Play AWB without ext
+SoundFile e:\sounds\awb\10s_AMR_WB_mode8_no_ext
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.AWB.FH.11 - Play AWB with other ext
+SoundFile e:\sounds\awb\10s_3GP_AMR_WB_mode8.3gp
+Expected Duration 2 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+//**************************
+//* Play and Stop (ID 1021)
+//**************************
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.12 - PlayStop 10s_AMR_WB_mode0.amr 
+#SoundFile e:\sounds\awb\10s_AMR_WB_mode0.amr
+#SoundFile e:\sounds\awb\10s_AMR_WB_mode0.amr
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.13 - PlayStop 10s_AMR_WB_mode1.amr 
+#SoundFile e:\sounds\awb\10s_AMR_WB_mode1.amr
+#SoundFile e:\sounds\awb\10s_AMR_WB_mode1.amr
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.14 - PlayStop 10s_AMR_WB_mode2.amr 
+#SoundFile e:\sounds\awb\10s_AMR_WB_mode2.amr
+#SoundFile e:\sounds\awb\10s_AMR_WB_mode2.amr
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.15 - PlayStop 10s_AMR_WB_mode3.amr 
+#SoundFile e:\sounds\awb\10s_AMR_WB_mode3.amr
+#SoundFile e:\sounds\awb\10s_AMR_WB_mode3.amr
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.16 - PlayStop 10s_AMR_WB_mode4.amr 
+#SoundFile e:\sounds\awb\10s_AMR_WB_mode4.amr
+#SoundFile e:\sounds\awb\10s_AMR_WB_mode4.amr
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.17 - PlayStop 10s_AMR_WB_mode5.amr 
+#SoundFile e:\sounds\awb\10s_AMR_WB_mode5.amr
+#SoundFile e:\sounds\awb\10s_AMR_WB_mode5.amr
+#StopDelay 2500000
+#PlayDelay 10000000
+[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.18 - PlayStop 10s_AMR_WB_mode6.amr 
+#SoundFile e:\sounds\awb\10s_AMR_WB_mode6.amr
+#SoundFile e:\sounds\awb\10s_AMR_WB_mode6.amr
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.19 - PlayStop 10s_AMR_WB_mode7.amr 
+#SoundFile e:\sounds\awb\10s_AMR_WB_mode7.amr
+#SoundFile e:\sounds\awb\10s_AMR_WB_mode7.amr
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.20 - PlayStop 10s_AMR_WB_mode7.amr 
+#SoundFile e:\sounds\awb\10s_AMR_WB_mode8.amr
+#SoundFile e:\sounds\awb\10s_AMR_WB_mode8.amr
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.21 - PlayStop AMR without ext
+#SoundFile e:\sounds\awb\10s_AMR_WB_mode4_no_ext
+#SoundFile e:\sounds\awb\10s_AMR_WB_mode4_no_ext
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.AMR.FH.22 - PlayStop AMR with other ext
+#SoundFile e:\sounds\awb\10s_3GP_AMR_WB_mode8.3gp
+#SoundFile e:\sounds\awb\10s_3GP_AMR_WB_mode8.3gp
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+
+//**************************
+//* Play Pause Play (ID 1022)
+//**************************
+
+[TestCase]
+id 1022
+Title Plugin.DRM.AWB.FH.23 - PlayPausePlay 10s_AMR_WB_23.85kbps_Generic.awb
+SoundFile e:\sounds\awb\10s_AMR_WB_23.85kbps_Generic.awb
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.AWB.FH.24 - PlayPausePlay AWB without ext
+SoundFile e:\sounds\awb\10s_AMR_WB_23.85kbps_Generic_no_ext
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.AWB.FH.25 - PlayPausePlay AWB with other ext
+SoundFile e:\sounds\awb\10s_AMR_WB_23.85kbps_Generic_other_ext.3gp
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 000 000
+[End_TestCase]
+
+//**************************
+//* Set Position - Play (ID 1024)
+//**************************
+
+[TestCase]
+id 1024
+Title Plugin.DRM.AWB.FH.26 - SetPosition_Play 10s_AMR_WB_15.85kbps.awb
+SoundFile e:\sounds\awb\10s_AMR_WB_15.85kbps.awb
+Position 10 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.AWB.FH.27 - SetPosition_Play AWB without ext
+SoundFile e:\sounds\awb\10s_AMR_WB_15.85kbps_no_ext
+Position 10 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.AWB.FH.28 - SetPosition_Play AWB with other ext
+SoundFile e:\sounds\awb\10s_AMR_WB_15.85kbps_other_ext.3gp
+Position 20 000 000
+ErrorRange 2 000 000
+[End_TestCase]
+
+//**************************
+//* Play - Get Position (ID 1025)
+//**************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+[TestCase]
+id 1025
+Title Plugin.DRM.AWB.FH.29 - GetPosition_Play 10s_AMR_WB_15.85kbps.awb
+SoundFile e:\sounds\awb\10s_AMR_WB_15.85kbps.awb
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.AWB.FH.30 - GetPosition_Play AWB without ext
+SoundFile e:\sounds\awb\10s_AMR_WB_15.85kbps_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.AWB.FH.31 - GetPosition_Play AWB with other ext
+SoundFile e:\sounds\awb\10s_AMR_WB_15.85kbps_other_ext.3gp
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Get Duration (ID 1026)
+//**************************
+
+[TestCase]
+id 1026
+Title Plugin.DRM.AWB.FH.32 - GetDuration 10s_AMR_WB_23.85kbps_Generic.awb
+SoundFile e:\sounds\awb\10s_AMR_WB_23.85kbps_Generic.awb
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.AWB.FH.33 - GetDuration AWB without ext
+SoundFile e:\sounds\awb\10s_AMR_WB_23.85kbps_Generic_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.AWB.FH.34 - GetDuration AWB with other ext
+SoundFile e:\sounds\awb\10s_AMR_WB_23.85kbps_Generic_other_ext.3gp
+Delay 1000000
+[End_TestCase]
+
+
+//**************************
+//* Play - Volume Ramping (ID 1023)
+//**************************
+
+[TestCase]
+id 1023
+Title Plugin.DRM.AWB.FH.38 - VolumeRamping 10s_AMR_WB_23.85kbps_Generic.awb
+SoundFile e:\sounds\awb\10s_AMR_WB_23.85kbps_Generic.awb
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.AWB.FH.39 - VolumeRamping AWB without ext
+SoundFile e:\sounds\awb\10s_AMR_WB_23.85kbps_Generic_no_ext
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.AWB.FH.40 - VolumeRamping AWB with other ext
+SoundFile e:\sounds\awb\10s_AMR_WB_23.85kbps_Generic_other_ext.3gp
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Set Playback Window (ID 1027)
+//**************************
+
+[TestCase]
+id 1027
+Title Plugin.DRM.AWB.FH.41 - SetPlaybackWindow 10s_AMR_WB_23.05kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_23.05kbps.amr
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.AWB.FH.42 - SetPlaybackWindow AWB without ext
+SoundFile e:\sounds\awb\10s_AMR_WB_23.05kbps_no_ext
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.AWB.FH.43 - SetPlaybackWindow AWB with other ext
+SoundFile e:\sounds\awb\10s_3GP_AMR_WB_23.05kbps.3gp
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Delete Playback Window (ID 1028)
+//**************************
+
+[TestCase]
+id 1028
+Title Plugin.DRM.AWB.FH.44 - DeletePlaybackWindow 10s_AMR_WB_23.85kbps_Generic.awb
+SoundFile e:\sounds\awb\10s_AMR_WB_23.85kbps_Generic.awb
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.AWB.FH.45 - DeletePlaybackWindow AWB without ext
+SoundFile e:\sounds\awb\10s_AMR_WB_23.85kbps_Generic_no_ext
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.AWB.FH.46 - DeletePlaybackWindow AWB with other ext
+SoundFile e:\sounds\awb\10s_AMR_WB_23.85kbps_Generic_other_ext.3gp
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+//*******************************************
+//* Play 3gp EAAC+ audio files (ID 1020)
+//*******************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 1020
+Title Plugin.DRM.HeAAC.FH.1 - Play implicit stereo 3gp audio
+SoundFile e:\sounds\HeAAC\10s_3GP_AMR_NB_mode0.3gp
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+[TestCase]
+id 1020
+Title Plugin.DRM.HeAAC.FH.2 - Play explicit non-backwards compatible stereo 3gp audio
+SoundFile e:\sounds\HeAAC\10s_3GP_AMR_NB_mode2.3gp
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.HeAAC.FH.3 - Play 20kbps 32khz 3gp audio
+SoundFile e:\sounds\HeAAC\10s_3GP_AAC+_20kbps_32khz_Mono.3gp
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.HeAAC.FH.4 - Play 16kbps 32khz mono 3gp audio
+SoundFile e:\sounds\HeAAC\10s_3GP_AAC+_16kbps_32khz_Mono.3gp
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.HeAAC.FH.5 - Play 24kbps 32khz stereo 3gp audio
+SoundFile e:\sounds\HeAAC\10s_3GP_AAC+_24kbps_32khz_Stereo.3gp
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.HeAAC.FH.6 - Play 20kbps 32khz 3gp audio
+SoundFile e:\sounds\HeAAC\10s_3GP_AAC+_20kbps_32khz_Stereo.3gp
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.HeAAC.FH.7 - Play 16kbps 32khz mono 3gp audio
+SoundFile e:\sounds\HeAAC\10s_3GP_AAC+_16kbps_32khz_Mono.3gp
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.HeAAC.FH.8 - Play 24kbps 32khz stereo 3gp audio
+SoundFile e:\sounds\HeAAC\10s_3GP_AAC+_24kbps_32khz_Stereo.3gp
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.HeAAC.FH.9 - Play 20kbps 32khz stereo 3gp audio
+SoundFile e:\sounds\HeAAC\10s_3GP_AAC+_20kbps_32khz_Mono.3gp
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.HeAAC.FH.10 - Play 16kbps 32khz 3gp audio
+SoundFile e:\sounds\HeAAC\10s_3GP_AAC+_16kbps_32khz_Mono.3gp
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.HeAAC.FH.11 - Play 24kbps 32khz stereo 3gp audio
+SoundFile e:\sounds\HeAAC\10s_3GP_AAC+_24kbps_32khz_Stereo.3gp
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+//*******************************************
+//* Play mp4 EAAC+ audio files (ID 1020)
+//*******************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 1020
+Title Plugin.DRM.HeAAC.FH.12 - Play implicit pstereo  mp4 audio
+SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_0.mp4
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+
+[TestCase]
+id 1020
+Title Plugin.DRM.HeAAC.FH.13 - Play explicit backwards compatible pstereo mp4 audio
+SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_1.mp4
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+[TestCase]
+id 1020
+Title Plugin.DRM.HeAAC.FH.14 - Play explicit non-backwards compatible pstereo mp4 audio
+SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_2.mp4
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+[TestCase]
+id 1020
+Title Plugin.DRM.HeAAC.FH.15 - Play implicit stereo mp4 audio
+SoundFile e:\sounds\HeAAC\10s_MP4_stereo_0.mp4
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+[TestCase]
+id 1020
+Title Plugin.DRM.HeAAC.FH.16 - Play explicit backwards compatible stereo mp4 audio
+SoundFile e:\sounds\HeAAC\10s_MP4_stereo_1.mp4
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+[TestCase]
+id 1020
+Title Plugin.DRM.HeAAC.FH.17 - Play explicit non-backwards compatible stereo mp4 audio
+SoundFile e:\sounds\HeAAC\10s_MP4_stereo_2.mp4
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+//************************************
+//* Play EAAC+ (ID 1021)
+//************************************
+// Testing Play Stop Play to EOF
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.HeAAC.FH.18 - PlayStop  implicit stereo 3gp audio
+#SoundFile e:\sounds\HeAAC\10s_3GP_AMR_NB_mode0.3gp
+#SoundFile e:\sounds\HeAAC\10s_3GP_AMR_NB_mode0.3gp
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+
+#[TestCase]
+#id 1021
+#Title  Plugin.DRM.HeAAC.FH.19 - PlayStop explicit non-backwards compatible stereo 3gp audio
+#SoundFile e:\sounds\HeAAC\10s_3GP_AMR_NB_mode2.3gp
+#SoundFile e:\sounds\HeAAC\10s_3GP_AMR_NB_mode2.3gp
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title  Plugin.DRM.HeAAC.FH.20 - PlayStop implicit pstereo  mp4 audio
+#SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_0.mp4
+#SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_0.mp4
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+
+
+#[TestCase]
+#id 1021
+#Title  Plugin.DRM.HeAAC.FH.21 - PlayStop explicit backwards compatible pstereo mp4 audio
+#SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_1.mp4
+#SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_1.mp4
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+
+#[TestCase]
+#id 1021
+#Title  Plugin.DRM.HeAAC.FH.22 - PlayStop explicit non-backwards compatible pstereo mp4 audio
+#SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_2.mp4
+#SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_2.mp4
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+
+#[TestCase]
+#id 1021
+#Title  Plugin.DRM.HeAAC.FH.23 - PlayStop implicit stereo mp4 audio
+#SoundFile e:\sounds\HeAAC\10s_MP4_stereo_0.mp4
+#SoundFile e:\sounds\HeAAC\10s_MP4_stereo_0.mp4
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title  Plugin.DRM.HeAAC.FH.24 - PlayStop explicit backwards compatible stereo mp4 audio
+#SoundFile e:\sounds\HeAAC\10s_MP4_stereo_1.mp4
+#SoundFile e:\sounds\HeAAC\10s_MP4_stereo_1.mp4
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+
+#[TestCase]
+#id 1021
+#Title  Plugin.DRM.HeAAC.FH.25 - PlayStop explicit non-backwards compatible stereo mp4 audio
+#SoundFile e:\sounds\HeAAC\10s_MP4_stereo_2.mp4
+#SoundFile e:\sounds\HeAAC\10s_MP4_stereo_2.mp4
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+
+//********************************
+//* Play - Volume Ramping (ID 1023)
+//********************************
+
+[TestCase]
+id 1023
+Title Plugin.DRM.HeAAC.FH.26 - VolumeRamping 10s_MP4_stereo_0.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_stereo_0.mp4
+RampDuration 5 000 000
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 1023
+Title Plugin.DRM.HeAAC.FH.27 - VolumeRamping 10s_3GP_AMR_NB_mode2.3gp
+SoundFile e:\sounds\HeAAC\10s_3GP_AMR_NB_mode2.3gp
+RampDuration 5 000 000
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 1023
+Title Plugin.DRM.HeAAC.FH.28 - VolumeRamping 10s_MP4_pstereo_1.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_1.mp4
+RampDuration 5 000 000
+Delay 1000000
+[End_TestCase]
+
+
+//**************************
+//* Play Pause Play (ID 1022)
+//**************************
+
+[TestCase]
+id 1022
+Title Plugin.DRM.HeAAC.FH.29 - PlayPausePlay 10s_MP4_stereo_0.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_stereo_0.mp4
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+
+[TestCase]
+id 1022
+Title Plugin.DRM.HeAAC.FH.30 - PlayPausePlay 10s_3GP_AMR_NB_mode2.3gp
+SoundFile e:\sounds\HeAAC\10s_3GP_AMR_NB_mode2.3gp
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+
+[TestCase]
+id 1022
+Title Plugin.DRM.HeAAC.FH.31 - PlayPausePlay 10s_MP4_pstereo_1.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_1.mp4
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+
+//******************************
+//* Set Position - Play (ID 1024)
+//******************************
+
+[TestCase]
+id 1024
+Title Plugin.DRM.HeAAC.FH.32 - SetPosition_Play 10s_MP4_stereo_0.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_stereo_0.mp4
+Position 000 500 000
+ErrorRange 3 000 000
+[End_TestCase]
+
+
+[TestCase]
+id 1024
+Title Plugin.DRM.HeAAC.FH.33 - SetPosition_Play 10s_3GP_AMR_NB_mode2.3gp
+SoundFile e:\sounds\HeAAC\10s_3GP_AMR_NB_mode2.3gp
+Position 000 500 000
+ErrorRange 3 000 000
+[End_TestCase]
+
+
+[TestCase]
+id 1024
+Title Plugin.DRM.HeAAC.FH.34 - SetPosition_Play 10s_MP4_pstereo_1.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_1.mp4
+Position 20 000 000
+ErrorRange 3 000 000
+[End_TestCase]
+
+
+
+//*******************************
+//* Play - Get Position (ID 1025)
+//*******************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+[TestCase]
+id 1025
+Title Plugin.DRM.HeAAC.FH.35 - GetPosition_Play 10s_MP4_stereo_0.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_stereo_0.mp4
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 1025
+Title Plugin.DRM.HeAAC.FH.36 - GetPosition_Play 10s_3GP_AMR_NB_mode2.3gp
+SoundFile e:\sounds\HeAAC\10s_3GP_AMR_NB_mode2.3gp
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 1025
+Title Plugin.DRM.HeAAC.FH.37 - GetPosition_Play 10s_MP4_pstereo_1.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_1.mp4
+Delay 1000000
+[End_TestCase]
+
+
+
+//******************************
+//* Play - Get Duration (ID 1026)
+//******************************
+[TestCase]
+id 1026
+Title Plugin.DRM.HeAAC.FH.38 - GetDuration 10s_MP4_stereo_0.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_stereo_0.mp4
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 1026
+Title Plugin.DRM.HeAAC.FH.39 - GetDuration 10s_3GP_AMR_NB_mode2.3gp
+SoundFile e:\sounds\HeAAC\10s_3GP_AMR_NB_mode2.3gp
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 1026
+Title Plugin.DRM.HeAAC.FH.40 - GetDuration 10s_MP4_pstereo_1.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_1.mp4
+Delay 1000000
+[End_TestCase]
+
+
+//*************************************
+//* Play - Set Playback Window (ID 1027)
+//*************************************
+
+[TestCase]
+id 1027
+Title Plugin.DRM.HeAAC.FH.41 - SetPlaybackWindow 10s_MP4_stereo_0.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_stereo_0.mp4
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 1027
+Title Plugin.DRM.HeAAC.FH.42 - SetPlaybackWindow 10s_3GP_AMR_NB_mode2.3gp
+SoundFile e:\sounds\HeAAC\10s_3GP_AMR_NB_mode2.3gp
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 1027
+Title Plugin.DRM.HeAAC.FH.43 - SetPlaybackWindow 10s_MP4_pstereo_1.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_1.mp4
+StartPosition 0 000 000
+EndPosition   5 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+
+
+//****************************************
+//* Play - Delete Playback Window (ID 1028)
+//****************************************
+
+
+[TestCase]
+id 1028
+Title Plugin.DRM.HeAAC.FH.44 - DeletePlaybackWindow 10s_MP4_stereo_0.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_stereo_0.mp4
+StartPosition 3 000 000
+EndPosition   7 000 000
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 1028
+Title Plugin.DRM.HeAAC.FH.45 - DeletePlaybackWindow 10s_3GP_AMR_NB_mode2.3gp
+SoundFile e:\sounds\HeAAC\10s_3GP_AMR_NB_mode2.3gp
+StartPosition 3 000 000
+EndPosition   7 000 000
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 1028
+Title Plugin.DRM.HeAAC.FH.46 - DeletePlaybackWindow 10s_MP4_pstereo_1.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_1.mp4
+StartPosition 0 000 000
+EndPosition   5 000 000
+Delay 1000000
+[End_TestCase]
+
+//*******************************************
+//* Play M4a Sample Rate and BiteRate(ID 1020)
+//*******************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.1 - Play Mono 8kbps 11kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_8kbps_11.025khz_mono.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.2 - Play Mono 16kbps 22kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_16kbps_22.05khz_mono.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.3 - Play Mono 20kbps 24kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_20kbps_24khz_mono.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.4 - Play Mono 24kbps 32kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_24kbps_32khz_mono.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.5 - Play 28kbps 32kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_28kbps_32khz_mono.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.6 - Play Mono 32kbps 32kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_32kbps_32khz_mono.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.7 - Play Mono 40kbps 44kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_40kbps_44.1khz_mono.m4a
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.8 - Play Mono 48kbps 44kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_48kbps_44.1khz_mono.m4a
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.9 - Play Mono 56kbps 44kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_56kbps_44.1khz_mono.m4a
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.10 - Play Mono 64kbps 44kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_64kbps_44.1khz_mono.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.11 - Play Mono 80kbps 44kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_80kbps_44.1khz_mono.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.12 - Play Mono 96kbps 44kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_96kbps_44.1khz_mono.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.13 - Play Mono 112kbps 44kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_112kbps_44.1khz_mono.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.14 - Play Mono 128kbps 44kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_128kbps_44.1khz_mono.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.15 - Play Mono 160kbps 44kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_160kbps_44.1khz_mono.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.16 - Play Stereo 16kbps 11kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_16kbps_11.025khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.17 - Play Stereo 20kbps 11kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_20kbps_16khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.18 - Play Stereo 24kbps 16kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_24kbps_16khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.19 - Play Stereo 28kbps 16kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_28kbps_16khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.20 - Play Stereo 32kbps 22kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_32kbps_22.05khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.21 - Play Stereo 40kbps 24kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_40kbps_24khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.22 - Play Stereo 48kbps 32kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_48kbps_32khz_stereo.m4a
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.23 - Play Stereo 56kbps 32kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_56kbps_32khz_stereo.m4a
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.24 - Play Stereo 64kbps 44kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_64kbps_44.1khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.25 - Play Stereo 80kbps 44kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_80kbps_44.1khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.26 - Play Stereo 96kbps 44kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_96kbps_44.1khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.27 - Play Stereo 112kbps 44kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_112kbps_44.1khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.28 - Play Stereo 128kbps 44kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_128kbps_44.1khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.29 - Play Stereo 160kbps 44kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_160kbps_44.1khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.30 - Play Stereo 192kbps 44kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_192kbps_44.1khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.31 - Play Stereo 224kbps 44kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_224kbps_44.1khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.32 - Play Stereo 256kbps 44kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_256kbps_44.1khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.33 - Play Stereo 320kbps 44kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_320kbps_44.1khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.34 - Play Stereo 112kbps 48kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_112kbps_48khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.35 - Play Stereo 128kbps 48kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_128kbps_48khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.36 - Play Stereo 160kbps 48kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_160kbps_48khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.37 - Play Stereo 192kbps 48kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_192kbps_48khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.38 - Play Stereo 224kbps 48kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_224kbps_48khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.39 - Play Stereo 256kbps 48kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_256kbps_48khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.M4a.FH.40 - Play Stereo 320kbps 48kHz m4a audio
+SoundFile e:\sounds\m4a\10s_AAC_LC_320kbps_48khz_stereo.m4a
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+
+//************************************
+//* Play M4a (ID 1021)
+//************************************
+// Testing Play Stop Play to EOF
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.M4a.FH.41 - PlayStop Mono 8kbps 11kHz m4a audio
+#SoundFile e:\sounds\M4a\10s_AAC_LC_8kbps_11.025khz_mono.m4a
+#SoundFile e:\sounds\M4a\10s_AAC_LC_8kbps_11.025khz_mono.m4a
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.M4a.FH.42 - PlayStop Stereo 16kbps 11kHz m4a audio
+#SoundFile e:\sounds\M4a\10s_AAC_LC_16kbps_11.025khz_stereo.m4a
+#SoundFile e:\sounds\M4a\10s_AAC_LC_16kbps_11.025khz_stereo.m4a
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+
+
+//********************************
+//* Play - Volume Ramping (ID 1023)
+//********************************
+
+[TestCase]
+id 1023
+Title Plugin.DRM.M4a.FH.43 - VolumeRamping Mono 8kbps 11kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_8kbps_11.025khz_mono.m4a
+RampDuration 5 000 000
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 1023
+Title Plugin.DRM.M4a.FH.44 - VolumeRamping Stereo 16kbps 11kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_16kbps_11.025khz_stereo.m4a
+RampDuration 5 000 000
+Delay 1000000
+[End_TestCase]
+
+
+//**************************
+//* Play Pause Play (ID 1022)
+//**************************
+
+[TestCase]
+id 1022
+Title Plugin.DRM.M4a.FH.45 - PlayPausePlay Mono 8kbps 11kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_8kbps_11.025khz_mono.m4a
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+
+[TestCase]
+id 1022
+Title Plugin.DRM.M4a.FH.46 - PlayPausePlay Stereo 16kbps 11kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_16kbps_11.025khz_stereo.m4a
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+
+//******************************
+//* Set Position - Play (ID 1024)
+//******************************
+
+[TestCase]
+id 1024
+Title Plugin.DRM.M4a.FH.47 - SetPosition_Play Mono 8kbps 11kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_8kbps_11.025khz_mono.m4a
+Position 000 500 000
+ErrorRange 3 000 000
+[End_TestCase]
+
+
+[TestCase]
+id 1024
+Title Plugin.DRM.M4a.FH.48 - SetPosition_Play Stereo 16kbps 11kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_16kbps_11.025khz_stereo.m4a
+Position 000 500 000
+ErrorRange 3 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.M4a.FH.49 - SetPosition_Play Mono 16kbps 22.05kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_16kbps_22.05khz_mono.m4a
+Position 20 000 000
+ErrorRange 3 000 000
+[End_TestCase]
+
+
+
+//*******************************
+//* Play - Get Position (ID 1025)
+//*******************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+
+[TestCase]
+id 1025
+Title Plugin.DRM.M4a.FH.50 - GetPosition_Play Mono 8kbps 11kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_8kbps_11.025khz_mono.m4a
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 1025
+Title Plugin.DRM.M4a.FH.51 - GetPosition_Play Stereo 16kbps 11kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_16kbps_11.025khz_stereo.m4a
+Delay 1000000
+[End_TestCase]
+
+
+
+//******************************
+//* Play - Get Duration (ID 1026)
+//******************************
+
+[TestCase]
+id 1026
+Title Plugin.DRM.M4a.FH.52 - GetDuration Mono 8kbps 11kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_8kbps_11.025khz_mono.m4a
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 1026
+Title Plugin.DRM.M4a.FH.53 - GetDuration Stereo 16kbps 11kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_16kbps_11.025khz_stereo.m4a
+Delay 1000000
+[End_TestCase]
+
+
+//*************************************
+//* Play - Set Playback Window (ID 1027)
+//*************************************
+
+
+[TestCase]
+id 1027
+Title Plugin.DRM.M4a.FH.54 - SetPlaybackWindow Mono 8kbps 11kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_8kbps_11.025khz_mono.m4a
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 1027
+Title Plugin.DRM.M4a.FH.55 - SetPlaybackWindow Stereo 16kbps 11kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_16kbps_11.025khz_stereo.m4a
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+
+
+//****************************************
+//* Play - Delete Playback Window (ID 1028)
+//****************************************
+
+
+[TestCase]
+id 1028
+Title Plugin.DRM.M4a.FH.56 - DeletePlaybackWindow Mono 8kbps 11kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_8kbps_11.025khz_mono.m4a
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 1028
+Title Plugin.DRM.M4a.FH.57 - DeletePlaybackWindow Stereo 16kbps 11kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_16kbps_11.025khz_stereo.m4a
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play MIDI, SP-MIDI, RMF audio file (ID 1020)
+//**************************
+// Testing Playback to EOF
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MIDI.FH.1 - Play midi 10s_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_MID_Generic.mid
+//Expected Duration 4 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MIDI.FH.2 - Play midi without ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+//Expected Duration 4 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MIDI.FH.3 - Play midi with different ext
+SoundFile e:\sounds\mid\10s_MID_Generic_other_ext.3gp
+//Expected Duration 4 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MIDI.FH.4 - Play sp-midi 10s_SP_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_SP_MID_Generic.mid
+//Expected Duration 13 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MIDI.FH.5 - Play sp-midi 10s_SP_MID_Generic_no_ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_no_ext
+//Expected Duration 13 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MIDI.FH.6 - Play sp-midi 10s_SP_MID_Generic_other_ext.amr
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_other_ext.amr
+//Expected Duration 13 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MIDI.FH.7 - Play rmf 10s_RMF_MID.rmf
+SoundFile e:\sounds\mid\10s_RMF_MID.rmf
+//Expected Duration 12 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MIDI.FH.8 - Play rmf piano
+SoundFile e:\sounds\mid\10s_RMF_MID_no_ext
+//Expected Duration 12 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MIDI.FH.9 - Play rmf piano.awb
+SoundFile e:\sounds\mid\10s_RMF_MID_other_ext.awb
+//Expected Duration 12 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MIDI.FH.10 - Play mxmf 10s_MXMF.mxmf
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf
+//Expected Duration 12 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MIDI.FH.11 - Play mxmf 10s_MXMF_no_ext
+SoundFile e:\sounds\mxmf\10s_MXMF_no_ext
+//Expected Duration 12 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MIDI.FH.12 - Play mxmf 10s_MXMF_other_ext.awb
+SoundFile e:\sounds\mxmf\10s_MXMF_other_ext.awb
+//Expected Duration 12 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+//**************************
+//* Play Pause Play (ID 1022)
+//**************************
+
+[TestCase]
+id 1022
+Title Plugin.DRM.MIDI.FH.25 - PlayPausePlay midi 10s_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext.mid
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.MIDI.FH.26 - PlayPausePlay midi without ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.MIDI.FH.27 - PlayPausePlay midi with other ext
+SoundFile e:\sounds\mid\10s_MID_Generic_other_ext.amr
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.MIDI.FH.28 - PlayPausePlay sp-midi 10s_SP_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_SP_MID_Generic.mid
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.MIDI.FH.29 - PlayPausePlay sp-midi without ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_no_ext
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.MIDI.FH.30 - PlayPausePlay sp-midi with other ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_other_ext.amr
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.MIDI.FH.31 - PlayPausePlay rmf 10s_RMF_MID.rmf
+SoundFile e:\sounds\mid\10s_RMF_MID.rmf
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.MIDI.FH.32 - PlayPausePlay rmf without ext
+SoundFile e:\sounds\mid\10s_RMF_MID_no_ext
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.MIDI.FH.33 - PlayPausePlay rmf with other ext
+SoundFile e:\sounds\mid\10s_RMF_MID_other_ext.awb
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.MIDI.FH.34 - PlayPausePlay mxmf 10s_MXMF.mxmf
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.MIDI.FH.35 - PlayPausePlay mxmf without ext
+SoundFile e:\sounds\mxmf\10s_MXMF_no_ext
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.MIDI.FH.36 - PlayPausePlay mxmf with other ext
+SoundFile e:\sounds\mxmf\10s_MXMF_other_ext.awb
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+
+//**************************
+//* Set Position - Play (ID 1024)
+//**************************
+
+[TestCase]
+id 1024
+Title Plugin.DRM.MIDI.FH.37 - SetPosition_Play midi 10s_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext.mid
+Position 4 000 000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.MIDI.FH.38 - SetPosition_Play midi without ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+Position 4 000 000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.MIDI.FH.39 - SetPosition_Play midi with other ext
+SoundFile e:\sounds\mid\10s_MID_Generic_other_ext.amr
+Position 4 000 000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.MIDI.FH.40 - SetPosition_Play sp-midi 10s_SP_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_SP_MID_Generic.mid
+Position 20 000 000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.MIDI.FH.41 - SetPosition_Play sp-midi without ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_no_ext
+Position 10 000 000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.MIDI.FH.42 - SetPosition_Play sp-midi with other ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_other_ext.amr
+Position 10 000 000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.MIDI.FH.43 - SetPosition_Play rmf 10s_RMF_MID.rmf
+SoundFile e:\sounds\mid\10s_RMF_MID.rmf
+Position 10 000 000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.MIDI.FH.44 - SetPosition_Play rmf without ext
+SoundFile e:\sounds\mid\10s_RMF_MID_no_ext
+Position 10 000 000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.MIDI.FH.45 - SetPosition_Play rmf with other ext
+SoundFile e:\sounds\mid\10s_RMF_MID_other_ext.awb
+Position 10 000 000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.MIDI.FH.46 - SetPosition_Play mxmf 10s_MXMF.mxmf
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf
+Position 10 000 000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.MIDI.FH.47 - SetPosition_Play mxmf without ext
+SoundFile e:\sounds\mxmf\10s_MXMF_no_ext
+Position 10 000 000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.MIDI.FH.48 - SetPosition_Play mxmf with other ext
+SoundFile e:\sounds\mxmf\10s_MXMF_other_ext.awb
+Position 10 000 000
+ErrorRange 2 000 000
+[End_TestCase]
+
+//**************************
+//* Play - Get Position (ID 1025)
+//**************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+[TestCase]
+id 1025
+Title Plugin.DRM.MIDI.FH.49 - GetPosition_Play midi 10s_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext.mid
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.MIDI.FH.50 - GetPosition_Play midi without ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.MIDI.FH.51 - GetPosition_Play midi with other ext
+SoundFile e:\sounds\mid\10s_MID_Generic_other_ext.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.MIDI.FH.52 - GetPosition_Play sp-midi 10s_SP_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_SP_MID_Generic.mid
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.MIDI.FH.53 - GetPosition_Play sp-midi without ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.MIDI.FH.54 - GetPosition_Play sp-midi with other ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_other_ext.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.MIDI.FH.55 - GetPosition_Play rmf 10s_RMF_MID.rmf
+SoundFile e:\sounds\mid\10s_RMF_MID.rmf
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.MIDI.FH.56 - GetPosition_Play rmf without ext
+SoundFile e:\sounds\mid\10s_RMF_MID_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.MIDI.FH.57 - GetPosition_Play rmf with other ext
+SoundFile e:\sounds\mid\10s_RMF_MID_other_ext.awb
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.MIDI.FH.58 - GetPosition_Play mxmf 10s_MXMF.mxmf 
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf 
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.MIDI.FH.59 - GetPosition_Play mxmf without ext
+SoundFile e:\sounds\mxmf\10s_MXMF_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.MIDI.FH.60 - GetPosition_Play mxmf with other ext
+SoundFile e:\sounds\mxmf\10s_MXMF_other_ext.awb
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Get Duration (ID 1026)
+//**************************
+
+[TestCase]
+id 1026
+Title Plugin.DRM.MIDI.FH.61 - GetDuration mid 10s_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext.mid
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.MIDI.FH.62 - GetDuration mid without ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.MIDI.FH.63 - GetDuration mid with other ext
+SoundFile e:\sounds\mid\10s_MID_Generic_other_ext.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.MIDI.FH.64 - GetDuration sp-mid 10s_SP_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_SP_MID_Generic.mid
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.MIDI.FH.65 - GetDuration sp-mid without ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.MIDI.FH.66 - GetDuration sp-mid with other ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_other_ext.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.MIDI.FH.67 - GetDuration rmf 10s_RMF_MID.rmf
+SoundFile e:\sounds\mid\10s_RMF_MID.rmf
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.MIDI.FH.68 - GetDuration rmf without ext
+SoundFile e:\sounds\mid\10s_RMF_MID_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.MIDI.FH.69 - GetDuration rmf with other ext
+SoundFile e:\sounds\mid\10s_RMF_MID_other_ext.awb
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 1026
+Title Plugin.DRM.MIDI.FH.70 - GetDuration mxmf 10s_MXMF.mxmf
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.MIDI.FH.71 - GetDuration mxmf without ext
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.MIDI.FH.72 - GetDuration mxmf with other ext
+SoundFile e:\sounds\mxmf\10s_MXMF_other_ext.awb
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Volume Ramping (ID 1023)
+//**************************
+
+[TestCase]
+id 1023
+Title Plugin.DRM.MIDI.FH.73 - VolumeRamping mid 10s_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext.mid
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.MIDI.FH.74 - VolumeRamping mid without ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.MIDI.FH.75 - VolumeRamping mid with other ext
+SoundFile e:\sounds\mid\10s_MID_Generic_other_ext.amr
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.MIDI.FH.76 - VolumeRamping sp-mid 10s_SP_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_SP_MID_Generic.mid
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.MIDI.FH.77 - VolumeRamping sp-mid without ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_no_ext
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.MIDI.FH.78 - VolumeRamping sp-mid with other ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_other_ext.amr
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.MIDI.FH.79 - VolumeRamping rmf 10s_RMF_MID.rmf
+SoundFile e:\sounds\mid\10s_RMF_MID.rmf
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.MIDI.FH.80 - VolumeRamping rmf without ext
+SoundFile e:\sounds\mid\10s_RMF_MID_no_ext
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.MIDI.FH.81 - VolumeRamping rmf with other ext
+SoundFile e:\sounds\mid\10s_RMF_MID_other_ext.awb
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.MIDI.FH.82 - VolumeRamping mxmf 10s_MXMF.mxmf
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.MIDI.FH.83 - VolumeRamping mxmf without ext
+SoundFile e:\sounds\mxmf\10s_MXMF_no_ext
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.MIDI.FH.84 - VolumeRamping mxmf with other ext
+SoundFile e:\sounds\mxmf\10s_MXMF_other_ext.awb
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Set Playback Window (ID 1027)
+//**************************
+
+[TestCase]
+id 1027
+Title Plugin.DRM.MIDI.FH.85 - SetPlaybackWindow midi 10s_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext.mid
+StartPosition 2 000 000
+EndPosition   5 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.MIDI.FH.86 - SetPlaybackWindow midi without ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+StartPosition 2 000 000
+EndPosition   5 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.MIDI.FH.87 - SetPlaybackWindow midi with other ext
+SoundFile e:\sounds\mid\10s_MID_Generic_other_ext.amr
+StartPosition 2 000 000
+EndPosition   5 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.MIDI.FH.88 - SetPlaybackWindow sp-midi 10s_SP_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_SP_MID_Generic.mid
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.MIDI.FH.89 - SetPlaybackWindow sp-midi without ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_no_ext
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.MIDI.FH.90 - SetPlaybackWindow sp-midi with other ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_other_ext.awb
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.MIDI.FH.91 - SetPlaybackWindow rmf 10s_RMF_MID.rmf
+SoundFile e:\sounds\mid\10s_RMF_MID.rmf
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.MIDI.FH.92 - SetPlaybackWindow rmf without ext
+SoundFile e:\sounds\mid\10s_RMF_MID_no_ext
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.MIDI.FH.93 - SetPlaybackWindow rmf with other ext
+SoundFile e:\sounds\mid\10s_RMF_MID_other_ext.3gp
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.MIDI.FH.94 - SetPlaybackWindow mxmf 10s_MXMF.mxmf
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.MIDI.FH.95 - SetPlaybackWindow mxmf without ext
+SoundFile e:\sounds\mxmf\10s_MXMF_no_ext
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.MIDI.FH.96 - SetPlaybackWindow mxmf with other ext
+SoundFile e:\sounds\mxmf\10s_MXMF_other_ext.awb
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Delete Playback Window (ID 1028)
+//**************************
+
+[TestCase]
+id 1028
+Title Plugin.DRM.MIDI.FH.97 - DeletePlaybackWindow midi 10s_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext.mid
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.MIDI.FH.98 - DeletePlaybackWindow midi without ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.MIDI.FH.99 - DeletePlaybackWindow midi with other ext
+SoundFile e:\sounds\mid\10s_MID_Generic_other_ext.amr
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.MIDI.FH.100 - DeletePlaybackWindow sp-midi 10s_SP_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_SP_MID_Generic.mid
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.MIDI.FH.101 - DeletePlaybackWindow sp-midi without ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_no_ext
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.MIDI.FH.102 - DeletePlaybackWindow sp-midi with other ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_other_ext.awb
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.MIDI.FH.103 - DeletePlaybackWindow rmf 10s_RMF_MID.rmf
+SoundFile e:\sounds\mid\10s_RMF_MID.rmf
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.MIDI.FH.104 - DeletePlaybackWindow rmf without ext
+SoundFile e:\sounds\mid\10s_RMF_MID_no_ext
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.MIDI.FH.105 - DeletePlaybackWindow rmf with other ext
+SoundFile e:\sounds\mid\10s_RMF_MID_other_ext.3gp
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.MIDI.FH.106 - DeletePlaybackWindow mxmf 10s_MXMF.mxmf 
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf 
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.MIDI.FH.107 - DeletePlaybackWindow mxmf without ext
+SoundFile e:\sounds\mxmf\10s_MXMF_no_ext
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.MIDI.FH.108 - DeletePlaybackWindow mxmf with other ext
+SoundFile e:\sounds\mxmf\10s_MXMF_other_ext.awb
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play MP3 Sample Rate (ID 1020)
+//**************************
+// Testing Playback to EOF
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.1 - Play 8Khz MPEG2.5
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2.5_8kbps_8khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.2 - Play 11Khz MPEG2.5
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2.5_16kbps_11.025khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.3 - Play 12Khz MPEG2.5
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2.5_8kbps_12khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.4 - Play 16Khz MPEG2
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_16kbps_24khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.5 - Play 22Khz MPEG2
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_8kbps_22.05khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.6 - Play 24 Khz MPEG2
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_112kbps_24khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.7 - Play 32 Khz MPEG1
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_32kbps_32khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.8 - Play 44 Khz MPEG1
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_32kbps_44.1khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.9 - Play 48 Khz MPEG1
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_32kbps_48khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+//**********************************
+//* Play and Stop SampleRate(ID 1021)
+//**********************************
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.10 - PlayStop 8Khz MPEG2.5
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2.5_8kbps_8khz_mono.mp3
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2.5_8kbps_8khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.11 - PlayStop 11Khz MPEG2.5
+#SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2.5_16kbps_11.025khz_stereo.mp3
+#SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2.5_16kbps_11.025khz_stereo.mp3
+#Delay 1000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.12 - PlayStop 12Khz MPEG2.5
+#SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2.5_8kbps_12khz_stereo.mp3
+#SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2.5_8kbps_12khz_stereo.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.13 - PlayStop 16Khz MPEG2
+#SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_16kbps_24khz_stereo.mp3
+#SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_16kbps_24khz_stereo.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.14 - PlayStop 22Khz MPEG2
+#SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_8kbps_22.05khz_stereo.mp3
+#SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_8kbps_22.05khz_stereo.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.15 - PlayStop 24Khz MPEG2
+#SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_112kbps_24khz_mono.mp3
+#SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_112kbps_24khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.16 - PlayStop 32Khz MPEG1
+#SoundFile e:\sounds\mp3\SampleRate\10s_MP3_32kbps_32khz_mono.mp3
+#SoundFile e:\sounds\mp3\SampleRate\10s_MP3_32kbps_32khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.17 - PlayStop 44Khz MPEG1
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_32kbps_44.1khz_mono.mp3
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_32kbps_44.1khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.18 - PlayStop 48Khz MPEG1
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_32kbps_48khz_mono.mp3
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_32kbps_48khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+
+
+//**********************************
+//* Play MP3 Bit Rate MPEG1 (ID 1020)
+//**********************************
+// Testing Playback to EOF
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.19 - Play 32Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_32kbps_32khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.20 - Play 40Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_40kbps_32khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.21 - Play 48Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_48kbps_48khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.22 - Play 56Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_56kbps_44.1khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.23 - Play 64Kbps MPEG1 
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_64kbps_32khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.24 - Play 80Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_80kbps_32khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.25 - Play 96Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_96kbps_32khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.26 - Play 112Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_112kbps_44.1khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.27 - Play 128Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_128kbps_44.1khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.28 - Play 160Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_160kbps_48khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.29 - Play 192Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_192kbps_32khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.30 - Play 224Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_224kbps_48khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.31 - Play 256Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_256kbps_32khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.32 - Play 320Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_320kbps_44.1khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+//*******************************************
+//* Play and Stop MP3 Bit Rate MPEG1 (ID 1021)
+//*******************************************
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.33 - PlayStop 32Kbps MPEG1
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_32kbps_32khz_mono.mp3
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_32kbps_32khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.34 - PlayStop 40Kbps MPEG1
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_40kbps_32khz_mono.mp3
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_40kbps_32khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.35 - PlayStop 48Kbps MPEG1
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_48kbps_48khz_mono.mp3
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_48kbps_48khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.FH.36 - PlayStop 56Kbps MPEG1
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_56kbps_44.1khz_mono.mp3
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_56kbps_44.1khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.MP3.DRM.FH.37 - PlayStop 64Kbps MPEG1
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_64kbps_32khz_mono.mp3
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_64kbps_32khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.38 - PlayStop 80Kbps MPEG1
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_80kbps_32khz_mono.mp3
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_80kbps_32khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.39 - PlayStop 96Kbps MPEG1
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_96kbps_32khz_mono.mp3
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_96kbps_32khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.40 - PlayStop 112Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_112kbps_44.1khz_mono.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_112kbps_44.1khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.41 - PlayStop 128Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_128kbps_44.1khz_mono.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_128kbps_44.1khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.42 - PlayStop 160Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_160kbps_48khz_mono.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_160kbps_48khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.43 - PlayStop 192Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_192kbps_32khz_mono.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_192kbps_32khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.44 - PlayStop 224Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_224kbps_48khz_mono.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_224kbps_48khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.45 - PlayStop 256Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_256kbps_32khz_mono.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_256kbps_32khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.46 - PlayStop 320Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_320kbps_44.1khz_mono.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_320kbps_44.1khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+
+
+
+
+
+//**************************************
+//* Play MP3 Bit Rate MPEG2/2.5 (ID 1020)
+//**************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.47 - Play 8Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_8kbps_16khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.48 - Play 16Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_16kbps_22.05khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.49 - Play 24Kbps MPEG2.5
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_24kbps_12khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.50 - Play 32Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_32kbps_16khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.51 - Play 40Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_40kbps_16khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.52 - Play 48Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_48kbps_22.05khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.53 - Play 56Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_56kbps_24khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.54 - Play 64Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_64kbps_24khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.55 - Play 80Kbps MPEG2.5
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_80kbps_11.025khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.56 - Play 96Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_96kbps_16khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.57 - Play 112Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_112kbps_24khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.58 - Play 128Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_128kbps_16khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.59 - Play 144Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_144kbps_24khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 1020
+Title Plugin.DRM.MP3.FH.60 - Play 160Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_160kbps_16khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+//******************************************
+//* PlayStop MP3 Bit Rate MPEG2/2.5 (ID 1021)
+//******************************************
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.61 - PlayStop 8Kbps MPEG2
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_8kbps_16khz_mono.mp3
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_8kbps_16khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.62 - PlayStop 16Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_16kbps_22.05khz_mono.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_16kbps_22.05khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.63 - PlayStop 24Kbps MPEG2.5
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_24kbps_12khz_mono.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_24kbps_12khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.64 - PlayStop 32Kbps MPEG2
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_32kbps_16khz_mono.mp3
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_32kbps_16khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.65 - PlayStop 40Kbps MPEG2
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_40kbps_16khz_mono.mp3
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_40kbps_16khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.66 - PlayStop 48Kbps MPEG2
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_48kbps_22.05khz_mono.mp3
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_48kbps_22.05khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.67 - PlayStop 56Kbps MPEG2
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_56kbps_24khz_mono.mp3
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_56kbps_24khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.68 - PlayStop 64Kbps MPEG2
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_64kbps_24khz_mono.mp3
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_64kbps_24khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.69 - PlayStop 80Kbps MPEG2.5
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_80kbps_11.025khz_mono.mp3
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_80kbps_11.025khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.70 - PlayStop 96Kbps MPEG2
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_96kbps_16khz_mono.mp3
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_96kbps_16khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.71 - PlayStop 112Kbps MPEG2
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_112kbps_24khz_stereo.mp3
+#SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_112kbps_24khz_stereo.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.72 - PlayStop 128Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_128kbps_16khz_mono.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_128kbps_16khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.73 - PlayStop 144Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_144kbps_24khz_mono.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_144kbps_24khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+#[TestCase]
+#id 1021
+#Title Plugin.DRM.MP3.FH.74 - PlayStop 160Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_160kbps_16khz_mono.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_160kbps_16khz_mono.mp3
+#StopDelay 2500000
+#PlayDelay 10000000
+#[End_TestCase]
+
+
+
+
+
+//**************************
+//* Play Pause Play (ID 1022)
+//**************************
+
+[TestCase]
+id 1022
+Title Plugin.DRM.MP3.FH.75 - PlayPausePlay MP3 MPEG2 24KHz 160Kbps
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_160kbps_22.05khz_stereo.mp3
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.MP3.FH.76 - PlayPausePlay MP3 MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1022
+Title Plugin.DRM.MP3.FH.77 - PlayPausePlay MP3 MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_224kbps_48khz_stereo.mp3
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+
+//******************************
+//* Set Position - Play (ID 1024)
+//******************************
+
+[TestCase]
+id 1024
+Title Plugin.DRM.MP3.FH.78 - SetPosition_Play MP3 MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_224kbps_48khz_stereo.mp3
+Position 000 500 000
+ErrorRange 3 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.MP3.FH.79 - SetPosition_Play MP3 MPEG1 48KHz 96Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_96kbps_48khz_stereo.mp3
+Position 5 000 000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 1024
+Title Plugin.DRM.MP3.FH.80 - SetPosition_Play MP3 MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+Position 20 000 000
+ErrorRange 2 000 000
+[End_TestCase]
+
+
+//*******************************
+//* Play - Get Position (ID 1025)
+//*******************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+[TestCase]
+id 1025
+Title Plugin.DRM.MP3.FH.81 - GetPosition_Play MP3 MPEG2 24KHz 160Kbps
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_160kbps_22.05khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.MP3.FH.82 - GetPosition_Play MP3 MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1025
+Title Plugin.DRM.MP3.FH.83 - GetPosition_Play MP3 MPEG1 48KHz 96Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_96kbps_48khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+//******************************
+//* Play - Get Duration (ID 1026)
+//******************************
+
+[TestCase]
+id 1026
+Title Plugin.DRM.MP3.FH.84 - GetDuration MP3 MPEG1 48KHz 96Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_96kbps_48khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.MP3.FH.85 - GetDuration MP3 MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_224kbps_48khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1026
+Title Plugin.DRM.MP3.FH.86 - GetDuration MP3 MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+
+//********************************
+//* Play - Volume Ramping (ID 1023)
+//********************************
+
+[TestCase]
+id 1023
+Title Plugin.DRM.MP3.FH.87 - VolumeRamping MP3 MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+RampDuration 5 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.MP3.FH.88 - VolumeRamping MP3 MPEG2 24KHz 160Kbps
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_160kbps_22.05khz_stereo.mp3
+RampDuration 5 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1023
+Title Plugin.DRM.MP3.FH.89 - VolumeRamping MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_224kbps_48khz_stereo.mp3
+RampDuration 5 000 000
+Delay 1000000
+[End_TestCase]
+
+//*************************************
+//* Play - Set Playback Window (ID 1027)
+//*************************************
+
+[TestCase]
+id 1027
+Title Plugin.DRM.MP3.FH.90 - SetPlaybackWindow MP3 MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_224kbps_48khz_stereo.mp3
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.MP3.FH.91 - SetPlaybackWindow MP3 MPEG1 48KHz 96Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_96kbps_48khz_stereo.mp3
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1027
+Title Plugin.DRM.MP3.FH.92 - SetPlaybackWindow MP3 MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+StartPosition 3 000 000
+EndPosition   7 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+//****************************************
+//* Play - Delete Playback Window (ID 1028)
+//****************************************
+
+[TestCase]
+id 1028
+Title Plugin.DRM.MP3.FH.93 - DeletePlaybackWindow MP3 MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_224kbps_48khz_stereo.mp3
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.MP3.FH.94 - DeletePlaybackWindow MP3 MPEG1 48KHz 96Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_96kbps_48khz_stereo.mp3
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 1028
+Title Plugin.DRM.MP3.FH.95 - DeletePlaybackWindow MP3 MPEG2 24KHz 160Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_160kbps_22.05khz_stereo.mp3
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
--- a/mmaudio_pub/drm_audio_player_api/tsrc/DRMAudioPlay/src/DRMAudioPlay_core.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/mmaudio_pub/drm_audio_player_api/tsrc/DRMAudioPlay/src/DRMAudioPlay_core.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -655,6 +655,11 @@
 
 		TTimeIntervalMicroSeconds ExpectedDuration = TTimeIntervalMicroSeconds(I64INT(sndPlayer->GetDuration().Int64()) - I64INT(Position.Int64()));
 		iLogger->Log(_L("ExpectedDuration: %d") ,ExpectedDuration.Int64() );
+		
+		//if total duration less than the setposition value, set the expected duration to zero
+		//to handle test cases with setposition >   total duration.
+		if(ExpectedDuration.Int64() < 0)
+		    ExpectedDuration = TTimeIntervalMicroSeconds(I64INT(0));
 
 		if (  Abs(ExpectedDuration.Int64() - PerceivedDuration.Int64()) > ErrorRange.Int64() )
 			{	//Durations too different
--- a/mmlibs/mmfw/SecureDRM/src/Client/MmfDrmPluginServerProxy.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/mmlibs/mmfw/SecureDRM/src/Client/MmfDrmPluginServerProxy.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -38,7 +38,7 @@
 	TInt err = CreateSession(KDrmPluginServerName, TVersion(KMMFDRMPluginServerVersion,
 														KMMFDRMPluginServerMinorVersionNumber,
 														KMMFDRMPluginServerBuildVersionNumber));
-	if(err == KErrNotFound)
+	if(err == KErrNotFound || err == KErrServerTerminated)
 		{
 		// Server not running
 		// Construct the server binary name
@@ -46,7 +46,7 @@
 		RProcess server;
 
 		err = server.Create(KDrmPluginServerFileName, KNullDesC, serverUid);
-		if(err != KErrNone)
+		if(err != KErrNone && err != KErrAlreadyExists)
 			return err;
 		// Synchronise with the server
 		TRequestStatus reqStatus;
--- a/mmlibs/mmfw/src/Client/Video/mediaclientvideodisplaybody.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/mmlibs/mmfw/src/Client/Video/mediaclientvideodisplaybody.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -1313,20 +1313,29 @@
             // HDMI is preferred over AV Out.
         
             // update external display window data
-            iExtDisplayHandler->UpdateWindow();
-            TRect externalDisplayRect(TPoint(0, 0), iExtDisplayHandler->DisplaySizeInPixels());
-            (*iWindowsArrayPtr)[0].iClipRect = externalDisplayRect;
-            (*iWindowsArrayPtr)[0].iVideoExtent = externalDisplayRect;
-            TRAPD(err, (*iWindowsArrayPtr)[0].iAutoScaleType = ExtDisplayAutoScaleTypeL());
-            if(err == KErrNone)
+            if(iExtDisplayHandler)
                 {
-                RemoveBackgroundSurface(ETrue);
-                RedrawWindows(iCropRegion);
+                iExtDisplayHandler->UpdateWindow();
+                TRect externalDisplayRect(TPoint(0, 0), iExtDisplayHandler->DisplaySizeInPixels());
+                (*iWindowsArrayPtr)[0].iClipRect = externalDisplayRect;
+                (*iWindowsArrayPtr)[0].iVideoExtent = externalDisplayRect;
+                TRAPD(err, (*iWindowsArrayPtr)[0].iAutoScaleType = ExtDisplayAutoScaleTypeL());
+                if(err == KErrNone)
+                    {
+                    RemoveBackgroundSurface(ETrue);
+                    RedrawWindows(iCropRegion);
+                    }
+                else
+                    {
+                    // Not a lot we can do. Just keep as it is but external display output will be incorrect. 
+                    DEBUG_PRINTF2("CMediaClientVideoDisplayBody::MedcpcExtDisplayNotifyConnected ExtDisplayAutoScaleTypeL failed %d", err);
+                    }
                 }
             else
                 {
-                // Not a lot we can do. Just keep as it is but external display output will be incorrect. 
-                DEBUG_PRINTF2("CMediaClientVideoDisplayBody::MedcpcExtDisplayNotifyConnected ExtDisplayAutoScaleTypeL failed %d", err);
+                    // External display handler does not exist, probably because there was a failure during its earlier construction.
+                    // Ignore notification.  
+                    DEBUG_PRINTF("CMediaClientVideoDisplayBody::MedcpcExtDisplayNotifyConnected iExtDisplayHandler does not exist - switch not attempted!");
                 }
             }
 	    }
Binary file mmlibs/mmfw/tsrc/mmfintegrationtest/conf/externaldisplaytest_1020730b.txt has changed
--- a/mmlibs/mmfw/tsrc/mmfintegrationtest/group/videogroup/bld.inf	Thu Oct 07 23:44:30 2010 +0100
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/group/videogroup/bld.inf	Mon Oct 18 12:47:26 2010 +0100
@@ -24,4 +24,12 @@
 
 #include "../../vclnt/group/bld.inf"
 #include "../../vclntavi/group/bld.inf"
+#include "../../mmfmediaclienttestplugin/group/bld.inf"
 
+PRJ_TESTEXPORTS
+
+// centrep repo for external display tests
+../../conf/externaldisplaytest_1020730b.txt	/epoc32/release/winscw/udeb/z/private/10202be9/1020730b.txt
+../../conf/externaldisplaytest_1020730b.txt	/epoc32/release/winscw/urel/z/private/10202be9/1020730b.txt
+../../conf/externaldisplaytest_1020730b.txt	/epoc32/data/z/private/10202be9/1020730b.txt
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/mmfmediaclienttestplugin/group/bld.inf	Mon Oct 18 12:47:26 2010 +0100
@@ -0,0 +1,23 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+PRJ_TESTEXPORTS
+../rom/mmfmediaclientextdisplaytestprovider.iby   /epoc32/rom/include/mmfmediaclientextdisplaytestprovider.iby
+
+PRJ_TESTMMPFILES
+
+./mmfmediaclientextdisplaytestprovider.mmp
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/mmfmediaclienttestplugin/group/mmfmediaclientextdisplaytestprovider.mmp	Mon Oct 18 12:47:26 2010 +0100
@@ -0,0 +1,42 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+TARGET mmfmediaclientextdisplaytestprovider.dll
+CAPABILITY ALL -TCB
+TARGETTYPE plugin
+
+// ECom Dll recognition UID followed by the unique UID for this dll
+UID 0x10009D8D 0x20031C93
+VENDORID 0x70000001
+
+SOURCEPATH      ../src
+SOURCE          mmfmediaclientextdisplaytestprovider.cpp
+SOURCE          mmfmediaclientextdisplaytestfactory.cpp
+
+USERINCLUDE     ../src
+
+MW_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+START RESOURCE mmfmediaclientextdisplaytestprovider.rss
+TARGET mmfmediaclientextdisplaytestprovider.rsc
+END
+
+LIBRARY euser.lib
+Library	efsrv.lib
+Library mediaclientvideodisplay.lib
+Library ws32.lib
+Library bafl.lib
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/mmfmediaclienttestplugin/rom/mmfmediaclientextdisplaytestprovider.iby	Mon Oct 18 12:47:26 2010 +0100
@@ -0,0 +1,23 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef MMFMEDIACLIENTEXTDISPLAYTESTPROVIDER_IBY
+#define MMFMEDIACLIENTEXTDISPLAYTESTPROVIDER_IBY
+
+
+ECOM_PLUGIN(mmfmediaclientextdisplaytestprovider.dll,mmfmediaclientextdisplaytestprovider.rsc)
+
+#endif // MMFMEDIACLIENTEXTDISPLAYTESTPROVIDER_IBY
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/mmfmediaclienttestplugin/src/mmfmediaclientextdisplaytestfactory.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -0,0 +1,47 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <ecom/implementationproxy.h> 
+#include "mmfmediaclientextdisplaytestprovider.h"
+#include "mmfmediaclientextdisplaytestprovider.hrh"
+
+// __________________________________________________________________________
+// Exported proxy for instantiation method resolution
+// Define the interface UIDs
+
+/**
+*
+* ImplementationTable
+*
+*/
+const TImplementationProxy ImplementationTable[] =
+	{
+	IMPLEMENTATION_PROXY_ENTRY(KMediaDisplayExtTestProviderImplUid, CExtDisplayTestConnectionProvider::NewL)
+	};
+
+/**
+* ImplementationGroupProxy
+* @param aTableCount
+* @return "TImplementationProxy*"
+*/
+
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+	{
+	aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+	return ImplementationTable;
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/mmfmediaclienttestplugin/src/mmfmediaclientextdisplaytestprovider.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -0,0 +1,210 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "mmfmediaclientextdisplaytestprovider.h"
+#include "mmfmediaclientextdisplaytesttrace.h"
+
+#include <f32file.h>
+#include <bautils.h>
+
+static const TInt KExternalDisplayTestNumber = 0;
+
+_LIT(KInitExtDisplayHDMI, "C:\\vclntavi\\InitExtDisplayHDMI.txt");
+_LIT(KInitExtDisplayAnalog, "C:\\vclntavi\\InitExtDisplayAnalog.txt");
+_LIT(KConnectExtDisplayOverHDMI, "C:\\vclntavi\\ConnectExtDisplayOverHDMI.txt");
+_LIT(KConnectExtDisplayOverAnalog, "C:\\vclntavi\\ConnectExtDisplayOverAnalog.txt");
+_LIT(KDisconnectExtDisplay, "C:\\vclntavi\\DisconnectExtDisplay.txt");
+
+CExtDisplayTestConnectionProvider* CExtDisplayTestConnectionProvider::NewL()
+    {
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::NewL +++");
+    CExtDisplayTestConnectionProvider* self = new(ELeave) CExtDisplayTestConnectionProvider();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::NewL ---");
+    return self;
+    }
+
+CExtDisplayTestConnectionProvider::CExtDisplayTestConnectionProvider()
+    {
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::CExtDisplayTestConnectionProvider +++");
+    
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::CExtDisplayTestConnectionProvider ---");
+    }
+
+void CExtDisplayTestConnectionProvider::ConstructL()
+    {
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::ConstructL +++");
+    
+    ReadConnectionInfoL();
+    InitialiseConnectionChangeTimerL();
+   
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::ConstructL ---");
+    }
+
+CExtDisplayTestConnectionProvider::~CExtDisplayTestConnectionProvider()
+    {
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::~CExtDisplayTestConnectionProvider +++");
+    
+    if(iExtDisplayConnectionTimer != NULL)
+        {
+        iExtDisplayConnectionTimer->Cancel();
+        delete iExtDisplayConnectionTimer;
+        }
+    
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::~CExtDisplayTestConnectionProvider ---");
+    }
+
+TExtDisplayConnectionProviderConnType CExtDisplayTestConnectionProvider::ExtDisplayConnType()
+    {
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::ExtDisplayConnType +++");
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::ExtDisplayConnType ---");
+    return iInitialConnectionType;
+    }
+
+TInt CExtDisplayTestConnectionProvider::ExtDisplayId()
+    {
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::ExtDisplayId +++");
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::ExtDisplayId ---");
+    return KExternalDisplayTestNumber;
+    }
+
+void CExtDisplayTestConnectionProvider::SetExtDisplayConnectionProviderCallback(MExtDisplayConnectionProviderCallback& aCallback)
+    {
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::SetExtDisplayConnectionProviderCallback +++");
+    
+    iCallback = &aCallback;
+    
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::SetExtDisplayConnectionProviderCallback ---");
+    }
+
+void CExtDisplayTestConnectionProvider::ReadConnectionInfoL()
+    {
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::ReadConnectionInfoL +++");
+
+    RFs fs;
+    User::LeaveIfError(fs.Connect());
+    CleanupClosePushL(fs);
+
+    // determine initial connection type
+    if(BaflUtils::FileExists(fs, KInitExtDisplayHDMI))
+        {
+        iInitialConnectionType = EExtDisplayConnectionProviderConnTypeHdmi;
+        }
+    else if(BaflUtils::FileExists(fs, KInitExtDisplayAnalog))
+        {
+        iInitialConnectionType = EExtDisplayConnectionProviderConnTypeAnalog;
+        }
+    else
+        {
+        iInitialConnectionType = EExtDisplayConnectionProviderConnTypeDisconnected;
+        }
+
+    // determine change connection type
+    if(BaflUtils::FileExists(fs, KConnectExtDisplayOverHDMI))
+        {
+        iConnectionTypeToBeNotified = EExtDisplayConnectionProviderConnTypeHdmi;
+        }
+    else if(BaflUtils::FileExists(fs, KConnectExtDisplayOverAnalog))
+        {
+        iConnectionTypeToBeNotified = EExtDisplayConnectionProviderConnTypeAnalog;
+        }
+    else if(BaflUtils::FileExists(fs, KDisconnectExtDisplay))
+        {
+        iConnectionTypeToBeNotified = EExtDisplayConnectionProviderConnTypeDisconnected;
+        }
+    else
+        {
+        iConnectionTypeToBeNotified = iInitialConnectionType;
+        }
+
+    CleanupStack::PopAndDestroy(1, &fs);
+    
+    DEBUG_PRINTF3("CExtDisplayTestConnectionProvider::ReadConnectionInfoL Initial = %d, Next = %d",
+            iInitialConnectionType, iConnectionTypeToBeNotified);    
+    
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::ReadConnectionInfoL ---");
+    }
+
+void CExtDisplayTestConnectionProvider::InitialiseConnectionChangeTimerL()
+    {
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::InitialiseConnectionChangeTimerL +++");
+
+    if(iInitialConnectionType != iConnectionTypeToBeNotified)
+        {
+        iExtDisplayConnectionTimer = CExtDisplayConnectionTimer::NewL(this, 2000000);
+        iExtDisplayConnectionTimer->Start();
+        }
+    
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::InitialiseConnectionChangeTimerL ---");
+    }
+
+void CExtDisplayTestConnectionProvider::TimerExpired()
+    {
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::TimerExpired +++");
+
+    iCallback->MedcpcExtDisplayNotifyConnected(iConnectionTypeToBeNotified);
+    
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::TimerExpired ---");
+    }
+
+
+CExtDisplayConnectionTimer* CExtDisplayConnectionTimer::NewL(CExtDisplayTestConnectionProvider* aParent, TTimeIntervalMicroSeconds32 aInterval)
+    {
+    DEBUG_PRINTF("CExtDisplayConnectionTimer::NewL +++");
+
+    CExtDisplayConnectionTimer* self = new (ELeave) CExtDisplayConnectionTimer(aParent, aInterval);
+    CleanupStack::PushL(self);
+    self->ConstructL(); // inherited
+    CleanupStack::Pop(self);
+
+    DEBUG_PRINTF("CExtDisplayConnectionTimer::NewL ---");
+    return self;    
+    }
+    
+CExtDisplayConnectionTimer::CExtDisplayConnectionTimer(CExtDisplayTestConnectionProvider* aParent, TTimeIntervalMicroSeconds32 aInterval)
+    : CTimer(EPriorityNormal), iParent(aParent), iInterval(aInterval)
+    {
+    DEBUG_PRINTF("CExtDisplayConnectionTimer::CExtDisplayConnectionTimer +++");
+
+    CActiveScheduler::Add(this);
+    
+    DEBUG_PRINTF("CExtDisplayConnectionTimer::CExtDisplayConnectionTimer ---");
+    }
+    
+void CExtDisplayConnectionTimer::Start()
+    {
+    DEBUG_PRINTF("CExtDisplayConnectionTimer::Start +++");
+    
+    After(iInterval);
+    
+    DEBUG_PRINTF("CExtDisplayConnectionTimer::Start ---");
+    }
+
+void CExtDisplayConnectionTimer::RunL()
+    {        
+    DEBUG_PRINTF("CExtDisplayConnectionTimer::RunL +++");
+
+    iParent->TimerExpired();
+
+    DEBUG_PRINTF("CExtDisplayConnectionTimer::RunL ---");
+
+    }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/mmfmediaclienttestplugin/src/mmfmediaclientextdisplaytestprovider.h	Mon Oct 18 12:47:26 2010 +0100
@@ -0,0 +1,71 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#ifndef MMFMEDIACLIENTEXTDISPLAYTESTPROVIDER_H_
+#define MMFMEDIACLIENTEXTDISPLAYTESTPROVIDER_H_
+
+#include <mmf/plugin/mmfmediaclientextdisplayinterface.h>
+#include <e32base.h>
+
+class CExtDisplayTestConnectionProvider;
+
+class CExtDisplayConnectionTimer : public CTimer
+    {
+public:
+    static CExtDisplayConnectionTimer* NewL(CExtDisplayTestConnectionProvider* iParent, TTimeIntervalMicroSeconds32 aInterval);
+    void Start();
+
+private:
+    void RunL();
+    CExtDisplayConnectionTimer(CExtDisplayTestConnectionProvider* iParent, TTimeIntervalMicroSeconds32 aInterval);
+    
+private:
+    CExtDisplayTestConnectionProvider* iParent;
+    TTimeIntervalMicroSeconds32 iInterval;
+    };
+
+NONSHARABLE_CLASS(CExtDisplayTestConnectionProvider) : public CExtDisplayConnectionProviderInterface
+    {
+public:
+    static CExtDisplayTestConnectionProvider* NewL();
+    ~CExtDisplayTestConnectionProvider();
+    
+    // Used by CExtDisplayConnectionTimer
+    void TimerExpired();
+    
+    // CExtDisplayConnectionProviderInterface
+    void SetExtDisplayConnectionProviderCallback(MExtDisplayConnectionProviderCallback& aCallback);
+    TExtDisplayConnectionProviderConnType ExtDisplayConnType();
+    TInt ExtDisplayId();
+    
+private:
+    CExtDisplayTestConnectionProvider();
+    void ConstructL();
+    void ReadConnectionInfoL();
+    void InitialiseConnectionChangeTimerL();
+    
+private:
+    MExtDisplayConnectionProviderCallback* iCallback; // not owned
+    TExtDisplayConnectionProviderConnType iInitialConnectionType;
+    TExtDisplayConnectionProviderConnType iConnectionTypeToBeNotified;
+    CExtDisplayConnectionTimer* iExtDisplayConnectionTimer;
+    };
+
+#endif /* MMFMEDIACLIENTEXTDISPLAYTESTPROVIDER_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/mmfmediaclienttestplugin/src/mmfmediaclientextdisplaytestprovider.hrh	Mon Oct 18 12:47:26 2010 +0100
@@ -0,0 +1,22 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef MEDIACLIENTEXTDISPLAYTESTPROVIDER_HRH
+#define MEDIACLIENTEXTDISPLAYTESTPROVIDER_HRH
+
+#define KMediaDisplayExtTestProviderDllUid 0x20031C93
+#define KMediaDisplayExtTestProviderImplUid 0x20031C94
+
+#endif // MEDIACLIENTEXTDISPLAYTESTPROVIDER_HRH
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/mmfmediaclienttestplugin/src/mmfmediaclientextdisplaytestprovider.rss	Mon Oct 18 12:47:26 2010 +0100
@@ -0,0 +1,47 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "mmfmediaclientextdisplaytestprovider.hrh"
+#include <mmf/plugin/mmfmediaclientextdisplayinterface.hrh>
+#include <ecom/registryinfov2.rh>
+
+RESOURCE REGISTRY_INFO theInfo 
+    {
+    resource_format_version = RESOURCE_FORMAT_VERSION_2;
+    
+    dll_uid = KMediaDisplayExtTestProviderDllUid; //The DLL's 3rd UID.
+    interfaces = 
+        {
+        INTERFACE_INFO
+            {
+            interface_uid = KMediaDisplayExtProviderInterfaceUid; 
+            implementations = 
+                {
+                IMPLEMENTATION_INFO
+                    {
+                    implementation_uid = KMediaDisplayExtTestProviderImplUid; //UID for this provider
+                             // Same value as in implementation table.
+                    version_no = 1;
+                    display_name = "S60 External Test Display Provider"; //Human readable string for UI purposes.
+                    default_data = "S60 External Tests Display Provider";
+                    opaque_data = "";
+                    rom_only = 1;
+                    }
+                };
+            }
+        };
+		}
+
+    
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/mmfmediaclienttestplugin/src/mmfmediaclientextdisplaytesttrace.h	Mon Oct 18 12:47:26 2010 +0100
@@ -0,0 +1,40 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+//
+
+#ifndef MMFMEDIACLIENTEXTDISPLAYTESTTRACE_H_
+#define MMFMEDIACLIENTEXTDISPLAYTESTTRACE_H_
+
+#ifdef _DEBUG
+
+#include <e32debug.h>
+
+#define DEBUG_PRINTF(a) RDebug::Printf(a)
+#define DEBUG_PRINTF2(a,b) RDebug::Printf(a,b)
+#define DEBUG_PRINTF3(a,b,c) RDebug::Printf(a,b,c)
+#define DEBUG_PRINTF4(a,b,c,d) RDebug::Printf(a,b,c,d)
+#define DEBUG_PRINTF5(a, b, c, d, e) RDebug::Printf(a,b,c,d,e)
+
+#else // _DEBUG
+
+#define DEBUG_PRINTF(a)
+#define DEBUG_PRINTF2(a, b)
+#define DEBUG_PRINTF3(a, b, c)
+#define DEBUG_PRINTF4(a, b, c, d)
+#define DEBUG_PRINTF5(a, b, c, d, e)
+
+#endif // _DEBUG
+
+#endif // MMFMEDIACLIENTEXTDISPLAYTESTTRACE_H_
--- a/mmlibs/mmfw/tsrc/mmfintegrationtest/vclnt/inc/TSI_MMFVCLNT.h	Thu Oct 07 23:44:30 2010 +0100
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/vclnt/inc/TSI_MMFVCLNT.h	Mon Oct 18 12:47:26 2010 +0100
@@ -46,7 +46,7 @@
 // stolen from CMmfVideoTestControllerUIDs.hrh
 #define KMmfVideoTestControllerUid                   0x101F88D9
 
-// Uncomment this line for Jetstream project
+// Uncomment this line for specific project tests
 //#define JETSTREAM_TESTS  1 
 
 
--- a/mmlibs/mmfw/tsrc/mmfintegrationtest/vclnt/src/OpenFileByHandle0036.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/vclnt/src/OpenFileByHandle0036.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -74,7 +74,7 @@
 	
 	TInt failCount = 1;
 	TBool completed = EFalse;
-	iAllocTestStepResult = EPass; // TODO check?? assume pass
+	iAllocTestStepResult = EPass; // XXX check?? assume pass
 	TBool reachedEnd = EFalse; // Note: declare outside loop to help with debugging
 	for(;;)	
 		{
--- a/mmlibs/mmfw/tsrc/mmfintegrationtest/vclnt/src/OpenFileByHandle0524.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/vclnt/src/OpenFileByHandle0524.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -70,7 +70,7 @@
 	
 	TInt failCount = 1;
 	TBool completed = EFalse;
-	iAllocTestStepResult = EPass; // TODO check?? assume pass
+	iAllocTestStepResult = EPass; // XXX check?? assume pass
 	TBool reachedEnd = EFalse; // Note: declare outside loop to help with debugging
 	for(;;)	
 		{
--- a/mmlibs/mmfw/tsrc/mmfintegrationtest/vclnt/src/TestPlayer.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/vclnt/src/TestPlayer.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -109,7 +109,6 @@
 		CActiveScheduler::Start();
 		}
 
-	// Until JetStream
 #ifndef JETSTREAM_TESTS
 	if(iError == KErrNotSupported)
 		ret = EPass;
@@ -284,7 +283,6 @@
 		CActiveScheduler::Start();
 		}
 
-	// Until JetStream
 #ifndef JETSTREAM_TESTS
 	if(iError == KErrNotSupported)
 		ret = EPass;
@@ -421,7 +419,6 @@
 	INFO_PRINTF1(_L("CVideoPlayerUtility: Opening URL"));
 	CActiveScheduler::Start();
 
-	// Until JetStream
 #ifndef JETSTREAM_TESTS
 	if(iError == KErrNotSupported)
 		ret = EPass;
@@ -939,7 +936,7 @@
 		}
 	else
 		{
-		// TBD - arguments to be correctly set
+		// XXX - arguments to be correctly set
 		CWsScreenDevice sd;
 		RBlankWindow window;
 		TRect rect, clipRect;
--- a/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/group/tsi_mmf_vclntavi_excl_test.iby	Thu Oct 07 23:44:30 2010 +0100
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/group/tsi_mmf_vclntavi_excl_test.iby	Mon Oct 18 12:47:26 2010 +0100
@@ -23,6 +23,9 @@
 #include <vclntavi.iby>
 #endif
 
+// central repository repo file for external display testing
+data=ZPRIVATE\10202be9\1020730b.txt		private\10202be9\1020730b.txt // centrep repo
+
 //data files
 //exported using copydatatocf.bat and usbldr.pm, so removed from iby file
 
--- a/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/inc/testvideoplayer.h	Thu Oct 07 23:44:30 2010 +0100
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/inc/testvideoplayer.h	Mon Oct 18 12:47:26 2010 +0100
@@ -1,4 +1,4 @@
-// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -539,4 +539,27 @@
     RFile iFile;
     };
 
+/**
+ * Load and initialise a video file.
+ * Set external display control
+ *
+ * RTestVclntExternalDisplayControl
+ *
+ */
+class RTestVclntExternalDisplayControl : public RTestVclntAviPlayerStep
+    {
+public:
+    RTestVclntExternalDisplayControl(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, const TBool aPlay);
+    static RTestVclntExternalDisplayControl* NewL(const TDesC& aTestName,const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, const TBool aPlay);
+    virtual TVerdict DoTestStepL();
+    virtual TVerdict DoTestL(CVideoPlayerUtility* aVideo);
+    virtual void FsmL(TVclntTestPlayEvents aEventCode);
+    virtual TVerdict SetCacheSize();
+    TVerdict SetExternalDisplayControl();
+protected:
+    const TBool iPlay;
+    TTimeIntervalMicroSeconds iDuration;
+    TBool iExternalDisplayControl;
+    };
+
 #endif //__TESTVIDEOPLAYER_H__
--- a/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/inc/testvideoplayer2.h	Thu Oct 07 23:44:30 2010 +0100
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/inc/testvideoplayer2.h	Mon Oct 18 12:47:26 2010 +0100
@@ -1,4 +1,4 @@
-// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -51,6 +51,44 @@
     };
 #ifdef SYMBIAN_BUILD_GCE
 /**
+ * Test external display feature using CMediaClientVideoDisplay.
+ *
+ * RTestMediaClientExternalDisplay
+ *
+ */
+class RTestMediaClientExternalDisplay : public RTestVclnt2AviPlayerStep
+    {
+public:
+    static RTestMediaClientExternalDisplay* NewL(const TDesC& aTestName);
+        
+protected:    
+    virtual TVerdict DoTestStepPreambleL();
+    virtual TVerdict DoTestStepPostambleL();
+
+    virtual void FsmL(TVclntTestPlayEvents aEventCode);
+    
+    virtual void HandleIdleL();
+    virtual void HandleOpenCompleteL();
+    virtual void HandlePrepareCompleteL();
+    virtual void HandlePlayCompleteL();
+    
+    // called by HandlePrepareCompleteL to trigger the video playback
+    virtual void StartPlayback();    
+
+    // constructor    
+    RTestMediaClientExternalDisplay(const TDesC& aTestName);
+    
+    TVerdict SetInitialConnectionType();
+    TVerdict SetConnectionTypeNotification();
+    TVerdict SetExternalDisplayControl();
+    
+private:
+    TPtrC iInitialExternalDisplayTypeFilename;
+    TPtrC iNextExternalDisplayTypeFilename;
+    TBool iExternalDisplayControl;
+    };
+    
+/**
  * Test CMediaClientVideoDisplay.This test makes sure that the new dll 
  * (mediaclientvideodisplay) is loaded and used.
  *
@@ -79,7 +117,7 @@
     // constructor    
     RTestMediaClientVideoDisplay(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError);
     };
-    
+
 #endif
 
 
--- a/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/mmpfiles/tsi_mmf_vclntavi.mmp	Thu Oct 07 23:44:30 2010 +0100
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/mmpfiles/tsi_mmf_vclntavi.mmp	Mon Oct 18 12:47:26 2010 +0100
@@ -1,4 +1,4 @@
-// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -34,6 +34,7 @@
 SOURCE        testvideorecorder_par_audio.cpp
 #ifdef SYMBIAN_BUILD_GCE 
 SOURCE        testvideoplayer2.cpp
+SOURCE        testexternaldisplay.cpp
 SOURCE		  teststepvclnt2crp.cpp
 #endif
 #ifdef SYMBIAN_MULTIMEDIA_SUBTITLE_SUPPORT
--- a/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/scripts/tsi_mmf_vclntavi_play.script	Thu Oct 07 23:44:30 2010 +0100
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/scripts/tsi_mmf_vclntavi_play.script	Mon Oct 18 12:47:26 2010 +0100
@@ -446,3 +446,25 @@
 RUN_TEST_STEP 200000 TSI_MMF_VCLNTAVI MM-MMF-VCLNTAVI-I-1013-HP c:\vclntavi\video_avi.ini
 TEST_COMPLETE
 DELAY 5000
+
+//
+//!@SYMTestCaseID             MM-MMF-VCLNTAVI-I-1220
+//!@SYMTestCaseDesc           Play video file with external display control enabled  
+//!@SYMREQ                    REQ417-72064, SUBREQ417-73832
+//!@SYMTestPriority           1
+//!@SYMTestActions            Initialise video utility with a video file, enable external display control and play.
+//!@SYMTestExpectedResults    KErrNone
+RUN_TEST_STEP 200000 TSI_MMF_VCLNTAVI MM-MMF-VCLNTAVI-I-1220 c:\vclntavi\video_avi.ini
+TEST_COMPLETE
+DELAY 10000
+
+//
+//!@SYMTestCaseID             MM-MMF-VCLNTAVI-I-1221
+//!@SYMTestCaseDesc           Play video file with external display control disabled  
+//!@SYMREQ                    REQ417-72064, SUBREQ417-73832
+//!@SYMTestPriority           1
+//!@SYMTestActions            Initialise video utility with a video file, disabled external display control and play.
+//!@SYMTestExpectedResults    KErrNone
+RUN_TEST_STEP 200000 TSI_MMF_VCLNTAVI MM-MMF-VCLNTAVI-I-1221 c:\vclntavi\video_avi.ini
+TEST_COMPLETE
+DELAY 10000
--- a/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/scripts/tsi_mmf_vclntavi_surf.script	Thu Oct 07 23:44:30 2010 +0100
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/scripts/tsi_mmf_vclntavi_surf.script	Mon Oct 18 12:47:26 2010 +0100
@@ -1,4 +1,4 @@
-// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -272,6 +272,228 @@
 RUN_TEST_STEP 200000 TSI_MMF_VCLNTAVI MM-MMF-VCLNTAVI-I-0435 c:\vclntavi\video_avi.ini
 TEST_COMPLETE
 
+//!@SYMTestCaseID             MM-MMF-VCLNTAVI-I-1201
+//!@SYMTestCaseDesc           Test HDMI external display.
+//!@SYMREQ                    REQ417-72064, SUBREQ417-73832
+//!@SYMTestPriority           1
+//!@SYMTestActions            Configure external display test plugin to indicate HDMI display is connected.
+//!@                          HDMI is mapped to display 0 as no display 1 is available.
+//!@                          Set exetrnal display to be enabled.
+//!@                          Initialise video utility with a video file and play.
+//!@SYMTestExpectedResults    KErrNone
+RUN_TEST_STEP 200000 TSI_MMF_VCLNTAVI MM-MMF-VCLNTAVI-I-1201 c:\vclntavi\video_avi.ini
+TEST_COMPLETE
+
+//!@SYMTestCaseID             MM-MMF-VCLNTAVI-I-1202
+//!@SYMTestCaseDesc           Test HDMI external display.
+//!@SYMREQ                    REQ417-72064, SUBREQ417-73832
+//!@SYMTestPriority           1
+//!@SYMTestActions            Configure external display test plugin to indicate HDMI display is connected.
+//!@                          HDMI is mapped to display 0 as no display 1 is available.
+//!@                          Set exetrnal display to be disabled.
+//!@                          Initialise video utility with a video file and play.
+//!@SYMTestExpectedResults    KErrNone
+RUN_TEST_STEP 200000 TSI_MMF_VCLNTAVI MM-MMF-VCLNTAVI-I-1202 c:\vclntavi\video_avi.ini
+TEST_COMPLETE
+
+//!@SYMTestCaseID             MM-MMF-VCLNTAVI-I-1203
+//!@SYMTestCaseDesc           Test Analog (aka. composite or TV Out) external display.
+//!@SYMREQ                    REQ417-72064, SUBREQ417-73832
+//!@SYMTestPriority           1
+//!@SYMTestActions            Configure external display test plugin to indicate analog display is connected.
+//!@                          Analog is mapped to display 0 as no display 1 is available.
+//!@                          Set exetrnal display to be enabled.
+//!@                          Initialise video utility with a video file and play.
+//!@                          Switch to analog is not expected for this test as cenrep setting is unavailable.
+//!@SYMTestExpectedResults    KErrNone
+RUN_TEST_STEP 200000 TSI_MMF_VCLNTAVI MM-MMF-VCLNTAVI-I-1203 c:\vclntavi\video_avi.ini
+TEST_COMPLETE
+
+//!@SYMTestCaseID             MM-MMF-VCLNTAVI-I-1204
+//!@SYMTestCaseDesc           Test Analog (aka. composite or TV Out) external display.
+//!@SYMREQ                    REQ417-72064, SUBREQ417-73832
+//!@SYMTestPriority           1
+//!@SYMTestActions            Configure external display test plugin to indicate analog display is connected.
+//!@                          Analog is mapped to display 0 as no display 1 is available.
+//!@                          Set exetrnal display to be disabled.
+//!@                          Initialise video utility with a video file and play.
+//!@                          Switch to analog is not expected for this test as cenrep setting is unavailable.
+//!@SYMTestExpectedResults    KErrNone
+RUN_TEST_STEP 200000 TSI_MMF_VCLNTAVI MM-MMF-VCLNTAVI-I-1204 c:\vclntavi\video_avi.ini
+TEST_COMPLETE
+
+//!@SYMTestCaseID             MM-MMF-VCLNTAVI-I-1205
+//!@SYMTestCaseDesc           Test Switch from disconnected external display to HDMI external display.
+//!@SYMREQ                    REQ417-72064, SUBREQ417-73832
+//!@SYMTestPriority           1
+//!@SYMTestActions            Configure external display test plugin to indicate external display is disconnected.
+//!@                          Set exetrnal display to be enabled.
+//!@                          Initialise video utility with a video file and play.
+//!@                          Configure external display test plugin to indicate HDMI external display has been
+//!@                          connected.
+//!@                          HDMI is mapped to display 0 as no display 1 is available.
+//!@SYMTestExpectedResults    KErrNone
+RUN_TEST_STEP 200000 TSI_MMF_VCLNTAVI MM-MMF-VCLNTAVI-I-1205 c:\vclntavi\video_avi.ini
+TEST_COMPLETE
+
+//!@SYMTestCaseID             MM-MMF-VCLNTAVI-I-1206
+//!@SYMTestCaseDesc           Test Switch from disconnected external display to HDMI external display.
+//!@SYMREQ                    REQ417-72064, SUBREQ417-73832
+//!@SYMTestPriority           1
+//!@SYMTestActions            Configure external display test plugin to indicate external display is disconnected.
+//!@                          Set exetrnal display to be disabled.
+//!@                          Initialise video utility with a video file and play.
+//!@                          Configure external display test plugin to indicate HDMI external display has been
+//!@                          connected.
+//!@                          HDMI is mapped to display 0 as no display 1 is available.
+//!@SYMTestExpectedResults    KErrNone
+RUN_TEST_STEP 200000 TSI_MMF_VCLNTAVI MM-MMF-VCLNTAVI-I-1206 c:\vclntavi\video_avi.ini
+TEST_COMPLETE
+
+//!@SYMTestCaseID             MM-MMF-VCLNTAVI-I-1207
+//!@SYMTestCaseDesc           Test Switch from HDMI external display to disconnected external display.
+//!@SYMREQ                    REQ417-72064, SUBREQ417-73832
+//!@SYMTestPriority           1
+//!@SYMTestActions            Configure external display test plugin to indicate HDMI display is connected.
+//!@                          HDMI is mapped to display 0 as no display 1 is available.
+//!@                          Set exetrnal display to be enabled.
+//!@                          Initialise video utility with a video file and play.
+//!@                          Configure external display test plugin to indicate external display has been
+//!@                          disconnected.
+//!@SYMTestExpectedResults    KErrNone
+RUN_TEST_STEP 200000 TSI_MMF_VCLNTAVI MM-MMF-VCLNTAVI-I-1207 c:\vclntavi\video_avi.ini
+TEST_COMPLETE
+
+//!@SYMTestCaseID             MM-MMF-VCLNTAVI-I-1208
+//!@SYMTestCaseDesc           Test Switch from HDMI external display to disconnected external display.
+//!@SYMREQ                    REQ417-72064, SUBREQ417-73832
+//!@SYMTestPriority           1
+//!@SYMTestActions            Configure external display test plugin to indicate HDMI display is connected.
+//!@                          HDMI is mapped to display 0 as no display 1 is available.
+//!@                          Set external display to be disabled.
+//!@                          Initialise video utility with a video file and play.
+//!@                          Configure external display test plugin to indicate external display has been
+//!@                          disconnected.
+//!@SYMTestExpectedResults    KErrNone
+RUN_TEST_STEP 200000 TSI_MMF_VCLNTAVI MM-MMF-VCLNTAVI-I-1208 c:\vclntavi\video_avi.ini
+TEST_COMPLETE
+
+//!@SYMTestCaseID             MM-MMF-VCLNTAVI-I-1209
+//!@SYMTestCaseDesc           Test Switch from disconnected external display to Analog external display.
+//!@SYMREQ                    REQ417-72064, SUBREQ417-73832
+//!@SYMTestPriority           1
+//!@SYMTestActions            Configure external display test plugin to indicate external display is disconnected.
+//!@                          Set external display to be enabled.
+//!@                          Initialise video utility with a video file and play.
+//!@                          Configure external display test plugin to indicate Analog external display has been
+//!@                          connected.
+//!@                          Analog is mapped to display 0 as no display 1 is available.
+//!@SYMTestExpectedResults    KErrNone
+RUN_TEST_STEP 200000 TSI_MMF_VCLNTAVI MM-MMF-VCLNTAVI-I-1209 c:\vclntavi\video_avi.ini
+TEST_COMPLETE
+
+//!@SYMTestCaseID             MM-MMF-VCLNTAVI-I-1210
+//!@SYMTestCaseDesc           Test Switch from disconnected external display to Analog external display.
+//!@SYMREQ                    REQ417-72064, SUBREQ417-73832
+//!@SYMTestPriority           1
+//!@SYMTestActions            Configure external display test plugin to indicate external display is disconnected.
+//!@                          Set external display to be disabled.
+//!@                          Initialise video utility with a video file and play.
+//!@                          Configure external display test plugin to indicate Analog external display has been
+//!@                          connected.
+//!@                          Analog is mapped to display 0 as no display 1 is available.
+//!@SYMTestExpectedResults    KErrNone
+RUN_TEST_STEP 200000 TSI_MMF_VCLNTAVI MM-MMF-VCLNTAVI-I-1210 c:\vclntavi\video_avi.ini
+TEST_COMPLETE
+
+//!@SYMTestCaseID             MM-MMF-VCLNTAVI-I-1211
+//!@SYMTestCaseDesc           Test Switch from Analog external display to disconnected external display.
+//!@SYMREQ                    REQ417-72064, SUBREQ417-73832
+//!@SYMTestPriority           1
+//!@SYMTestActions            Configure external display test plugin to indicate Analog display is connected.
+//!@                          Analog is mapped to display 0 as no display 1 is available.
+//!@                          Set external display to be enabled.
+//!@                          Initialise video utility with a video file and play.
+//!@                          Configure external display test plugin to indicate external display has been
+//!@                          disconnected.
+//!@SYMTestExpectedResults    KErrNone
+RUN_TEST_STEP 200000 TSI_MMF_VCLNTAVI MM-MMF-VCLNTAVI-I-1211 c:\vclntavi\video_avi.ini
+TEST_COMPLETE
+
+//!@SYMTestCaseID             MM-MMF-VCLNTAVI-I-1212
+//!@SYMTestCaseDesc           Test Switch from Analog external display to disconnected external display.
+//!@SYMREQ                    REQ417-72064, SUBREQ417-73832
+//!@SYMTestPriority           1
+//!@SYMTestActions            Configure external display test plugin to indicate Analog display is connected.
+//!@                          Analog is mapped to display 0 as no display 1 is available.
+//!@                          Set external display to be disabled.
+//!@                          Initialise video utility with a video file and play.
+//!@                          Configure external display test plugin to indicate external display has been
+//!@                          disconnected.
+//!@SYMTestExpectedResults    KErrNone
+RUN_TEST_STEP 200000 TSI_MMF_VCLNTAVI MM-MMF-VCLNTAVI-I-1212 c:\vclntavi\video_avi.ini
+TEST_COMPLETE
+
+//!@SYMTestCaseID             MM-MMF-VCLNTAVI-I-1213
+//!@SYMTestCaseDesc           Test Switch from HDMI external display to Analog external display.
+//!@SYMREQ                    REQ417-72064, SUBREQ417-73832
+//!@SYMTestPriority           1
+//!@SYMTestActions            Configure external display test plugin to indicate HDMI display is connected.
+//!@                          HDMI is mapped to display 0 as no display 1 is available.
+//!@                          Set external display to be enabled.
+//!@                          Initialise video utility with a video file and play.
+//!@                          Configure external display test plugin to indicate HDMI external display has been
+//!@                          disconnected and Analog external display has been connected.
+//!@                          Analog is mapped to display 0 as no display 1 is available.
+//!@SYMTestExpectedResults    KErrNone
+RUN_TEST_STEP 200000 TSI_MMF_VCLNTAVI MM-MMF-VCLNTAVI-I-1213 c:\vclntavi\video_avi.ini
+TEST_COMPLETE
+
+//!@SYMTestCaseID             MM-MMF-VCLNTAVI-I-1214
+//!@SYMTestCaseDesc           Test Switch from HDMI external display to Analog external display.
+//!@SYMREQ                    REQ417-72064, SUBREQ417-73832
+//!@SYMTestPriority           1
+//!@SYMTestActions            Configure external display test plugin to indicate HDMI display is connected.
+//!@                          HDMI is mapped to display 0 as no display 1 is available.
+//!@                          Set external display to be disabled.
+//!@                          Initialise video utility with a video file and play.
+//!@                          Configure external display test plugin to indicate HDMI external display has been
+//!@                          disconnected and Analog external display has been connected.
+//!@                          Analog is mapped to display 0 as no display 1 is available.
+//!@SYMTestExpectedResults    KErrNone
+RUN_TEST_STEP 200000 TSI_MMF_VCLNTAVI MM-MMF-VCLNTAVI-I-1214 c:\vclntavi\video_avi.ini
+TEST_COMPLETE
+
+//!@SYMTestCaseID             MM-MMF-VCLNTAVI-I-1215
+//!@SYMTestCaseDesc           Test Switch from Analog external display to HDMI external display.
+//!@SYMREQ                    REQ417-72064, SUBREQ417-73832
+//!@SYMTestPriority           1
+//!@SYMTestActions            Configure external display test plugin to indicate Analog display is connected.
+//!@                          Analog is mapped to display 0 as no display 1 is available.
+//!@                          Set external display to be enabled.
+//!@                          Initialise video utility with a video file and play.
+//!@                          Configure external display test plugin to indicate Analog external display has been
+//!@                          disconnected and HDMI external display has been connected.
+//!@                          HDMI is mapped to display 0 as no display 1 is available.
+//!@SYMTestExpectedResults    KErrNone
+RUN_TEST_STEP 200000 TSI_MMF_VCLNTAVI MM-MMF-VCLNTAVI-I-1215 c:\vclntavi\video_avi.ini
+TEST_COMPLETE
+
+//!@SYMTestCaseID             MM-MMF-VCLNTAVI-I-1216
+//!@SYMTestCaseDesc           Test Switch from Analog external display to HDMI external display.
+//!@SYMREQ                    REQ417-72064, SUBREQ417-73832
+//!@SYMTestPriority           1
+//!@SYMTestActions            Configure external display test plugin to indicate Analog display is connected.
+//!@                          Analog is mapped to display 0 as no display 1 is available.
+//!@                          Set external display to be disabled.
+//!@                          Initialise video utility with a video file and play.
+//!@                          Configure external display test plugin to indicate Analog external display has been
+//!@                          disconnected and HDMI external display has been connected.
+//!@                          HDMI is mapped to display 0 as no display 1 is available.
+//!@SYMTestExpectedResults    KErrNone
+RUN_TEST_STEP 200000 TSI_MMF_VCLNTAVI MM-MMF-VCLNTAVI-I-1216 c:\vclntavi\video_avi.ini
+TEST_COMPLETE
+
 /////////////////////////////// NEGATIVE TESTS /////////////////////////////////////
 
 //!@SYMTestCaseID             MM-MMF-VCLNTAVI-I-0500
--- a/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/scripts/video_avi.ini	Thu Oct 07 23:44:30 2010 +0100
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/scripts/video_avi.ini	Mon Oct 18 12:47:26 2010 +0100
@@ -44,6 +44,120 @@
 subtitleCorrupt = \vclntavi\xvid_subtitle_corrupt.avi
 binarycomp = false
 
+[MM-MMF-VCLNTAVI-I-1201]
+filename = \vclntavi\aud_vid.avi
+binarycomp = false
+initialExternalDisplayType = c:\vclntavi\InitExtDisplayHDMI.txt
+externalDisplayControl = true
+
+[MM-MMF-VCLNTAVI-I-1202]
+filename = \vclntavi\aud_vid.avi
+binarycomp = false
+initialExternalDisplayType = c:\vclntavi\InitExtDisplayHDMI.txt
+externalDisplayControl = false
+
+[MM-MMF-VCLNTAVI-I-1203]
+filename = \vclntavi\aud_vid.avi
+binarycomp = false
+initialExternalDisplayType = c:\vclntavi\InitExtDisplayAnalog.txt
+externalDisplayControl = true
+
+[MM-MMF-VCLNTAVI-I-1204]
+filename = \vclntavi\aud_vid.avi
+binarycomp = false
+initialExternalDisplayType = c:\vclntavi\InitExtDisplayAnalog.txt
+externalDisplayControl = false
+
+[MM-MMF-VCLNTAVI-I-1205]
+filename = \vclntavi\aud_vid.avi
+binarycomp = false
+nextExternalDisplayType = c:\vclntavi\ConnectExtDisplayOverHDMI.txt
+externalDisplayControl = true
+
+[MM-MMF-VCLNTAVI-I-1206]
+filename = \vclntavi\aud_vid.avi
+binarycomp = false
+nextExternalDisplayType = c:\vclntavi\ConnectExtDisplayOverHDMI.txt
+externalDisplayControl = false
+
+[MM-MMF-VCLNTAVI-I-1207]
+filename = \vclntavi\aud_vid.avi
+binarycomp = false
+initialExternalDisplayType = c:\vclntavi\InitExtDisplayHDMI.txt
+nextExternalDisplayType = c:\vclntavi\DisconnectExtDisplay.txt
+externalDisplayControl = true
+
+[MM-MMF-VCLNTAVI-I-1208]
+filename = \vclntavi\aud_vid.avi
+binarycomp = false
+initialExternalDisplayType = c:\vclntavi\InitExtDisplayHDMI.txt
+nextExternalDisplayType = c:\vclntavi\DisconnectExtDisplay.txt
+externalDisplayControl = false
+
+[MM-MMF-VCLNTAVI-I-1209]
+filename = \vclntavi\aud_vid.avi
+binarycomp = false
+nextExternalDisplayType = c:\vclntavi\ConnectExtDisplayOverAnalog.txt
+externalDisplayControl = true
+
+[MM-MMF-VCLNTAVI-I-1210]
+filename = \vclntavi\aud_vid.avi
+binarycomp = false
+nextExternalDisplayType = c:\vclntavi\ConnectExtDisplayOverAnalog.txt
+externalDisplayControl = false
+
+[MM-MMF-VCLNTAVI-I-1211]
+filename = \vclntavi\aud_vid.avi
+binarycomp = false
+initialExternalDisplayType = c:\vclntavi\InitExtDisplayAnalog.txt
+nextExternalDisplayType = c:\vclntavi\DisconnectExtDisplay.txt
+externalDisplayControl = true
+
+[MM-MMF-VCLNTAVI-I-1212]
+filename = \vclntavi\aud_vid.avi
+binarycomp = false
+initialExternalDisplayType = c:\vclntavi\InitExtDisplayAnalog.txt
+nextExternalDisplayType = c:\vclntavi\DisconnectExtDisplay.txt
+externalDisplayControl = false
+
+[MM-MMF-VCLNTAVI-I-1213]
+filename = \vclntavi\aud_vid.avi
+binarycomp = false
+initialExternalDisplayType = c:\vclntavi\InitExtDisplayHDMI.txt
+nextExternalDisplayType = c:\vclntavi\ConnectExtDisplayOverAnalog.txt
+externalDisplayControl = true
+
+[MM-MMF-VCLNTAVI-I-1214]
+filename = \vclntavi\aud_vid.avi
+binarycomp = false
+initialExternalDisplayType = c:\vclntavi\InitExtDisplayHDMI.txt
+nextExternalDisplayType = c:\vclntavi\ConnectExtDisplayOverAnalog.txt
+externalDisplayControl = false
+
+[MM-MMF-VCLNTAVI-I-1215]
+filename = \vclntavi\aud_vid.avi
+binarycomp = false
+initialExternalDisplayType = c:\vclntavi\InitExtDisplayAnalog.txt
+nextExternalDisplayType = c:\vclntavi\ConnectExtDisplayOverHDMI.txt
+externalDisplayControl = true
+
+[MM-MMF-VCLNTAVI-I-1216]
+filename = \vclntavi\aud_vid.avi
+binarycomp = false
+initialExternalDisplayType = c:\vclntavi\InitExtDisplayAnalog.txt
+nextExternalDisplayType = c:\vclntavi\ConnectExtDisplayOverHDMI.txt
+externalDisplayControl = false
+
+[MM-MMF-VCLNTAVI-I-1220]
+filename = \vclntavi\aud_vid.avi
+externalDisplayControl = true
+binarycomp = false
+
+[MM-MMF-VCLNTAVI-I-1221]
+filename = \vclntavi\aud_vid.avi
+externalDisplayControl = false
+binarycomp = false
+
 [MM-MMF-VCLNTAVI-I-0700]
 filename = \vclntavi\xvidonly.avi
 binarycomp = false
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/src/testexternaldisplay.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -0,0 +1,314 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+ 
+#include "testvideoplayer2.h"
+#include <bautils.h>
+
+// file names used to control plugin through their existence. If any are new files are added make sure
+// they are also added to TidyFiles().
+_LIT(KInitExtDisplayHDMI, "c:\\vclntavi\\InitExtDisplayHDMI.txt");
+_LIT(KInitExtDisplayAnalog, "c:\\vclntavi\\InitExtDisplayAnalog.txt");
+_LIT(KConnectExtDisplayOverHDMI, "c:\\vclntavi\\ConnectExtDisplayOverHDMI.txt");
+_LIT(KConnectExtDisplayOverAnalog, "c:\\vclntavi\\ConnectExtDisplayOverAnalog.txt");
+_LIT(KDisconnectExtDisplay, "c:\\vclntavi\\DisconnectExtDisplay.txt");
+void TidyFiles()
+    {
+    RFs fs;
+    TInt error= fs.Connect();
+    if(error == KErrNone)
+        {
+        if(BaflUtils::FileExists(fs, KInitExtDisplayHDMI))
+            {
+            fs.Delete(KInitExtDisplayHDMI);
+            }
+        if(BaflUtils::FileExists(fs, KInitExtDisplayAnalog))
+            {
+            fs.Delete(KInitExtDisplayAnalog);
+            }
+        if(BaflUtils::FileExists(fs, KConnectExtDisplayOverHDMI))
+            {
+            fs.Delete(KConnectExtDisplayOverHDMI);
+            }
+        if(BaflUtils::FileExists(fs, KConnectExtDisplayOverAnalog))
+            {
+            fs.Delete(KConnectExtDisplayOverAnalog);
+            }
+        if(BaflUtils::FileExists(fs, KDisconnectExtDisplay))
+            {
+            fs.Delete(KDisconnectExtDisplay);
+            }
+        }
+}
+
+_LIT(KFilename, "filename");
+
+//
+// RTestMediaClientExternalDisplay
+//
+
+/**
+ * RTestMediaClientExternalDisplay::Constructor
+ */
+RTestMediaClientExternalDisplay::RTestMediaClientExternalDisplay(const TDesC& aTestName)
+    : RTestVclnt2AviPlayerStep(aTestName, aTestName, KFilename, KErrNone)
+    {
+    }
+
+/**
+ * RTestMediaClientExternalDisplay::NewL
+ */
+RTestMediaClientExternalDisplay* RTestMediaClientExternalDisplay::NewL(const TDesC& aTestName)
+    {
+    RTestMediaClientExternalDisplay* self = new (ELeave) RTestMediaClientExternalDisplay(aTestName);
+    return self;
+    }
+
+/**
+ * RTestMediaClientExternalDisplay::DoTestStepPreambleL
+ */
+TVerdict RTestMediaClientExternalDisplay::DoTestStepPreambleL()
+    {
+    TidyFiles();
+
+    TVerdict verdict = SetInitialConnectionType();
+    if(verdict != EPass)
+        {
+        return verdict;
+        }
+
+    verdict = SetConnectionTypeNotification();
+    if(verdict != EPass)
+        {
+        return verdict;
+        }
+
+    verdict = SetExternalDisplayControl();
+    if(verdict != EPass)
+        {
+        return verdict;
+        }
+    
+    return RTestVclnt2AviPlayerStep::DoTestStepPreambleL();
+    }
+
+TVerdict RTestMediaClientExternalDisplay::SetInitialConnectionType()
+    {
+    // Create a file as named in ini file. When external display test plugin is constructed it
+    // checks to see what filenames exist and sets inital connection type as appropriate.
+    // If string does not exist in ini file then plugin initialises with exetrnal display disconnected.
+    if(GetStringFromConfig(iSectName, _L("initialExternalDisplayType"), iInitialExternalDisplayTypeFilename))
+        {
+        if(iInitialExternalDisplayTypeFilename.Compare(KInitExtDisplayHDMI) == 0)
+            {
+            INFO_PRINTF2(_L("Creating %S"), &iInitialExternalDisplayTypeFilename);
+            INFO_PRINTF1(_L("External HDMI Display initially connected"));
+            }
+        else if(iInitialExternalDisplayTypeFilename.Compare(KInitExtDisplayAnalog) == 0)
+            {
+            INFO_PRINTF2(_L("Creating %S"), &iInitialExternalDisplayTypeFilename);
+            INFO_PRINTF1(_L("External Analog Display initially connected"));
+            }
+        else
+            {
+            INFO_PRINTF2(_L("External display setting unkown, %S"), &iInitialExternalDisplayTypeFilename);
+            return EInconclusive;
+            }
+
+        // connect to file system and open file
+        RFs fs;
+        if(fs.Connect() != KErrNone)
+            {
+            return EInconclusive;
+            }
+        RFile file;
+        if(file.Replace(fs, iInitialExternalDisplayTypeFilename, EFileWrite) != KErrNone)
+            {
+            fs.Close();
+            return EInconclusive;
+            }
+        
+        file.Close();
+        fs.Close();
+        }
+    else
+        {
+        INFO_PRINTF1(_L("External Display initially disconnected!"));
+        }
+    
+    return EPass;
+    }
+
+TVerdict RTestMediaClientExternalDisplay::SetConnectionTypeNotification()
+    {
+    // Now create file for the next connection type. This is used to emit a connect or disocnnect notification
+    // after a few seconds. Note that if the initial and next connection types are the same the external
+    // display test plugin will not emit a notification.    
+    if(GetStringFromConfig(iSectName, _L("nextExternalDisplayType"), iNextExternalDisplayTypeFilename))
+        {
+        if(iNextExternalDisplayTypeFilename.Compare(KConnectExtDisplayOverHDMI) == 0)
+            {
+            INFO_PRINTF2(_L("Creating %S"), &iNextExternalDisplayTypeFilename);
+            INFO_PRINTF1(_L("External HDMI Display to be connected and notification emitted"));
+            }
+        else if(iNextExternalDisplayTypeFilename.Compare(KConnectExtDisplayOverAnalog) == 0)
+            {
+            INFO_PRINTF2(_L("Creating %S"), &iNextExternalDisplayTypeFilename);
+            INFO_PRINTF1(_L("External Analog Display to be connected and notification emitted"));
+            }
+        else if(iNextExternalDisplayTypeFilename.Compare(KDisconnectExtDisplay) == 0)
+            {
+            INFO_PRINTF2(_L("Creating %S"), &iNextExternalDisplayTypeFilename);
+            INFO_PRINTF1(_L("External Display to be disconnected and notification emitted"));
+            }
+        else
+            {
+            INFO_PRINTF2(_L("External display switch setting unkown, %S"), &iNextExternalDisplayTypeFilename);
+            return EInconclusive;
+            }
+
+        // connect to file system and open file
+        RFs fs;
+        if(fs.Connect() != KErrNone)
+            {
+            return EInconclusive;
+            }
+        RFile file;
+        if(file.Replace(fs, iNextExternalDisplayTypeFilename, EFileWrite) != KErrNone)
+            {
+            fs.Close();
+            return EInconclusive;
+            }
+        
+        file.Close();
+        fs.Close();
+        }
+    else
+        {
+        INFO_PRINTF1(_L("No External Display switching requested!"));
+        }
+    
+    return EPass;
+    }
+
+TVerdict RTestMediaClientExternalDisplay::SetExternalDisplayControl()
+    {
+    if(GetBoolFromConfig(iSectName, _L("externalDisplayControl"), iExternalDisplayControl))
+        {
+        INFO_PRINTF2(_L("External display switch control set to %d"), iExternalDisplayControl);
+        }
+    else
+        {
+        return EInconclusive;
+        }
+    return EPass;
+    }
+    
+/**
+ * RTestMediaClientExternalDisplay::DoTestStepPostambleL
+ */
+TVerdict RTestMediaClientExternalDisplay::DoTestStepPostambleL()
+    {
+    RFs fs;
+    // connect to file system and open file
+    User::LeaveIfError(fs.Connect());
+    CleanupClosePushL(fs);
+    
+    if((iInitialExternalDisplayTypeFilename.Length()!= 0) && BaflUtils::FileExists(fs, iInitialExternalDisplayTypeFilename))
+        {
+        User::LeaveIfError(fs.Delete(iInitialExternalDisplayTypeFilename));
+        }
+
+    if((iNextExternalDisplayTypeFilename.Length()!= 0) && BaflUtils::FileExists(fs, iNextExternalDisplayTypeFilename))
+        {
+        User::LeaveIfError(fs.Delete(iNextExternalDisplayTypeFilename));
+        }
+    
+    CleanupStack::PopAndDestroy(1); //fs
+    
+    return RTestVclnt2AviPlayerStep::DoTestStepPostambleL();        
+    }
+
+/**
+ * RTestMediaClientExternalDisplay::FsmL
+ */
+void RTestMediaClientExternalDisplay::FsmL(TVclntTestPlayEvents aEventCode)
+    {
+    if (FsmCheck(aEventCode))
+        {
+        switch (aEventCode)
+            {
+            case EVPIdle:
+                HandleIdleL();
+                break;
+                
+            case EVPOpenComplete:
+                HandleOpenCompleteL();
+                break;
+                
+            case EVPPrepareComplete:                    
+                HandlePrepareCompleteL();
+                break;
+                
+            case EVPPlayComplete:
+                HandlePlayCompleteL();
+                break;
+            }
+        }
+    }
+    
+void RTestMediaClientExternalDisplay::HandleIdleL()
+    {
+    // Open iVideoPlayer
+    INFO_PRINTF2(_L("iVideoPlayer2->OpenFileL() %S"), &iFilename);
+    iVideoPlayer2->OpenFileL(iFilename, KMmfTestAviPlayControllerUid);
+    PrepareState(EVPOpenComplete, KErrNone);
+    }
+
+void RTestMediaClientExternalDisplay::HandleOpenCompleteL()
+    {
+    // Prepare iVideoPlayer2
+    INFO_PRINTF1(_L("iVideoPlayer2->Prepare()"));
+    iVideoPlayer2->Prepare();
+    PrepareState(EVPPrepareComplete, KErrNone);
+    }
+    
+void RTestMediaClientExternalDisplay::HandlePrepareCompleteL()
+    {
+    // Add display window using default values - ie. video extent & window clipping 
+    // defaulted to whole window
+    INFO_PRINTF1(_L("iVideoPlayer2->AddDisplayWindowL()"));
+    iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow);
+
+    // set external display control
+    iVideoPlayer2->SetExternalDisplaySwitchingL((*iScreen).GetScreenNumber(), iExternalDisplayControl);
+    
+    // trigger the video to start playing                
+    StartPlayback();
+    }
+
+void RTestMediaClientExternalDisplay::HandlePlayCompleteL()
+    {
+    iTestStepResult = EPass;
+    CActiveScheduler::Stop();
+    }
+
+void RTestMediaClientExternalDisplay::StartPlayback()
+    {
+    iError = KErrTimedOut;
+    INFO_PRINTF1(_L("iVideoPlayer2->Play()"));
+    PrepareState(EVPPlayComplete, KErrNone);
+    iVideoPlayer2->Play();
+    }
+
--- a/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/src/testvideoplayer.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/src/testvideoplayer.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -2947,3 +2947,131 @@
             }
         }
     }
+
+
+//
+// RTestVclntExternalDisplayControl
+//
+
+/**
+ * RTestVclntExternalDisplayControl::Constructor
+ */
+RTestVclntExternalDisplayControl::RTestVclntExternalDisplayControl(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError, const TBool aPlay)
+    : RTestVclntAviPlayerStep(aTestName, aSectName, aKeyName, aExpectedError), iPlay(aPlay)
+    {
+    iHeapSize = 2000000; //-2MB
+    }
+
+/**
+ * RTestVclntExternalDisplayControl::NewL
+ */
+RTestVclntExternalDisplayControl* RTestVclntExternalDisplayControl::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError,const TBool aPlay)
+    {
+    RTestVclntExternalDisplayControl* self = new (ELeave) RTestVclntExternalDisplayControl(aTestName, aSectName, aKeyName, aExpectedError, aPlay);
+    return self;
+    }
+
+/**
+ * RTestVclntExternalDisplayControl::DoTestStepL
+ */
+TVerdict RTestVclntExternalDisplayControl::DoTestStepL()
+    {
+    // read external display control
+    SetExternalDisplayControl();
+    
+     // WDP:We are going to start the test now
+     // Ensure we set paging memory to appropriate cache size for tests which need it
+     //ignore other tests
+    TVerdict verdict=SetCacheSize();
+    if(verdict!=EPass)
+        {
+        return verdict;
+        }
+     
+    // Call the state handler from IDLE state
+    FsmL(EVPIdle);
+    User::LeaveIfError(iError);
+    // Start the scheduler - Done only once !
+    CActiveScheduler::Start();
+    
+    return iTestStepResult;
+    }
+
+//Default SetCache size
+TVerdict RTestVclntExternalDisplayControl::SetCacheSize()
+    {
+    //Do not try to increase cache size for tests which dont need it
+    return EPass;
+            
+    }
+
+/**
+ * RTestVclntExternalDisplayControl::FsmL
+ */
+void RTestVclntExternalDisplayControl::FsmL(TVclntTestPlayEvents aEventCode)
+    {
+    if (FsmCheck(aEventCode))
+        {
+        //TInt err = KErrNone;
+        switch (aEventCode)
+            {
+            case EVPIdle:
+                // Open iVideoPlayer
+                INFO_PRINTF2(_L("iVideoPlayer->OpenFileL() %S"), &iFilename);
+                TRAP(iError, iVideoPlayer->OpenFileL(iFilename, ControllerUid()));
+                PrepareState(EVPOpenComplete, KErrNone);
+                break;
+            case EVPOpenComplete:
+                // set external display control
+                iVideoPlayer->SetExternalDisplaySwitchingL((*iScreen).GetScreenNumber(), iExternalDisplayControl);
+                // Prepare iVideoPlayer
+                INFO_PRINTF1(_L("iVideoPlayer->Prepare()"));
+                iVideoPlayer->Prepare();
+                PrepareState(EVPPrepareComplete, KErrNone);
+                break;
+            case EVPPrepareComplete:
+                iTestStepResult = DoTestL(iVideoPlayer);
+                break;
+            case EVPPlayComplete:
+                iTestStepResult = EPass;
+                CActiveScheduler::Stop();
+                break;
+            }
+        }
+    }
+
+/**
+ * RTestVclntExternalDisplayControl::DoTestL
+ */
+TVerdict RTestVclntExternalDisplayControl::DoTestL(CVideoPlayerUtility* /*aPlayer*/)
+    {
+    TVerdict ret = EFail;
+
+    if(iPlay)
+        {
+        iError = KErrTimedOut;
+        INFO_PRINTF1(_L("iVideoPlayer->Play()"));
+        PrepareState(EVPPlayComplete, KErrNone);
+        iVideoPlayer->Play();
+        }
+    else
+        {
+        CActiveScheduler::Stop();
+        ret = EPass;
+        }
+        
+    return ret;
+    }
+
+TVerdict RTestVclntExternalDisplayControl::SetExternalDisplayControl()
+    {
+    if(GetBoolFromConfig(iSectName, _L("externalDisplayControl"), iExternalDisplayControl))
+        {
+        INFO_PRINTF2(_L("External display switch control set to %d"), iExternalDisplayControl);
+        }
+    else
+        {
+        return EInconclusive;
+        }
+    return EPass;
+    }
--- a/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/src/testvideoplayer2.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/src/testvideoplayer2.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -460,6 +460,15 @@
     iMediaClientVideoDisplay->RemoveDisplayWindow(*iWindow);
     INFO_PRINTF1(_L("iMediaClientVideoDisplay->RemoveDisplayWindow()"));
     
+    iMediaClientVideoDisplay->SetExternalDisplaySwitchingL(ETrue);
+    iMediaClientVideoDisplay->SetExternalDisplaySwitchingL(EFalse);
+    iMediaClientVideoDisplay->SetExternalDisplaySwitchingL(EFalse);
+    iMediaClientVideoDisplay->SetExternalDisplaySwitchingL(ETrue);
+    
+    // create media class with other NewL.
+    delete iMediaClientVideoDisplay;
+    iMediaClientVideoDisplay = CMediaClientVideoDisplay::NewL(displayId, surfaceId, cropRect, par);          
+    
     surfaceManager.CloseSurface(surfaceId);
 	surfaceId = TSurfaceId::CreateNullId();
 	surfaceManager.Close();
--- a/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/src/tsi_mmf_vclntavi_suite.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/src/tsi_mmf_vclntavi_suite.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -1,4 +1,4 @@
-// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2005-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -351,7 +351,27 @@
     //RTestMediaClientVideoDisplay
     AddTestStepL( RTestMediaClientVideoDisplay::NewL( _L("MM-MMF-VCLNTAVI-I-0435"), _L("SectionFive"), _L("filename"), KErrNone) );
     
-	//
+    // External display
+    AddTestStepL( RTestMediaClientExternalDisplay::NewL( _L("MM-MMF-VCLNTAVI-I-1201")));
+    AddTestStepL( RTestMediaClientExternalDisplay::NewL( _L("MM-MMF-VCLNTAVI-I-1202")));
+    AddTestStepL( RTestMediaClientExternalDisplay::NewL( _L("MM-MMF-VCLNTAVI-I-1203")));
+    AddTestStepL( RTestMediaClientExternalDisplay::NewL( _L("MM-MMF-VCLNTAVI-I-1204")));
+    AddTestStepL( RTestMediaClientExternalDisplay::NewL( _L("MM-MMF-VCLNTAVI-I-1205")));
+    AddTestStepL( RTestMediaClientExternalDisplay::NewL( _L("MM-MMF-VCLNTAVI-I-1206")));
+    AddTestStepL( RTestMediaClientExternalDisplay::NewL( _L("MM-MMF-VCLNTAVI-I-1207")));
+    AddTestStepL( RTestMediaClientExternalDisplay::NewL( _L("MM-MMF-VCLNTAVI-I-1208")));
+    AddTestStepL( RTestMediaClientExternalDisplay::NewL( _L("MM-MMF-VCLNTAVI-I-1209")));
+    AddTestStepL( RTestMediaClientExternalDisplay::NewL( _L("MM-MMF-VCLNTAVI-I-1210")));
+    AddTestStepL( RTestMediaClientExternalDisplay::NewL( _L("MM-MMF-VCLNTAVI-I-1211")));
+    AddTestStepL( RTestMediaClientExternalDisplay::NewL( _L("MM-MMF-VCLNTAVI-I-1212")));
+    AddTestStepL( RTestMediaClientExternalDisplay::NewL( _L("MM-MMF-VCLNTAVI-I-1213")));
+    AddTestStepL( RTestMediaClientExternalDisplay::NewL( _L("MM-MMF-VCLNTAVI-I-1214")));
+    AddTestStepL( RTestMediaClientExternalDisplay::NewL( _L("MM-MMF-VCLNTAVI-I-1215")));
+    AddTestStepL( RTestMediaClientExternalDisplay::NewL( _L("MM-MMF-VCLNTAVI-I-1216")));
+    AddTestStepL( RTestVclntExternalDisplayControl::NewL( _L("MM-MMF-VCLNTAVI-I-1220"), _L("MM-MMF-VCLNTAVI-I-1220"), _L("filename"), KErrNone, ETrue) );
+    AddTestStepL( RTestVclntExternalDisplayControl::NewL( _L("MM-MMF-VCLNTAVI-I-1221"), _L("MM-MMF-VCLNTAVI-I-1221"), _L("filename"), KErrNone, ETrue) );
+
+    //
     // PREQ1714 - Video Rendering to a Graphics Surface //
     // NEGATIVE TEST //
     //
--- a/mmplugins/mmfwplugins/src/Plugin/Controller/Video/AviPlayController/srtdecoder/srtdecoder.cpp	Thu Oct 07 23:44:30 2010 +0100
+++ b/mmplugins/mmfwplugins/src/Plugin/Controller/Video/AviPlayController/srtdecoder/srtdecoder.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -89,7 +89,7 @@
 void CSrtSubtitleDecoder::ConstructL()
     {
     iFrameParser = CSrtFrame::NewL();
-    iDecodeBuffer.Create(KSubtitleDecoderBufferLength);
+    iDecodeBuffer.CreateL(KSubtitleDecoderBufferLength);
     }
     
 EXPORT_C TInt CSrtSubtitleDecoder::CalculateSubtitleRegion(const TRect& aScreenSize, TRect& aSubtitleRegion)