--- 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)