201021
authorhgs
Fri, 28 May 2010 19:26:28 -0500
changeset 21 2ed61feeead6
parent 20 b67dd1fc57c5
child 23 06e621399b1b
child 25 6f7ceef7b1d1
201021
khronosfws/openmax_al/group/openmaxal.mmp
khronosfws/openmax_al/src/adptcommon/xaadptbasectx.h
khronosfws/openmax_al/src/adptcommon/xaframeworkmgr.c
khronosfws/openmax_al/src/common/xacommon.c
khronosfws/openmax_al/src/engine/xaengineitf.c
khronosfws/openmax_al/src/gst_adaptation/xaadaptationgst.c
khronosfws/openmax_al/src/gst_adaptation/xacameraadaptctx.h
khronosfws/openmax_al/src/gst_adaptation/xardsitfadaptation.c
khronosfws/openmax_al/src/gst_adaptation/xastreaminformationitfadaptation.c
khronosfws/openmax_al/src/mediaplayer/xamediaplayer.c
khronosfws/openmax_al/src/mediaplayer/xaplayitf.c
khronosfws/openmax_al/src/mediarecorder/xaimageencoderitf.c
khronosfws/openmax_al/src/mediarecorder/xamediarecorder.c
khronosfws/openmax_al/src/mmf_adaptation/cmetadatautilityitf.cpp
khronosfws/openmax_al/src/mmf_adaptation/cmmfbackendengine.cpp
khronosfws/openmax_al/src/mmf_adaptation/cmmfbackendengine.h
khronosfws/openmax_al/src/mmf_adaptation/cmmfradiobackendengine.cpp
khronosfws/openmax_al/src/mmf_adaptation/cmmfradiobackendengine.h
khronosfws/openmax_al/src/mmf_adaptation/xaadaptationmmf.h
khronosfws/openmax_al/src/mmf_adaptation/xadynamicsourceitfadaptationmmf.c
khronosfws/openmax_al/src/mmf_adaptation/xamediaplayeradaptctxmmf.c
khronosfws/openmax_al/src/mmf_adaptation/xamediaplayeradaptctxmmf.h
khronosfws/openmax_al/src/mmf_adaptation/xanokialinearvolumeitfadaptationmmf.c
khronosfws/openmax_al/src/mmf_adaptation/xanokiavolumeextitfadaptationmmf.c
khronosfws/openmax_al/src/mmf_adaptation/xaplayitfadaptationmmf.c
khronosfws/openmax_al/src/mmf_adaptation/xaplayitfadaptationmmf.h
khronosfws/openmax_al/src/mmf_adaptation/xaradioadaptctx.c
khronosfws/openmax_al/src/mmf_adaptation/xaradioadaptctx.h
khronosfws/openmax_al/src/mmf_adaptation/xaradioitfadaptation.c
khronosfws/openmax_al/src/mmf_adaptation/xaradioitfadaptation.h
khronosfws/openmax_al/src/radio/xaradiodevice.c
khronosfws/openmax_al/src/radio/xaradioitf.c
khronosfws/openmax_al/src/radio/xaradioitf.h
khronosfws/openmax_al/src/radio/xardsitf.c
mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Inc/AdvancedAudioPlayController.h
mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Src/AdvancedAudioPlayController.cpp
mmfenh/advancedaudiocontroller/audiotonecontrollerplugin/src/mmfaudiotonecontroller.cpp
mmfenh/advancedaudiocontroller/audiotonecontrollerplugin/src/mmfaudiotonecontroller.h
mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/ActiveScheduledTestModule/data/mmc/metadata/DRM_NRTmeta.dcf
mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioPlaybackTestModule/conf/Playbackplugin_FH_Regression_10.1.cfg
mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioPlaybackTestModule/conf/Playbackplugin_Regression_10.1.cfg
mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioPlaybackTestModule/data/mmc/metadata/DRM_NRTmeta.dcf
mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioPlaybackTestModule/inc/MmfTsPlay.h
mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioPlaybackTestModule/inc/SimpleSoundPlayer.h
mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioPlaybackTestModule/src/MmfTsPlay_core.cpp
mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioPlaybackTestModule/src/SimpleSoundPlayer.cpp
mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioRecorderTestModule/data/mmc/metadata/DRM_NRTmeta.dcf
mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioStreamTestModule/data/mmc/metadata/DRM_NRTmeta.dcf
mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioToneTestModule/data/mmc/metadata/DRM_NRTmeta.dcf
mmmw_plat/openmax_al_api/tsrc/group/bld.inf
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_common.cfg
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_mp_streaming.cfg
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_radioitf.cfg
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/group/bld.inf
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/group/openmaxaltestmodule.mmp
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/group/openmaxaltestmodule.pkg
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/inc/openmaxaltestmodule.h
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/init/testframework.ini
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxalnokialinearvolumeitftests.cpp
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxaltestmoduleblocks.cpp
mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/radio/openmaxalradioitftests.cpp
mmmw_plat/openmax_al_ext_api/group/bld.inf
mmmw_plat/openmax_al_ext_api/inc/xaradioitfext.h
mmmw_plat/system_tone_service_api/tsrc/conf/systemtoneservicestif.cfg
mmmw_plat/system_tone_service_api/tsrc/group/systemtoneservicestif.pkg
mmmw_plat/system_tone_service_api/tsrc/inc/systemtoneservicesactiveobj.h
mmmw_plat/system_tone_service_api/tsrc/src/systemtoneservicesactiveobj.cpp
mmmw_plat/system_tone_service_api/tsrc/src/systemtoneservicestifblocks.cpp
mmmw_plat/telephony_multimedia_service_api/inc/tmsfactory.h
mmmw_plat/telephony_multimedia_service_api/telephony_multimedia_service_api.metaxml
mmserv/radioutility/presetutility/group/bld.inf
mmserv/radioutility/presetutility/tsrc/group/Bld.inf
mmserv/radioutility/presetutility/tsrc/group/bld.inf
mmserv/radioutility/radioserver/Server/Src/RadioServer.cpp
mmserv/sts/rom/mmmwsystemtoneservice.iby
mmserv/sts/sts/group/sts.mmp
mmserv/sts/sts/inc/stsplayer.h
mmserv/sts/sts/src/stsplayer.cpp
mmserv/sts/stsserver/group/stsserver.mmp
mmserv/tms/inc/tmscallclisrv.h
mmserv/tms/inc/tmscallproxy.h
mmserv/tms/inc/tmsstreambody.h
mmserv/tms/inc/tmstimer.h
mmserv/tms/tmsapi/src/tmsstream.cpp
mmserv/tms/tmscallproxy/bwins/tmscallproxy.def
mmserv/tms/tmscallproxy/eabi/tmscallproxy.def
mmserv/tms/tmscallproxy/src/tmscallproxy.cpp
mmserv/tms/tmscallserver/inc/tmscalladpt.h
mmserv/tms/tmscallserver/inc/tmscallcsadpt.h
mmserv/tms/tmscallserver/inc/tmscallipadpt.h
mmserv/tms/tmscallserver/inc/tmscsdevsound.h
mmserv/tms/tmscallserver/inc/tmscsdevsoundobserver.h
mmserv/tms/tmscallserver/inc/tmscsdownlink.h
mmserv/tms/tmscallserver/inc/tmscsuplink.h
mmserv/tms/tmscallserver/inc/tmsdtmfobserver.h
mmserv/tms/tmscallserver/inc/tmsdtmftoneplayerobserver.h
mmserv/tms/tmscallserver/inc/tmsipcallstream.h
mmserv/tms/tmscallserver/src/tmscalladpt.cpp
mmserv/tms/tmscallserver/src/tmscallcsadpt.cpp
mmserv/tms/tmscallserver/src/tmscallipadpt.cpp
mmserv/tms/tmscallserver/src/tmscallsession.cpp
mmserv/tms/tmscallserver/src/tmscsdevsound.cpp
mmserv/tms/tmscallserver/src/tmscsdownlink.cpp
mmserv/tms/tmscallserver/src/tmscsuplink.cpp
mmserv/tms/tmscallserver/src/tmsipcalldownlinkds.cpp
mmserv/tms/tmscallserver/src/tmsipcallstreambase.cpp
mmserv/tms/tmscallserver/src/tmsipcalluplinkds.cpp
mmserv/tms/tmsimpl/inc/tmsstreambodyimpl.h
mmserv/tms/tmsimpl/src/tmsstreambodyimpl.cpp
mmserv/tms/tmsserver/group/tmsserver.mmp
mmserv/tms/tmsserver/inc/tmsrtplayer.h
mmserv/tms/tmsserver/inc/tmstimer.h
mmserv/tms/tmsserver/src/tmsrtplayer.cpp
mmserv/tms/tmsserver/src/tmstimer.cpp
mmserv/tms/tmsutility/bwins/tmsutility.def
mmserv/tms/tmsutility/eabi/tmsutility.def
mmserv/tms/tmsutility/group/tmsutility.mmp
mmserv/tms/tmsutility/src/tmstimer.cpp
mmserv/voipaudioservices/VoIPServer/group/VoIPAudioServer.mmp
mmserv/voipaudioservices/VoIPServer/src/VoIPServerSession.cpp
mmserv/voipaudioservices/group/bld.inf
tsrc/group/bld.inf
--- a/khronosfws/openmax_al/group/openmaxal.mmp	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/group/openmaxal.mmp	Fri May 28 19:26:28 2010 -0500
@@ -41,15 +41,10 @@
 SOURCE	        xaadaptationgst.c
 SOURCE 	        xagstcapabilitiesmgr.c
 SOURCE	        xaaudioencoderitfadaptation.c
-SOURCE	        xacameraadaptctx.c
-SOURCE	        xacameraitfadaptation.c
 SOURCE	        xadevicevolumeitfadaptation.c
 SOURCE	        xadynamicsourceitfadaptation.c
 SOURCE	        xaengineadaptctx.c
 SOURCE	        xaequalizeritfadaptation.c
-SOURCE	        xaimagecontrolsitfadaptation.c
-SOURCE	        xaimageeffectsitfadaptation.c
-SOURCE	        xaimageencoderitfadaptation.c
 SOURCE	        xaledarrayadaptctx.c
 SOURCE	        xaledarrayitfadaptation.c
 SOURCE	        xamediaplayeradaptctx.c
@@ -60,28 +55,36 @@
 SOURCE	        xaoutputmixitfadaptation.c
 SOURCE	        xaplaybackrateitfadaptation.c
 SOURCE	        xaplayitfadaptation.c
-SOURCE	        xaradioadaptctx.c
-SOURCE	        xaradioitfadaptation.c
+
 SOURCE	        xardsitfadaptation.c
 SOURCE	        xarecorditfadaptation.c
 SOURCE	        xaseekitfadaptation.c
-SOURCE	        xasnapshotitfadaptation.c
-SOURCE	        xastaticcameracapsadaptation.c
 SOURCE	        xavibraadaptctx.c
 SOURCE	        xavibraitfadaptation.c
+SOURCE	        xavolumeitfadaptation.c
+SOURCE 	        xastreaminformationitfadaptation.c
+#ifdef OMAX_CAMERABIN
+SOURCE	        xacameraadaptctx.c
+SOURCE	        xacameraitfadaptation.c
+SOURCE	        xaimagecontrolsitfadaptation.c
+SOURCE	        xaimageeffectsitfadaptation.c
+SOURCE	        xaimageencoderitfadaptation.c
+SOURCE	        xasnapshotitfadaptation.c
+SOURCE	        xastaticcameracapsadaptation.c
 SOURCE	        xavideoencoderitfadaptation.c
 SOURCE	        xavideopostprosessingitfadaptation.c
-SOURCE	        xavolumeitfadaptation.c
-SOURCE 	        xastreaminformationitfadaptation.c
+#endif
 
 SOURCEPATH ../src/adptcommon
 SOURCE 	        xaframeworkmgr.c
 SOURCE 	        xacapabilitiesmgr.c
 SOURCE 	        xaadptbasectx.c
 
+#ifdef OMAX_CAMERABIN
 SOURCEPATH      ../src/camera
 SOURCE          xacameradevice.c
 SOURCE          xacameraitf.c
+#endif
 
 SOURCEPATH      ../src/common
 SOURCE          openmaxal.c
@@ -90,35 +93,38 @@
 SOURCE          xadynamicsourceitf.c
 SOURCE          xadynintmgmtitf.c
 SOURCE          xaequalizeritf.c
-SOURCE          xaimagecontrolsitf.c
-SOURCE          xaimageeffectsitf.c
 SOURCE          xametadataextractionitf.c
 SOURCE          xametadatatraversalitf.c
 SOURCE          xaobjectitf.c
 SOURCE          xaplatform.c
 SOURCE          xathreadsafety.c
-SOURCE          xavideopostprocessingitf.c
 SOURCE          xavolumeitf.c
 SOURCE 		xastreaminformationitf.c
 SOURCE          xanokialinearvolume_iid.c
 SOURCE          xanokiavolumeext_iid.c
 SOURCE          xanokialinearvolumeitf.c
 SOURCE          xanokiavolumeextitf.c
+#ifdef OMAX_CAMERABIN
+SOURCE          xaimagecontrolsitf.c
+SOURCE          xaimageeffectsitf.c
+SOURCE          xavideopostprocessingitf.c
+#endif
 
 SOURCEPATH      ../src/engine
 SOURCE          xaaudiodecodercapabilitiesitf.c
 SOURCE          xaaudioencodercapabilitiesitf.c
 SOURCE          xaaudioiodevicecapabilitiesitf.c
-SOURCE          xacameracapabilitiesitf.c
 SOURCE          xadevicevolumeitf.c
 SOURCE          xaengine.c
 SOURCE          xaengineitf.c
+SOURCE          xathreadsyncitf.c
+#ifdef OMAX_CAMERABIN
+SOURCE          xacameracapabilitiesitf.c
 SOURCE          xaimagedecodercapabilitiesitf.c
 SOURCE          xaimageencodercapabilitiesitf.c
-SOURCE          xathreadsyncitf.c
 SOURCE          xavideodecodercapabilitiesitf.c
 SOURCE          xavideoencodercapabilitiesitf.c
-
+#endif
 SOURCEPATH      ../src/ledarray
 SOURCE          xaledarraydevice.c
 SOURCE          xaledarrayitf.c
@@ -132,12 +138,14 @@
 
 SOURCEPATH      ../src/mediarecorder
 SOURCE          xaaudioencoderitf.c
-SOURCE          xaimageencoderitf.c
 SOURCE          xamediarecorder.c
 SOURCE          xametadatainsertionitf.c
 SOURCE          xarecorditf.c
+#ifdef OMAX_CAMERABIN
+SOURCE          xaimageencoderitf.c
 SOURCE          xasnapshotitf.c
 SOURCE          xavideoencoderitf.c
+#endif
 
 SOURCEPATH      ../src/metadataextractor
 SOURCE          xametadataextractor.c
@@ -166,6 +174,9 @@
 SOURCE          xamediarecorderadaptctxmmf.c
 SOURCE          xarecorditfadaptationmmf.c
 SOURCE 	        sfmrlocaltimer.cpp
+SOURCE		xaradioitfadaptation.c
+SOURCE  	xaradioadaptctx.c
+SOURCE 		cmmfradiobackendengine.cpp
 SOURCE          xanokialinearvolumeitfadaptationmmf.c
 SOURCE          xanokiavolumeextitfadaptationmmf.c
 SOURCE 	        xammfcapabilitiesmgr.c
@@ -212,16 +223,20 @@
 LIBRARY         MMFControllerFramework.lib
 LIBRARY         mediaclientvideo.lib
 LIBRARY         AudioInputRouting.lib
+LIBRARY		Radio_Utility.lib
+
 LIBRARY         libgmodule.lib
 LIBRARY         libgobject.lib
 LIBRARY         libgstreamer.lib
 LIBRARY         libgstapp.lib
-LIBRARY		libgstphotography.lib
 LIBRARY 	libgstinterfaces.lib 
-LIBRARY		libgstvideo.lib
 LIBRARY 	libgstbase.lib
 LIBRARY 	libgstcoreelements.lib
 LIBRARY		libgstcoreindexers.lib
 LIBRARY 	MetaDataUtility.lib
+#ifdef OMAX_CAMERABIN
+LIBRARY		libgstphotography.lib
+LIBRARY		libgstvideo.lib
+#endif
 STATICLIBRARY   hxmetadatautil.lib
 
--- a/khronosfws/openmax_al/src/adptcommon/xaadptbasectx.h	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/adptcommon/xaadptbasectx.h	Fri May 28 19:26:28 2010 -0500
@@ -109,9 +109,15 @@
 
 #define XA_ADAPTID_UNINITED 0
 
-#define XA_ADAPT_VOLUME_VOLUME_CHANGED          0xfb			 /* volume changed */
-#define XA_ADAPT_VOLUME_MUTE_CHANGED            0xfc         	/* mute changed */
-#define XA_ADAPT_VULOME_STEREOPOSITION_CHANGED  0xfd
+#define XA_ADAPT_PLAY_STATE_CHANGED 0xf5			
+#define XA_ADAPT_RADIO_FREQUENCY_CHANGED 0xf6       /* Radio frequency changed event */
+#define XA_ADAPT_RADIO_FREQUENCY_RANGE_CHANGED 0xf7 /* Radio frequency range changed event */
+#define XA_ADAPT_RADIO_SEEK_COMPLETE 0xf8           /* Radio seek complete changed event */
+#define XA_ADAPT_RADIO_STEREO_STATUS_CHANGED 	0xf9  /* Radio stereo status changed */
+#define XA_ADAPT_RADIO_SIGNAL_STRENGTH_CHANGED 0xfa   /* Radio signal status changed */
+#define XA_ADAPT_VOLUME_VOLUME_CHANGED 0xfb					/* volume changed */
+#define XA_ADAPT_VOLUME_MUTE_CHANGED 0xfc         	/* mute changed */
+#define XA_ADAPT_VULOME_STEREOPOSITION_CHANGED  0xfd /* stereo position changed */
 
 /* Adaptation event structure */
 typedef struct XAAdaptEvent_
--- a/khronosfws/openmax_al/src/adptcommon/xaframeworkmgr.c	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/adptcommon/xaframeworkmgr.c	Fri May 28 19:26:28 2010 -0500
@@ -31,7 +31,8 @@
 
 
 /* Config file location */
-const char configFileLocation[] = "z:/openmaxal/openmaxal.cfg";
+const char configFileLocationZ[] = "z:/openmaxal/openmaxal.cfg";
+const char configFileLocationC[] = "c:/openmaxal/openmaxal.cfg";
 
 /* Tags used for parsing */
 const char mediaPlayerBeginTag[] = "<mediaplayer>";
@@ -87,13 +88,13 @@
     FrameworkMap *curNode = NULL;
     FWMgrBool newNode;
     FrameworkMap *frameworkMap = NULL;
-    FILE* fp = fopen(configFileLocation, "r");
+    FILE* fp = fopen(configFileLocationZ, "r");
     
     if (fp == NULL)
         {
-        createDefaultRules(configFileLocation);
+        createDefaultRules(configFileLocationC);
 
-        fp = fopen(configFileLocation, "r");
+        fp = fopen(configFileLocationC, "r");
         }
 
     if (fp != NULL)
@@ -557,7 +558,7 @@
     fputs("<mmf>\r\n", fp);
     fputs("<urischeme>\r\n", fp);
     fputs("# Num of entries followed by actual entries all ending with a comma\r\n", fp);
-    fputs("3,file,http,rtsp,\r\n", fp);
+    fputs("6,file,http,rtsp,rtspu,rtspt,mms,\r\n", fp);
     fputs("</urischeme>\r\n", fp);
     fputs("<fileext>\r\n", fp);
     fputs("15,3gp,wma,wmv,wav,amr,mp3,mp4,rm,ra,avi,mkv,aac,mid,awb,3g2,\r\n", fp);
--- a/khronosfws/openmax_al/src/common/xacommon.c	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/common/xacommon.c	Fri May 28 19:26:28 2010 -0500
@@ -78,7 +78,7 @@
     {
         fname = (XAchar*)((XADataLocator_URI*)(source->pLocator))->URI;
         /* check protocol prefix */
-        if(strstr((char*)fname,":///"))
+        if(strstr((char*)fname,"://"))
         {
             if(strncmp((char*)fname, "file:///", 8) == 0)
             {
--- a/khronosfws/openmax_al/src/engine/xaengineitf.c	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/engine/xaengineitf.c	Fri May 28 19:26:28 2010 -0500
@@ -52,9 +52,13 @@
                                             const XAboolean *pInterfaceRequired)
 {
     XAEngineItfImpl* impl = GetImpl(self);
+#ifdef OMAX_CAMERABIN
     return XACameraDeviceImpl_CreateCameraDevice( impl->mapper,impl->capabilities,
                                                     pDevice, deviceID,numInterfaces,
                                                     pInterfaceIds, pInterfaceRequired );
+#else
+    return XA_RESULT_FEATURE_UNSUPPORTED;
+#endif
 }
 
 XAresult XAEngineItfImpl_CreateRadioDevice(XAEngineItf self,
@@ -249,10 +253,12 @@
             res = XAOMixImpl_QueryNumSupportedInterfaces(
                                             pNumSupportedInterfaces);
             break;
+#ifdef OMAX_CAMERABIN
         case XA_OBJECTID_CAMERADEVICE:
             res = XACameraDeviceImpl_QueryNumSupportedInterfaces(
                                             pNumSupportedInterfaces);
             break;
+#endif
         case XA_OBJECTID_RADIODEVICE:
             res = XARadioDeviceImpl_QueryNumSupportedInterfaces(
                                             pNumSupportedInterfaces);
@@ -311,10 +317,12 @@
             res = XAOMixImpl_QuerySupportedInterfaces(
                                                 index, pInterfaceId);
             break;
+#ifdef OMAX_CAMERABIN
         case XA_OBJECTID_CAMERADEVICE:
             res = XACameraDeviceImpl_QuerySupportedInterfaces(
                                                 index, pInterfaceId );
             break;
+#endif
         case XA_OBJECTID_RADIODEVICE:
             res = XARadioDeviceImpl_QuerySupportedInterfaces(
                                                 index, pInterfaceId );
--- a/khronosfws/openmax_al/src/gst_adaptation/xaadaptationgst.c	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/gst_adaptation/xaadaptationgst.c	Fri May 28 19:26:28 2010 -0500
@@ -27,8 +27,15 @@
 #include "xamediaplayeradaptctx.h"
 #include "xacameraadaptctx.h"
 #include <stdlib.h>
+
+#ifdef OMAX_CAMERABIN
 extern XAboolean cameraRealized;
+
 extern XACameraAdaptationCtx_* cameraCtx;
+#else
+XAboolean cameraRealized = XA_BOOLEAN_FALSE;
+XACameraAdaptationCtx_* cameraCtx = NULL;
+#endif
 /*
  * XAAdaptationGstCtx* XAAdaptationGst_Create()
  * 1st phase initialization function for Adaptation Base context structure.
@@ -409,9 +416,11 @@
     char* fname=NULL;
     XADataLocator_URI* uri = NULL;
     XADataLocator_IODevice* ioDevice = NULL;
+#ifdef OMAX_CAMERABIN
     XACameraDeviceImpl* cameraDevice = NULL;
+    XAObjectItfImpl* pObj = NULL;
+#endif
     XARadioDeviceImpl* radioDevice = NULL;
-    XAObjectItfImpl* pObj = NULL;
 
     DEBUG_API("->XAAdaptationGst_CreateGstSource");
     if( !xaSrc || !xaSrc->pLocator || !isobj )
@@ -489,6 +498,8 @@
                     }
                     break;
                 }
+#ifdef OMAX_CAMERABIN
+             
                 case XA_IODEVICE_CAMERA:
                 {
                     DEBUG_INFO("XA_IODEVICE_CAMERA");
@@ -539,6 +550,7 @@
                     }
                     break;
                 }
+#endif                
                 case XA_IODEVICE_RADIO:
                     DEBUG_INFO("XA_IODEVICE_RADIO");
                     if ( ioDevice->device )
--- a/khronosfws/openmax_al/src/gst_adaptation/xacameraadaptctx.h	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/gst_adaptation/xacameraadaptctx.h	Fri May 28 19:26:28 2010 -0500
@@ -19,7 +19,9 @@
 #define XACAMERAADAPTCTX_H
 
 #include "xaadaptationgst.h"
+#ifdef OMAX_CAMERABIN
 #include <gst/interfaces/photography.h>
+#endif
 /* TYPEDEFS */
 
 typedef struct XACameraAdaptationCtx_ XACameraAdaptationCtx;
@@ -39,8 +41,9 @@
     XAuint32        curMirror;
 
     /* GST Variables */
+#ifdef OMAX_CAMERABIN
     GstFocusStatus focusStatus;
-
+#endif
     /* Internals */
     XAboolean       recording;
     XAboolean       playing;
--- a/khronosfws/openmax_al/src/gst_adaptation/xardsitfadaptation.c	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/gst_adaptation/xardsitfadaptation.c	Fri May 28 19:26:28 2010 -0500
@@ -65,14 +65,14 @@
 static XAint16 subscribedODAGroups[MAX_ODA_GROUP_SUBSCRIPTIONS];
 static XAuint16 subscribedODAGroupCount = 0;
 
-static XAuint32 freqSetAfterSeek;
+//static XAuint32 freqSetAfterSeek;
 
 const RDSData* GetCurrentRdsData( XAAdaptationGstCtx *bCtx );
 void * XARDSItfAdapt_AsyncSeek(void* args);
 void * XARDSItfAdapt_AsyncGetODAGroup(void* args);
 
 /* exposing radio itf adaptation internal function here */
-XAresult XARadioItfAdapt_SyncSetFrequency(XAAdaptationGstCtx *bCtx, XAuint32 freq);
+//XAresult XARadioItfAdapt_SyncSetFrequency(XAAdaptationGstCtx *bCtx, XAuint32 freq);
 
 
 /*
@@ -429,11 +429,11 @@
 
     if (pty == XA_RDSPROGRAMMETYPE_RDSPTY_POPMUSIC)
     {
-        freqSetAfterSeek = rdsData[POPMUSIC_CHANNEL].frequency;
+        //freqSetAfterSeek = rdsData[POPMUSIC_CHANNEL].frequency;
     }
     else
     {
-        freqSetAfterSeek = mCtx->frequency;
+        //freqSetAfterSeek = mCtx->frequency;
     }
 
     mCtx->state = XA_RADIO_SEEKING;
@@ -475,7 +475,7 @@
         mCtx->state = XA_RADIO_IDLE;
     }
 
-    freqSetAfterSeek = rdsData[TRAFFIC_ANNOUNCEMENT_CHANNEL].frequency;
+    //freqSetAfterSeek = rdsData[TRAFFIC_ANNOUNCEMENT_CHANNEL].frequency;
 
     mCtx->state = XA_RADIO_SEEKING;
     pt_ret = pthread_create(&(mCtx->emulationThread), NULL, (XARDSItfAdapt_AsyncSeek),(void*)bCtx);
@@ -516,7 +516,7 @@
         mCtx->state = XA_RADIO_IDLE;
     }
 
-    freqSetAfterSeek = rdsData[TRAFFIC_PROGRAMME_CHANNEL].frequency;
+    //freqSetAfterSeek = rdsData[TRAFFIC_PROGRAMME_CHANNEL].frequency;
 
     mCtx->state = XA_RADIO_SEEKING;
     pt_ret = pthread_create(&(mCtx->emulationThread), NULL, (XARDSItfAdapt_AsyncSeek),(void*)bCtx);
@@ -548,7 +548,7 @@
 
     DEBUG_INFO("Seek done!");
 
-    ret = XARadioItfAdapt_SyncSetFrequency( bCtx, freqSetAfterSeek );
+    //ret = XARadioItfAdapt_SyncSetFrequency( bCtx, freqSetAfterSeek );
     if (ret != XA_RESULT_SUCCESS)
     {
         DEBUG_ERR("XARadioItfAdapt_SyncSetFrequency FAILED");
--- a/khronosfws/openmax_al/src/gst_adaptation/xastreaminformationitfadaptation.c	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/gst_adaptation/xastreaminformationitfadaptation.c	Fri May 28 19:26:28 2010 -0500
@@ -68,9 +68,8 @@
     }
 
     /* Get media container type */
-    DEBUG_INFO_A2("Adaptation Context- ID is [%u] Extended ID[%u]",
-                (unsigned int)adaptCtx->ctxId,
-                (unsigned int)((XAMediaPlayerAdaptationCtx*) adaptCtx)->extendedCtxId);
+    DEBUG_INFO_A1("Adaptation Context- ID is [%u] ",
+                (unsigned int)adaptCtx->ctxId );
 
     /* Initialize to unspecified */
     *containerType = XA_CONTAINERTYPE_UNSPECIFIED;
--- a/khronosfws/openmax_al/src/mediaplayer/xamediaplayer.c	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/mediaplayer/xamediaplayer.c	Fri May 28 19:26:28 2010 -0500
@@ -91,7 +91,9 @@
     XAObjectItfImpl* pBaseObj = NULL;
     const char *uri = NULL;
     XAresult ret = XA_RESULT_SUCCESS;
-    
+   	XADataLocator_IODevice* tmpIODevice;
+  	XADataLocator_IODevice  locatorIODevice;   	   
+
     DEBUG_API("->XAMediaPlayerImpl_CreateMediaPlayer");
 
     XA_IMPL_THREAD_SAFETY_ENTRY(XATSMediaPlayer);
@@ -219,19 +221,28 @@
     pPlayerImpl->imageVideoSnk = pImageVideoSnk;
     pPlayerImpl->vibra = pVibra;
     pPlayerImpl->LEDArray = pLEDArray;
-
-    /* Determine framework type that can handle recording */
-    fwType = (FWMgrFwType)FWMgrMOUnknown;
-    /**/
-    if (pDataSrc->pLocator)
-    {
-        XADataLocator_URI* dataLoc = (XADataLocator_URI*)pDataSrc->pLocator;
-        if (dataLoc->locatorType == XA_DATALOCATOR_URI)
-            {
-            uri = (char*)dataLoc->URI;
-            }
-    }
-    fwType = XAFrameworkMgr_GetFramework(
+    
+    // Handle possible radio:      
+   	tmpIODevice = (XADataLocator_IODevice*)(pPlayerImpl->dataSrc->pLocator);   
+	locatorIODevice = *tmpIODevice; 
+ 	if (locatorIODevice.deviceType == XA_IODEVICE_RADIO)
+   	{		   
+		fwType = (FWMgrFwType)FWMgrFWMMF;
+	}
+	else
+		{
+    	/* Determine framework type that can handle recording */
+     	fwType = (FWMgrFwType)FWMgrMOUnknown;  
+    	/**/
+    	if (pDataSrc->pLocator)
+    	{
+      	  XADataLocator_URI* dataLoc = (XADataLocator_URI*)pDataSrc->pLocator;
+        	if (dataLoc->locatorType == XA_DATALOCATOR_URI)
+        	    {
+            	uri = (char*)dataLoc->URI;
+            	}
+    	}
+    	fwType = XAFrameworkMgr_GetFramework(
                         mapper,
                         uri,
                         FWMgrMOPlayer);
@@ -244,6 +255,7 @@
         DEBUG_API("<-XAMediaPlayerImpl_CreateMediaPlayer");
         return ret;
         }
+   } // end else
     
     if(fwType == FWMgrFWMMF)
     {    
@@ -412,6 +424,7 @@
                 case MP_EQUALIZERITF:
                     pItf = XAEqualizerItfImpl_Create(pImpl->curAdaptCtx);
                     break;
+#ifdef OMAX_CAMERABIN
                 case MP_IMAGECONTROLSITF:
                     pItf = XAImageControlsItfImpl_Create(pImpl->curAdaptCtx);
                     break;
@@ -421,6 +434,7 @@
                 case MP_VIDEOPOSTPROCESSINGITF:
                     pItf = XAVideoPostProcessingItfImpl_Create(pImpl->curAdaptCtx);
                     break;
+#endif
                case MP_NOKIAVOLUMEEXT:
                     pItf = XANokiaVolumeExtItfImpl_Create(pImpl->curAdaptCtx);
                     break;
@@ -535,6 +549,7 @@
                 case MP_EQUALIZERITF:
                     XAEqualizerItfImpl_Free(pItf);
                     break;
+#ifdef OMAX_CAMERABIN
                 case MP_IMAGECONTROLSITF:
                     XAImageControlsItfImpl_Free(pItf);
                     break;
@@ -544,6 +559,7 @@
                 case MP_VIDEOPOSTPROCESSINGITF:
                     XAVideoPostProcessingItfImpl_Free(pItf);
                     break;
+#endif
                 case MP_NOKIAVOLUMEEXT:
                     XANokiaVolumeExtItfImpl_Free(pItf);
                     break;
@@ -605,10 +621,11 @@
             case MP_EQUALIZERITF:
                 mapEntry->pItf = XAEqualizerItfImpl_Create( pImpl->curAdaptCtx );
                 break;
+#ifdef OMAX_CAMERABIN
             case MP_IMAGEEFFECTSITF:
                 mapEntry->pItf = XAImageEffectsItfImpl_Create( pImpl->curAdaptCtx );
                 break;
-
+#endif
             default:
                 DEBUG_ERR("XAMediaPlayerImpl_DoAddItf unknown id");
                 ret = XA_RESULT_FEATURE_UNSUPPORTED;
@@ -667,9 +684,11 @@
             case MP_EQUALIZERITF:
                 XAEqualizerItfImpl_Free(mapEntry->pItf);
                 break;
+#ifdef OMAX_CAMERABIN				
             case MP_IMAGEEFFECTSITF:
                 XAImageEffectsItfImpl_Free(mapEntry->pItf);
                 break;
+#endif
             default:
                 DEBUG_ERR("XAMediaPlayerImpl_DoRemoveItf unknown id");
                 ret = XA_RESULT_FEATURE_UNSUPPORTED;
--- a/khronosfws/openmax_al/src/mediaplayer/xaplayitf.c	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/mediaplayer/xaplayitf.c	Fri May 28 19:26:28 2010 -0500
@@ -241,6 +241,13 @@
     impl->callback = callback;
     impl->cbcontext = pContext;
     impl->cbPtrToSelf = self;
+    
+    // No need to do anything else if radio:
+		if ( ((XAMediaPlayerAdaptationMMFCtx*)impl->pObjImpl->curAdaptCtx)->isForRadio == XA_BOOLEAN_TRUE)
+		{
+    	DEBUG_API("<-XAPlayItfImpl_RegisterCallback");
+    	return ret;			
+		}
 
     XA_IMPL_THREAD_SAFETY_ENTRY( XATSMediaPlayer );
 
--- a/khronosfws/openmax_al/src/mediarecorder/xaimageencoderitf.c	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/mediarecorder/xaimageencoderitf.c	Fri May 28 19:26:28 2010 -0500
@@ -74,7 +74,9 @@
         res = XACapabilitiesMgr_GetCapsById(NULL, (XACapsType)(XACAP_ENCODER|XACAP_IMAGE), pSettings->encoderId, &temp);
         if( res == XA_RESULT_SUCCESS )
             {
+#ifdef OMAX_CAMERABIN
             res = XAImageEncoderItfAdapt_SetImageSettings((XAAdaptationGstCtx*)impl->adaptCtx, pSettings);
+#endif
             }
         else
             {
@@ -108,7 +110,9 @@
     }
     if(impl->adaptCtx->fwtype == FWMgrFWGST)
         {
+#ifdef OMAX_CAMERABIN
         res = XAImageEncoderItfAdapt_GetImageSettings((XAAdaptationGstCtx*)impl->adaptCtx, pSettings);
+#endif
         }
     else
         {
@@ -144,7 +148,9 @@
 
     if(impl->adaptCtx->fwtype == FWMgrFWGST)
         {
+#ifdef OMAX_CAMERABIN
         XAImageEncoderItfAdapt_GetImageSettings((XAAdaptationGstCtx*)impl->adaptCtx, &curSettings);
+#endif
         }
     else
         {
--- a/khronosfws/openmax_al/src/mediarecorder/xamediarecorder.c	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/mediarecorder/xamediarecorder.c	Fri May 28 19:26:28 2010 -0500
@@ -418,6 +418,7 @@
                 case MR_AUDIOENCODERITF:
                     pItf = XAAudioEncoderItfImpl_Create(pObjImpl);
                     break;
+#ifdef OMAX_CAMERABIN
                 case MR_SNAPSHOTITF:
                     pItf = XASnapshotItfImpl_Create(pObjImpl);
                     break;
@@ -427,6 +428,7 @@
                 case MR_IMAGEENCODERITF:
                     pItf = XAImageEncoderItfImpl_Create(pObjImpl);
                     break; 
+#endif
                 case MR_METADATAINSERTIONITF:
                     pItf = XAMetadataInsertionItfImpl_Create(pObjImpl);
                     break;                    
@@ -438,6 +440,7 @@
                 case MR_EQUALIZERITF:
                     pItf = XAEqualizerItfImpl_Create( pObjImpl->adaptationCtx );
                     break;
+#ifdef OMAX_CAMERABIN
                 case MR_IMAGECONTROLSITF:
                     pItf = XAImageControlsItfImpl_Create( pObjImpl->adaptationCtx );
                     break;
@@ -447,6 +450,7 @@
                 case MR_VIDEOPOSTPROCESSINGITF:
                     pItf = XAVideoPostProcessingItfImpl_Create( pObjImpl->adaptationCtx );
                     break;
+#endif
                 case MR_VOLUMEITF:
                     pItf = XAVolumeItfImpl_Create( pObjImpl->adaptationCtx );
                     break;
@@ -524,6 +528,7 @@
                 case MR_EQUALIZERITF:
                     XAEqualizerItfImpl_Free(pItf);
                     break;
+#ifdef OMAX_CAMERABIN
                 case MR_IMAGECONTROLSITF:
                     XAImageControlsItfImpl_Free(pItf);
                     break;
@@ -533,12 +538,14 @@
                 case MR_IMAGEENCODERITF:
                     XAImageEncoderItfImpl_Free(pItf);
                     break;
+#endif
                 case MR_METADATAINSERTIONITF:
                     XAMetadataInsertionItfImpl_Free(pItf);
                     break;
                 case MR_RECORDITF:
                     XARecordItfImpl_Free(pItf);
                     break;
+#ifdef OMAX_CAMERABIN
                 case MR_SNAPSHOTITF:
                     XASnapshotItfImpl_Free(pItf);
                     break;
@@ -548,6 +555,7 @@
                 case MR_VIDEOPOSTPROCESSINGITF:
                     XAVideoPostProcessingItfImpl_Free(pItf);
                     break;
+#endif
                 case MR_VOLUMEITF:
                     XAVolumeItfImpl_Free(pItf);
                     break;
@@ -613,10 +621,11 @@
         case MR_EQUALIZERITF:
             mapEntry->pItf = XAEqualizerItfImpl_Create( pImpl->adaptationCtx );
             break;
+#ifdef OMAX_CAMERABIN
         case MR_IMAGEEFFECTSITF:
             mapEntry->pItf = XAImageEffectsItfImpl_Create( pImpl->adaptationCtx );
             break;
-
+#endif
         default:
             DEBUG_ERR("XAMediaRecorderImpl_DoAddItf unknown id");
             ret = XA_RESULT_FEATURE_UNSUPPORTED;
@@ -672,9 +681,11 @@
         case MR_EQUALIZERITF:
             XAEqualizerItfImpl_Free( mapEntry->pItf );
             break;
+#ifdef OMAX_CAMERABIN
         case MR_IMAGEEFFECTSITF:
             XAImageEffectsItfImpl_Free( mapEntry->pItf );
             break;
+#endif
         default:
             DEBUG_ERR("XAMediaRecorderImpl_DoRemoveItf unknown id");
             ret = XA_RESULT_FEATURE_UNSUPPORTED;
--- a/khronosfws/openmax_al/src/mmf_adaptation/cmetadatautilityitf.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/mmf_adaptation/cmetadatautilityitf.cpp	Fri May 28 19:26:28 2010 -0500
@@ -27,15 +27,9 @@
 {
 	CMetadataUtilityItf* p_mdutilitf = new CMetadataUtilityItf;
 	
-	TInt ret = p_mdutilitf->ParseSource(uri);
+	p_mdutilitf->ParseSource(uri); //ignore error
 
-	if(ret == KErrNone)
-	{
-		return p_mdutilitf; 
-	}
-
-	delete p_mdutilitf;
-	return NULL;
+	return p_mdutilitf;
 }
 
 TInt CMetadataUtilityItf::OpenSource(char* pOrigUri)
@@ -95,7 +89,24 @@
     {
         delete []uri;
     }
-    
+
+	if(ret != KErrNone)
+	{
+		//delete the utilities
+		if(m_pS60Util)
+		{
+			delete m_pS60Util;
+			m_pS60Util = NULL;
+		}
+
+		if(m_pHXUtil)
+		{
+			delete m_pHXUtil;
+			m_pHXUtil = NULL;
+		}
+
+		
+	}
 	return ret;
 }
 
@@ -113,14 +124,18 @@
 
 TInt CMetadataUtilityItf::CalculateNumMetadataItems(TUint*numItems)
 {
+	*numItems = 0;
+	
 	if(m_pS60Util)
 	{
 		return m_pS60Util->CalculateNumMetadataItems(numItems);
 	}
-	else
+	else if(m_pHXUtil)
 	{
 		return m_pHXUtil->CalculateNumMetadataItems(numItems);
 	}
+
+	return KErrNone;
 }
 
 char* CMetadataUtilityItf::GetKey(TInt index)
@@ -129,10 +144,12 @@
 	{
 		return m_pS60Util->GetKey(index);
 	}
-	else
+	else if(m_pHXUtil)
 	{
 		return m_pHXUtil->GetKey(index);
 	}
+
+	return NULL;
 }
 
 TInt CMetadataUtilityItf::GetValueSize(TInt index)
@@ -141,10 +158,12 @@
 	{
 		return m_pS60Util->GetValueSize(index);
 	}
-	else
+	else if(m_pHXUtil)
 	{
 		return m_pHXUtil->GetValueSize(index);
 	}
+
+	return 0;
 }
 
 TInt CMetadataUtilityItf::GetValue(TInt index, char* data, TInt maxLength, TInt* outSize, TInt* encodingType)
@@ -153,10 +172,12 @@
 	{
 		return m_pS60Util->GetValue(index, data, maxLength, outSize, encodingType);
 	}
-	else
+	else if(m_pHXUtil)
 	{
 		return m_pHXUtil->GetValue(index, data, maxLength, outSize, encodingType);
 	}
+
+	return 0;
 }
 
 TInt CMetadataUtilityItf::ParseSource(char* uri)
--- a/khronosfws/openmax_al/src/mmf_adaptation/cmmfbackendengine.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/mmf_adaptation/cmmfbackendengine.cpp	Fri May 28 19:26:28 2010 -0500
@@ -120,7 +120,7 @@
         if (iRecordState == ERecorderNotReady)
             {
             iFileFormat = format;
-            iAPIBeingUsed = DetermineAPIToUse(uri, EPlay);
+            iAPIBeingUsed = DetermineAPIToUse(uri, ERecord);
             err = XA_RESULT_INTERNAL_ERROR;
             if (iAPIBeingUsed == EAudioRecorderUtility)
                 {
@@ -131,7 +131,7 @@
                 TRAP(err, InitAudioRecorderUtilityL());
                 RET_IF_ERR(err, XA_RESULT_INTERNAL_ERROR);
     
-                TRAP(err, iAudioRecorder->OpenFileL(iFileName));
+                TRAP(err, iAudioRecorder->OpenFileL(iUriPtr));
                 RET_IF_ERR(err, XA_RESULT_INTERNAL_ERROR);
                 /* Wait until we receive moscostatechanged callback */
                 if(!iActiveSchedulerWait->IsStarted())
@@ -183,13 +183,24 @@
                 TRAP(err, InitVideoPlayerUtilityL());
                 RET_IF_ERR(err, XA_RESULT_INTERNAL_ERROR);
 
-                /* Open file */
-                TAG_TIME_PROFILING_BEGIN;
-                TRAP(err, iVideoPlayer->OpenFileL(iUriPtr));
-                RET_IF_ERR(err, XA_RESULT_INTERNAL_ERROR);
-                TAG_TIME_PROFILING_END;
-                PRINT_TO_CONSOLE_TIME_DIFF;
-
+                if(iUriType == ELocal)
+                    {
+                    /* Open file */
+                    TAG_TIME_PROFILING_BEGIN;
+                    TRAP(err, iVideoPlayer->OpenFileL(iUriPtr));
+                    RET_IF_ERR(err, XA_RESULT_INTERNAL_ERROR);
+                    TAG_TIME_PROFILING_END;
+                    PRINT_TO_CONSOLE_TIME_DIFF;
+                    }
+                else
+                    {
+                    /* Open URL */
+                    TAG_TIME_PROFILING_BEGIN;
+                    TRAP(err, iVideoPlayer->OpenUrlL(iUriPtr));
+                    RET_IF_ERR(err, XA_RESULT_INTERNAL_ERROR);
+                    TAG_TIME_PROFILING_END;
+                    PRINT_TO_CONSOLE_TIME_DIFF;
+                    }
                 /* Wait until we receive  MvpuoOpenComplete */
                 PRINT_TO_CONSOLE_HOME_TIME;
                 if (!iActiveSchedulerWait->IsStarted())
@@ -227,6 +238,10 @@
     char ext[MAX_EXTENSION_SIZE] = { 0 };
     int extLen;
 
+    int colpos;
+    char urischeme[MAX_EXTENSION_SIZE] = { 0 };
+    int urischemeLen;
+
     dotPtr = strrchr(uri, (int)'.');
     if (!dotPtr)
         {
@@ -242,22 +257,42 @@
         ext[i] = tolower(ext[i]);
         }
 
+    colpos = strcspn(uri,":");
+
+    strncpy(urischeme, uri, colpos+1);
+    /*Null terminate the string*/
+    urischeme[colpos+1] = '\0';
+    urischemeLen = sizeof(urischeme);
+    for(unsigned int i=0; i < urischemeLen; i++)
+        {
+        urischeme[i] = tolower(urischeme[i]);
+        }
+    
+    
+    
     if (aFunc == ERecord)
         {
         return EAudioRecorderUtility;
         }
     else
         {
-        if (!strcasecmp(ext, ".mp3") ||
-           !strcasecmp(ext, ".amr") ||
-           !strcasecmp(ext, ".aac") ||
-           !strcasecmp(ext, ".mid") ||
-		   !strcasecmp(ext, ".wav") ||
-           !strcasecmp(ext, ".awb"))
+        if(!strcasecmp(urischeme, "file:"))
             {
-            return EAudioPlayerUtility;
+            if (!strcasecmp(ext, ".mp3") ||
+               !strcasecmp(ext, ".amr") ||
+               !strcasecmp(ext, ".aac") ||
+               !strcasecmp(ext, ".mid") ||
+               !strcasecmp(ext, ".wav") ||
+               !strcasecmp(ext, ".awb"))
+                {
+                return EAudioPlayerUtility;
+                }
+              else
+                {
+                return EVideoPlayerUtility;
+                }
             }
-          else
+        else
             {
             return EVideoPlayerUtility;
             }
@@ -463,12 +498,15 @@
             if (iPreviousRecordState == CMdaAudioClipUtility::ENotReady)
                 {
                 //RDebug::Print(_L("CMMFBackendEngine::MoscoStateChangeEvent 2"));
-                TRAP(err,iaudioInputRecord = CAudioInput::NewL( *iAudioRecorder ));
-                RArray<CAudioInput::TAudioInputPreference> inputArray;
-                inputArray.Append( CAudioInput::EDefaultMic );
-                // Set Audio Input
-                iaudioInputRecord->SetAudioInputL( inputArray.Array( ) );
-                inputArray.Close();
+                TRAP(err,iAudioInputRecord = CAudioInput::NewL( *iAudioRecorder ));
+                if(err == KErrNone)
+                    {
+                    RArray<CAudioInput::TAudioInputPreference> inputArray;
+                    inputArray.Append( CAudioInput::EDefaultMic );
+                    // Set Audio Input
+                    TRAP(err, iAudioInputRecord->SetAudioInputL( inputArray.Array( ) ));
+                    inputArray.Close();
+                    }
                 TMMFMessageDestination destination(KUidMetaDataWriteCustomCommand);
                 TMMFMessageDestinationPckg pckg = TMMFMessageDestinationPckg(destination);
                 TInt ret = iAudioRecorder->RecordControllerCustomCommandSync(pckg, 0, KNullDesC8, KNullDesC8);
@@ -565,7 +603,14 @@
                 break;
             };
         }
-
+    
+    // deleting the AudioInput object
+    if(iAudioInputRecord)
+        {
+          delete iAudioInputRecord;
+          iAudioInputRecord = NULL;
+        }
+    
     if (iBaseAudioPlayer && iAudioPlayer)
         {
         iAudioPlayer->Close();
@@ -600,8 +645,6 @@
     delete iBaseVideoPlayer;
     iBaseVideoPlayer = NULL;
     iVideoPlayer = NULL;
-    delete iaudioInputRecord;
-    iaudioInputRecord = NULL;
     delete iBaseAudioPlayer;
     iBaseAudioPlayer = NULL;
     iAudioPlayer = NULL;
@@ -713,7 +756,7 @@
             TRAP(err, sr = iAudioRecorder->DestinationSampleRateL());
             if(err == KErrNone)
                 {
-                *samplerate = sr;
+                *samplerate = sr*1000;
                 }
             }
         }
@@ -730,7 +773,7 @@
                                                         configPackage);
             if(err == KErrNone)
                 {
-                *samplerate = configPackage().iSampleRate;
+                *samplerate = configPackage().iSampleRate*1000;
                 }
             }
         }
@@ -791,7 +834,7 @@
     TInt err(KErrNone);
     if(iRecordState == CMMFBackendEngine::ERecorderOpen)
         {
-        TRAP(err, iAudioRecorder->SetDestinationSampleRateL(*samplerate));
+        TRAP(err, iAudioRecorder->SetDestinationSampleRateL(*samplerate/1000));
         if(err != KErrNone)
             {
             return XA_RESULT_PARAMETER_INVALID;
@@ -1442,13 +1485,14 @@
 
     iUriPtr.Set(iUri->Des());
     iUriPtr.Copy(uriParam); /* Copy data*/
-    iUriPtr.LowerCase();
+    //iUriPtr.LowerCase();
 
     /* For file scheme convert from file:///c:/folder/file.ext
      * format to c:\\folder\\file.ext using TUriParser. */
     _LIT(KFileScheme,"file:///");
     if (iUriPtr.Find(KFileScheme) >= 0)
         {
+        iUriType = ELocal;
         TPtr tmp(const_cast<TUint16 *>(iUriPtr.Ptr()) + KFileScheme().Length(),
                 iUriPtr.Length(),
                 iUriPtr.Length());
@@ -1477,6 +1521,10 @@
         file = NULL;
 
         }
+    else
+        {
+        iUriType = EStreaming;
+        }
     return err;
     }
 
--- a/khronosfws/openmax_al/src/mmf_adaptation/cmmfbackendengine.h	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/mmf_adaptation/cmmfbackendengine.h	Fri May 28 19:26:28 2010 -0500
@@ -64,7 +64,13 @@
           ERecord
           };
       
-	enum TMMFUtiltyInUse
+      enum TUriType
+          {
+          ELocal = 0,
+          EStreaming
+          };
+
+      enum TMMFUtiltyInUse
 	    {
         ENoUtility,
         EVideoPlayerUtility,
@@ -194,7 +200,7 @@
     XAuint32                    iFileFormat;
     TInt                        iPauseSupportMP4;
     CActiveSchedulerWait*       iActiveSchedulerWait;
-		CAudioInput*              iaudioInputRecord;
+    CAudioInput*                iAudioInputRecord;
 #ifdef USE_LOCAL_WINDOW_RESOURCES
     CMediaClientVideoDisplay* iMediaClientVideoDisplay;
     TRect m_clipRect;
@@ -239,6 +245,7 @@
     /* Property set by client (for file without file:///) */
     HBufC* iUri; /* owns */
     TPtr iUriPtr;
+    TUriType iUriType;
     /* Property set by client */
     RWsSession* m_pWs;
     /* Property set by client */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/khronosfws/openmax_al/src/mmf_adaptation/cmmfradiobackendengine.cpp	Fri May 28 19:26:28 2010 -0500
@@ -0,0 +1,616 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include "cmmfradiobackendengine.h"
+
+extern "C" {
+#include "xaradioitfadaptation.h"
+#include "xanokiavolumeextitfadaptationmmf.h"
+#include "xanokialinearvolumeitfadaptationmmf.h"
+#include "xaplayitfadaptationmmf.h"
+}
+
+CMMFRadioBackendEngine *CMMFRadioBackendEngine::s_instance = 0;
+
+CMMFRadioBackendEngine* CMMFRadioBackendEngine::Instance()
+{
+	if (!s_instance)
+	{	
+		s_instance = new CMMFRadioBackendEngine();
+		s_instance->ConstructL();
+	}
+	return s_instance;
+}
+
+void CMMFRadioBackendEngine::DeleteInstance()
+{
+	if (iFmTunerUtility)
+  {
+  	iFmTunerUtility->Close();
+  	iFmTunerUtility = NULL;
+  }	
+  if (iPlayerUtility)
+  {
+  	iPlayerUtility->Close();
+  	iPlayerUtility = NULL;
+  }
+  
+  if (iRadioUtility)
+  {
+		delete iRadioUtility;
+		iRadioUtility = NULL;
+	}
+		
+}
+
+CMMFRadioBackendEngine::~CMMFRadioBackendEngine()
+{
+}
+    
+CMMFRadioBackendEngine::CMMFRadioBackendEngine()
+{
+	
+}
+
+void CMMFRadioBackendEngine::ConstructL()
+{
+	iAutoFlag = ETrue;
+		
+ 	iRadioUtility = CRadioUtility::NewL( ETrue );
+ 	iFmTunerUtility = &iRadioUtility->RadioFmTunerUtilityL( *this );
+ 	iFmTunerUtility->EnableTunerInOfflineMode( ETrue );
+ 	iFmTunerUtility->RequestTunerControl();   
+    
+ 	iPlayerUtility = &iRadioUtility->RadioPlayerUtilityL( *this );    
+ 	 
+}
+void CMMFRadioBackendEngine::StationSeek(XAboolean aUpwards)
+{
+	if (iFmTunerUtility)
+ 	{
+  	iFmTunerUtility->StationSeek(aUpwards);
+ 	}	
+}
+
+void CMMFRadioBackendEngine::SetFrequency(TInt aFreq)
+{
+  DEBUG_API_A1("CMMFRadioBackendEngine::SetFrequency: %d", aFreq);	
+	if (iFmTunerUtility)
+ 	{
+  	iFmTunerUtility->SetFrequency(aFreq);
+ 	}	
+}
+
+TInt CMMFRadioBackendEngine::GetFrequency(TInt& aFreq)
+{
+  DEBUG_API("CMMFRadioBackendEngine::GetFrequency");	
+	TInt ret = KErrNotFound;
+	if (iFmTunerUtility)
+	{
+  	ret = iFmTunerUtility->GetFrequency(aFreq);
+ 	}	
+  DEBUG_API_A1("CMMFRadioBackendEngine::GetFrequency RET: %d", ret);	 
+//  RDebug::Print(_L("CMMFRadioBackendEngine::GetFrequency RET: %d"), ret);	 
+ 	return ret; 	
+}
+
+TInt CMMFRadioBackendEngine::GetSignalStrength(TInt& aSignalStrength)
+{
+	TInt ret = KErrNotFound;
+ 	if (iFmTunerUtility)
+	{
+  	ret = iFmTunerUtility->GetSignalStrength(aSignalStrength);
+ 	}	
+  DEBUG_API_A1("CMMFRadioBackendEngine::GetSignalStrength RET: %d", ret);	
+//  RDebug::Print(_L("CMMFRadioBackendEngine::GetSignalStrength RET: %d"), ret);	    	
+	return ret;
+}
+
+void CMMFRadioBackendEngine::CancelSetFrequency()
+{
+	if (iFmTunerUtility)
+ 	{
+ 		iFmTunerUtility->CancelSetFrequency();
+ 	}	
+}
+
+void CMMFRadioBackendEngine::CancelStationSeek()
+{
+	if (iFmTunerUtility)
+ 	{
+ 		iFmTunerUtility->CancelStationSeek();
+ 	}	
+}
+
+void CMMFRadioBackendEngine::SetFreqRange(TFmRadioFrequencyRange aRange)
+{
+	if (iFmTunerUtility)
+ 	{
+ 		iFmTunerUtility->SetFrequencyRange(aRange);
+ 	}	
+}
+
+TInt CMMFRadioBackendEngine::GetFreqRange(TFmRadioFrequencyRange& aRange)
+{
+	TInt ret = KErrNotFound;
+	TInt minFreq = 0;
+	TInt maxFreq = 0;
+		
+ 	if (iFmTunerUtility)
+ 	{
+ 		ret = iFmTunerUtility->GetFrequencyRange((TFmRadioFrequencyRange&)aRange, (TInt&)minFreq, (TInt&)maxFreq);
+ 	}	
+  DEBUG_API_A1("CMMFRadioBackendEngine::GetFreqRange RET: %d", ret);	 
+//  RDebug::Print(_L("CMMFRadioBackendEngine::GetFreqRange RET: %d"), ret);	   	
+  return ret;
+}
+
+TInt CMMFRadioBackendEngine::GetFreqRangeProperties(TFmRadioFrequencyRange& aRange, TInt& aMinFreq, TInt& aMaxFreq)
+{
+	TInt ret = KErrNotFound;
+		
+	if (iFmTunerUtility)
+ 	{
+  	ret = iFmTunerUtility->GetFrequencyRange((TFmRadioFrequencyRange&)aRange, (TInt&)aMinFreq, (TInt&)aMaxFreq);
+ 	}	
+  DEBUG_API_A1("CMMFRadioBackendEngine::GetFreqRangeProperties RET: %d", ret);	 	
+//  RDebug::Print(_L("CMMFRadioBackendEngine::GetFreqRangeProperties RET: %d"), ret);	   
+  return ret;
+}
+TInt CMMFRadioBackendEngine::GetMaxVolume(TInt& aMaxVol)
+{
+	TInt ret = KErrNotFound;
+
+	if (iPlayerUtility)
+	{
+		ret = iPlayerUtility->GetMaxVolume(aMaxVol);
+	}		 
+  return ret;
+}
+
+TInt CMMFRadioBackendEngine::SetVolume(TInt aVol)
+{
+	TInt ret = KErrNotFound; 
+
+	if (iPlayerUtility)
+	{
+		ret = iPlayerUtility->SetVolume(aVol);
+	}		 
+  return ret;
+}
+
+TInt CMMFRadioBackendEngine::SetMute(XAboolean aMute)
+{
+	TInt ret = KErrNotFound;
+
+	if (iPlayerUtility)
+	{
+		ret = iPlayerUtility->Mute(aMute);
+	}		
+  return ret;
+}
+
+TInt CMMFRadioBackendEngine::GetVolume(TInt& aVol)
+{
+	TInt ret = KErrNotFound;
+
+	if (iPlayerUtility)
+	{
+		ret = iPlayerUtility->GetVolume(aVol);
+	}		
+  return ret;
+}
+
+TInt CMMFRadioBackendEngine::GetForcedMonoReception(XAuint32& aForcedMono) 
+{
+	TInt ret = KErrNotFound;
+	TBool forceMono = EFalse;
+
+	if (iFmTunerUtility)
+	{
+		ret = iFmTunerUtility->GetForcedMonoReception(forceMono);
+		if (ret != KErrNone)
+			return ret;			
+	}		 
+		
+//  RDebug::Print(_L("CMMFRadioBackendEngine::GetForcedMonoReception RET: %d, aForcedMono = %d"), ret, aForcedMono);	 		
+	if (forceMono)
+	{
+		aForcedMono = XA_STEREOMODE_MONO;
+	}
+	else
+	{
+		if (iAutoFlag)			
+			aForcedMono = XA_STEREOMODE_AUTO;
+		else	
+			aForcedMono = XA_STEREOMODE_STEREO;				
+	}
+  return ret;
+}
+
+void CMMFRadioBackendEngine::PlayRadio()
+{
+	if (iPlayerUtility)
+	{
+		iPlayerUtility->Play();
+	}		
+}
+
+void CMMFRadioBackendEngine::StopRadio()
+{
+	if (iPlayerUtility)
+	{
+		iPlayerUtility->Stop();
+	}		
+}
+
+TInt CMMFRadioBackendEngine::ForceMonoReception(XAuint32 aForcedMono)
+{
+	TInt ret = KErrNotFound;
+
+	if (iFmTunerUtility)
+	{
+		if (aForcedMono == XA_STEREOMODE_MONO)
+		{
+			iAutoFlag = EFalse;
+			ret = iFmTunerUtility->ForceMonoReception(ETrue);
+		}
+		else if (aForcedMono == XA_STEREOMODE_STEREO)
+		{
+			iAutoFlag = EFalse;
+			ret = iFmTunerUtility->ForceMonoReception(EFalse);
+		}	
+		else // (aForcedMono == XA_STEREOMODE_AUTO)
+		{
+			iAutoFlag = ETrue;
+			ret = iFmTunerUtility->ForceMonoReception(EFalse);
+		}							
+	}	
+  DEBUG_API_A1("CMMFRadioBackendEngine::ForceMonoReception RET: %d", ret);	
+ // RDebug::Print(_L("CMMFRadioBackendEngine::ForceMonoReception RET: %d"), ret);	   		
+  return ret;
+}
+
+XAresult CMMFRadioBackendEngine::SetRadioAdaptContext(void * adaptcontext)
+{
+	iRadioAdaptContext = adaptcontext;
+	return XA_RESULT_SUCCESS;
+} 
+
+XAresult CMMFRadioBackendEngine::SetPlayerAdaptContext(void * adaptcontext)
+{
+	iPlayerAdaptContext = adaptcontext;
+	return XA_RESULT_SUCCESS;
+} 
+
+// -----------------------------------------------------------------------------
+// CMMFRadioBackendEngine::MrpeoPresetChanged
+// Observer for Presets
+// -----------------------------------------------------------------------------
+void CMMFRadioBackendEngine::MrpeoPresetChanged(
+    TPresetChangeEvent /*aChange*/,
+    TInt /*aIndex*/ )
+{
+
+}
+
+// ----------------------------------------------------
+// CMMFRadioBackendEngine::MrftoSquelchChange
+//
+// ----------------------------------------------------
+//
+void CMMFRadioBackendEngine::MrftoSquelchChange(
+    TBool /*aSquelch*/ )
+{
+	
+}    
+
+// ----------------------------------------------------
+// CMMFRadioBackendEngine::MTsoForcedMonoChanged
+// Called when a client enables/disabled forced mono reception
+// ----------------------------------------------------
+//
+void CMMFRadioBackendEngine::MrftoForcedMonoChange(
+    TBool aForcedMono )
+{
+  DEBUG_API_A1("CMMFRadioBackendEngine::MrftoForcedMonoChange: aForcedMono =  %d", aForcedMono);	
+//  RDebug::Print(_L("CMMFRadioBackendEngine::MrftoForcedMonoChange: aForcedMono = %d"), aForcedMono);	   	
+	XARadioItfAdapt_StereoStatusChange((XAAdaptationBaseCtx*)iRadioAdaptContext, aForcedMono);    
+}  
+    
+ // ----------------------------------------------------
+// CMMFRadioBackendEngine::MrftoFrequencyChange
+// Called when the tuned frequency changes
+// ----------------------------------------------------
+//
+void CMMFRadioBackendEngine::MrftoFrequencyChange(
+    TInt aNewFrequency)
+{
+ 	DEBUG_API_A1("CMMFRadioBackendEngine::MrftoFrequencyChange: aNewFrequency =  %d", aNewFrequency);	
+ // RDebug::Print(_L("CMMFRadioBackendEngine::MrftoFrequencyChange aNewFrequency = %d"), aNewFrequency);	  			
+	XARadioItfAdapt_FrequencyChange((XAAdaptationBaseCtx*)iRadioAdaptContext, aNewFrequency);    
+}  
+    
+// ----------------------------------------------------
+// CMMFRadioBackendEngine::MrftoFrequencyRangeChange
+//
+// ----------------------------------------------------
+//
+void CMMFRadioBackendEngine::MrftoFrequencyRangeChange(
+    TFmRadioFrequencyRange aNewRange )
+{
+ 	DEBUG_API_A1("CMMFRadioBackendEngine::MrftoFrequencyRangeChange: aNewRange =  %d", aNewRange);		
+//  RDebug::Print(_L("CMMFRadioBackendEngine::MrftoFrequencyRangeChange: aNewRange = %d"), aNewRange);	  		
+	XARadioItfAdapt_FrequencyRangeChange((XAAdaptationBaseCtx*)iRadioAdaptContext, aNewRange);        
+} 
+ 
+// ----------------------------------------------------
+// CMMFRadioBackendEngine::MrftoOfflineModeStatusChange
+// Called when offline mode status changes
+// ----------------------------------------------------
+//
+void CMMFRadioBackendEngine::MrftoOfflineModeStatusChange(
+    TBool /*aOfflineMode*/ )
+{
+ 
+}  
+    
+// ----------------------------------------------------
+// CMMFRadioBackendEngine::MrftoAntennaStatusChange
+// Called when antenna status changes.
+// ----------------------------------------------------
+//
+void CMMFRadioBackendEngine::MrftoAntennaStatusChange(
+    TBool /*aAttached*/ )
+{
+
+}
+
+// ----------------------------------------------------
+// CMMFRadioBackendEngine::MrftoFmTransmitterStatusChange
+// The FM tuner is turned off when FM transmitter is on.
+// ----------------------------------------------------
+//
+void CMMFRadioBackendEngine::MrftoFmTransmitterStatusChange(
+    TBool /*aActive*/ )
+{
+ 
+}
+  
+// ----------------------------------------------------
+// CMMFRadioBackendEngine::MrftoStationSeekComplete
+//
+// ----------------------------------------------------
+//
+void CMMFRadioBackendEngine::MrftoStationSeekComplete(
+    TInt aError,
+    TInt aFrequency )
+{
+	XARadioItfAdapt_SeekComplete((XAAdaptationBaseCtx*)iRadioAdaptContext, aError, aFrequency);    
+}      	
+    
+// ----------------------------------------------------
+// CMMFRadioBackendEngine::MrftoSetFrequencyComplete
+// ----------------------------------------------------
+//
+void CMMFRadioBackendEngine::MrftoSetFrequencyComplete(
+    TInt aError )
+{
+ 	DEBUG_API_A1("CMMFRadioBackendEngine::MrftoSetFrequencyComplete: aError =  %d", aError);		
+//  RDebug::Print(_L("CMMFRadioBackendEngine::MrftoFrrequencyComplete: aError = %d"), aError);	  		
+	TInt freq = 0;
+  if (!aError) 
+ 	{
+ 		iFmTunerUtility->GetFrequency(freq);
+ 	}
+ 	DEBUG_API_A1("CMMFRadioBackendEngine::MrftoSetFrequencyComplete: new freq is: %d", freq);	 
+//  RDebug::Print(_L("CMMFRadioBackendEngine::MrftoSetFrequencyComplete: new freq is: %d"), freq);	  		
+	XARadioItfAdapt_SetFrequencyComplete((XAAdaptationBaseCtx*)iRadioAdaptContext, aError, freq);    
+}  
+    
+// ----------------------------------------------------
+// CMMFRadioBackendEngine::MrftoSetFrequencyRangeComplete
+//
+// ----------------------------------------------------
+//
+void CMMFRadioBackendEngine::MrftoSetFrequencyRangeComplete(
+    TInt aError )
+{
+ 	DEBUG_API_A1("CMMFRadioBackendEngine::MrftoSetFrequencyRangeComplete: aError =  %d", aError);		
+//  RDebug::Print(_L("CMMFRadioBackendEngine::MrftoSetFrequencyRangeComplete: aError = %d"), aError);	  	
+	XARadioItfAdapt_SetFrequencyRangeComplete((XAAdaptationBaseCtx*)iRadioAdaptContext, aError);       	  
+}
+
+// ----------------------------------------------------
+// CMMFRadioBackendEngine::MrftoRequestTunerControlComplete
+// ----------------------------------------------------
+//
+void CMMFRadioBackendEngine::MrftoRequestTunerControlComplete(
+    TInt aError)
+{
+//  RDebug::Print(_L("CMMFRadioBackendEngine::MrftoRequestTunerControlComplete: aError = %d"), aError);	  	  			 
+} 
+    
+// ----------------------------------------------------
+// CMMFRadioBackendEngine::MrpoBalanceChange
+//
+// ----------------------------------------------------
+//
+void CMMFRadioBackendEngine::MrpoBalanceChange(
+    TInt /*aLeftPercentage*/,
+    TInt /*aRightPercentage*/ )
+{
+	
+} 
+    
+// ----------------------------------------------------
+// CMMFRadioBackendEngine::MrpoMuteChange
+//
+// ----------------------------------------------------
+//
+void CMMFRadioBackendEngine::MrpoMuteChange(
+    TBool aMute )
+{
+	XANokiaVolumeExtItfAdapt_MuteChange((XAAdaptationBaseCtx*)iPlayerAdaptContext, aMute);   
+}  
+    
+// ----------------------------------------------------
+// CMMFRadioBackendEngine::MrpoVolumeChange
+//
+// ----------------------------------------------------
+//
+void CMMFRadioBackendEngine::MrpoVolumeChange(
+    TInt aVolume )
+{
+	XANokiaLinearVolumeItfAdapt_VolumeChange((XAAdaptationBaseCtx*)iPlayerAdaptContext, aVolume);      	
+}  
+    
+// ----------------------------------------------------
+// CMMFRadioBackendEngine::MrpoStateChange This is Tuner State
+// Called when the state of the tuner changes
+// ----------------------------------------------------
+//
+void CMMFRadioBackendEngine::MrpoStateChange(
+    TPlayerState aState,
+    TInt aError )
+{	    	
+	if ( aError )
+ 	{
+ 		DEBUG_API_A1("CMMFRadioBackendEngine::MrpoStateChange: aError =  %d", aError);
+ // 	RDebug::Print(_L("CMMFRadioBackendEngine::MrpoStateChange: aError = %d"), aError);	  	 			     	
+ 	}
+
+ 	DEBUG_API_A1("CMMFRadioBackendEngine::MrpoStateChange: new state =  %d", aState);	
+//  RDebug::Print(_L("CMMFRadioBackendEngine::MrpoStateChange: new state = %d"), aState);	  	 	   
+ 	      
+	if ( aState == ERadioPlayerPlaying )
+ 	{
+  	XAPlayItfAdaptMMF_StateChange((XAAdaptationBaseCtx*)iPlayerAdaptContext, ETrue);  
+	}  
+ 	else  // ERadioPlayerIdle
+ 	{
+  	XAPlayItfAdaptMMF_StateChange((XAAdaptationBaseCtx*)iPlayerAdaptContext, EFalse);  
+ 	}        	
+}                           
+               
+extern "C" {
+
+	void* cmmfradiobackendengine_init()
+	{ 
+		return CMMFRadioBackendEngine::Instance();
+	}
+    
+	void cmmfradiobackendengine_delete(void* context)
+	{ 
+		((CMMFRadioBackendEngine*)(context))->DeleteInstance();
+	}    
+                 
+	void  set_frequency(void* context, XAuint32 freq)
+	{
+		((CMMFRadioBackendEngine*)(context))->SetFrequency((TInt)freq); 			
+	}
+    
+	XAresult  get_frequency(void* context, XAuint32* freq)
+	{
+		return ((CMMFRadioBackendEngine*)(context))->GetFrequency((TInt&)*freq); 			
+	}  
+    
+	XAresult  get_signal_strength(void* context, XAuint32* signalStrength)
+	{
+		return ((CMMFRadioBackendEngine*)(context))->GetSignalStrength((TInt&)*signalStrength); 			
+	}      
+    
+	void station_seek(void* context, XAboolean upwards)      
+	{
+		((CMMFRadioBackendEngine*)(context))->StationSeek(upwards); 			
+	}
+		
+	void cancel_set_frequency(void* context)      
+	{
+		((CMMFRadioBackendEngine*)(context))->CancelSetFrequency(); 			
+	}		
+		
+	void cancel_station_seek(void* context)      
+	{
+		((CMMFRadioBackendEngine*)(context))->CancelStationSeek(); 			
+	}		
+		
+	void set_freq_range(void* context, XAuint8 range)      
+	{
+		((CMMFRadioBackendEngine*)(context))->SetFreqRange((TFmRadioFrequencyRange)range); 			
+	}	
+		
+	XAresult  get_freq_range(void* context, XAuint8* range)
+	{
+		return ((CMMFRadioBackendEngine*)(context))->GetFreqRange((TFmRadioFrequencyRange&)*range); 			
+	}
+    
+	XAresult  get_freq_range_properties(void* context, XAuint8 range, XAuint32* aMinFreq, XAuint32* aMaxFreq)
+	{
+		return ((CMMFRadioBackendEngine*)(context))->GetFreqRangeProperties((TFmRadioFrequencyRange&)range, (TInt&) *aMinFreq, (TInt&) *aMaxFreq); 		
+	}   
+    
+	XAresult  get_max_volume(void* context, XAmillibel* maxVol)
+	{
+		return  ((CMMFRadioBackendEngine*)(context))->GetMaxVolume((TInt&)*maxVol); 
+	}   
+
+	XAresult  set_volume(void* context, XAuint32 vol)
+	{
+		return ((CMMFRadioBackendEngine*)(context))->SetVolume((TInt)vol); 			
+	} 
+    
+	XAresult  get_volume(void* context, XAuint32* vol)
+	{
+		return ((CMMFRadioBackendEngine*)(context))->GetVolume((TInt&)*vol); 		
+	}  
+    
+	XAresult  set_mute(void* context, XAboolean mute)
+	{
+		return ((CMMFRadioBackendEngine*)(context))->SetMute(mute); 			
+	} 
+    
+	XAresult  get_stereo_mode(void* context, XAuint32* mode)
+	{
+		return ((CMMFRadioBackendEngine*)(context))->GetForcedMonoReception(*mode); 			
+	}     
+    
+	XAresult  set_stereo_mode(void* context, XAuint32 mode)
+	{
+		return ((CMMFRadioBackendEngine*)(context))->ForceMonoReception(mode); 		
+	}  
+     
+	void play_radio(void* context)
+	{
+		((CMMFRadioBackendEngine*)(context))->PlayRadio(); 			
+	} 
+    
+	void stop_radio(void* context)
+	{
+		((CMMFRadioBackendEngine*)(context))->StopRadio(); 	
+	}        
+    
+	XAresult mmf_set_radio_adapt_context(void * context, void * adaptcontext)
+	{
+		return ((CMMFRadioBackendEngine*)(context))->SetRadioAdaptContext(adaptcontext);
+	}   
+	
+	XAresult mmf_set_player_adapt_context(void * context, void * adaptcontext)
+	{
+		return ((CMMFRadioBackendEngine*)(context))->SetPlayerAdaptContext(adaptcontext);
+	}   	                       										
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/khronosfws/openmax_al/src/mmf_adaptation/cmmfradiobackendengine.h	Fri May 28 19:26:28 2010 -0500
@@ -0,0 +1,264 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef CMMFRADIOBACKENDENGINE_H
+#define CMMFRADIOBACKENDENGINE_H
+
+#ifdef __cplusplus
+
+#include <e32base.h>
+#include <radioutility.h>
+#include <radiofmtunerutility.h>
+#include <radioplayerutility.h>
+#include <radiopresetutility.h>
+#include <radiofmpresetutility.h>
+#include <FMRadioTunerControl.h>
+#include "xaadaptationmmf.h"
+
+NONSHARABLE_CLASS(CMMFRadioBackendEngine) : public CBase,
+                     public MRadioPlayerObserver,
+                     public MRadioFmTunerObserver,
+                     public MRadioPresetObserver          
+    {
+public:
+
+    static CMMFRadioBackendEngine* Instance();
+    void DeleteInstance();
+    ~CMMFRadioBackendEngine();
+    
+		void SetFrequency(TInt aFreq);		   
+		TInt GetFrequency(TInt& aFreq);
+		TInt GetSignalStrength(TInt& aFreq);		
+		void StationSeek(XAboolean aUpwards);
+		void CancelSetFrequency();	
+		void CancelStationSeek();	
+		void SetFreqRange(TFmRadioFrequencyRange aRange);	
+		TInt GetFreqRange(TFmRadioFrequencyRange& aRange);
+		TInt GetFreqRangeProperties(TFmRadioFrequencyRange& aRange, TInt& aMinFreq, TInt& aMaxFreq);			
+		TInt GetMaxVolume(TInt& aMaxVol);									
+		TInt SetVolume(TInt aVol);		
+		TInt GetVolume(TInt& aVol);
+		TInt SetMute(XAboolean aMute);	
+		TInt GetForcedMonoReception(XAuint32& aForcedMono);
+		TInt ForceMonoReception(XAuint32 aForcedMono);
+		void PlayRadio();		
+		void StopRadio();		
+    XAresult SetRadioAdaptContext(void * adaptcontext);  	
+		XAresult SetPlayerAdaptContext(void * adaptcontext);    					
+						
+    /**
+     * From MRadioPlayerObserver.
+     * Called when Radio state changed.
+     *
+     * @since S60 3.2
+     * @param aState Radio player state
+     * @param aError A standard system error code, only used when aState is ERadioPlayerIdle
+     */
+    void MrpoStateChange( TPlayerState aState, TInt aError );
+
+    /**
+     * From MRadioPlayerObserver.
+     * Called when volume changes. This may be caused by other applications.
+     *
+     * @since S60 3.2
+     * @param aVolume Current volume.
+     */
+    void MrpoVolumeChange( TInt aVolume );
+
+    /**
+     * From MRadioPlayerObserver.
+     * Called when mute setting changes. This may be caused by other applications.
+     *
+     * @since S60 3.2
+     * @param aMute ETrue indicates audio is muted.
+     */
+    void MrpoMuteChange( TBool aMute );
+
+    /**
+     * From MRadioPlayerObserver.
+     * Called when mute setting changes. This may be caused by other applications.
+     *
+     * Called when balance setting changes. This may be caused by other applications.
+     *
+     * @since S60 3.2
+     * @param aLeftPercentage
+     *        Left speaker volume percentage. This can be any value from zero to 100.
+     *        Zero value means left speaker is muted.
+     * @param aRightPercentage
+     *        Right speaker volume percentage. This can be any value from zero to 100.
+     *        Zero value means right speaker is muted.
+     */
+    void MrpoBalanceChange( TInt aLeftPercentage, TInt aRightPercentage );
+        
+    /**
+     * From MRadioFmTunerObserver.
+     * Called when Request for tuner control completes.
+     *
+     * @since S60 3.2
+     * @param aError A standard system error code or FM tuner error (TFmRadioTunerError).
+     */
+    void MrftoRequestTunerControlComplete( TInt aError );
+
+    /**
+     * From MRadioFmTunerObserver.
+     * Set frequency range complete event. This event is asynchronous and is received after
+     * a call to CRadioFmTunerUtility::SetFrequencyRange.
+     *
+     * @since S60 3.2
+     * @param aError A standard system error code or FM tuner error (TFmRadioTunerError).
+     */
+    void MrftoSetFrequencyRangeComplete( TInt aError );
+
+    /**
+     * From MRadioFmTunerObserver.
+     * Set frequency complete event. This event is asynchronous and is received after a call to
+     * CRadioFmTunerUtility::SetFrequency.
+     *
+     * @since S60 3.2
+     * @param aError A standard system error code or FM tuner error (TFmRadioTunerError).
+     */
+    void MrftoSetFrequencyComplete( TInt aError );
+
+    /**
+     * From MRadioFmTunerObserver.
+     * Station seek complete event. This event is asynchronous and is received after a call to
+     * CRadioFmTunerUtility::StationSeek.
+     *
+     * @since S60 3.2
+     * @param aError A standard system error code or FM tuner error (TFmRadioTunerError).
+     * @param aFrequency The frequency(Hz) of the radio station that was found.
+     */
+    void MrftoStationSeekComplete( TInt aError, TInt aFrequency );
+
+    /**
+     * From MRadioFmTunerObserver.
+     * Called when FM Transmitter status changes (if one is present in the device). Tuner receiver
+     * is forced to be turned off due to hardware conflicts when FM transmitter is activated.
+     *
+     * @since S60 3.2
+     * @param aActive ETrue if FM transmitter is active; EFalse otherwise.
+     */
+    void MrftoFmTransmitterStatusChange( TBool aActive );
+
+    /**
+     * From MRadioFmTunerObserver.
+     * Called when antenna status changes.
+     *
+     * @since S60 3.2
+     * @param aAttached ETrue if antenna is attached; EFalse otherwise.
+     */
+    void MrftoAntennaStatusChange(TBool aAttached );
+
+    /**
+     * From MRadioFmTunerObserver.
+     * Called when offline mode status changes.
+     * @since S60 3.2
+     *
+     * @param aOfflineMode ETrue if offline mode is enabled; EFalse otherwise.
+     */
+    void MrftoOfflineModeStatusChange(TBool aOfflineMode );
+
+    /**
+     * From MRadioFmTunerObserver.
+     * Called when the frequency range changes. This may be caused by other applications.
+     *
+     * @since S60 3.2
+     * @param aBand New frequency range.
+     */
+    void MrftoFrequencyRangeChange(TFmRadioFrequencyRange aBand );
+
+    /**
+     * From MRadioFmTunerObserver.
+     * Called when the tuned frequency changes. This may be caused by other
+     * applications or RDS if AF/TA is enabled.
+     *
+     * @since S60 3.2
+     * @param aNewFrequency The new tuned frequency(Hz).
+     */
+    void MrftoFrequencyChange( TInt aNewFrequency );
+
+    /**
+     * From MRadioFmTunerObserver.
+     * Called when the forced mono status change. This may be caused by other applications.
+     *
+     * @since S60 3.2
+     * @param aForcedMono ETrue if forced mono mode is enabled; EFalse otherwise.
+     */
+    void MrftoForcedMonoChange( TBool aForcedMono );
+
+    /**
+     * From MRadioFmTunerObserver.
+     * Called when the squelch (muting the frequencies without broadcast) status change.
+     * This may be caused by other applications.
+     *
+     * @since S60 3.2
+     * @param aSquelch ETrue if squelch is enabled; EFalse otherwise.
+     */
+    void MrftoSquelchChange( TBool aSquelch );
+
+    /**
+     * From MRadioPresetObserver.
+     * Called when a preset changes.
+     *
+     * NOTE: EPresetDeleted with aIndex == 0, indicates that all presets have been deleted.
+     *
+     * @since S60 3.2
+     * @param aChange Change event type
+     * @param aIndex Index to the preset that has changed. Zero means all presets.
+     */
+    void MrpeoPresetChanged( TPresetChangeEvent aChange, TInt aIndex ); 
+       
+private:
+		static CMMFRadioBackendEngine* s_instance;
+    CMMFRadioBackendEngine();
+    void ConstructL();
+
+private:      
+    CRadioUtility* 					iRadioUtility; 
+    CRadioFmTunerUtility* 	iFmTunerUtility;
+    CRadioPlayerUtility* 		iPlayerUtility;
+    TBool										iAutoFlag;
+    void* 									iRadioAdaptContext;
+    void* 									iPlayerAdaptContext;    
+       
+    };
+    
+#else  /* __cplusplus */
+
+extern void*     	cmmfradiobackendengine_init(void);
+extern void      	cmmfradiobackendengine_delete(void* context);
+extern void      	set_frequency(void* context, XAuint32 freq);
+extern void  			cancel_set_frequency(void* context);
+extern void 			station_seek(void* context, XAboolean upwards);    
+extern void 			cancel_station_seek(void* context);        
+extern XAresult  	get_frequency(void* context, XAuint32* freq);
+extern XAresult 	get_signal_strength(void* context, XAuint32* signalStrength);
+extern void 		 	set_freq_range(void* context, XAuint8 range);
+extern XAresult  	get_freq_range(void* context, XAuint8* range);   
+extern XAresult  	get_freq_range_properties(void* context, XAuint8 range, XAuint32* aMinFreq, XAuint32* aMaxFreq);
+extern XAresult  	set_stereo_mode(void* context, XAuint32 mode);
+extern XAresult  	get_stereo_mode(void* context, XAuint32* mode);
+extern XAresult  	mmf_set_radio_adapt_context(void * context, void * adaptcontext);
+extern XAresult  	mmf_set_player_adapt_context(void * context, void * adaptcontext);
+extern void         stop_radio(void * context);
+extern void         play_radio(void* context);
+extern XAresult     set_volume(void* context, XAuint32 vol);
+extern XAresult     mmf_set_player_adapt_context(void * context, void * adaptcontext);
+extern XAresult     set_mute(void* context, XAboolean mute);
+#endif /* __cplusplus */
+
+#endif /* CMMFRADIOBACKENDENGINE_H */
--- a/khronosfws/openmax_al/src/mmf_adaptation/xaadaptationmmf.h	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/mmf_adaptation/xaadaptationmmf.h	Fri May 28 19:26:28 2010 -0500
@@ -122,21 +122,25 @@
     XAboolean               isStereoPosition;
     XAmillidegree           curRotation;
     XAuint32                curMirror;
+
     XAint32                 buffering;
 
     /* internals */
     XAboolean               trackpositionenabled;
+
+
     XAboolean               loopingenabled;
-    XAboolean		        cameraSinkSynced;
+
+    XAboolean		        		cameraSinkSynced;
     void*                   mmfContext;
-	void* 					mmfMetadataContext;
+	void* 										mmfMetadataContext;
+	XAboolean 								isForRadio;
 /*
     XAuint32                playerState;
 */
 
 } XAMediaPlayerAdaptationMMFCtx_;
 
-
 typedef struct XAMetadataAdaptationMMFCtx_
 {
     /* Parent*/
@@ -148,6 +152,22 @@
     void*                   mmfContext;
 } XAMetadataAdaptationMMFCtx_;
 
+
+
+/*
+ * Structure for Radio specific variables
+ */
+typedef struct XARadioAdaptationCtx_ {
+
+    /* Parent*/
+    XAAdaptationMMFCtx_    baseObj;
+    XAuint32 frequency;
+    XAuint8 range;
+
+    pthread_t emulationThread;
+    pthread_t rdsEmulationThread;
+
+} XARadioAdaptationCtx_;
 /* FUNCTIONS */
 /*
  * gboolean XAAdaptationBase_GstBusCb( GstBus *bus, GstMessage *message, gpointer data );
--- a/khronosfws/openmax_al/src/mmf_adaptation/xadynamicsourceitfadaptationmmf.c	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/mmf_adaptation/xadynamicsourceitfadaptationmmf.c	Fri May 28 19:26:28 2010 -0500
@@ -69,19 +69,19 @@
             }
         if((ret == XA_RESULT_SUCCESS) && (mCtx->mmfMetadataContext))
             {
-            ret = mmf_metadata_utility_parse_source(mCtx->mmfMetadataContext, (char *)(tempUri->URI));
+            	mmf_metadata_utility_parse_source(mCtx->mmfMetadataContext, (char *)(tempUri->URI));
             }
     }
     else if(bCtx->baseObj.ctxId == XAMDAdaptation)
     {
         
         XAMetadataAdaptationMMFCtx* mCtx = (XAMetadataAdaptationMMFCtx*) bCtx;
-        if(mCtx->mmfContext)
-        {
-            mCtx->xaSource = pDataSource;
-            ret = mmf_metadata_utility_parse_source(mCtx->mmfContext, (char *)(( (XADataLocator_URI*)(pDataSource->pLocator))->URI));
-        }
-    }
+		if(mCtx->mmfContext)
+		{
+			mCtx->xaSource = pDataSource;
+			mmf_metadata_utility_parse_source(mCtx->mmfContext, (char *)(( (XADataLocator_URI*)(pDataSource->pLocator))->URI));
+		}
+	}
     DEBUG_API("<-XADynamicSourceItfAdaptMMF_SetSource");
     return ret;
 }
--- a/khronosfws/openmax_al/src/mmf_adaptation/xamediaplayeradaptctxmmf.c	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/mmf_adaptation/xamediaplayeradaptctxmmf.c	Fri May 28 19:26:28 2010 -0500
@@ -41,64 +41,64 @@
 {
     XAMediaPlayerAdaptationMMFCtx *pSelf = NULL;
     XAuint32 locType = 0;
+    XADataLocator_IODevice *ioDevice;         
     XAresult res;
     DEBUG_API("->XAMediaPlayerAdaptMMF_Create");
     
     pSelf = calloc(1, sizeof(XAMediaPlayerAdaptationMMFCtx));
     if ( pSelf)
     {
-          
-        if( XAAdaptationBaseMMF_Init(&(pSelf->baseObj),XAMediaPlayerAdaptation)
-            != XA_RESULT_SUCCESS )
-        {
-            DEBUG_ERR("Failed to init base context!!!");
-            free(pSelf);
-            pSelf = NULL;
-        }
-        else
-            
-        {
-            pSelf->baseObj.baseObj.fwtype = FWMgrFWMMF;
-            pSelf->xaSource = pDataSrc;
-            pSelf->xaBankSrc = pBankSrc;
-            pSelf->xaAudioSink = pAudioSnk;
-            pSelf->xaVideoSink = pImageVideoSnk;
-            pSelf->xaLEDArray = pLEDArray;
-            pSelf->xaVibra = pVibra;
-            pSelf->curMirror = XA_VIDEOMIRROR_NONE;
-            pSelf->curRotation = 0;
-            pSelf->isobjsrc = XA_BOOLEAN_FALSE;
-            pSelf->cameraSinkSynced = XA_BOOLEAN_FALSE;
-            /*pSelf->waitData = XA_BOOLEAN_FALSE;*/
-        }
-
-  
-    if ( pDataSrc )
-		{
-			locType = *((XAuint32*)(pDataSrc->pLocator));
-			if ( locType == XA_DATALOCATOR_IODEVICE  )
+    	if ( pDataSrc )
 			{
-			//XADataLocator_IODevice *ioDevice = (XADataLocator_IODevice*)(pDataSrc->pLocator);
-			}
+				locType = *((XAuint32*)(pDataSrc->pLocator));
+				if ( locType == XA_DATALOCATOR_IODEVICE  )
+				{
+					ioDevice = (XADataLocator_IODevice*)(pDataSrc->pLocator);
+					if ( ioDevice->deviceType == XA_IODEVICE_RADIO )
+					{
+						return XAMediaPlayerAdaptMMF_CreateRadio(pSelf, pDataSrc, pBankSrc, pAudioSnk, pImageVideoSnk, pVibra, pLEDArray);
+					}
+				}    	
 		}
+    if( XAAdaptationBaseMMF_Init(&(pSelf->baseObj),XAMediaPlayerAdaptation) != XA_RESULT_SUCCESS )
+    {
+      DEBUG_ERR("Failed to init base context!!!");
+       free(pSelf);
+       pSelf = NULL;
     }
-    
-    else
-        {
-        DEBUG_ERR("Failed to create XAMediaPlayerAdaptationMMFCtx !!!");
-        return NULL;
-        }
-    if(pSelf)
+    else            
     {
-	    res = mmf_backend_engine_init(&(pSelf->mmfContext));
-        if(!(pSelf->mmfContext) || (res != XA_RESULT_SUCCESS))
-        {
-            /* TODO Check to make sure there is no undeleted MMF objects here*/
-            DEBUG_ERR("Failed to init mmf context!!!");
-            free(pSelf);
-            pSelf = NULL;
-            return NULL;
-        }
+    		pSelf->isForRadio = XA_BOOLEAN_FALSE;
+      	pSelf->baseObj.baseObj.fwtype = FWMgrFWMMF;
+        pSelf->xaSource = pDataSrc;
+        pSelf->xaBankSrc = pBankSrc;
+        pSelf->xaAudioSink = pAudioSnk;
+        pSelf->xaVideoSink = pImageVideoSnk;
+        pSelf->xaLEDArray = pLEDArray;
+        pSelf->xaVibra = pVibra;
+        pSelf->curMirror = XA_VIDEOMIRROR_NONE;
+        pSelf->curRotation = 0;
+        pSelf->isobjsrc = XA_BOOLEAN_FALSE;
+        pSelf->cameraSinkSynced = XA_BOOLEAN_FALSE;
+        /*pSelf->waitData = XA_BOOLEAN_FALSE;*/
+		}
+	}
+ 	else
+ 	{
+		DEBUG_ERR("Failed to create XAMediaPlayerAdaptationMMFCtx !!!");
+		return NULL;
+ 	}
+ 	if(pSelf)
+ 	{
+		res = mmf_backend_engine_init(&(pSelf->mmfContext));
+   	if(!(pSelf->mmfContext) || (res != XA_RESULT_SUCCESS))
+   	{
+    	/* TODO Check to make sure there is no undeleted MMF objects here*/
+     	DEBUG_ERR("Failed to init mmf context!!!");
+     	free(pSelf);
+    	pSelf = NULL;
+    	return NULL;
+  	}
 		res = mmf_set_play_adapt_context(pSelf->mmfContext, &(pSelf->baseObj));
 		if(pDataSrc)
 		    {
@@ -120,7 +120,53 @@
     return (XAAdaptationBaseCtx*)(&pSelf->baseObj.baseObj);
 }
 
+/*
+ * XAMediaPlayerAdaptationMMFCtx* XAMediaPlayerAdapt_CreateRadio()
 
+ * @returns XAMediaPlayerAdaptationMMFCtx* - Pointer to created context, NULL if error occurs.
+ */
+XAAdaptationBaseCtx* XAMediaPlayerAdaptMMF_CreateRadio(XAMediaPlayerAdaptationMMFCtx *pSelf, XADataSource *pDataSrc, XADataSource *pBankSrc,
+                                                      XADataSink *pAudioSnk, XADataSink *pImageVideoSnk,
+                                                      XADataSink *pVibra, XADataSink *pLEDArray)
+{
+    XAresult res;
+    DEBUG_API("->XAMediaPlayerAdaptMMF_CreateRadio");
+    
+		res =  XAAdaptationBaseMMF_Init(&(pSelf->baseObj), XARadioAdaptation); 
+		if (res != XA_RESULT_SUCCESS) 	
+   	{
+    	DEBUG_ERR("Failed to init base context!!!");
+      free(pSelf);
+      pSelf = NULL;
+      return NULL;
+    }
+
+   	pSelf->isForRadio = XA_BOOLEAN_TRUE;
+  	pSelf->baseObj.baseObj.fwtype = FWMgrFWMMF;
+    pSelf->xaSource = pDataSrc;
+    pSelf->xaBankSrc = pBankSrc;
+    pSelf->xaAudioSink = pAudioSnk;
+    pSelf->xaVideoSink = pImageVideoSnk;
+    pSelf->xaLEDArray = pLEDArray;
+    pSelf->xaVibra = pVibra;
+    pSelf->curMirror = XA_VIDEOMIRROR_NONE;
+    pSelf->curRotation = 0;
+    pSelf->isobjsrc = XA_BOOLEAN_FALSE;
+    pSelf->cameraSinkSynced = XA_BOOLEAN_FALSE;
+    /*pSelf->waitData = XA_BOOLEAN_FALSE;*/
+
+		res = mmf_backend_engine_init(&(pSelf->mmfContext));
+   	if(!(pSelf->mmfContext) || (res != XA_RESULT_SUCCESS))
+   	{
+    	/* TODO Check to make sure there is no undeleted MMF objects here*/
+    	DEBUG_ERR("Failed to init mmf context!!!");
+   		free(pSelf);
+     	pSelf = NULL;
+    	return NULL;
+    }
+    DEBUG_API("<-XAMediaPlayerAdaptMMF_Create");
+    return (XAAdaptationBaseCtx*)(&pSelf->baseObj.baseObj);
+}
 
 /*
  * XAresult XAMediaPlayerAdaptMMF_PostInit()
@@ -137,6 +183,12 @@
     
     XAAdaptationBaseMMF_PostInit(bCtx);
     
+    if (pSelf->isForRadio)
+    {
+     DEBUG_API("<-XAMediaPlayerAdaptMMF_PostInit");   
+     return XA_RESULT_SUCCESS;	
+    }    
+    
     if(pSelf->mmfContext)
     {
         XADataLocator_URI* tempUri = (XADataLocator_URI*)(pSelf->xaSource->pLocator);
--- a/khronosfws/openmax_al/src/mmf_adaptation/xamediaplayeradaptctxmmf.h	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/mmf_adaptation/xamediaplayeradaptctxmmf.h	Fri May 28 19:26:28 2010 -0500
@@ -28,6 +28,9 @@
 XAAdaptationBaseCtx* XAMediaPlayerAdaptMMF_Create( XADataSource *pDataSrc, XADataSource *pBankSrc,
                                                        XADataSink *pAudioSnk, XADataSink *pImageVideoSnk,
                                                        XADataSink *pVibra, XADataSink *pLEDArray);
+XAAdaptationBaseCtx* XAMediaPlayerAdaptMMF_CreateRadio(XAMediaPlayerAdaptationMMFCtx *pSelf, XADataSource *pDataSrc, XADataSource *pBankSrc,
+                                                      XADataSink *pAudioSnk, XADataSink *pImageVideoSnk,
+                                                      XADataSink *pVibra, XADataSink *pLEDArray);                                                       
 XAresult XAMediaPlayerAdaptMMF_PostInit( XAAdaptationMMFCtx* bCtx );
 void XAMediaPlayerAdaptMMF_Destroy( XAAdaptationMMFCtx* bCtx );
 
--- a/khronosfws/openmax_al/src/mmf_adaptation/xanokialinearvolumeitfadaptationmmf.c	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/mmf_adaptation/xanokialinearvolumeitfadaptationmmf.c	Fri May 28 19:26:28 2010 -0500
@@ -21,6 +21,8 @@
 #include "xanokialinearvolumeitfadaptationmmf.h"
 #include "xamediaplayeradaptctxmmf.h"
 #include "cmmfbackendengine.h"
+#include "cmmfradiobackendengine.h"
+
 /*
  * XAresult XANokiaLinearVolumeItfAdapt_SetVolumeLevel(void *ctx, AdaptationContextIDS ctx->baseObj.ctxId,
  *                                          XAuint32 percentage)
@@ -54,6 +56,11 @@
         mmf_volumeitf_set_volume(((XAMediaPlayerAdaptationMMFCtx*)ctx)->mmfContext,
                                     vol);
         }
+    else if (ctx->baseObj.ctxId == XARadioAdaptation)
+    	{
+		    mmf_set_player_adapt_context(cmmfradiobackendengine_init(), ctx);	        	
+    		res = set_volume(cmmfradiobackendengine_init(), percentage);  		    		
+    	}	    
     DEBUG_API("<-XANokiaLinearVolumeItfAdapt_SetVolumeLevel");
     return res;
 }
@@ -62,8 +69,7 @@
                                                     XAuint32* stepcount)
     {
     XAresult res = XA_RESULT_SUCCESS;
-    DEBUG_API_A1("->XANokiaLinearVolumeItfAdapt_SetVolumeLevel to: %d",
-                                                            percentage);
+    DEBUG_API("->XANokiaLinearVolumeItfAdapt_GetStepCount ");
     if(!ctx || ( ctx->baseObj.ctxId != XAMediaPlayerAdaptation &&
                  ctx->baseObj.ctxId != XAMediaRecorderAdaptation &&
                  ctx->baseObj.ctxId != XARadioAdaptation) )
@@ -80,7 +86,7 @@
                                         stepcount);
         }
     
-    DEBUG_API("<-XANokiaLinearVolumeItfAdapt_SetVolumeLevel");
+    DEBUG_API("<-XANokiaLinearVolumeItfAdapt_GetStepCount");
     return res;    
     }
 
--- a/khronosfws/openmax_al/src/mmf_adaptation/xanokiavolumeextitfadaptationmmf.c	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/mmf_adaptation/xanokiavolumeextitfadaptationmmf.c	Fri May 28 19:26:28 2010 -0500
@@ -19,6 +19,7 @@
 #include "xamediaplayeradaptctxmmf.h"
 #include "xamediarecorderadaptctxmmf.h"
 #include "cmmfbackendengine.h"
+#include "cmmfradiobackendengine.h"
 
 /*
  * XAresult XANokiaVolumeExtItfAdapt_SetMute(void *ctx, AdaptationContextIDS ctx->ctxId, XAboolean mute)
@@ -30,6 +31,8 @@
 XAresult XANokiaVolumeExtItfAdapt_SetMute(XAAdaptationMMFCtx *ctx, XAboolean mute)
 {    
     XAuint32 volume;
+    XAresult res = XA_RESULT_SUCCESS;
+    
     DEBUG_API("->XANokiaVolumeExtItfAdapt_SetMute");
     if(!ctx || ( ctx->baseObj.ctxId != XAMediaPlayerAdaptation &&
                  ctx->baseObj.ctxId != XAMediaRecorderAdaptation &&
@@ -77,11 +80,12 @@
     }
    	else if ( ctx->baseObj.ctxId == XARadioAdaptation )
     {
-   			
+	        mmf_set_player_adapt_context(cmmfradiobackendengine_init(), ctx);	        	
+    		res = set_mute(cmmfradiobackendengine_init(), mute);  			
     }
         
     DEBUG_API("<-XANokiaVolumeExtItfAdapt_SetMute");
-    return XA_RESULT_SUCCESS;
+    return res;
 }
 
 /*
@@ -111,7 +115,11 @@
     {
  
     }
-
+    else if ( ctx->baseObj.ctxId == XARadioAdaptation )
+    {
+ 			return XA_RESULT_FEATURE_UNSUPPORTED;
+    }
+	
     DEBUG_API("<-XANokiaVolumeExtItfAdapt_EnableStereoPosition");
     return XA_RESULT_SUCCESS;
 }
@@ -143,6 +151,10 @@
     {
 
     }
+    else if ( ctx->baseObj.ctxId == XARadioAdaptation )
+    {
+ 			return XA_RESULT_FEATURE_UNSUPPORTED;
+    }    
 
     DEBUG_API("<-XANokiaVolumeExtItfAdapt_SetStereoPosition");
     return XA_RESULT_SUCCESS;
--- a/khronosfws/openmax_al/src/mmf_adaptation/xaplayitfadaptationmmf.c	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/mmf_adaptation/xaplayitfadaptationmmf.c	Fri May 28 19:26:28 2010 -0500
@@ -20,6 +20,7 @@
 #include "xaplayitfadaptationmmf.h"
 #include "xaadaptationmmf.h"
 #include "cmmfbackendengine.h"
+#include "cmmfradiobackendengine.h"
 #include <glib.h>
 
 extern XAboolean cameraRealized;
@@ -47,16 +48,32 @@
     {
         case XA_PLAYSTATE_STOPPED:
         {
-            ret = mmf_playitf_stop_playback(mCtx->mmfContext);
-            break;
+        	if ( bCtx->ctxId == XARadioAdaptation )
+    		{
+    			mmf_set_player_adapt_context(cmmfradiobackendengine_init(), bCtx);	    			
+    			stop_radio(cmmfradiobackendengine_init());
+    		}
+    		else
+    		{
+    			ret = mmf_playitf_stop_playback(mCtx->mmfContext);
+          	}
+          break;
         }
         case XA_PLAYSTATE_PAUSED:
             ret = mmf_playitf_pause_playback(mCtx->mmfContext);
             break;
         case XA_PLAYSTATE_PLAYING:
         {
-            ret = mmf_playitf_resume_playback(mCtx->mmfContext);
-            break;
+   				if ( bCtx->ctxId == XARadioAdaptation )
+    			{
+    				mmf_set_player_adapt_context(cmmfradiobackendengine_init(), bCtx);	    				
+    				play_radio(cmmfradiobackendengine_init());    	
+    			} 
+    			else
+    			{ 
+          			ret = mmf_playitf_resume_playback(mCtx->mmfContext);
+        		}  
+          break;
         }
         default:
             ret = XA_RESULT_PARAMETER_INVALID;
@@ -211,3 +228,21 @@
     DEBUG_API("<-XAPlayItfAdaptMMF_SetPositionUpdatePeriod");
     return ret;
 }
+/*
+ * XAresult XAPlayItfAdapt_StateChange
+ * Handle callback from Radio utility 
+ */
+void XAPlayItfAdaptMMF_StateChange(XAAdaptationBaseCtx *bCtx, XAboolean playing)
+{
+	  if (playing)
+	  {
+   		XAAdaptEvent event = {XA_PLAYITFEVENTS, XA_PLAYEVENT_HEADMOVING,1,0}; 
+   		XAAdaptationBase_SendAdaptEvents(bCtx, &event );  	   		
+   	}
+   	else
+   	{
+   		XAAdaptEvent event = {XA_PLAYITFEVENTS, XA_PLAYEVENT_HEADSTALLED,1,0};  
+   		XAAdaptationBase_SendAdaptEvents(bCtx, &event );  	   		  		
+   	}
+
+}
--- a/khronosfws/openmax_al/src/mmf_adaptation/xaplayitfadaptationmmf.h	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/mmf_adaptation/xaplayitfadaptationmmf.h	Fri May 28 19:26:28 2010 -0500
@@ -29,7 +29,7 @@
     "XA_PLAYSTATE_PAUSED",
     "XA_PLAYSTATE_PLAYING"
 };
-#define PLAYSTATENAME(i) (const char*)((i>0&&i<4)?playstatenamesmmf[i-1]:"INVALID")
+#define PLAYSTATENAME(i) (const char*)((i>0&&i<4)?playstatenamemmf[i-1]:"INVALID")
 #endif /*_DEBUG*/
 
 
@@ -44,5 +44,5 @@
 XAresult XAPlayItfAdaptMMF_SetMarkerPosition(XAAdaptationBaseCtx *bCtx, XAmillisecond mSec);
 XAresult XAPlayItfAdaptMMF_ClearMarkerPosition(XAAdaptationBaseCtx *bCtx);
 XAresult XAPlayItfAdaptMMF_SetPositionUpdatePeriod(XAAdaptationBaseCtx *bCtx, XAmillisecond mSec);
-
+void XAPlayItfAdaptMMF_StateChange(XAAdaptationBaseCtx *bCtx, XAboolean playing); 
 #endif /* XAPLAYITFADAPTATIONMMF_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/khronosfws/openmax_al/src/mmf_adaptation/xaradioadaptctx.c	Fri May 28 19:26:28 2010 -0500
@@ -0,0 +1,111 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#include "xaradioadaptctx.h"
+#include "xaadaptationmmf.h"
+#include "cmmfradiobackendengine.h"
+#include "assert.h"
+
+/*
+ * XAAdaptationMMFCtx* XARadioAdapt_Create()
+ * Allocates memory for Radio Adaptation Context and makes 1st phase initialization
+ * @returns XARadioAdaptationCtx* - Pointer to created context
+ */
+XAAdaptationBaseCtx* XARadioAdapt_Create()
+{
+    XARadioAdaptationCtx *pSelf = (XARadioAdaptationCtx*)calloc(1, sizeof(XARadioAdaptationCtx));
+    DEBUG_API("->XARadioAdapt_Create");
+
+    if ( pSelf)
+    {
+        if( XAAdaptationBase_Init(&(pSelf->baseObj.baseObj),XARadioAdaptation)
+                    != XA_RESULT_SUCCESS )
+      	{
+        	DEBUG_ERR("Failed to init base context!!!");
+         	free(pSelf);
+        	pSelf = NULL;
+      	}
+     		else
+       	{
+       		pSelf->range = RADIO_DEFAULT_FREQ_RANGE;
+        	pSelf->frequency = RADIO_DEFAULT_FREQ;
+        	pSelf->rdsEmulationThread = 0;
+       		pSelf->emulationThread = 0;
+       	}
+    }
+
+    DEBUG_API("<-XARadioAdapt_Create");
+    return (XAAdaptationBaseCtx*)&pSelf->baseObj;
+}
+
+/*
+ * XAresult XARadioAdapt_PostInit()
+ * 2nd phase initialization of Radio Adaptation Context
+ */
+XAresult XARadioAdapt_PostInit(XAAdaptationBaseCtx* bCtx)
+{
+    XAresult ret = XA_RESULT_SUCCESS;
+    XARadioAdaptationCtx* ctx = NULL;
+    DEBUG_API("->XARadioAdapt_PostInit");
+    if(bCtx == NULL || bCtx->ctxId != XARadioAdaptation )
+    {
+        DEBUG_ERR("Invalid parameter!!");
+        DEBUG_API("<-XARadioAdapt_PostInit");
+        return XA_RESULT_PARAMETER_INVALID;
+    }
+    ctx = (XARadioAdaptationCtx*)bCtx;
+    assert(ctx);
+
+    ret = XAAdaptationBase_PostInit( &ctx->baseObj.baseObj );
+    if( ret!=XA_RESULT_SUCCESS )
+    {
+        DEBUG_ERR("Base context postinit failed!!");
+        DEBUG_API("<-XARadioAdapt_PostInit");
+        return ret;
+    }
+
+		cmmfradiobackendengine_init(); 
+
+    DEBUG_API("<-XARadioAdapt_PostInit");
+    return ret;
+}
+
+/*
+ * void XARadioAdapt_Destroy(XAAdaptationMMFCtx* bCtx)
+ * Destroys Radio Adaptation Context
+ * @param ctx - Radio Adaptation context to be destroyed
+ */
+void XARadioAdapt_Destroy(XAAdaptationBaseCtx* bCtx)
+{
+		XARadioAdaptationCtx* ctx = NULL;
+    DEBUG_API("->XARadioAdapt_Destroy");
+    
+		cmmfradiobackendengine_delete(cmmfradiobackendengine_init());    
+
+    if(bCtx == NULL || bCtx->ctxId != XARadioAdaptation )
+    {
+        DEBUG_ERR("Invalid parameter!!");
+        DEBUG_API("<-XARadioAdapt_Destroy");
+        return;
+    }
+    ctx = (XARadioAdaptationCtx*)bCtx;
+    XAAdaptationBase_Free(&(ctx->baseObj.baseObj));
+
+    free(ctx);
+
+    DEBUG_API("<-XARadioAdapt_Destroy");
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/khronosfws/openmax_al/src/mmf_adaptation/xaradioadaptctx.h	Fri May 28 19:26:28 2010 -0500
@@ -0,0 +1,35 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef XARADIOADAPTCTX_H
+#define XARADIOADAPTCTX_H
+
+#include "xaadaptationmmf.h"
+
+
+#define RADIO_DEFAULT_FREQ_RANGE XA_FREQRANGE_FMEUROAMERICA
+#define RADIO_DEFAULT_FREQ 88000000
+
+/* TYPEDEFS */
+typedef struct XARadioAdaptationCtx_ XARadioAdaptationCtx;
+
+/* FUNCTIONS */
+XAAdaptationBaseCtx* XARadioAdapt_Create(void);
+XAresult XARadioAdapt_PostInit(XAAdaptationBaseCtx* bCtx);
+void XARadioAdapt_Destroy(XAAdaptationBaseCtx* bCtx);
+
+#endif /* XARADIOADAPTCTX_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/khronosfws/openmax_al/src/mmf_adaptation/xaradioitfadaptation.c	Fri May 28 19:26:28 2010 -0500
@@ -0,0 +1,324 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <unistd.h>
+#include "XADebug.h"
+#include "XAAdaptationMMF.h"
+#include "XARadioItfAdaptation.h"
+#include "XARadioAdaptCtx.h"
+#include "cmmfradiobackendengine.h"
+
+/*
+ * XAresult XARadioItfAdapt_SetFreqRange(XAAdaptationMMFCtx *bCtx, XAuint8 range)
+ */
+XAresult XARadioItfAdapt_SetFreqRange(XAAdaptationMMFCtx *bCtx, XAuint8 range)
+{
+    XAresult ret = XA_RESULT_SUCCESS;  
+    DEBUG_API("->XARadioItfAdapt_SetFreqRange");    
+    mmf_set_radio_adapt_context(cmmfradiobackendengine_init(), bCtx);		
+    set_freq_range(cmmfradiobackendengine_init(), range);    
+    DEBUG_API("<-XARadioItfAdapt_SetFreqRange");
+    return ret;
+}
+
+/*
+ * XAresult XARadioItfAdapt_GetFreqRange(XAuint8 * pFreqRange)
+ *
+ */
+XAresult XARadioItfAdapt_GetFreqRange(XAuint8 * pFreqRange)
+{
+    XAresult res = XA_RESULT_SUCCESS;    
+    DEBUG_API("->XARadioItfAdapt_GetFreqRange");    
+ 		res = get_freq_range(cmmfradiobackendengine_init(), pFreqRange);
+    DEBUG_API("<-XARadioItfAdapt_GetFreqRange");
+    return res;
+}
+
+/*
+ *  XAresult XARadioItfAdapt_IsFreqRangeSupported(XAuint8 range,
+ *                                                XAboolean * pSupported)
+ */
+XAresult XARadioItfAdapt_IsFreqRangeSupported(XAuint8 range,
+                                             XAboolean * pSupported)
+{
+    XAresult ret = XA_RESULT_SUCCESS;
+    DEBUG_API("->XARadioItfAdapt_IsFreqRangeSupported");    
+ 		*pSupported = XA_BOOLEAN_TRUE;    // No radio utility API for this, set to true automatically.
+    DEBUG_API("<-XARadioItfAdapt_IsFreqRangeSupported");
+    return ret;
+}
+
+/*
+ * XAresult XARadioItfAdapt_GetFreqRangeProperties(XAAdaptationMMFCtx *bCtx,
+ *                                                 XAuint8 * pRange,
+ *                                                 XAuint32 * pMinFreq,
+ *                                                 XAuint32 * pMaxFreq)
+ */
+XAresult XARadioItfAdapt_GetFreqRangeProperties(XAAdaptationMMFCtx *bCtx,
+                                               XAuint8  range,
+                                               XAuint32 * pMinFreq,
+                                               XAuint32 * pMaxFreq)
+{
+    XAresult res = XA_RESULT_SUCCESS;    
+    DEBUG_API("->XARadioItfAdapt_GetFreqRangeProperties");
+    mmf_set_radio_adapt_context(cmmfradiobackendengine_init(), bCtx);		
+ 		res = get_freq_range_properties(cmmfradiobackendengine_init(), range, pMinFreq, pMaxFreq); 					 		
+    DEBUG_API("<-XARadioItfAdapt_GetFreqRangeProperties");
+    return res;
+}
+
+/*
+ * XAresult XARadioItfAdapt_SetFrequency(XAAdaptationMMFCtx *bCtx, XAuint32 freq)
+ */
+XAresult XARadioItfAdapt_SetFrequency(XAAdaptationMMFCtx *bCtx, XAuint32 freq)
+{
+    XAresult ret = XA_RESULT_SUCCESS; 
+    DEBUG_API("->XARadioItfAdapt_SetFrequency");    
+    mmf_set_radio_adapt_context(cmmfradiobackendengine_init(), bCtx);
+    set_frequency(cmmfradiobackendengine_init(), freq);    
+    DEBUG_API("<-XARadioItfAdapt_SetFrequency");
+    return ret;
+}
+
+
+/*
+ * XAresult XARadioItfAdapt_GetFrequency(XAAdaptationMMFCtx *bCtx,
+ *                                       XAuint32* pFrequency)
+ */
+XAresult XARadioItfAdapt_GetFrequency(XAuint32* pFrequency)
+{
+    XAresult ret = XA_RESULT_SUCCESS;
+    DEBUG_API("->XARadioItfAdapt_GetFrequency");	
+		ret = get_frequency(cmmfradiobackendengine_init(), pFrequency);       
+   DEBUG_API("<-XARadioItfAdapt_GetFrequency");
+   return ret;
+}
+
+
+/*
+ * XAresult XARadioItfAdapt_CancelSetFrequency()
+ */
+XAresult XARadioItfAdapt_CancelSetFrequency()
+{
+    XAresult ret = XA_RESULT_SUCCESS;
+    DEBUG_API("->XARadioItfAdapt_CancelSetFrequency");
+		cancel_set_frequency(cmmfradiobackendengine_init());     
+    DEBUG_API("<-XARadioItfAdapt_CancelSetFrequency");
+    return ret;
+}
+
+/*
+ * XAresult XARadioItfAdapt_CancelStationSeek()
+ */
+XAresult XARadioItfAdapt_CancelStationSeek()
+{
+    XAresult ret = XA_RESULT_SUCCESS;         
+    DEBUG_API("->XARadioItfAdapt_CancelStationSeek");		
+		cancel_station_seek(cmmfradiobackendengine_init());    
+    DEBUG_API("<-XARadioItfAdapt_CancelStationSeek");
+    return ret;
+}
+
+/*
+ * XAresult XARadioItfAdapt_SetSquelch(XAboolean squelch)
+ */
+XAresult XARadioItfAdapt_SetSquelch(XAboolean squelch)
+{	
+    XAresult ret = XA_RESULT_FEATURE_UNSUPPORTED;	
+    DEBUG_API("->XARadioItfAdapt_SetSquelch");
+    return ret;
+}
+
+/*
+ * XAresult XARadioItfAdapt_GetSquelch(XAboolean *squelch)
+ */
+XAresult XARadioItfAdapt_GetSquelch(XAboolean* squelch)
+{
+    XAresult ret = XA_RESULT_FEATURE_UNSUPPORTED;	
+    DEBUG_API("->XARadioItfAdapt_GetSquelch");
+    return ret;
+}
+
+/*
+ * XAresult XARadioItfAdapt_SetStereoMode(XAAdaptationMMFCtx *bCtx, XAuint32 mode)
+ */
+XAresult XARadioItfAdapt_SetStereoMode(XAAdaptationMMFCtx *bCtx, XAuint32 mode)
+{
+		XAresult res = XA_RESULT_SUCCESS;   	
+    DEBUG_API("->XARadioItfAdapt_SetStereoMode");
+    mmf_set_radio_adapt_context(cmmfradiobackendengine_init(), bCtx);
+    res = set_stereo_mode(cmmfradiobackendengine_init(), mode);    
+    DEBUG_API("<-XARadioItfAdapt_SetStereoMode");
+    return res;
+}
+
+/*
+ * XAresult XARadioItfAdapt_GetSignalStrength(XAuint32 * pStrength)
+ */
+XAresult XARadioItfAdapt_GetSignalStrength(XAuint32 * pStrength)
+{
+ 		XAresult ret = XA_RESULT_SUCCESS;   	
+    DEBUG_API("->XARadioItfAdapt_GetSignalStrength");  		
+		ret = get_signal_strength(cmmfradiobackendengine_init(), pStrength);    
+    DEBUG_API("<-XARadioItfAdapt_GetSignalStrength");
+    return ret;
+}
+
+/*
+ * XAresult XARadioItfAdapt_Seek(XAAdaptationMMFCtx *bCtx, XAboolean upwards)
+ */
+XAresult XARadioItfAdapt_Seek(XAAdaptationMMFCtx *bCtx, XAboolean upwards)
+{
+	  XAboolean direction; 
+    XAresult ret = XA_RESULT_SUCCESS;          
+    if (!upwards)
+    	direction = XA_BOOLEAN_FALSE;  
+    else
+    	direction = XA_BOOLEAN_TRUE;      			
+   	DEBUG_API("->XARadioItfAdapt_Seek");	    
+    mmf_set_radio_adapt_context(cmmfradiobackendengine_init(), bCtx);     	
+		station_seek(cmmfradiobackendengine_init(), direction);   				
+    DEBUG_API("<-XARadioItfAdapt_Seek");
+    return ret;
+}
+
+/*
+ * void XARadioItfAdapt_StopSeeking(XAAdaptationMMFCtx *bCtx)
+ */
+void XARadioItfAdapt_StopSeeking(XAAdaptationMMFCtx *bCtx)
+{
+    DEBUG_API("->XARadioItfAdapt_StopSeeking");	
+    mmf_set_radio_adapt_context(cmmfradiobackendengine_init(), bCtx);	
+		cancel_station_seek(cmmfradiobackendengine_init());   
+    DEBUG_API("<-XARadioItfAdapt_StopSeeking");
+}
+
+/*
+ * XAresult XARadioItfAdapt_GetStereoMode(XAuint32 * pMode)
+ */
+XAresult XARadioItfAdapt_GetStereoMode(XAuint32 * pMode)
+{
+ 		XAresult ret = XA_RESULT_SUCCESS;   	
+    DEBUG_API("->XARadioItfAdapt_GetStereoMode");  		
+		ret = get_stereo_mode(cmmfradiobackendengine_init(), pMode);    
+    DEBUG_API("<-XARadioItfAdapt_GetStereoMode");
+    return ret;
+}
+
+/*
+ * void XARadioItfAdapt_Free()
+ */
+void XARadioItfAdapt_Free()
+{
+    DEBUG_API("->XARadioItfAdapt_Free");
+    
+}
+
+void XARadioItfAdapt_SeekComplete(XAAdaptationBaseCtx *ctx, TInt aError, TInt aFrequency)
+{
+   	XAAdaptEvent event = {XA_RADIOITFEVENTS, XA_ADAPT_RADIO_SEEK_COMPLETE,1,0};        	
+		if (ctx)
+    {
+    	if (aError)
+    	{
+    		event.data = &aError;
+    	}
+    	else
+    	{
+   			event.data = &aFrequency;
+   		}
+   		
+     	XAAdaptationBase_SendAdaptEvents(ctx, &event );
+   	}   
+}
+
+void XARadioItfAdapt_FrequencyChange(XAAdaptationBaseCtx *ctx, TInt aFrequency)
+{
+		// Currently: Bug in FM Radio Utility: SetFrequency calls this callback as well as SetFrequencyComplete
+		// (So client will end up getting 2 events on a SetFrequency call)
+   	XAuint32 freq = aFrequency;    		
+    XAAdaptEvent event = {XA_RADIOITFEVENTS, XA_ADAPT_RADIO_FREQUENCY_CHANGED,1,0};        	
+		if (ctx)
+    {
+    	event.data = &freq;
+     	XAAdaptationBase_SendAdaptEvents(ctx, &event );
+   	}  
+}
+
+void XARadioItfAdapt_FrequencyRangeChange(XAAdaptationBaseCtx* ctx, TInt aFreqRangeChange)
+{
+		// Currently: Bug in FM Radio Utility: SetFrequencyRange triggers this callback as well as SetFrequencyRangeComplete
+		
+   /*	XAAdaptEvent event = {XA_RADIOITFEVENTS, XA_ADAPT_RADIO_FREQUENCY_RANGE_CHANGED,1,0};        	
+		if (baseCtx)
+    {
+    	event.data = &aFreqRangeChange;
+     	XAAdaptationBase_SendAdaptEvents(&baseCtx->baseObj, &event );
+   	} 
+   	*/  
+}
+
+void XARadioItfAdapt_SetFrequencyComplete(XAAdaptationBaseCtx *ctx, TInt aError, TInt aFrequency)
+{
+		// Currently: Qt API has no event for SetFrequencyComplete, so must use this one:
+   	XAAdaptEvent event = {XA_RADIOITFEVENTS, XA_ADAPT_RADIO_FREQUENCY_CHANGED,1,0};   
+   	XAuint32 freq = aFrequency;     	
+		if (ctx)
+    {
+    	if (!aError)
+    	{
+    		event.data = &freq;
+    	}
+    	else
+    	{
+    		event.data = &aError;
+    	}
+     	XAAdaptationBase_SendAdaptEvents(ctx, &event );
+   	}   
+}
+
+void XARadioItfAdapt_SetFrequencyRangeComplete(XAAdaptationBaseCtx *ctx, TInt aError)
+{
+   	XAAdaptEvent event = {XA_RADIOITFEVENTS, XA_ADAPT_RADIO_FREQUENCY_RANGE_CHANGED,1,0};        	
+		if (ctx)
+    {
+    	event.data = &aError;
+     	XAAdaptationBase_SendAdaptEvents(ctx, &event );
+   	}   
+}
+
+void XARadioItfAdapt_StereoStatusChange(XAAdaptationBaseCtx *ctx, XAboolean aStereoStatus)
+{
+   	XAAdaptEvent event = {XA_RADIOITFEVENTS, XA_ADAPT_RADIO_STEREO_STATUS_CHANGED,1,0}; 
+  	DEBUG_INFO_A1("XARadioItfAdapt_StereoStatusChange to: %s", aStereoStatus);	   	       	
+		if (ctx)
+    {
+    	event.data = &aStereoStatus;
+     	XAAdaptationBase_SendAdaptEvents(ctx, &event );
+   	}   
+}
+
+void XARadioItfAdapt_SignalStrengthChange(XAAdaptationBaseCtx *ctx, TInt aSignalStrength)
+{
+   	XAAdaptEvent event = {XA_RADIOITFEVENTS, XA_ADAPT_RADIO_SIGNAL_STRENGTH_CHANGED,1,0}; 
+  	DEBUG_INFO_A1("XARadioItfAdapt_SignalStrengthChange to: %s", aSignalStrength);	   	       	
+		if (ctx)
+    {
+    	event.data = &aSignalStrength;
+     	XAAdaptationBase_SendAdaptEvents(ctx, &event );
+   	}   
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/khronosfws/openmax_al/src/mmf_adaptation/xaradioitfadaptation.h	Fri May 28 19:26:28 2010 -0500
@@ -0,0 +1,75 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+#ifndef XARADIOITFFADAPTATION_H
+#define XARADIOITFFADAPTATION_H
+
+#include "xaadaptationmmf.h"
+#include "XADebug.h"
+
+/* FUNCTIONS */
+
+XAresult XARadioItfAdapt_SetFreqRange(XAAdaptationMMFCtx *bCtx, XAuint8 range);
+
+XAresult XARadioItfAdapt_GetFreqRange(XAuint8 * pFreqRange);
+
+XAresult XARadioItfAdapt_IsFreqRangeSupported(XAuint8 range,
+                                             XAboolean * pSupported);
+
+XAresult XARadioItfAdapt_GetFreqRangeProperties(XAAdaptationMMFCtx *bCtx,
+                                               XAuint8 		range,
+                                               XAuint32 * pMinFreq,
+                                               XAuint32 * pMaxFreq);
+
+XAresult XARadioItfAdapt_SetFrequency(XAAdaptationMMFCtx *bCtx, XAuint32 freq);
+
+XAresult XARadioItfAdapt_GetFrequency(XAuint32 * pFrequency);
+
+XAresult XARadioItfAdapt_CancelSetFrequency(void);
+
+XAresult XARadioItfAdapt_CancelStationSeek(void);
+
+XAresult XARadioItfAdapt_SetSquelch(XAboolean squelch);
+
+XAresult XARadioItfAdapt_GetSquelch(XAboolean* squelch);
+
+XAresult XARadioItfAdapt_SetStereoMode(XAAdaptationMMFCtx *bCtx, XAuint32 mode);
+
+XAresult XARadioItfAdapt_GetSignalStrength(XAuint32 * pStrength);
+
+XAresult XARadioItfAdapt_Seek(XAAdaptationMMFCtx *bCtx, XAboolean upwards);
+
+void XARadioItfAdapt_StopSeeking(XAAdaptationMMFCtx *bCtx);
+
+void XARadioItfAdapt_Free(void);
+
+void XARadioItfAdapt_SeekComplete(XAAdaptationBaseCtx *ctx, TInt aError, TInt aFrequency);
+	
+void XARadioItfAdapt_FrequencyChange(XAAdaptationBaseCtx *ctx, TInt aError);
+
+void XARadioItfAdapt_FrequencyRangeChange(XAAdaptationBaseCtx *ctx, TInt aFreqRangeChange);
+
+void XARadioItfAdapt_SetFrequencyComplete(XAAdaptationBaseCtx *ctx, TInt aError, TInt aFrequency);
+
+void XARadioItfAdapt_SetFrequencyRangeComplete(XAAdaptationBaseCtx *ctx, TInt aError);
+
+XAresult XARadioItfAdapt_GetStereoMode(XAuint32 * pMode);
+
+void XARadioItfAdapt_StereoStatusChange(XAAdaptationBaseCtx *ctx, XAboolean aStereoStatus);
+
+void XARadioItfAdapt_SignalStrengthChange(XAAdaptationBaseCtx *ctx, TInt aSignalStrength);
+
+#endif /* XARADIOITFADAPTATION_H */
--- a/khronosfws/openmax_al/src/radio/xaradiodevice.c	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/radio/xaradiodevice.c	Fri May 28 19:26:28 2010 -0500
@@ -42,8 +42,7 @@
 /* XAResult XARadioDeviceImpl_Create
  * Description: Create object
  */
-XAresult XARadioDeviceImpl_CreateRadioDevice(FrameworkMap* mapper,
-                                             XAObjectItf* pDevice,
+XAresult XARadioDeviceImpl_CreateRadioDevice(XAObjectItf* pDevice,
                                              XAuint32 numInterfaces,
                                              const XAInterfaceID * pInterfaceIds,
                                              const XAboolean * pInterfaceRequired)
@@ -120,25 +119,14 @@
             }
         }
     }
-    
-    /* This code is put here to return Feature Not Supported since adaptation is not present*/
-    /*************************************************/
-    DEBUG_ERR("Required interface not found - abort creation!");
-    XAObjectItfImpl_Destroy((XAObjectItf)&(pBaseObj));
-    XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
-    DEBUG_API("<-XARadioDeviceImpl_CreateRadioDevice");
-    return XA_RESULT_FEATURE_UNSUPPORTED;  
-    /*************************************************/
-    
-/*    // Initialize XARadioDeviceImpl variables 
-    pImpl->adaptationCtx = XARadioAdapt_Create();
 
-     //Set ObjectItf to point to newly created object 
     *pDevice = (XAObjectItf)&(pBaseObj->self);
+    pImpl->adaptationCtx = XARadioAdapt_Create();   
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
+
     DEBUG_API("<-XARadioDeviceImpl_Create");
-    return XA_RESULT_SUCCESS;*/
+    return XA_RESULT_SUCCESS;
 }
 
 /* XAResult XARadioDeviceImpl_QueryNumSupportedInterfaces
--- a/khronosfws/openmax_al/src/radio/xaradioitf.c	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/radio/xaradioitf.c	Fri May 28 19:26:28 2010 -0500
@@ -19,11 +19,12 @@
 #include <stdlib.h>
 #include <assert.h>
 #include <string.h>
+#include <xaradioitfext.h>
 #include "xaradioitf.h"
-
 #include "xaradioitfadaptation.h"
+#include "xathreadsafety.h"
 
-#include "xathreadsafety.h"
+#define FREQINTERVAL 20
 
 /**
  * XARadioItfImpl* GetImpl(XARadioItf self)
@@ -54,9 +55,7 @@
 XAresult XARadioItfImpl_SetFreqRange(XARadioItf self, XAuint8 range)
 {
     XAresult ret = XA_RESULT_SUCCESS;
-
     XAboolean isSupported = XA_BOOLEAN_FALSE;
-
     XARadioItfImpl* impl = GetImpl(self);
 
     DEBUG_API("->XARadioItfImpl_SetFreqRange");
@@ -72,15 +71,13 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-
-    ret = XARadioItfAdapt_IsFreqRangeSupported((XAAdaptationGstCtx*)impl->adapCtx, range, &isSupported);
+    ret = XARadioItfAdapt_IsFreqRangeSupported(range, &isSupported);
 
     if ( ret == XA_RESULT_SUCCESS && isSupported == XA_BOOLEAN_TRUE )
     {
-        ret = XARadioItfAdapt_SetFreqRange((XAAdaptationGstCtx*)impl->adapCtx, range);
+        ret = XARadioItfAdapt_SetFreqRange((XAAdaptationMMFCtx*)impl->adapCtx, range);
     }
 
-    
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_SetFreqRange");
     return ret;
@@ -106,8 +103,7 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-
-    ret = XARadioItfAdapt_GetFreqRange( (XAAdaptationGstCtx*)impl->adapCtx, pRange);
+    ret = XARadioItfAdapt_GetFreqRange(pRange);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_GetFreqRange");
@@ -138,8 +134,7 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-
-    ret = XARadioItfAdapt_IsFreqRangeSupported( (XAAdaptationGstCtx*)impl->adapCtx, range, pSupported );
+    ret = XARadioItfAdapt_IsFreqRangeSupported( range, pSupported );
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_IsFreqRangeSupported");
@@ -165,6 +160,9 @@
     XAresult ret = XA_RESULT_SUCCESS;
     XAboolean isSupported = XA_BOOLEAN_FALSE;
     XARadioItfImpl* impl = GetImpl(self);
+
+   *pFreqInterval = FREQINTERVAL;   
+		    
     DEBUG_API("->XARadioItfImpl_GetFreqRangeProperties");
     XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio);
 
@@ -176,8 +174,7 @@
         DEBUG_API("<-XARadioItfImpl_GetFreqRangeProperties");
         return XA_RESULT_PARAMETER_INVALID;
     }
-
-    ret = XARadioItfAdapt_IsFreqRangeSupported( (XAAdaptationGstCtx*)impl->adapCtx, range, &isSupported );
+    ret = XARadioItfAdapt_IsFreqRangeSupported( range, &isSupported );
 
     if (isSupported != XA_BOOLEAN_TRUE || ret != XA_RESULT_SUCCESS)
     {
@@ -187,10 +184,9 @@
         DEBUG_API("<-XARadioItfImpl_GetFreqRangeProperties");
         return XA_RESULT_PARAMETER_INVALID;
     }
-
-
-    ret = XARadioItfAdapt_GetFreqRangeProperties( (XAAdaptationGstCtx*)impl->adapCtx,
-            range, pMinFreq, pMaxFreq, pFreqInterval );
+		
+    ret = XARadioItfAdapt_GetFreqRangeProperties( (XAAdaptationMMFCtx*)impl->adapCtx,
+            range, pMinFreq, pMaxFreq );
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_GetFreqRangeProperties");
@@ -220,8 +216,7 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-
-    ret = XARadioItfAdapt_SetFrequency( (XAAdaptationGstCtx*)impl->adapCtx, freq );
+    ret = XARadioItfAdapt_SetFrequency( (XAAdaptationMMFCtx*)impl->adapCtx, freq );
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_SetFrequency");
@@ -251,8 +246,7 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-
-    ret = XARadioItfAdapt_CancelSetFrequency( (XAAdaptationGstCtx*)impl->adapCtx );
+    ret = XARadioItfAdapt_CancelSetFrequency();
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_CancelSetFrequency");
@@ -279,8 +273,7 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-
-    ret = XARadioItfAdapt_GetFrequency( (XAAdaptationGstCtx*)impl->adapCtx, pFreq);
+    ret = XARadioItfAdapt_GetFrequency(pFreq);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_GetFrequency");
@@ -309,9 +302,7 @@
 
     if (impl->squelch != squelch)
     {
-
-        ret = XARadioItfAdapt_SetSquelch( (XAAdaptationGstCtx*)impl->adapCtx, squelch );
-
+        ret = XARadioItfAdapt_SetSquelch( squelch );
         if ( ret == XA_RESULT_SUCCESS )
         {
             impl->squelch = squelch;
@@ -340,7 +331,7 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-    *pSquelch = impl->squelch;
+  	ret = XARadioItfAdapt_GetSquelch( pSquelch );
 
     DEBUG_API("<-XARadioItfImpl_GetSquelch");
     return ret;
@@ -357,7 +348,7 @@
     DEBUG_API("->XARadioItfImpl_SetStereoMode");
     XA_IMPL_THREAD_SAFETY_ENTRY(XATSRadio);
 
-    if(!impl || mode > XA_STEREOMODE_AUTO )
+    if( !impl || mode > XA_STEREOMODE_AUTO )
     {
         XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
         /* invalid parameter */
@@ -365,18 +356,14 @@
         DEBUG_API("<-XARadioItfImpl_SetStereoMode");
         return XA_RESULT_PARAMETER_INVALID;
     }
-
     if ( impl->stereoMode != mode)
     {
-
-        ret = XARadioItfAdapt_SetStereoMode( (XAAdaptationGstCtx*)impl->adapCtx, mode );
-
-        if ( ret == XA_RESULT_SUCCESS )
+        ret = XARadioItfAdapt_SetStereoMode( (XAAdaptationMMFCtx*)impl->adapCtx, mode );
+       	if ( ret == XA_RESULT_SUCCESS )
         {
-            impl->stereoMode = mode;
+         	  impl->stereoMode = mode;
         }
-    }
-
+    }    
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_SetStereoMode");
     return ret;
@@ -400,7 +387,7 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-    *pMode = impl->stereoMode;
+    ret = XARadioItfAdapt_GetStereoMode( pMode );
 
     DEBUG_API("<-XARadioItfImpl_GetStereoMode");
     return ret;
@@ -426,8 +413,7 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-
-    ret = XARadioItfAdapt_GetSignalStrength( (XAAdaptationGstCtx*)impl->adapCtx, pStrength );
+    ret = XARadioItfAdapt_GetSignalStrength( pStrength );
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_GetSignalStrength");
@@ -458,8 +444,7 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-
-    ret = XARadioItfAdapt_Seek( (XAAdaptationGstCtx*)impl->adapCtx, upwards );
+    ret = XARadioItfAdapt_Seek( (XAAdaptationMMFCtx*)impl->adapCtx, upwards );
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_Seek");
@@ -488,8 +473,7 @@
         return XA_RESULT_PARAMETER_INVALID;
     }
 
-
-    ret = XARadioItfAdapt_StopSeeking( (XAAdaptationGstCtx*)impl->adapCtx );
+    XARadioItfAdapt_StopSeeking( (XAAdaptationMMFCtx*)impl->adapCtx );
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARadioItfImpl_StopSeeking");
@@ -497,165 +481,6 @@
 }
 
 /**
- * XAresult XARadioItfImpl_GetNumberOfPresets(XARadioItf self, XAuint32 * pNumPresets)
- * Description: Returns the number of preset slots the device has for storing the presets.
- **/
-XAresult XARadioItfImpl_GetNumberOfPresets(XARadioItf self, XAuint32 * pNumPresets)
-{
-    XAresult ret = XA_RESULT_SUCCESS;
-    XARadioItfImpl* impl = GetImpl(self);
-    DEBUG_API("->XARadioItfImpl_GetNumberOfPresets");
-
-    if(!impl || !pNumPresets)
-    {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        /* invalid parameter */
-        DEBUG_API("<-XARadioItfImpl_GetNumberOfPresets");
-        return XA_RESULT_PARAMETER_INVALID;
-    }
-
-    *pNumPresets = impl->numOfPresets;
-
-    DEBUG_API("<-XARadioItfImpl_GetNumberOfPresets");
-    return ret;
-}
-
-/**
- * XAresult XARadioItfImpl_SetPreset(XARadioItf self,
- *                                   XAuint32 preset,
- *                                   XAuint32 freq,
- *                                   XAuint8 range,
- *                                   XAuint32 mode,
- *                                   const XAchar * name)
- * Description: Sets the preset.
- **/
-XAresult XARadioItfImpl_SetPreset(XARadioItf self,
-                                  XAuint32 preset,
-                                  XAuint32 freq,
-                                  XAuint8 range,
-                                  XAuint32 mode,
-                                  const XAchar * name)
-{
-    XAresult ret = XA_RESULT_SUCCESS;
-    XAboolean supported = XA_BOOLEAN_FALSE;
-    XAuint32 minFreq = 0;
-    XAuint32 maxFreq = 0;
-    XAuint32 freqInterval = 0;
-
-    XARadioItfImpl* impl = GetImpl(self);
-    DEBUG_API("->XARadioItfImpl_SetPreset");
-
-    if(!impl || !name)
-    {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        /* invalid parameter */
-        DEBUG_API("<-XARadioItfImpl_SetPreset");
-        return XA_RESULT_PARAMETER_INVALID;
-    }
-    ret = (*self)->IsFreqRangeSupported(self, range, &supported);
-    if(supported != XA_BOOLEAN_TRUE || ret != XA_RESULT_SUCCESS)
-    {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        /* invalid range */
-        DEBUG_API("<-XARadioItfImpl_SetPreset");
-        return XA_RESULT_PARAMETER_INVALID;
-    }
-    ret = (*self)->GetFreqRangeProperties(self, range, &minFreq, &maxFreq, &freqInterval);
-    if (freq < minFreq || freq > maxFreq || ((freq-minFreq)%freqInterval != 0) ||
-            ret != XA_RESULT_SUCCESS)
-    {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        /* invalid freq */
-        DEBUG_API("<-XARadioItfImpl_SetPreset");
-        return XA_RESULT_PARAMETER_INVALID;
-    }
-    if (preset < 1 || preset >= impl->numOfPresets ||
-             mode > XA_STEREOMODE_AUTO ||
-            strlen((char*)name) > RADIO_PRESET_NAME_MAX_LENGTH)
-    {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        /* invalid preset, name or mode*/
-        DEBUG_API("<-XARadioItfImpl_SetPreset");
-        return XA_RESULT_PARAMETER_INVALID;
-    }
-
-
-    
-    free(impl->presets[preset].name);
-
-    impl->presets[preset].freq = freq;
-    impl->presets[preset].range = range;
-    impl->presets[preset].stereoMode = mode;
-    impl->presets[preset].name = calloc(1, RADIO_PRESET_NAME_MAX_LENGTH+1);
-    strncpy( impl->presets[preset].name, (char*)name, RADIO_PRESET_NAME_MAX_LENGTH );
-
-    DEBUG_API("<-XARadioItfImpl_SetPreset");
-    return ret;
-}
-
-/**
- * XAresult XARadioItfImpl_GetPreset(XARadioItf self,
- *                                   XAuint32 preset,
- *                                   XAuint32 * pFreq,
- *                                   XAuint8 * pRange,
- *                                   XAuint32 * pMode,
- *                                   XAchar * pName,
- *                                   XAuint16 * pNameLength)
- * Description: Gets the settings stored into a preset.
- **/
-XAresult XARadioItfImpl_GetPreset(XARadioItf self,
-                                  XAuint32 preset,
-                                  XAuint32 * pFreq,
-                                  XAuint8 * pRange,
-                                  XAuint32 * pMode,
-                                  XAchar * pName,
-                                  XAuint16 * pNameLength)
-{
-    /* Supporting CT tester the API signature is newer, but API functionality reflects required spec version.
-       Implement newer specification in terms of handling pName and pNameLength*/
-    XAresult ret = XA_RESULT_SUCCESS;
-    XARadioItfImpl* impl = GetImpl(self);
-    DEBUG_API("->XARadioItfImpl_GetPreset");
-
-    if(!impl || !pFreq || !pRange || !pMode || !pNameLength)
-    {
-        DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-        /* invalid parameter */
-        DEBUG_API("<-XARadioItfImpl_GetPreset");
-        return XA_RESULT_PARAMETER_INVALID;
-    }
-    if (pName)
-    {
-        if(preset < 1 || preset > impl->numOfPresets)
-        {
-            DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
-            /* invalid parameter */
-            DEBUG_API("<-XARadioItfImpl_GetPreset");
-            return XA_RESULT_PARAMETER_INVALID;
-        }
-
-        *pFreq = impl->presets[preset].freq;
-        *pRange = impl->presets[preset].range;
-        *pMode = impl->presets[preset].stereoMode;
-        if(*pNameLength<RADIO_PRESET_NAME_MAX_LENGTH)
-        {
-            strncpy( (char*)pName, impl->presets[preset].name, *pNameLength );
-            ret = XA_RESULT_BUFFER_INSUFFICIENT;
-        }
-        else
-        {
-            strncpy( (char*)pName, impl->presets[preset].name, RADIO_PRESET_NAME_MAX_LENGTH );
-        }
-        
-    }
-    /*Just adding some meaninful value, when supporting new spec this must be fetch the system*/
-    *pNameLength = RADIO_PRESET_NAME_MAX_LENGTH;
-
-    DEBUG_API("<-XARadioItfImpl_GetPreset");
-    return ret;
-}
-
-/**
  * XAresult XARadioItfImpl_RegisterRadioCallback(XARadioItf self,
  *                                               xaRadioCallback callback,
  *                                               void * pContext)
@@ -695,7 +520,6 @@
  **/
 XARadioItfImpl* XARadioItfImpl_Create(XAAdaptationBaseCtx *adapCtx)
 {
-    XAuint16 index = 0;
 
     XARadioItfImpl *self = (XARadioItfImpl*)
         calloc(1,sizeof(XARadioItfImpl));
@@ -719,32 +543,15 @@
         self->itf.GetSignalStrength = XARadioItfImpl_GetSignalStrength;
         self->itf.Seek = XARadioItfImpl_Seek;
         self->itf.StopSeeking = XARadioItfImpl_StopSeeking;
-        self->itf.GetNumberOfPresets = XARadioItfImpl_GetNumberOfPresets;
-        self->itf.SetPreset = XARadioItfImpl_SetPreset;
-        self->itf.GetPreset = XARadioItfImpl_GetPreset;
         self->itf.RegisterRadioCallback = XARadioItfImpl_RegisterRadioCallback;
 
         /* init variables */
 
         self->squelch = XA_BOOLEAN_FALSE;
         self->stereoMode = RADIO_DEFAULT_STEREO_MODE;
-
-        self->preset = 0;
-        self->numOfPresets = RADIO_NUM_OF_PRESETS;
-
-        for (index = 0; index < self->numOfPresets; index++)
-        {
-            self->presets[index].freq = RADIO_DEFAULT_FREQ;
-            self->presets[index].range = RADIO_DEFAULT_FREQ_RANGE;
-            self->presets[index].stereoMode = RADIO_DEFAULT_STEREO_MODE;
-            self->presets[index].name = calloc(1, RADIO_PRESET_NAME_MAX_LENGTH+1);
-            strncpy( self->presets[index].name, RadioPresetDefaultName, RADIO_PRESET_NAME_MAX_LENGTH );
-        }
-
         self->callback = NULL;
         self->context = NULL;
         self->cbPtrToSelf = NULL;
-
         self->adapCtx = adapCtx;
 
         XAAdaptationBase_AddEventHandler( adapCtx, &XARadioItfImpl_AdaptCb, XA_RADIOITFEVENTS, self );
@@ -762,20 +569,11 @@
  **/
 void XARadioItfImpl_Free(XARadioItfImpl* self)
 {
-    XAuint16 index = 0;
     DEBUG_API("->XARadioItfImpl_Free");
     XA_IMPL_THREAD_SAFETY_ENTRY_FOR_VOID_FUNCTIONS(XATSRadio);
-
-    
     XAAdaptationBase_RemoveEventHandler( self->adapCtx, &XARadioItfImpl_AdaptCb );
 
-    XARadioItfAdapt_Free(self->adapCtx);
-
-    for (index = 0; index < self->numOfPresets; index++)
-    {
-        free(self->presets[index].name);
-    }
-
+    XARadioItfAdapt_Free();
     assert(self==self->self);
     free(self);
 
@@ -789,6 +587,9 @@
 void XARadioItfImpl_AdaptCb( void *pHandlerCtx, XAAdaptEvent *event )
 {
     XARadioItfImpl* impl =(XARadioItfImpl*)pHandlerCtx;
+    XAuint32 eventData = 0;
+    XAboolean eventBoolean = XA_BOOLEAN_FALSE;
+    
     DEBUG_API("->XARadioItfimpl_AdaptCb");
 
     if(!impl)
@@ -801,19 +602,37 @@
 
     if( event->eventid == XA_ADAPT_RADIO_FREQUENCY_CHANGED && impl->callback )
     {
-        DEBUG_API("Frequency changed in adaptation");
-        impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_FREQUENCY_CHANGED, 0, XA_BOOLEAN_FALSE );
+        DEBUG_API("Frequency changed in adaptation"); 
+        eventData = *(XAuint32*)event->data;
+        impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_FREQUENCY_CHANGED, eventData, eventBoolean );
     }
+    
     else if( event->eventid == XA_ADAPT_RADIO_FREQUENCY_RANGE_CHANGED && impl->callback )
     {
         DEBUG_API("Frequency range changed in adaptation");
-        impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED, 0, XA_BOOLEAN_FALSE  );
+
+        impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED, eventData, eventBoolean  );
     }
+    
     else if( event->eventid == XA_ADAPT_RADIO_SEEK_COMPLETE && impl->callback )
     {
         DEBUG_API("Seek complete in adaptation");
-        impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_SEEK_COMPLETED, 0, XA_BOOLEAN_FALSE  );
+       	eventBoolean = *(XAboolean*)event->data;        
+        impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_SEEK_COMPLETED, eventData, eventBoolean  );     
     }
+    
+    else if( event->eventid == XA_ADAPT_RADIO_STEREO_STATUS_CHANGED && impl->callback )
+    {
+        DEBUG_API("Stereo status change in adaptation");
+      	eventBoolean = *(XAboolean*)event->data;          
+        impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_STEREO_STATUS_CHANGED, eventData, eventBoolean  );
+    } 
+        
+    else if( event->eventid == XA_ADAPT_RADIO_SIGNAL_STRENGTH_CHANGED && impl->callback )
+    {
+        DEBUG_API("Signal Strength Change in adaptation");
+        impl->callback( impl->cbPtrToSelf, impl->context, XA_RADIO_EVENT_SIGNAL_STRENGTH_CHANGED, eventData, eventBoolean  );
+    }      
     else
     {
         /* do nothing */
@@ -821,4 +640,3 @@
     DEBUG_API("<-XARadioItfimpl_AdaptCb");
 }
 
-
--- a/khronosfws/openmax_al/src/radio/xaradioitf.h	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/radio/xaradioitf.h	Fri May 28 19:26:28 2010 -0500
@@ -22,23 +22,13 @@
 #include "xaradioitfadaptation.h"
 
 /** MACROS **/
-#define RADIO_PRESET_NAME_MAX_LENGTH 20
-
+#define RADIO_DEFAULT_STEREO_MODE 2
 /** TYPES **/
 
 /** ENUMERATIONS **/
 
 /** STRUCTURES **/
 
-/* Definition of radio preset */
-typedef struct RadioPreset_
-{
-    XAuint32    freq;
-    XAuint8     range;
-    XAuint32    stereoMode;
-    char*       name;
-} RadioPreset;
-
 /* Definition of XAEqualizerItf implementation */
 typedef struct XARadioItfImpl_
 {
@@ -51,11 +41,6 @@
     XAboolean   squelch;
     XAuint32    stereoMode;
 
-    XAuint32    preset;
-    XAuint32    numOfPresets;
-
-    RadioPreset presets[RADIO_NUM_OF_PRESETS];
-
     XARadioItf         cbPtrToSelf;
     xaRadioCallback    callback;
     void               *context;
@@ -101,23 +86,6 @@
 
 XAresult XARadioItfImpl_StopSeeking(XARadioItf self);
 
-XAresult XARadioItfImpl_GetNumberOfPresets(XARadioItf self, XAuint32 * pNumPresets);
-
-XAresult XARadioItfImpl_SetPreset(XARadioItf self,
-                                  XAuint32 preset,
-                                  XAuint32 freq,
-                                  XAuint8 range,
-                                  XAuint32 mode,
-                                  const XAchar * name);
-
-XAresult XARadioItfImpl_GetPreset(XARadioItf self,
-                                  XAuint32 preset,
-                                  XAuint32 * pFreq,
-                                  XAuint8 * pRange,
-                                  XAuint32 * pMode,
-                                  XAchar * pName,
-                                  XAuint16 * pNameLength);
-
 XAresult XARadioItfImpl_RegisterRadioCallback(XARadioItf self,
                                               xaRadioCallback callback,
                                               void * pContext);
@@ -128,4 +96,5 @@
 
 void XARadioItfImpl_Free(XARadioItfImpl* self);
 
+
 #endif /* XARADIOITF_H */
--- a/khronosfws/openmax_al/src/radio/xardsitf.c	Fri May 14 18:19:45 2010 -0500
+++ b/khronosfws/openmax_al/src/radio/xardsitf.c	Fri May 28 19:26:28 2010 -0500
@@ -63,7 +63,7 @@
     }
 
 
-    ret = XARDSItfAdapt_QueryRDSSignal((XAAdaptationGstCtx*)impl->adapCtx, isSignal);
+//    ret = XARDSItfAdapt_QueryRDSSignal((XAAdaptationGstCtx*)impl->adapCtx, isSignal);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARDSItfImpl_QueryRDSSignal");
@@ -88,7 +88,7 @@
     }
 
 
-    ret = XARDSItfAdapt_GetProgrammeServiceName((XAAdaptationGstCtx*)impl->adapCtx, ps);
+//    ret = XARDSItfAdapt_GetProgrammeServiceName((XAAdaptationGstCtx*)impl->adapCtx, ps);
 
     DEBUG_API("<-XARDSItfImpl_GetProgrammeServiceName");
     return ret;
@@ -115,7 +115,7 @@
     }
 
 
-    ret = XARDSItfAdapt_GetRadioText((XAAdaptationGstCtx*)impl->adapCtx, rt);
+//    ret = XARDSItfAdapt_GetRadioText((XAAdaptationGstCtx*)impl->adapCtx, rt);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARDSItfImpl_GetRadioText");
@@ -153,8 +153,8 @@
     }
 
 
-    ret = XARDSItfAdapt_GetRadioTextPlus((XAAdaptationGstCtx*)impl->adapCtx, contentType, informationElement,
-                                        descriptor, descriptorContentType);
+ //   ret = XARDSItfAdapt_GetRadioTextPlus((XAAdaptationGstCtx*)impl->adapCtx, contentType, informationElement,
+ //                                       descriptor, descriptorContentType);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARDSItfImpl_GetRadioTextPlus");
@@ -183,7 +183,7 @@
     }
 
 
-    ret = XARDSItfAdapt_GetProgrammeType((XAAdaptationGstCtx*)impl->adapCtx, pty);
+//    ret = XARDSItfAdapt_GetProgrammeType((XAAdaptationGstCtx*)impl->adapCtx, pty);
 
     DEBUG_API("<-XARDSItfImpl_GetProgrammeType");
     return ret;
@@ -217,7 +217,7 @@
     }
 
 
-    ret = XARDSItfAdapt_GetProgrammeTypeString((XAAdaptationGstCtx*)impl->adapCtx, isLengthMax16, pty);
+//    ret = XARDSItfAdapt_GetProgrammeTypeString((XAAdaptationGstCtx*)impl->adapCtx, isLengthMax16, pty);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARDSItfImpl_GetProgrammeTypeString");
@@ -248,7 +248,7 @@
     }
 
 
-    ret = XARDSItfAdapt_GetProgrammeIdentificationCode((XAAdaptationGstCtx*)impl->adapCtx, pi);
+//    ret = XARDSItfAdapt_GetProgrammeIdentificationCode((XAAdaptationGstCtx*)impl->adapCtx, pi);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARDSItfImpl_GetProgrammeIdentificationCode");
@@ -276,7 +276,7 @@
     }
 
 
-    ret = XARDSItfAdapt_GetClockTime((XAAdaptationGstCtx*)impl->adapCtx, dateAndTime);
+ //   ret = XARDSItfAdapt_GetClockTime((XAAdaptationGstCtx*)impl->adapCtx, dateAndTime);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARDSItfImpl_GetClockTime");
@@ -304,7 +304,7 @@
     }
 
 
-    ret = XARDSItfAdapt_GetTrafficAnnouncement((XAAdaptationGstCtx*)impl->adapCtx, ta);
+//    ret = XARDSItfAdapt_GetTrafficAnnouncement((XAAdaptationGstCtx*)impl->adapCtx, ta);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARDSItfImpl_GetTrafficAnnouncement");
@@ -332,7 +332,7 @@
     }
 
 
-    ret = XARDSItfAdapt_GetTrafficProgramme((XAAdaptationGstCtx*)impl->adapCtx, tp);
+//    ret = XARDSItfAdapt_GetTrafficProgramme((XAAdaptationGstCtx*)impl->adapCtx, tp);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARDSItfImpl_GetTrafficProgramme");
@@ -369,7 +369,7 @@
     }
 
 
-    ret = XARDSItfAdapt_SeekByProgrammeType((XAAdaptationGstCtx*)impl->adapCtx, pty, upwards);
+ //   ret = XARDSItfAdapt_SeekByProgrammeType((XAAdaptationGstCtx*)impl->adapCtx, pty, upwards);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARDSItfImpl_SeekByProgrammeType");
@@ -402,7 +402,7 @@
     }
 
 
-    ret = XARDSItfAdapt_SeekTrafficAnnouncement((XAAdaptationGstCtx*)impl->adapCtx, upwards);
+ //   ret = XARDSItfAdapt_SeekTrafficAnnouncement((XAAdaptationGstCtx*)impl->adapCtx, upwards);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARDSItfImpl_SeekTrafficAnnouncement");
@@ -435,7 +435,7 @@
     }
 
 
-    ret = XARDSItfAdapt_SeekTrafficProgramme((XAAdaptationGstCtx*)impl->adapCtx, upwards);
+ //   ret = XARDSItfAdapt_SeekTrafficProgramme((XAAdaptationGstCtx*)impl->adapCtx, upwards);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARDSItfImpl_SeekTrafficProgramme");
@@ -465,7 +465,7 @@
     }
 
 
-    ret = XARDSItfAdapt_SetAutomaticSwitching((XAAdaptationGstCtx*)impl->adapCtx, automatic);
+ //   ret = XARDSItfAdapt_SetAutomaticSwitching((XAAdaptationGstCtx*)impl->adapCtx, automatic);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARDSItfImpl_SetAutomaticSwitching");
@@ -493,7 +493,7 @@
     }
 
 
-    ret = XARDSItfAdapt_GetAutomaticSwitching((XAAdaptationGstCtx*)impl->adapCtx, automatic);
+//    ret = XARDSItfAdapt_GetAutomaticSwitching((XAAdaptationGstCtx*)impl->adapCtx, automatic);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARDSItfImpl_GetAutomaticSwitching");
@@ -522,7 +522,7 @@
     }
 
 
-    ret = XARDSItfAdapt_SetAutomaticTrafficAnnouncement((XAAdaptationGstCtx*)impl->adapCtx, automatic);
+//    ret = XARDSItfAdapt_SetAutomaticTrafficAnnouncement((XAAdaptationGstCtx*)impl->adapCtx, automatic);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARDSItfImpl_SetAutomaticTrafficAnnouncement");
@@ -552,7 +552,7 @@
     }
 
 
-    ret = XARDSItfAdapt_GetAutomaticTrafficAnnouncement((XAAdaptationGstCtx*)impl->adapCtx, automatic);
+ //   ret = XARDSItfAdapt_GetAutomaticTrafficAnnouncement((XAAdaptationGstCtx*)impl->adapCtx, automatic);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARDSItfImpl_GetAutomaticTrafficAnnouncement");
@@ -597,7 +597,7 @@
     if (callback)
     {
 
-        ret = XARDSItfAdapt_GetODAGroup((XAAdaptationGstCtx*)impl->adapCtx, AID);
+ //       ret = XARDSItfAdapt_GetODAGroup((XAAdaptationGstCtx*)impl->adapCtx, AID);
 
     }
 
@@ -635,7 +635,7 @@
     }
 
 
-    ret = XARDSItfAdapt_SubscribeODAGroup((XAAdaptationGstCtx*)impl->adapCtx, group, useErrorCorrection);
+//    ret = XARDSItfAdapt_SubscribeODAGroup((XAAdaptationGstCtx*)impl->adapCtx, group, useErrorCorrection);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARDSItfImpl_SubscribeODAGroup");
@@ -667,7 +667,7 @@
     }
 
 
-    ret = XARDSItfAdapt_UnsubscribeODAGroup((XAAdaptationGstCtx*)impl->adapCtx, group);
+ //   ret = XARDSItfAdapt_UnsubscribeODAGroup((XAAdaptationGstCtx*)impl->adapCtx, group);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARDSItfImpl_UnsubscribeODAGroup");
@@ -699,7 +699,7 @@
     }
 
 
-    XARDSItfAdapt_ListODAGroupSubscriptions((XAAdaptationGstCtx*)impl->adapCtx, pGroups, pLength);
+//    XARDSItfAdapt_ListODAGroupSubscriptions((XAAdaptationGstCtx*)impl->adapCtx, pGroups, pLength);
 
     XA_IMPL_THREAD_SAFETY_EXIT(XATSRadio);
     DEBUG_API("<-XARDSItfImpl_ListODAGroupSubscriptions");
--- a/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Inc/AdvancedAudioPlayController.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Inc/AdvancedAudioPlayController.h	Fri May 28 19:26:28 2010 -0500
@@ -832,7 +832,7 @@
 		// sets the repeat count and trailing silence timer value supplied by the client
         TInt DoSetRepeats(TInt aRepeatNumberOfTimes, const TTimeIntervalMicroSeconds& aTrailingSilence);
         // handles the loop play of seekable and non-seekable sources
-        void DoRepeat();
+        void DoRepeatL();
         TBool IsLoopPlayEnabled() const;
         
     public: // Functions from base classes (MTrailingSilenceObserver)
--- a/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Src/AdvancedAudioPlayController.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmfenh/advancedaudiocontroller/audiocontrollerpluginsvariant/AdvancedAudioController/Src/AdvancedAudioPlayController.cpp	Fri May 28 19:26:28 2010 -0500
@@ -986,11 +986,6 @@
     {
     DP0(_L("CAdvancedAudioPlayController::RemoveDataSinkL"));
 
-    if (!iDataSink)
-		{
-        User::Leave(KErrNotReady);
-		}
-
     if (iDataSink != &aDataSink)
 		{
         User::Leave(KErrArgument);
@@ -1000,9 +995,12 @@
 		{
         User::Leave(KErrNotReady);
 		}
-
-    iDataSink->SinkStopL();         // should always stop source before logoff
-	iDataSink->SinkThreadLogoff();
+		
+   if (iDataSink)
+   	{
+       iDataSink->SinkStopL();         // should always stop source before logoff
+	     iDataSink->SinkThreadLogoff();
+	  }
 
     // dereference Decoder from Utility before deleting AudioOutput (which took ownership of decoder)
     if (iAudioUtility)
@@ -1010,8 +1008,8 @@
         iAudioUtility->DeReferenceDecoder();
     	}
     
-	delete iAudioOutput;
-	iAudioOutput = NULL;
+    delete iAudioOutput;
+	  iAudioOutput = NULL;
     iDataSink = NULL;
     iDecoderExists = EFalse;
     }
@@ -1025,7 +1023,12 @@
     DP0(_L("CAdvancedAudioPlayController::ResetL"));
 
     RemoveDataSourceL(*iDataSource);
-    RemoveDataSinkL(*iDataSink);
+    
+    if (iDataSink)
+    	{
+    		  DP0(_L("CAdvancedAudioPlayController::ResetL, calling RemoveDataSinkL"));
+          RemoveDataSinkL(*iDataSink);
+      }
     }
 
 // -----------------------------------------------------------------------------
@@ -1349,6 +1352,21 @@
         {// we got preempted during a seek
         // we're already seeking to a position. When we get there we'll come here again, but handle it below
         DP0(_L("CAdvancedAudioPlayController::DoPauseL got a preemption during seek"));
+        
+         // if we are seeking, we need to flush the devsound buffers regardless of loop play
+        DP0(_L("CAdvancedAudioPlayController::DoPauseL AudioOutput->StopL()"));
+        iAudioOutput->StopL();
+
+        if (iPlayingForInitPos)
+         {
+           iState = EInitialized;
+         }
+        else
+         {
+           iState = EPaused;
+         }
+        iPlayingForPauseSeek = EFalse;
+        iPlayingForInitPos = EFalse; 
         return;
         }
 
@@ -1907,7 +1925,7 @@
                         }
                     else
                         {
-                        // This is needed for non-seekable sources as DoRepeat() calls DoInitialize in this case
+                        // This is needed for non-seekable sources as DoRepeatL() calls DoInitialize in this case
                         // this resets the source to read from 0 and sets the iState to EInitializing.
                         // BufferFilled will not read the header again, change state to EInitialized and seek to the iInitPosition.
                         // The next BufferFilled will come here, where we will continue playback from byte position 0
@@ -2409,20 +2427,20 @@
     DP0(_L("CAdvancedAudioPlayController::LastBufferSent End"));
     }
 
-void CAdvancedAudioPlayController::DoRepeat()
+void CAdvancedAudioPlayController::DoRepeatL()
     {
-    DP0(_L("CAdvancedAudioPlayController::DoRepeat Begin"));
+    DP0(_L("CAdvancedAudioPlayController::DoRepeatL Begin"));
     // save the current position, this will be used to calculate the position in loop play when
     // client calls for PositionL() or Pause() operations
     // TODO:  need to check this position when loop play is going on in a play window
     iSavedTimePositionInMicroSecs = iAudioOutput->CalculateAudioOutputPositionL();
-    DP1(_L("CAdvancedAudioPlayController::DoRepeat iSavedTimePositionInMicroSecs[%u]"), iSavedTimePositionInMicroSecs);
+    DP1(_L("CAdvancedAudioPlayController::DoRepeatL iSavedTimePositionInMicroSecs[%u]"), iSavedTimePositionInMicroSecs);
     
     if ((!iRepeatForever) && (iCurrentRepeatCount < iRepeatCount))
         {
         iCurrentRepeatCount++;
         }
-    DP1(_L("CAdvancedAudioPlayController::DoRepeat Number of times played till now = %d"), iCurrentRepeatCount);
+    DP1(_L("CAdvancedAudioPlayController::DoRepeatL Number of times played till now = %d"), iCurrentRepeatCount);
     
     if (iSourceIsTimeSeekable || iSourceIsPosSeekable)
         { // For seekable source
@@ -2431,25 +2449,25 @@
         // SetPlayWindow(iPlayWindowStartPosition, iPlayWindowEndPosition);
         if (iPlayWindowStartPosition > 0)
             {
-            DP1(_L("CAdvancedAudioPlayController::DoRepeat SetPositionL[%d]ms"), I64LOW(iPlayWindowStartPosition.Int64()/1000));
+            DP1(_L("CAdvancedAudioPlayController::DoRepeatL SetPositionL[%d]ms"), I64LOW(iPlayWindowStartPosition.Int64()/1000));
             SetPositionL(iPlayWindowStartPosition);
             }
         else
             {
-            DP0(_L("CAdvancedAudioPlayController::DoRepeat SetPositionL(0)"));
+            DP0(_L("CAdvancedAudioPlayController::DoRepeatL SetPositionL(0)"));
             SetPositionL(0);
             }
         // Register for PlayWindow end position as the FrameTable has set its playwindowendpostime to zero
         if (iPlayWindowEndPosition > 0)
             {
-            DP1(_L("CAdvancedAudioPlayController::DoRepeat iAudioUtility->SetPlayWindowEndTimeMs(%d)"), I64LOW(iPlayWindowEndPosition.Int64()/1000));
+            DP1(_L("CAdvancedAudioPlayController::DoRepeatL iAudioUtility->SetPlayWindowEndTimeMs(%d)"), I64LOW(iPlayWindowEndPosition.Int64()/1000));
             iAudioUtility->SetPlayWindowEndTimeMs(iPlayWindowEndPosition.Int64() / 1000);
             }
         }
     else
         { // For non-seekable source
         // Stop and start playback
-        DP0(_L("CAdvancedAudioPlayController::DoRepeat Non-Seekable source."));
+        DP0(_L("CAdvancedAudioPlayController::DoRepeatL Non-Seekable source."));
         iAudioOutput->StopL(EFalse);
         iDataSourceAdapter->SourceStopL(); // clear the buffers in the source before seeking and priming it
         DoInitializeL();
@@ -2457,13 +2475,19 @@
         // and the current position is adjusted to be placed after the header.
         iReadHeader = ETrue;
         }
-    DP0(_L("CAdvancedAudioPlayController::DoRepeat End") );
+    DP0(_L("CAdvancedAudioPlayController::DoRepeatL End") );
     }
 
 EXPORT_C void CAdvancedAudioPlayController::TrailingSilenceTimerComplete()
     {
     DP0(_L("CAdvancedAudioPlayController::TrailingSilenceTimerComplete "));
-    DoRepeat();
+   
+    TRAPD(err,DoRepeatL()); //Fix for Bug ECWG-84WE9J
+    DP1(_L("CAdvancedAudioPlayController::TrailingSilenceTimerComplete: DoRepeatL [%d]"), err);
+    if(err)
+        {
+         SendEventToClient(TMMFEvent(KMMFEventCategoryPlaybackComplete,err));
+        }
     }
 
 EXPORT_C TInt CAdvancedAudioPlayController::GetCodecConfigData(RArray<TInt>& aCodecConfigData)
--- a/mmfenh/advancedaudiocontroller/audiotonecontrollerplugin/src/mmfaudiotonecontroller.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmfenh/advancedaudiocontroller/audiotonecontrollerplugin/src/mmfaudiotonecontroller.cpp	Fri May 28 19:26:28 2010 -0500
@@ -114,6 +114,7 @@
 void CMMFAudioToneController::ConstructL()
 	{
 	iSourceAndSinkAdded = EFalse;
+    iDataSink           = NULL;
 
 	// Construct custom command parsers
 	CMMFAudioPlayDeviceCustomCommandParser* audPlayDevParser = CMMFAudioPlayDeviceCustomCommandParser::NewL(*this);
@@ -138,7 +139,15 @@
         {
         User::LeaveIfError(iFactory->CreateAudioOutputControlUtility(iAudioOutputControlUtility));                
         }    
-//end drm cr
+ //end drm cr
+   
+   
+  //For Error : Update s60 tone controller to update the DRM rights 
+  CMMFDRMCustomCommandParser* drmParser = CMMFDRMCustomCommandParser::NewL(*this);
+	CleanupStack::PushL(drmParser);
+	AddCustomCommandParserL(*drmParser);
+	CleanupStack::Pop(drmParser);
+	
 	// [ assert the invariant now that we are constructed ]
 	__ASSERT_ALWAYS( Invariant(), Panic( EStateNotConstructed));
 	}
@@ -235,6 +244,9 @@
 	//Only support playing to audio output 
 	if (aSink.DataSinkType() != KUidMmfAudioOutput)
 		User::Leave( KErrNotSupported );
+			
+			
+    iDataSink = &aSink;
 
 	iMMFDevSound = CMMFDevSound::NewL();
 
@@ -280,6 +292,22 @@
 			User::Leave(err);
 			}
 		}
+		
+	//For Error : Update s60 tone controller to update the DRM rights 
+	 if (iDataSource->DataSourceType()==KUidMmfFileSource)
+       {
+       CMMFFile* file = static_cast<CMMFFile*>(iDataSource);
+       // we only support protected files for playback
+       if (file->IsProtectedL())
+           {
+           if (iDataSink->DataSinkType()!=KUidMmfAudioOutput)
+             {       
+               // Conversion is not allowed for DRM protected files
+               User::Leave(KErrNotSupported);
+              }        
+           }
+       }
+	   
 	// for drm CR/Error 417-45879/ESLM-82JAHL
     if (iDataSource->DataSourceType()==KUidMmfFileSource)
         {
@@ -381,6 +409,18 @@
 	            }
 	        }
 	
+	//For Error : Update s60 tone controller to update the DRM rights 
+	//Getting the Intent for Play if AutomaticIntent is Enabled		
+	if (!iDisableAutoIntent && iDataSource->DataSourceType()==KUidMmfFileSource)
+	   {
+	   CMMFFile* file = static_cast<CMMFFile*>(iDataSource);
+	   TInt err = file->ExecuteIntent(ContentAccess::EPlay);
+	   if (err != KErrNone)
+	      {
+	      User::LeaveIfError(err);
+	      }
+	   }
+	
 	if(State() == EPausePlaying && iIsResumeSupported)
 		{
 		User::LeaveIfError(iMMFDevSound->Resume());
@@ -414,6 +454,18 @@
 
 	__ASSERT_ALWAYS(iMMFDevSound, Panic(EMMFAudioControllerPanicDataSinkDoesNotExist));
 
+   //For Error : Update s60 tone controller to update the DRM rights 
+	 //Getting the Intent for Pause if AutomaticIntent is Enabled
+     if (!iDisableAutoIntent && iDataSource->DataSourceType()==KUidMmfFileSource)
+	    {
+	    CMMFFile* file = static_cast<CMMFFile*>(iDataSource);
+	    TInt err = file->ExecuteIntent(ContentAccess::EPause);
+	
+	    if (err != KErrNone)
+	       {
+	        User::LeaveIfError(err);
+	       }
+	    }
 	if(iIsResumeSupported)
 		{
 		iMMFDevSound->Pause();
@@ -450,6 +502,19 @@
 	// Due to the asynchronous nature of the controller
 	// interaction the response to stopped when stopped 
 	// should not be an error ]
+    
+	
+	//For Error : Update s60 tone controller to update the DRM rights 
+	//Getting the Intent for Stop if AutomaticIntent is Enabled
+    if (!iDisableAutoIntent && iDataSource->DataSourceType()==KUidMmfFileSource)
+	   {
+	   CMMFFile* file = static_cast<CMMFFile*>(iDataSource);
+	   TInt err = file->ExecuteIntent(ContentAccess::EStop);
+	      if (err != KErrNone)
+		    {
+			 User::LeaveIfError(err);
+			}
+	   }
 	if (State() != EStopped)
 		{
 		//[ update state to stopped propogate to devsound ]
@@ -1061,3 +1126,63 @@
 		}
 	return err;
 	}
+
+//For Error : Update s60 tone controller to update the DRM rights 
+//Methods from MMMFDRMCustomCommandImplementor
+//Checking for the Intents if AutomaticIntent is Disabled
+
+TInt CMMFAudioToneController::MdcExecuteIntent(ContentAccess::TIntent aIntent)
+    {
+    
+    if (iDataSource->DataSourceType()==KUidMmfFileSource)
+         {
+         CMMFFile* file = static_cast<CMMFFile*>(iDataSource);
+         TInt err = file->ExecuteIntent(aIntent);
+         return err;
+         }
+    else
+         {
+         // Evaluating intent will always succeed on sinks that 
+         // don't support DRM
+         return KErrNone;
+         }   
+    
+    }
+
+TInt CMMFAudioToneController::MdcEvaluateIntent(ContentAccess::TIntent aIntent)
+    {
+    if (iDataSource->DataSourceType()==KUidMmfFileSource)
+         {
+         CMMFFile* file = static_cast<CMMFFile*>(iDataSource);
+         TInt err = file->EvaluateIntent(aIntent);
+         return err;
+         }
+    else
+         {
+         // Evaluating intent will always succeed on sinks that 
+         // don't support DRM
+         return KErrNone;
+         } 
+      }
+
+TInt CMMFAudioToneController::MdcDisableAutomaticIntent(TBool aDisableAutoIntent)
+    {
+    iDisableAutoIntent = aDisableAutoIntent;
+    return KErrNone;
+    }
+    
+    
+TInt CMMFAudioToneController::MdcSetAgentProperty(ContentAccess::TAgentProperty aProperty, TInt aValue)
+    {
+    if (iDataSource->DataSourceType()==KUidMmfFileSource)
+        {
+        CMMFFile* file = static_cast<CMMFFile*>(iDataSource);
+        TInt err = file->SetAgentProperty(aProperty, aValue);
+        return err;
+        }
+    else
+        {
+        return KErrNone;
+        }
+    }
+
--- a/mmfenh/advancedaudiocontroller/audiotonecontrollerplugin/src/mmfaudiotonecontroller.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmfenh/advancedaudiocontroller/audiotonecontrollerplugin/src/mmfaudiotonecontroller.h	Fri May 28 19:26:28 2010 -0500
@@ -28,6 +28,7 @@
 
 #include <mmf/common/mmfstandardcustomcommands.h>
 #include <mmf/server/sounddevice.h>
+#include <mmf/common/mmfdrmcustomcommands.h>
 
 
 /** 
@@ -52,7 +53,8 @@
 							public MMMFAudioPlayDeviceCustomCommandImplementor,
 							public MMMFAudioPlayControllerCustomCommandImplementor,
 							public MDevSoundObserver,
-							public MMMFAudioPlayControllerSetRepeatsCustomCommandImplementor
+							public MMMFAudioPlayControllerSetRepeatsCustomCommandImplementor,
+							public MMMFDRMCustomCommandImplementor 
 	{
 public:
 	static CMMFController* NewL();
@@ -109,6 +111,12 @@
 	
 	//from MMMFAudioPlayControllerSetRepeatsCustomCommandImplementor
 	virtual TInt MapcSetRepeats(TInt aRepeatNumberOfTimes, const TTimeIntervalMicroSeconds& aTrailingSilence);
+	
+	// From MMMFDRMCustomCommandImplementor
+    virtual TInt MdcExecuteIntent(ContentAccess::TIntent aIntent);
+    virtual TInt MdcEvaluateIntent(ContentAccess::TIntent aIntent);
+    virtual TInt MdcDisableAutomaticIntent(TBool aDisableAutoIntent);
+    virtual TInt MdcSetAgentProperty(ContentAccess::TAgentProperty aProperty, TInt aValue);
 
 
 public:
@@ -141,7 +149,8 @@
 	TBool            IsValidStateTransition( TControllerState aState ) const;
 	TBool            Invariant() const;
 	TBool            IsValidState( TControllerState aState ) const ;
-	TBool            ResetPostCondition() const;
+	TBool            ResetPostCondition() const;	
+	
 
 	void             CalculateLeftRightBalance( TInt& aLeft, TInt& aRight, TInt aBalance ) const;
 	void			 CalculateBalance( TInt& aBalance, TInt aLeft, TInt aRight ) const;
@@ -177,6 +186,10 @@
 
 /** Used to store message */	
 	TMMFMessage*			 iMessage;
+
+	TBool                   iDisableAutoIntent;
+	
+	MDataSink*              iDataSink;
 	};
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioPlaybackTestModule/conf/Playbackplugin_FH_Regression_10.1.cfg	Fri May 28 19:26:28 2010 -0500
@@ -0,0 +1,4574 @@
+//**************************
+//* Play 3GPP , 3g2 and MP4
+//**************************
+// Testing Playback to EOF
+
+[TestCase]
+id 120
+Title Plugin.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 120
+Title Plugin.3GP.3g2.mp4.FH.2 - Play 3gpp-aac audio
+SoundFile e:\sounds\3gpp\10s_3GP_AAC+_24kbps_16khz_mono.3gp
+Expected Duration 29 120 000
+ErrorRange 1 500 000
+[End_TestCase]
+
+[TestCase]
+id 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 121)
+//**************************
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+
+//**************************
+//* Play Pause Play (ID 122)
+//**************************
+
+[TestCase]
+id 122
+Title Plugin.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 122
+Title Plugin.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 122
+Title Plugin.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 122
+Title Plugin.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 122
+Title Plugin.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 122
+Title Plugin.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 122
+Title Plugin.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 124)
+//**************************
+
+[TestCase]
+id 124
+Title Plugin.3GP.3g2.mp4.FH.22 - SetPosition_Play mp4 audio
+SoundFile e:\sounds\3gpp\10s_MP4_16kbps_22.05khz_mono.mp4
+Position 10 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 124
+Title Plugin.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 124
+Title Plugin.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 124
+Title Plugin.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 124
+Title Plugin.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 124
+Title Plugin.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 124
+Title Plugin.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 125)
+//**************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+[TestCase]
+id 125
+Title Plugin.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 125
+Title Plugin.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 125
+Title Plugin.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 125
+Title Plugin.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 125
+Title Plugin.3GP.3g2.mp4.FH.33 - Play 3gpp2-aac audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 125
+Title Plugin.3GP.3g2.mp4.FH.34 - Play 3gpp2-amr audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 125
+Title Plugin.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 126)
+//**************************
+
+[TestCase]
+id 126
+Title Plugin.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 126
+Title Plugin.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 126
+Title Plugin.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 126
+Title Plugin.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 126
+Title Plugin.3GP.3g2.mp4.FH.40 - GetDuration 3gpp2-aac audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 126
+Title Plugin.3GP.3g2.mp4.FH.41 - GetDuration 3gpp2-amr audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 126
+Title Plugin.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 123)
+//**************************
+
+[TestCase]
+id 123
+Title Plugin.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 123
+Title Plugin.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 123
+Title Plugin.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 123
+Title Plugin.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 123
+Title Plugin.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 123
+Title Plugin.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 123
+Title Plugin.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 127)
+//**************************
+
+[TestCase]
+id 127
+Title Plugin.3GP.3g2.mp4.FH.50 - SetPlaybackWindow mp4 audio
+SoundFile e:\sounds\3gpp\10s_MP4_16kbps_22.05khz_mono.mp4
+//StartPosition 10 000 000
+//EndPosition   25 000 000
+StartPosition 03 000 000
+EndPosition   05 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.3GP.3g2.mp4.FH.51 - SetPlaybackWindow 3gpp-aac audio
+SoundFile e:\sounds\3gpp\10s_3GP_AAC+_24kbps_16khz_mono.3gp
+//StartPosition 10 000 000
+//EndPosition   25 000 000
+StartPosition 03 000 000
+EndPosition   05 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.3GP.3g2.mp4.FH.52 - SetPlaybackWindow 3gpp-amr audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_NB_mode3.3gp
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 03 000 000
+EndPosition   05 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.3GP.3g2.mp4.FH.53 - SetPlaybackWindow 3gpp-awb audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_WB_mode0.3gp
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 03 000 000
+EndPosition   05 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.3GP.3g2.mp4.FH.54 - SetPlaybackWindow 3gpp2-aac audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 03 000 000
+EndPosition   06 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.3GP.3g2.mp4.FH.55 - SetPlaybackWindow 3gpp2-amr audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 03 000 000
+EndPosition   05 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.3GP.3g2.mp4.FH.56 - SetPlaybackWindow 3gpp2-awb audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AWB_Generic.3g2
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 03 000 000
+EndPosition   05 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+
+//**************************
+//* Play - Delete Playback Window (ID 128)
+//**************************
+
+[TestCase]
+id 128
+Title Plugin.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 128
+Title Plugin.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 128
+Title Plugin.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 128
+Title Plugin.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 128
+Title Plugin.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 128
+Title Plugin.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 128
+Title Plugin.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 120)
+//************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120)
+//************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 120
+Title Plugin.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 120
+Title Plugin.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 120)
+//************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 121)
+//************************************
+// Testing Play Stop Play to EOF
+
+[TestCase]
+id 121
+Title Plugin.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 121
+Title Plugin.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 121
+Title Plugin.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 121
+Title Plugin.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 121
+Title Plugin.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 121
+Title Plugin.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 121
+Title Plugin.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 121
+Title Plugin.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 121
+Title Plugin.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 121
+Title Plugin.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 121
+Title Plugin.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 121
+Title Plugin.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 120)
+//************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 120
+Title Plugin.AAC.FH.30 - Play ADIF mono
+SoundFile e:\sounds\aac\ADIF\10s_AAC_44khz_mono.aac
+# ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 120
+Title Plugin.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 121)
+//************************************
+// Testing Play Stop Play to EOF 
+
+[TestCase]
+id 121
+Title Plugin.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 121
+Title Plugin.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 123)
+//********************************
+
+[TestCase]
+id 123
+Title Plugin.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 123
+Title Plugin.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 123
+Title Plugin.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 122)
+//**************************
+[TestCase]
+id 122
+Title Plugin.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 122
+Title Plugin.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 122
+Title Plugin.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 122
+Title Plugin.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 124)
+//******************************
+
+[TestCase]
+id 124
+Title Plugin.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 124
+Title Plugin.AAC.FH.42 - SetPosition_Play AAC 44Khz ADTS MPEG2
+SoundFile e:\sounds\aac\ADTS\MPEG2\10s_AAC_LC_42kbps_44.1khz_stereo.aac
+Position 10 000 000 
+ErrorRange 5 000 000
+[End_TestCase]
+
+[TestCase]
+id 124
+Title Plugin.AAC.FH.43 - SetPosition_Play AAC 48Khz ADTS MPEG4
+SoundFile e:\sounds\aac\ADTS\MPEG4\10s_AAC_LC_44kbps_48khz_stereo.aac
+//Position 30 000 000
+Position 05 000 000 
+ErrorRange 4 000 000
+[End_TestCase]
+
+[TestCase]
+id 124
+Title Plugin.AAC.FH.44 - SetPosition_Play AAC ADIF mono
+SoundFile e:\sounds\aac\ADIF\10s_AAC_44khz_mono.aac
+Position 10 000 000
+ErrorRange 4 000 000
+[End_TestCase]
+
+
+
+//*******************************
+//* Play - Get Position (ID 125)
+//*******************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+
+[TestCase]
+id 125
+Title Plugin.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 125
+Title Plugin.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 125
+Title Plugin.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 125
+Title Plugin.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 126
+Title Plugin.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 126
+Title Plugin.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 126
+Title Plugin.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 126
+Title Plugin.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 127)
+//*************************************
+
+[TestCase]
+id 127
+Title Plugin.AAC.FH.53 - SetPlaybackWindow 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
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.AAC.FH.54 - SetPlaybackWindow 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
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.AAC.FH.55 - SetPlaybackWindow 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
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.AAC.FH.56 - SetPlaybackWindow AAC ADIF mono
+SoundFile e:\sounds\aac\ADIF\10s_AAC_44khz_mono.aac
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+
+
+//****************************************
+//* Play - Delete Playback Window (ID 128)
+//****************************************
+[TestCase]
+id 128
+Title Plugin.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 128
+Title Plugin.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 128
+Title Plugin.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 128
+Title Plugin.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 120)
+//**************************
+// Testing Playback to EOF
+
+[TestCase]
+id 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 121)
+//**************************
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+
+//**************************
+//* Play Pause Play (ID 122)
+//**************************
+
+[TestCase]
+id 122
+Title Plugin.AMR.FH.21 - PlayPausePlay 10s_AMR_NB_mode0.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0.amr
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 122
+Title Plugin.AMR.FH.22 - PlayPausePlay AMR without ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_no_ext
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 122
+Title Plugin.AMR.FH.23 - PlayPausePlay AMR with other ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_other_ext.3gp
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 000 000
+[End_TestCase]
+
+//**************************
+//* Set Position - Play (ID 124)
+//**************************
+
+[TestCase]
+id 124
+Title Plugin.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 124
+Title Plugin.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 124
+Title Plugin.AMR.FH.26 - SetPosition_Play AMR with other ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_other_ext.3gp
+Position 10 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+//**************************
+//* Play - Get Position (ID 125)
+//**************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+[TestCase]
+id 125
+Title Plugin.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 125
+Title Plugin.AMR.FH.28 - GetPosition_Play AMR without ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 125
+Title Plugin.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 126)
+//**************************
+
+[TestCase]
+id 126
+Title Plugin.AMR.FH.30 - GetDuration 10s_AMR_NB_mode0.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 126
+Title Plugin.AMR.FH.31 - GetDuration AMR without ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 126
+Title Plugin.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 123)
+//**************************
+
+[TestCase]
+id 123
+Title Plugin.AMR.FH.33 - VolumeRamping 10s_AMR_NB_mode0.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0.amr
+RampDuration 3 000 000
+Delay 2000000
+[End_TestCase]
+
+[TestCase]
+id 123
+Title Plugin.AMR.FH.34 - VolumeRamping AMR without ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_no_ext
+RampDuration 3 000 000
+Delay 2000000
+[End_TestCase]
+
+[TestCase]
+id 123
+Title Plugin.AMR.FH.35 - VolumeRamping AMR with other ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_other_ext.3gp
+RampDuration 3 000 000
+Delay 2000000
+[End_TestCase]
+
+//**************************
+//* Play - Set Playback Window (ID 127)
+//**************************
+
+[TestCase]
+id 127
+Title Plugin.AMR.FH.36 - SetPlaybackWindow 10s_AMR_NB_mode7.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode7.amr
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 02 000 000
+EndPosition   08 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.AMR.FH.37 - SetPlaybackWindow AMR without ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode7_no_ext
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 03 000 000
+EndPosition   05 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.AMR.FH.38 - SetPlaybackWindow AMR with other ext
+SoundFile e:\sounds\amr\10s_3GP_AMR_NB_12.2kbps.3gp
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 03 000 000
+EndPosition   07 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Delete Playback Window (ID 128)
+//**************************
+
+[TestCase]
+id 128
+Title Plugin.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 128
+Title Plugin.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 128
+Title Plugin.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 120)
+//**************************
+// Testing Playback to EOF
+
+[TestCase]
+id 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 121)
+//**************************
+
+[TestCase]
+id 121
+Title Plugin.AWB.FH.12 - PlayStop 10s_AMR_WB_6.6kbps.amr 
+SoundFile e:\sounds\awb\10s_AMR_WB_6.6kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_6.6kbps.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.AWB.FH.13 - PlayStop 10s_AMR_WB_8.85kbps.amr 
+SoundFile e:\sounds\awb\10s_AMR_WB_8.85kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_8.85kbps.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.AWB.FH.14 - PlayStop 10s_AMR_WB_12.65kbps.amr 
+SoundFile e:\sounds\awb\10s_AMR_WB_12.65kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_12.65kbps.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.AWB.FH.15 - PlayStop 10s_AMR_WB_14.25kbps.amr 
+SoundFile e:\sounds\awb\10s_AMR_WB_14.25kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_14.25kbps.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.AWB.FH.16 - PlayStop 10s_AMR_WB_15.85kbps.awb 
+SoundFile e:\sounds\awb\10s_AMR_WB_15.85kbps.awb
+SoundFile e:\sounds\awb\10s_AMR_WB_15.85kbps.awb
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.AWB.FH.17 - PlayStop 10s_AMR_WB_18.25kbps.amr 
+SoundFile e:\sounds\awb\10s_AMR_WB_18.25kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_18.25kbps.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.AWB.FH.18 - PlayStop 10s_AMR_WB_19.85kbps.amr 
+SoundFile e:\sounds\awb\10s_AMR_WB_19.85kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_19.85kbps.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.AWB.FH.19 - PlayStop 10s_AMR_WB_23.05kbps.amr 
+SoundFile e:\sounds\awb\10s_AMR_WB_23.05kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_23.05kbps.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.AWB.FH.20 - PlayStop 10s_AMR_WB_23.85kbps.amr 
+SoundFile e:\sounds\awb\10s_AMR_WB_23.85kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_23.85kbps.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.AWB.FH.21 - PlayStop AWB without ext
+SoundFile e:\sounds\awb\10s_AMR_WB_mode8_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.AWB.FH.22 - PlayStop AWB with other ext
+SoundFile e:\sounds\awb\10s_3GP_AMR_WB_mode8.3gp
+Delay 1000000
+[End_TestCase]
+
+
+
+//**************************
+//* Play Pause Play (ID 122)
+//**************************
+
+[TestCase]
+id 122
+Title Plugin.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 122
+Title Plugin.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 122
+Title Plugin.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 124)
+//**************************
+
+[TestCase]
+id 124
+Title Plugin.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 124
+Title Plugin.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 124
+Title Plugin.AWB.FH.28 - SetPosition_Play AWB with other ext
+SoundFile e:\sounds\awb\10s_AMR_WB_15.85kbps_other_ext.3gp
+Position 10 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+//**************************
+//* Play - Get Position (ID 125)
+//**************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+[TestCase]
+id 125
+Title Plugin.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 125
+Title Plugin.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 125
+Title Plugin.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 126)
+//**************************
+
+[TestCase]
+id 126
+Title Plugin.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 126
+Title Plugin.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 126
+Title Plugin.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 123)
+//**************************
+
+[TestCase]
+id 123
+Title Plugin.AWB.FH.35 - 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 123
+Title Plugin.AWB.FH.36 - 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 123
+Title Plugin.AWB.FH.37 - 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 127)
+//**************************
+
+[TestCase]
+id 127
+Title Plugin.AWB.FH.38 - SetPlaybackWindow 10s_AMR_WB_23.05kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_23.05kbps.amr
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 03 000 000
+EndPosition   06 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.AWB.FH.39 - SetPlaybackWindow AWB without ext
+SoundFile e:\sounds\awb\10s_AMR_WB_23.05kbps_no_ext
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 03 000 000
+EndPosition   06 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.AWB.FH.40 - SetPlaybackWindow AWB with other ext
+SoundFile e:\sounds\awb\10s_3GP_AMR_WB_23.05kbps.3gp
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 03 000 000
+EndPosition   06 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Delete Playback Window (ID 128)
+//**************************
+
+[TestCase]
+id 128
+Title Plugin.AWB.FH.41 - 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 128
+Title Plugin.AWB.FH.42 - 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 128
+Title Plugin.AWB.FH.43 - 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 M4a Sample Rate and BiteRate(ID 120)
+//*******************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 121)
+//************************************
+// Testing Play Stop Play to EOF
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+
+
+//********************************
+//* Play - Volume Ramping (ID 123)
+//********************************
+
+[TestCase]
+id 123
+Title Plugin.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 123
+Title Plugin.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 122)
+//**************************
+
+[TestCase]
+id 122
+Title Plugin.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 1 000 000
+[End_TestCase]
+
+
+[TestCase]
+id 122
+Title Plugin.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 1 000 000
+[End_TestCase]
+
+
+//******************************
+//* Set Position - Play (ID 124)
+//******************************
+
+[TestCase]
+id 124
+Title Plugin.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 124
+Title Plugin.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]
+
+
+
+//*******************************
+//* Play - Get Position (ID 125)
+//*******************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+
+[TestCase]
+id 125
+Title Plugin.M4a.FH.49 - 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 125
+Title Plugin.M4a.FH.50 - 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 126)
+//******************************
+
+[TestCase]
+id 126
+Title Plugin.M4a.FH.51 - GetDuration Mono 8kbps 11kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_8kbps_11.025khz_mono.m4a
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 126
+Title Plugin.M4a.FH.52 - 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 127)
+//*************************************
+
+
+[TestCase]
+id 127
+Title Plugin.M4a.FH.53 - SetPlaybackWindow 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
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 127
+Title Plugin.M4a.FH.54 - SetPlaybackWindow 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
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+
+
+//****************************************
+//* Play - Delete Playback Window (ID 128)
+//****************************************
+
+
+[TestCase]
+id 128
+Title Plugin.M4a.FH.55 - 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 128
+Title Plugin.M4a.FH.56 - 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 120)
+//**************************
+// Testing Playback to EOF
+
+[TestCase]
+id 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 and Stop (ID 121)
+//**************************
+
+[TestCase]
+id 121
+Title Plugin.MIDI.FH.13 - PlayStop midi 10s_MID_Generic.mid 
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext.mid
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext.mid
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.MIDI.FH.14 - PlayStop midi 10s_MID_Generic_no_ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.MIDI.FH.15 - PlayStop midi 10s_MID_Generic_other_ext.amr
+SoundFile e:\sounds\mid\10s_MID_Generic_other_ext.amr
+SoundFile e:\sounds\mid\10s_MID_Generic_other_ext.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.MIDI.FH.16 - PlayStop sp-midi 10s_SP_MID_Generic.mid 
+SoundFile e:\sounds\mid\10s_SP_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_SP_MID_Generic.mid
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.MIDI.FH.17 - PlayStop sp-midi 10s_SP_MID_Generic_no_ext 
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_no_ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.MIDI.FH.18 - PlayStop sp-midi 10s_SP_MID_Generic_other_ext.amr
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_other_ext.amr
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_other_ext.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.MIDI.FH.19 - PlayStop rmf 10s_RMF_MID.rmf
+SoundFile e:\sounds\mid\10s_RMF_MID.rmf
+SoundFile e:\sounds\mid\10s_RMF_MID.rmf
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.MIDI.FH.20 - PlayStop rmf piano
+SoundFile e:\sounds\mid\10s_RMF_MID_no_ext
+SoundFile e:\sounds\mid\10s_RMF_MID_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.MIDI.FH.21 - PlayStop rmf piano.awb
+SoundFile e:\sounds\mid\10s_RMF_MID_other_ext.awb
+SoundFile e:\sounds\mid\10s_RMF_MID_other_ext.awb
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.MIDI.FH.22 - PlayStop mxmf 10s_MXMF.mxmf
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.MIDI.FH.23 - PlayStop mxmf 10s_MXMF_no_ext
+SoundFile e:\sounds\mxmf\10s_MXMF_no_ext
+SoundFile e:\sounds\mxmf\10s_MXMF_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.MIDI.FH.24 - PlayStop mxmf 10s_MXMF_other_ext.awb
+SoundFile e:\sounds\mxmf\10s_MXMF_other_ext.awb
+SoundFile e:\sounds\mxmf\10s_MXMF_other_ext.awb
+Delay 1000000
+[End_TestCase]
+
+
+
+//**************************
+//* Play Pause Play (ID 122)
+//**************************
+
+[TestCase]
+id 122
+Title Plugin.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 122
+Title Plugin.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 122
+Title Plugin.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 122
+Title Plugin.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 122
+Title Plugin.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 122
+Title Plugin.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 122
+Title Plugin.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 122
+Title Plugin.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 122
+Title Plugin.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 122
+Title Plugin.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 122
+Title Plugin.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 122
+Title Plugin.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 124)
+//**************************
+
+[TestCase]
+id 124
+Title Plugin.MIDI.FH.37 - SetPosition_Play midi 10s_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext.mid
+//Position 10 000 000
+Position 02 000 000 
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 124
+Title Plugin.MIDI.FH.38 - SetPosition_Play midi without ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+//Position 10 000 000
+Position 02 000 000 
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 124
+Title Plugin.MIDI.FH.39 - SetPosition_Play midi with other ext
+SoundFile e:\sounds\mid\10s_MID_Generic_other_ext.amr
+//Position 10 000 000
+Position 02 000 000 
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 124
+Title Plugin.MIDI.FH.40 - SetPosition_Play sp-midi 10s_SP_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_SP_MID_Generic.mid
+Position 10 000 000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 124
+Title Plugin.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 124
+Title Plugin.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 124
+Title Plugin.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 124
+Title Plugin.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 124
+Title Plugin.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 124
+Title Plugin.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 124
+Title Plugin.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 124
+Title Plugin.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 125)
+//**************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+[TestCase]
+id 125
+Title Plugin.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 125
+Title Plugin.MIDI.FH.50 - GetPosition_Play midi without ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 125
+Title Plugin.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 125
+Title Plugin.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 125
+Title Plugin.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 125
+Title Plugin.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 125
+Title Plugin.MIDI.FH.55 - GetPosition_Play rmf 10s_RMF_MID.rmf
+SoundFile e:\sounds\mid\10s_RMF_MID.rmf
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 125
+Title Plugin.MIDI.FH.56 - GetPosition_Play rmf without ext
+SoundFile e:\sounds\mid\10s_RMF_MID_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 125
+Title Plugin.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 125
+Title Plugin.MIDI.FH.58 - GetPosition_Play mxmf 10s_MXMF.mxmf 
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf 
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 125
+Title Plugin.MIDI.FH.59 - GetPosition_Play mxmf without ext
+SoundFile e:\sounds\mxmf\10s_MXMF_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 125
+Title Plugin.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 126)
+//**************************
+
+[TestCase]
+id 126
+Title Plugin.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 126
+Title Plugin.MIDI.FH.62 - GetDuration mid without ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 126
+Title Plugin.MIDI.FH.63 - GetDuration mid with other ext
+SoundFile e:\sounds\mid\10s_MID_Generic_other_ext.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 126
+Title Plugin.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 126
+Title Plugin.MIDI.FH.65 - GetDuration sp-mid without ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 126
+Title Plugin.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 126
+Title Plugin.MIDI.FH.67 - GetDuration rmf 10s_RMF_MID.rmf
+SoundFile e:\sounds\mid\10s_RMF_MID.rmf
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 126
+Title Plugin.MIDI.FH.68 - GetDuration rmf without ext
+SoundFile e:\sounds\mid\10s_RMF_MID_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 126
+Title Plugin.MIDI.FH.69 - GetDuration rmf with other ext
+SoundFile e:\sounds\mid\10s_RMF_MID_other_ext.awb
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 126
+Title Plugin.MIDI.FH.70 - GetDuration mxmf 10s_MXMF.mxmf
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 126
+Title Plugin.MIDI.FH.71 - GetDuration mxmf without ext
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 126
+Title Plugin.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 123)
+//**************************
+
+[TestCase]
+id 123
+Title Plugin.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 123
+Title Plugin.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 123
+Title Plugin.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 123
+Title Plugin.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 123
+Title Plugin.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 123
+Title Plugin.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 123
+Title Plugin.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 123
+Title Plugin.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 123
+Title Plugin.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 123
+Title Plugin.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 123
+Title Plugin.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 123
+Title Plugin.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 127)
+//**************************
+
+[TestCase]
+id 127
+Title Plugin.MIDI.FH.85 - SetPlaybackWindow midi 10s_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext.mid
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.MIDI.FH.86 - SetPlaybackWindow midi without ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.MIDI.FH.87 - SetPlaybackWindow midi with other ext
+SoundFile e:\sounds\mid\10s_MID_Generic_other_ext.amr
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[[TestCase]
+id 127
+Title Plugin.MIDI.FH.88 - SetPlaybackWindow sp-midi 10s_SP_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_SP_MID_Generic.mid
+//StartPosition 10 000 000
+//EndPosition   20 000 000
+StartPosition 03 000 000
+EndPosition   05 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.MIDI.FH.89 - SetPlaybackWindow sp-midi without ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_no_ext
+//StartPosition 10 000 000
+//EndPosition   20 000 000
+StartPosition 03 000 000
+EndPosition   05 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.MIDI.FH.90 - SetPlaybackWindow sp-midi with other ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_other_ext.awb
+//StartPosition 10 000 000
+//EndPosition   20 000 000
+StartPosition 03 000 000
+EndPosition   09 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.MIDI.FH.91 - SetPlaybackWindow rmf 10s_RMF_MID.rmf
+SoundFile e:\sounds\mid\10s_RMF_MID.rmf
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.MIDI.FH.92 - SetPlaybackWindow rmf without ext
+SoundFile e:\sounds\mid\10s_RMF_MID_no_ext
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.MIDI.FH.93 - SetPlaybackWindow rmf with other ext
+SoundFile e:\sounds\mid\10s_RMF_MID_other_ext.3gp
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.MIDI.FH.94 - SetPlaybackWindow mxmf 10s_MXMF.mxmf
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.MIDI.FH.95 - SetPlaybackWindow mxmf without ext
+SoundFile e:\sounds\mxmf\10s_MXMF_no_ext
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.MIDI.FH.96 - SetPlaybackWindow mxmf with other ext
+SoundFile e:\sounds\mxmf\10s_MXMF_other_ext.awb
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Delete Playback Window (ID 128)
+//**************************
+
+[TestCase]
+id 128
+Title Plugin.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 128
+Title Plugin.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 128
+Title Plugin.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 128
+Title Plugin.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 128
+Title Plugin.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 128
+Title Plugin.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 128
+Title Plugin.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 128
+Title Plugin.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 128
+Title Plugin.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 128
+Title Plugin.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 128
+Title Plugin.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 128
+Title Plugin.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 120)
+//**************************
+// Testing Playback to EOF
+
+[TestCase]
+id 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 121)
+//**********************************
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+
+
+//**********************************
+//* Play MP3 Bit Rate MPEG1 (ID 120)
+//**********************************
+// Testing Playback to EOF
+
+[TestCase]
+id 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 121)
+//*******************************************
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.MP3.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.MP3.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+
+
+
+
+
+//**************************************
+//* Play MP3 Bit Rate MPEG2/2.5 (ID 120)
+//**************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.MP3.FH.57 - Play 112Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_112kbps_16khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 121)
+//******************************************
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.MP3.FH.71 - PlayStop 112Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_112kbps_16khz_mono.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_112kbps_16khz_mono.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+
+
+
+
+//**************************
+//* Play Pause Play (ID 122)
+//**************************
+
+[TestCase]
+id 122
+Title Plugin.MP3.FH.75 - PlayPausePlay MP3 MPEG2 24KHz 160Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_160kbps_22.05khz_stereo.mp3
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 122
+Title Plugin.MP3.FH.76 - PlayPausePlay MP3 MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 122
+Title Plugin.MP3.FH.77 - PlayPausePlay MP3 MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_224kbps_48khz_stereo.mp3
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+//******************************
+//* Set Position - Play (ID 124)
+//******************************
+
+[TestCase]
+id 124
+Title Plugin.MP3.FH.78 - SetPosition_Play MP3 MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_224kbps_48khz_stereo.mp3
+Position 000 500 000
+ErrorRange 3 000 000
+[End_TestCase]
+
+
+[TestCase]
+id 124
+Title Plugin.MP3.FH.79 - SetPosition_Play MP3 MPEG1 48KHz 96Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_96kbps_48khz_stereo.mp3
+Position 05 000 000 
+ErrorRange 3 000 000 
+[End_TestCase]
+
+[TestCase]
+id 124
+Title Plugin.MP3.FH.80 - SetPosition_Play MP3 MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+Position 10 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+//*******************************
+//* Play - Get Position (ID 125)
+//*******************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+[TestCase]
+id 125
+Title Plugin.MP3.FH.81 - GetPosition_Play MP3 MPEG2 24KHz 160Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_160kbps_22.05khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 125
+Title Plugin.MP3.FH.82 - GetPosition_Play MP3 MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 125
+Title Plugin.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 126)
+//******************************
+
+[TestCase]
+id 126
+Title Plugin.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 126
+Title Plugin.MP3.FH.85 - GetDuration MP3 MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_224kbps_48khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 126
+Title Plugin.MP3.FH.86 - GetDuration MP3 MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+
+//********************************
+//* Play - Volume Ramping (ID 123)
+//********************************
+
+[TestCase]
+id 123
+Title Plugin.MP3.FH.87 - VolumeRamping MP3 MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+RampDuration 5 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 123
+Title Plugin.MP3.FH.88 - VolumeRamping MP3 MPEG2 24KHz 160Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_160kbps_22.05khz_stereo.mp3
+RampDuration 5 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 123
+Title Plugin.MP3.FH.89 - VolumeRamping MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_224kbps_48khz_stereo.mp3
+RampDuration 5 000 000
+Delay 1000000
+[End_TestCase]
+
+//*************************************
+//* Play - Set Playback Window (ID 127)
+//*************************************
+
+[TestCase]
+id 127
+Title Plugin.MP3.FH.90 - SetPlaybackWindow MP3 MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_224kbps_48khz_stereo.mp3
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.MP3.FH.91 - SetPlaybackWindow MP3 MPEG1 48KHz 96Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_96kbps_48khz_stereo.mp3
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 127
+Title Plugin.MP3.FH.92 - SetPlaybackWindow MP3 MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+//****************************************
+//* Play - Delete Playback Window (ID 128)
+//****************************************
+
+[TestCase]
+id 128
+Title Plugin.MP3.FH.93 - DeletePlaybackWindow MP3 MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_224kbps_48khz_stereo.mp3
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 128
+Title Plugin.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 128
+Title Plugin.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]
+
+//*******************************************
+//* Play 3gp EAAC+ audio files (ID 120)
+//*******************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120)
+//*******************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 120
+Title Plugin.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 121)
+//************************************
+// Testing Play Stop Play to EOF
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 121
+Title Plugin.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
+Delay 1000000
+[End_TestCase]
+
+
+//********************************
+//* Play - Volume Ramping (ID 123)
+//********************************
+
+[TestCase]
+id 123
+Title Plugin.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 123
+Title Plugin.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 123
+Title Plugin.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 122)
+//**************************
+
+[TestCase]
+id 122
+Title Plugin.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 122
+Title Plugin.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 122
+Title Plugin.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 124)
+//******************************
+
+[TestCase]
+id 124
+Title Plugin.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 124
+Title Plugin.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 124
+Title Plugin.HeAAC.FH.34 - SetPosition_Play 10s_MP4_pstereo_1.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_1.mp4
+Position 000 500 000
+ErrorRange 3 000 000
+[End_TestCase]
+
+
+
+//*******************************
+//* Play - Get Position (ID 125)
+//*******************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+[TestCase]
+id 125
+Title Plugin.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 125
+Title Plugin.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 125
+Title Plugin.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 126)
+//******************************
+[TestCase]
+id 126
+Title Plugin.HeAAC.FH.38 - GetDuration 10s_MP4_stereo_0.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_stereo_0.mp4
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 126
+Title Plugin.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 126
+Title Plugin.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 127)
+//*************************************
+
+[TestCase]
+id 127
+Title Plugin.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 127
+Title Plugin.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 127
+Title Plugin.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 128)
+//****************************************
+
+
+[TestCase]
+id 128
+Title Plugin.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 128
+Title Plugin.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 128
+Title Plugin.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]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioPlaybackTestModule/conf/Playbackplugin_Regression_10.1.cfg	Fri May 28 19:26:28 2010 -0500
@@ -0,0 +1,6171 @@
+# Configuration Filename: PluginTest_AAC.cfg
+# DESCRIPTION: This config file is to test the AAC audio.
+#
+# History
+# 2005-03-21	Sue Xu		64 test cases
+//************************************
+//* Play AAC-ADTS LC (ID 102)
+//************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 102
+Title Plugin.AAC.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 102
+Title Plugin.AAC.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 102
+Title Plugin.AAC.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 102
+Title Plugin.AAC.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 102
+Title Plugin.AAC.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 102
+Title Plugin.AAC.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 102
+Title Plugin.AAC.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 102
+Title Plugin.AAC.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 102
+Title Plugin.AAC.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 102
+Title Plugin.AAC.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 102
+Title Plugin.AAC.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 102
+Title Plugin.AAC.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 102)
+//************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 102
+Title Plugin.AAC.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 102
+Title Plugin.AAC.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 102)
+//************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 102
+Title Plugin.AAC.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 102
+Title Plugin.AAC.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 102
+Title Plugin.AAC.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 103)
+//************************************
+// Testing Play Stop Play to EOF
+
+[TestCase]
+id 103
+Title Plugin.AAC.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 103
+Title Plugin.AAC.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 103
+Title Plugin.AAC.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 103
+Title Plugin.AAC.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 103
+Title Plugin.AAC.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 103
+Title Plugin.AAC.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 103
+Title Plugin.AAC.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 103
+Title Plugin.AAC.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 103
+Title Plugin.AAC.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 103
+Title Plugin.AAC.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 103
+Title Plugin.AAC.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 103
+Title Plugin.AAC.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 102)
+//************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 102
+Title Plugin.AAC.30 - Play ADIF mono
+SoundFile e:\sounds\aac\ADIF\10s_AAC_44khz_mono.aac
+# ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.AAC.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 103)
+//************************************
+// Testing Play Stop Play to EOF 
+
+[TestCase]
+id 103
+Title Plugin.AAC.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 103
+Title Plugin.AAC.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 Max and Medium (ID 112)
+//***************************************
+
+[TestCase]
+id 112
+Title Plugin.AAC.34 - SettingVolume AAC ADTS 
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_56kbps_32khz_stereo.aac
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.AAC.35 - SettingVolume AAC ADTS
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_16kbps_8khz_stereo.aac
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.AAC.36 - SettingVolume AAC ADIF
+SoundFile e:\sounds\aac\ADIF\10s_AAC_Generic_ADIF_meta_full.aac
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.AAC.37 - SettingVolume AAC ADIF
+SoundFile e:\sounds\aac\ADIF\10s_AAC_44khz_mono.aac
+[End_TestCase]
+
+//********************************
+//* Play - Volume Ramping (ID 113)
+//********************************
+
+[TestCase]
+id 113
+Title Plugin.AAC.38 - 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 113
+Title Plugin.AAC.39 - 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 113
+Title Plugin.AAC.40 - 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 108)
+//**************************
+[TestCase]
+id 108
+Title Plugin.AAC.41 - PlayPausePlay AAC 64Khz 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 108
+Title Plugin.AAC.42 - 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 108
+Title Plugin.AAC.43 - 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 108
+Title Plugin.AAC.44 - 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 109)
+//******************************
+
+[TestCase]
+id 109
+Title Plugin.AAC.45 - SetPosition_Play AAC 64Khz 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 109
+Title Plugin.AAC.46 - SetPosition_Play AAC 44Khz ADTS MPEG2
+SoundFile e:\sounds\aac\ADTS\MPEG2\10s_AAC_LC_42kbps_44.1khz_stereo.aac
+//Position 50 000 000
+Position 10 000 000 
+ErrorRange 5 000 000
+[End_TestCase]
+
+[TestCase]
+id 109
+Title Plugin.AAC.47 - SetPosition_Play AAC 48Khz ADTS MPEG4
+SoundFile e:\sounds\aac\ADTS\MPEG4\10s_AAC_LC_44kbps_48khz_stereo.aac
+//Position 30 000 000
+Position 05 000 000   
+ErrorRange 4 000 000
+[End_TestCase]
+
+[TestCase]
+id 109
+Title Plugin.AAC.48 - SetPosition_Play AAC ADIF mono
+SoundFile e:\sounds\aac\ADIF\10s_AAC_44khz_mono.aac
+Position 10 000 000
+ErrorRange 4 000 000
+[End_TestCase]
+
+
+
+//*******************************
+//* Play - Get Position (ID 110)
+//*******************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+
+[TestCase]
+id 110
+Title Plugin.AAC.49 - GetPosition_Play AAC 64Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_56kbps_24khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.AAC.50 - 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 110
+Title Plugin.AAC.51 - 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 110
+Title Plugin.AAC.52 - GetPosition_Play AAC ADIF mono
+SoundFile e:\sounds\aac\ADIF\10s_AAC_44khz_mono.aac
+Delay 1000000
+[End_TestCase]
+
+
+//******************************
+//* Play - Get Duration (ID 111)
+//******************************
+
+[TestCase]
+id 111
+Title Plugin.AAC.53 - GetDuration AAC 64Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_56kbps_24khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.AAC.54 - 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 111
+Title Plugin.AAC.55 - GetDuration AAC 48Khz ADTS MPEG4
+SoundFile e:\sounds\aac\ADTS\MPEG4\10s_AAC_LC_44kbps_48khz_stereo.aac
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.AAC.56 - GetDuration AAC ADIF mono
+SoundFile e:\sounds\aac\ADIF\10s_AAC_44khz_mono.aac
+Delay 1000000
+[End_TestCase]
+
+//*************************************
+//* Play - Set Playback Window (ID 115)
+//*************************************
+
+[TestCase]
+id 115
+Title Plugin.AAC.57 - SetPlaybackWindow AAC 64Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_56kbps_24khz_stereo.aac
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.AAC.58 - SetPlaybackWindow 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
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.AAC.59 - SetPlaybackWindow 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
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.AAC.60 - SetPlaybackWindow AAC ADIF mono
+SoundFile e:\sounds\aac\ADIF\10s_AAC_44khz_mono.aac
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+
+
+//****************************************
+//* Play - Delete Playback Window (ID 116)
+//****************************************
+[TestCase]
+id 116
+Title Plugin.AAC.61 - DeletePlaybackWindow AAC 64Khz ADTS LC
+SoundFile e:\sounds\aac\ADTS\SampleRate\10s_AAC_LC_44kbps_64khz_stereo.aac
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 116
+Title Plugin.AAC.62 - 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 116
+Title Plugin.AAC.63 - 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 116
+Title Plugin.AAC.64 - 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]
+
+
+#Configuration Filename: PluginTest_AMR.cfg
+# DESCRIPTION: This config file is to test the AMR audio.
+#
+# History
+# 2005-03-21	Sue Xu	44 Test cases
+//**************************
+//* Play AMR NB Modes 0-7 (ID 102)
+//**************************
+// Testing Playback to EOF
+
+[TestCase]
+id 102
+Title Plugin.AMR.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 102
+Title Plugin.AMR.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 102
+Title Plugin.AMR.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 102
+Title Plugin.AMR.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 102
+Title Plugin.AMR.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 102
+Title Plugin.AMR.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 102
+Title Plugin.AMR.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 102
+Title Plugin.AMR.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 102
+Title Plugin.AMR.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 102
+Title Plugin.AMR.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 103)
+//**************************
+
+[TestCase]
+id 103
+Title Plugin.AMR.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.AMR.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.AMR.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.AMR.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.AMR.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.AMR.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.AMR.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.AMR.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.AMR.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.AMR.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
+Delay 1000000
+[End_TestCase]
+
+
+
+//**************************
+//* Play Pause Play (ID 108)
+//**************************
+
+[TestCase]
+id 108
+Title Plugin.AMR.21 - PlayPausePlay 10s_AMR_NB_mode0.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0.amr
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 108
+Title Plugin.AMR.22 - PlayPausePlay AMR without ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_no_ext
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 108
+Title Plugin.AMR.23 - PlayPausePlay AMR with other ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_other_ext.3gp
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 000 000
+[End_TestCase]
+
+//**************************
+//* Set Position - Play (ID 109)
+//**************************
+
+[TestCase]
+id 109
+Title Plugin.AMR.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 109
+Title Plugin.AMR.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 109
+Title Plugin.AMR.26 - SetPosition_Play AMR with other ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_other_ext.3gp
+Position 10 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+//**************************
+//* Play - Get Position (ID 110)
+//**************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+[TestCase]
+id 110
+Title Plugin.AMR.27 - GetPosition_Play 10s_AMR_NB_mode0.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.AMR.28 - GetPosition_Play AMR without ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.AMR.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 111)
+//**************************
+
+[TestCase]
+id 111
+Title Plugin.AMR.30 - GetDuration 10s_AMR_NB_mode0.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.AMR.31 - GetDuration AMR without ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.AMR.32 - GetDuration AMR with other ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_other_ext.3gp
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Volume Max and Medium (ID 112)
+//**************************
+
+[TestCase]
+id 112
+Title Plugin.AMR.33 - SettingVolume 10s_AMR_NB_mode7.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0.amr
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.AMR.34 - SettingVolume AMR without ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_no_ext
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.AMR.35 - SettingVolume AMR with other ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_other_ext.3gp
+[End_TestCase]
+
+//**************************
+//* Play - Volume Ramping (ID 113)
+//**************************
+
+[TestCase]
+id 113
+Title Plugin.AMR.36 - 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 113
+Title Plugin.AMR.37 - VolumeRamping AMR without ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode0_no_ext
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 113
+Title Plugin.AMR.38 - 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 115)
+//**************************
+
+
+[TestCase]
+id 115
+Title Plugin.AMR.39 - SetPlaybackWindow 10s_AMR_NB_mode7.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode7.amr
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 02 000 000
+EndPosition   05 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.AMR.40 - SetPlaybackWindow AMR without ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode7_no_ext
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 02 000 000
+EndPosition   05 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 115
+Title Plugin.AMR.41 - SetPlaybackWindow AMR with other ext
+SoundFile e:\sounds\amr\10s_3GP_AMR_NB_12.2kbps.3gp
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 02 000 000
+EndPosition   05 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Delete Playback Window (ID 116)
+//**************************
+
+[TestCase]
+id 116
+Title Plugin.AMR.42 - 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 116
+Title Plugin.AMR.43 - 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 116
+Title Plugin.AMR.44 - 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]
+
+# Configuration Filename: PluginTest_AWB.cfg
+# DESCRIPTION: This config file is to test the AWB audio.
+#
+# History
+# 2005-03-21	Sue Xu		46 Test cases 
+
+//**************************
+//* Play AMR WB Modes 0-8 (ID 102)
+//**************************
+// Testing Playback to EOF
+
+[TestCase]
+id 102
+Title Plugin.AWB.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 102
+Title Plugin.AWB.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 102
+Title Plugin.AWB.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 102
+Title Plugin.AWB.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 102
+Title Plugin.AWB.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 102
+Title Plugin.AWB.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 102
+Title Plugin.AWB.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 102
+Title Plugin.AWB.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 102
+Title Plugin.AWB.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 102
+Title Plugin.AWB.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 102
+Title Plugin.AWB.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 103)
+//**************************
+
+[TestCase]
+id 103
+Title Plugin.AWB.12 - PlayStop 10s_AMR_WB_6.6kbps.amr 
+SoundFile e:\sounds\awb\10s_AMR_WB_6.6kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_6.6kbps.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.AWB.13 - PlayStop 10s_AMR_WB_8.85kbps.amr 
+SoundFile e:\sounds\awb\10s_AMR_WB_8.85kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_8.85kbps.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.AWB.14 - PlayStop 10s_AMR_WB_12.65kbps.amr 
+SoundFile e:\sounds\awb\10s_AMR_WB_12.65kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_12.65kbps.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.AWB.15 - PlayStop 10s_AMR_WB_14.25kbps.amr 
+SoundFile e:\sounds\awb\10s_AMR_WB_14.25kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_14.25kbps.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.AWB.16 - PlayStop 10s_AMR_WB_15.85kbps.awb 
+SoundFile e:\sounds\awb\10s_AMR_WB_15.85kbps.awb
+SoundFile e:\sounds\awb\10s_AMR_WB_15.85kbps.awb
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.AWB.17 - PlayStop 10s_AMR_WB_18.25kbps.amr 
+SoundFile e:\sounds\awb\10s_AMR_WB_18.25kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_18.25kbps.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.AWB.18 - PlayStop 10s_AMR_WB_19.85kbps.amr 
+SoundFile e:\sounds\awb\10s_AMR_WB_19.85kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_19.85kbps.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.AWB.19 - PlayStop 10s_AMR_WB_23.05kbps.amr 
+SoundFile e:\sounds\awb\10s_AMR_WB_23.05kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_23.05kbps.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.AWB.20 - PlayStop 10s_AMR_WB_23.85kbps.amr 
+SoundFile e:\sounds\awb\10s_AMR_WB_23.85kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_23.85kbps.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.AWB.21 - PlayStop AWB without ext
+SoundFile e:\sounds\awb\10s_AMR_WB_mode8_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.AWB.22 - PlayStop AWB with other ext
+SoundFile e:\sounds\awb\10s_3GP_AMR_WB_mode8.3gp
+Delay 1000000
+[End_TestCase]
+
+
+//**************************
+//* Play Pause Play (ID 108)
+//**************************
+
+[TestCase]
+id 108
+Title Plugin.AWB.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 108
+Title Plugin.AWB.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 108
+Title Plugin.AWB.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 109)
+//**************************
+
+[TestCase]
+id 109
+Title Plugin.AWB.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 109
+Title Plugin.AWB.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 109
+Title Plugin.AWB.28 - SetPosition_Play AWB with other ext
+SoundFile e:\sounds\awb\10s_AMR_WB_15.85kbps_other_ext.3gp
+Position 10 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+//**************************
+//* Play - Get Position (ID 110)
+//**************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+[TestCase]
+id 110
+Title Plugin.AWB.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 110
+Title Plugin.AWB.30 - GetPosition_Play AWB without ext
+SoundFile e:\sounds\awb\10s_AMR_WB_15.85kbps_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.AWB.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 111)
+//**************************
+
+[TestCase]
+id 111
+Title Plugin.AWB.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 111
+Title Plugin.AWB.33 - GetDuration AWB without ext
+SoundFile e:\sounds\awb\10s_AMR_WB_23.85kbps_Generic_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.AWB.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 Max and Medium (ID 112)
+//**************************
+
+[TestCase]
+id 112
+Title Plugin.AWB.35 - SettingVolume 10s_AMR_WB_15.85kbps.awb
+SoundFile e:\sounds\awb\10s_AMR_WB_15.85kbps.awb
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.AWB.36 - SettingVolume AWB without ext
+SoundFile e:\sounds\awb\10s_AMR_WB_15.85kbps_no_ext
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.AWB.37 - SettingVolume AWB with other ext
+SoundFile e:\sounds\awb\10s_AMR_WB_15.85kbps_other_ext.3gp
+[End_TestCase]
+
+//**************************
+//* Play - Volume Ramping (ID 113)
+//**************************
+
+[TestCase]
+id 113
+Title Plugin.AWB.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 113
+Title Plugin.AWB.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 113
+Title Plugin.AWB.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 115)
+//**************************
+
+[TestCase]
+id 115
+Title Plugin.AWB.41 - SetPlaybackWindow 10s_AMR_WB_23.05kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_23.05kbps.amr
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 02 000 000
+EndPosition   05 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.AWB.42 - SetPlaybackWindow AWB without ext
+SoundFile e:\sounds\awb\10s_AMR_WB_23.05kbps_no_ext
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 03 000 000
+EndPosition   06 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.AWB.43 - SetPlaybackWindow AWB with other ext
+SoundFile e:\sounds\awb\10s_3GP_AMR_WB_23.05kbps.3gp
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 03 000 000
+EndPosition   06 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Delete Playback Window (ID 116)
+//**************************
+
+[TestCase]
+id 116
+Title Plugin.AWB.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 116
+Title Plugin.AWB.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 116
+Title Plugin.AWB.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]
+
+# Configuration Filename: PluginTest_EAACplus.cfg
+# DESCRIPTION: This config file is to test the EAAC+ audio.
+#
+# History
+# 2005-04-12	Sue Xu -  49 Test cases	
+//*******************************************
+//* Play 3gp EAAC+ audio files (ID 102)
+//*******************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 102
+Title Plugin.HeAAC.1 - Play implicit stereo 3gp audio
+SoundFile e:\sounds\HeAAC\10s_3GP_AMR_NB_mode0.3gp
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+[TestCase]
+id 102
+Title Plugin.HeAAC.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 102
+Title Plugin.HeAAC.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 102
+Title Plugin.HeAAC.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 102
+Title Plugin.HeAAC.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 102
+Title Plugin.HeAAC.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 102
+Title Plugin.HeAAC.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 102
+Title Plugin.HeAAC.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 102
+Title Plugin.HeAAC.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 102
+Title Plugin.HeAAC.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 102
+Title Plugin.HeAAC.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 102)
+//*******************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 102
+Title Plugin.HeAAC.12 - Play implicit pstereo  mp4 audio
+SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_0.mp4
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+
+[TestCase]
+id 102
+Title Plugin.HeAAC.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 102
+Title Plugin.HeAAC.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 102
+Title Plugin.HeAAC.15 - Play implicit stereo mp4 audio
+SoundFile e:\sounds\HeAAC\10s_MP4_stereo_0.mp4
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+[TestCase]
+id 102
+Title Plugin.HeAAC.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 102
+Title Plugin.HeAAC.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 103)
+//************************************
+// Testing Play Stop Play to EOF
+
+[TestCase]
+id 103
+Title Plugin.HeAAC.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
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 103
+Title Plugin.HeAAC.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.HeAAC.20 - PlayStop implicit pstereo  mp4 audio
+SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_0.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_0.mp4
+Delay 1000000
+[End_TestCase]
+
+
+
+[TestCase]
+id 103
+Title Plugin.HeAAC.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
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 103
+Title Plugin.HeAAC.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
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 103
+Title Plugin.HeAAC.23 - PlayStop implicit stereo mp4 audio
+SoundFile e:\sounds\HeAAC\10s_MP4_stereo_0.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_stereo_0.mp4
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 103
+Title Plugin.HeAAC.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
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 103
+Title Plugin.HeAAC.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
+Delay 1000000
+[End_TestCase]
+
+
+
+//***************************************
+//* Play - Volume Max and Medium (ID 112)
+//***************************************
+
+[TestCase]
+id 112
+Title Plugin.HeAAC.26 - SettingVolume 10s_MP4_stereo_0.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_stereo_0.mp4
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 112
+Title Plugin.HeAAC.27 - SettingVolume 10s_3GP_AMR_NB_mode2.3gp
+SoundFile e:\sounds\HeAAC\10s_3GP_AMR_NB_mode2.3gp
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 112
+Title Plugin.HeAAC.28 - SettingVolume 10s_MP4_pstereo_1.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_1.mp4
+Delay 1000000
+[End_TestCase]
+
+
+//********************************
+//* Play - Volume Ramping (ID 113)
+//********************************
+
+[TestCase]
+id 113
+Title Plugin.HeAAC.29 - 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 113
+Title Plugin.HeAAC.30 - 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 113
+Title Plugin.HeAAC.31 - 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 108)
+//**************************
+
+[TestCase]
+id 108
+Title Plugin.HeAAC.32 - 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 108
+Title Plugin.HeAAC.33 - 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 108
+Title Plugin.HeAAC.34 - 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 109)
+//******************************
+
+[TestCase]
+id 109
+Title Plugin.HeAAC.35 - 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 109
+Title Plugin.HeAAC.36 - 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 109
+Title Plugin.HeAAC.37 - SetPosition_Play 10s_MP4_pstereo_1.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_1.mp4
+Position 000 500 000
+ErrorRange 3 000 000
+[End_TestCase]
+
+
+
+//*******************************
+//* Play - Get Position (ID 110)
+//*******************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+[TestCase]
+id 110
+Title Plugin.HeAAC.38 - GetPosition_Play 10s_MP4_stereo_0.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_stereo_0.mp4
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 110
+Title Plugin.HeAAC.39 - GetPosition_Play 10s_3GP_AMR_NB_mode2.3gp
+SoundFile e:\sounds\HeAAC\10s_3GP_AMR_NB_mode2.3gp
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 110
+Title Plugin.HeAAC.40 - GetPosition_Play 10s_MP4_pstereo_1.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_1.mp4
+Delay 1000000
+[End_TestCase]
+
+
+
+//******************************
+//* Play - Get Duration (ID 111)
+//******************************
+[TestCase]
+id 111
+Title Plugin.HeAAC.41 - GetDuration 10s_MP4_stereo_0.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_stereo_0.mp4
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 111
+Title Plugin.HeAAC.42 - GetDuration 10s_3GP_AMR_NB_mode2.3gp
+SoundFile e:\sounds\HeAAC\10s_3GP_AMR_NB_mode2.3gp
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 111
+Title Plugin.HeAAC.43 - GetDuration 10s_MP4_pstereo_1.mp4
+SoundFile e:\sounds\HeAAC\10s_MP4_pstereo_1.mp4
+Delay 1000000
+[End_TestCase]
+
+
+//*************************************
+//* Play - Set Playback Window (ID 115)
+//*************************************
+
+[TestCase]
+id 115
+Title Plugin.HeAAC.44 - 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 115
+Title Plugin.HeAAC.45 - 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 115
+Title Plugin.HeAAC.46 - 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 116)
+//****************************************
+
+
+[TestCase]
+id 116
+Title Plugin.HeAAC.47 - 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 116
+Title Plugin.HeAAC.48 - 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 116
+Title Plugin.HeAAC.49 - 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]
+
+# Configuration Filename: PluginTest_m4a.cfg
+# DESCRIPTION: This config file is to test the m4a audio.
+#
+# History
+# 2005-03-21	Sue Xu -  56 Test cases	
+
+//*******************************************
+//* Play M4a Sample Rate and BiteRate(ID 102)
+//*******************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 102
+Title Plugin.M4a.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 103)
+//************************************
+// Testing Play Stop Play to EOF
+
+[TestCase]
+id 103
+Title Plugin.M4a.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
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 103
+Title Plugin.M4a.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
+Delay 1000000
+[End_TestCase]
+
+
+//***************************************
+//* Play - Volume Max and Medium (ID 112)
+//***************************************
+
+[TestCase]
+id 112
+Title Plugin.M4a.43 - SettingVolume Mono 8kbps 11kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_8kbps_11.025khz_mono.m4a
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 112
+Title Plugin.M4a.44 - SettingVolume Stereo 16kbps 11kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_16kbps_11.025khz_stereo.m4a
+Delay 1000000
+[End_TestCase]
+
+
+//********************************
+//* Play - Volume Ramping (ID 113)
+//********************************
+
+[TestCase]
+id 113
+Title Plugin.M4a.45 - 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 113
+Title Plugin.M4a.46 - 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 108)
+//**************************
+
+[TestCase]
+id 108
+Title Plugin.M4a.47 - PlayPausePlay Mono 8kbps 11kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_8kbps_11.025khz_mono.m4a
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+[TestCase]
+id 108
+Title Plugin.M4a.48 - PlayPausePlay Stereo 16kbps 11kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_16kbps_11.025khz_stereo.m4a
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+//******************************
+//* Set Position - Play (ID 109)
+//******************************
+
+[TestCase]
+id 109
+Title Plugin.M4a.49 - 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 109
+Title Plugin.M4a.50 - 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]
+
+
+
+//*******************************
+//* Play - Get Position (ID 110)
+//*******************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+
+[TestCase]
+id 110
+Title Plugin.M4a.51 - 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 110
+Title Plugin.M4a.52 - 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 111)
+//******************************
+
+[TestCase]
+id 111
+Title Plugin.M4a.53 - GetDuration Mono 8kbps 11kHz m4a audio
+SoundFile e:\sounds\M4a\10s_AAC_LC_8kbps_11.025khz_mono.m4a
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 111
+Title Plugin.M4a.54 - 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 115)
+//*************************************
+
+
+[TestCase]
+id 115
+Title Plugin.M4a.55 - SetPlaybackWindow 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
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 115
+Title Plugin.M4a.56 - SetPlaybackWindow 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
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+
+
+//****************************************
+//* Play - Delete Playback Window (ID 116)
+//****************************************
+
+
+[TestCase]
+id 116
+Title Plugin.M4a.57 - 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 116
+Title Plugin.M4a.58 - 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]
+
+# Configuration Filename: PluginTest_Midi.cfg
+# DESCRIPTION: This config file is to test the MIDI, SP-MIDI, and RMF audio.
+#
+# History
+# 2005-10-17	Sue Xu 	 120 Test cases
+
+//**************************
+//* Play MIDI, SP-MIDI, RMF audio file (ID 102)
+//**************************
+// Testing Playback to EOF
+
+[TestCase]
+id 102
+Title Plugin.MIDI.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 102
+Title Plugin.MIDI.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 102
+Title Plugin.MIDI.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 102
+Title Plugin.MIDI.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 102
+Title Plugin.MIDI.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 102
+Title Plugin.MIDI.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 102
+Title Plugin.MIDI.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 102
+Title Plugin.MIDI.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 102
+Title Plugin.MIDI.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 102
+Title Plugin.MIDI.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 102
+Title Plugin.MIDI.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 102
+Title Plugin.MIDI.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 and Stop (ID 103)
+//**************************
+
+[TestCase]
+id 103
+Title Plugin.MIDI.13 - PlayStop midi 10s_MID_Generic.mid 
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext.mid
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext.mid
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MIDI.14 - PlayStop midi 10s_MID_Generic_no_ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MIDI.15 - PlayStop midi 10s_MID_Generic_other_ext.amr
+SoundFile e:\sounds\mid\10s_MID_Generic_other_ext.amr
+SoundFile e:\sounds\mid\10s_MID_Generic_other_ext.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MIDI.16 - PlayStop sp-midi 10s_SP_MID_Generic.mid 
+SoundFile e:\sounds\mid\10s_SP_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_SP_MID_Generic.mid
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MIDI.17 - PlayStop sp-midi 10s_SP_MID_Generic_no_ext 
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_no_ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MIDI.18 - PlayStop sp-midi 10s_SP_MID_Generic_other_ext.amr
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_other_ext.amr
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_other_ext.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MIDI.19 - PlayStop rmf 10s_RMF_MID.rmf
+SoundFile e:\sounds\mid\10s_RMF_MID.rmf
+SoundFile e:\sounds\mid\10s_RMF_MID.rmf
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MIDI.20 - PlayStop rmf piano
+SoundFile e:\sounds\mid\10s_RMF_MID_no_ext
+SoundFile e:\sounds\mid\10s_RMF_MID_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MIDI.21 - PlayStop rmf piano.awb
+SoundFile e:\sounds\mid\10s_RMF_MID_other_ext.awb
+SoundFile e:\sounds\mid\10s_RMF_MID_other_ext.awb
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MIDI.22 - PlayStop mxmf 10s_MXMF.mxmf
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MIDI.23 - PlayStop mxmf 10s_MXMF_no_ext
+SoundFile e:\sounds\mxmf\10s_MXMF_no_ext
+SoundFile e:\sounds\mxmf\10s_MXMF_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MIDI.24 - PlayStop mxmf 10s_MXMF_other_ext.awb
+SoundFile e:\sounds\mxmf\10s_MXMF_other_ext.awb
+SoundFile e:\sounds\mxmf\10s_MXMF_other_ext.awb
+Delay 1000000
+[End_TestCase]
+
+
+
+//**************************
+//* Play Pause Play (ID 108)
+//**************************
+
+[TestCase]
+id 108
+Title Plugin.MIDI.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 108
+Title Plugin.MIDI.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 108
+Title Plugin.MIDI.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 108
+Title Plugin.MIDI.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 108
+Title Plugin.MIDI.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 108
+Title Plugin.MIDI.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 108
+Title Plugin.MIDI.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 108
+Title Plugin.MIDI.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 108
+Title Plugin.MIDI.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 108
+Title Plugin.MIDI.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 108
+Title Plugin.MIDI.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 108
+Title Plugin.MIDI.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 109)
+//**************************
+
+[TestCase]
+id 109
+Title Plugin.MIDI.37 - SetPosition_Play midi 10s_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext.mid
+//Position 10 000 000
+Position 02 000 000 
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 109
+Title Plugin.MIDI.38 - SetPosition_Play midi without ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+//Position 10 000 000
+Position 02 000 000  
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 109
+Title Plugin.MIDI.39 - SetPosition_Play midi with other ext
+SoundFile e:\sounds\mid\10s_MID_Generic_other_ext.amr
+//Position 10 000 000
+Position 02 000 000  
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 109
+Title Plugin.MIDI.40 - SetPosition_Play sp-midi 10s_SP_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_SP_MID_Generic.mid
+Position 10 000 000
+ErrorRange 2 000 000
+[End_TestCase]
+
+[TestCase]
+id 109
+Title Plugin.MIDI.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 109
+Title Plugin.MIDI.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 109
+Title Plugin.MIDI.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 109
+Title Plugin.MIDI.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 109
+Title Plugin.MIDI.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 109
+Title Plugin.MIDI.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 109
+Title Plugin.MIDI.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 109
+Title Plugin.MIDI.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 110)
+//**************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+[TestCase]
+id 110
+Title Plugin.MIDI.49 - GetPosition_Play midi 10s_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext.mid
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.MIDI.50 - GetPosition_Play midi without ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.MIDI.51 - GetPosition_Play midi with other ext
+SoundFile e:\sounds\mid\10s_MID_Generic_other_ext.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.MIDI.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 110
+Title Plugin.MIDI.53 - GetPosition_Play sp-midi without ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.MIDI.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 110
+Title Plugin.MIDI.55 - GetPosition_Play rmf 10s_RMF_MID.rmf
+SoundFile e:\sounds\mid\10s_RMF_MID.rmf
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.MIDI.56 - GetPosition_Play rmf without ext
+SoundFile e:\sounds\mid\10s_RMF_MID_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.MIDI.57 - GetPosition_Play rmf with other ext
+SoundFile e:\sounds\mid\10s_RMF_MID_other_ext.awb
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.MIDI.58 - GetPosition_Play mxmf 10s_MXMF.mxmf 
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf 
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.MIDI.59 - GetPosition_Play mxmf without ext
+SoundFile e:\sounds\mxmf\10s_MXMF_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.MIDI.60 - GetPosition_Play mxmf with other ext
+SoundFile e:\sounds\mxmf\10s_MXMF_other_ext.awb
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Get Duration (ID 111)
+//**************************
+
+[TestCase]
+id 111
+Title Plugin.MIDI.61 - GetDuration mid 10s_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext.mid
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.MIDI.62 - GetDuration mid without ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.MIDI.63 - GetDuration mid with other ext
+SoundFile e:\sounds\mid\10s_MID_Generic_other_ext.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.MIDI.64 - GetDuration sp-mid 10s_SP_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_SP_MID_Generic.mid
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.MIDI.65 - GetDuration sp-mid without ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.MIDI.66 - GetDuration sp-mid with other ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_other_ext.amr
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.MIDI.67 - GetDuration rmf 10s_RMF_MID.rmf
+SoundFile e:\sounds\mid\10s_RMF_MID.rmf
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.MIDI.68 - GetDuration rmf without ext
+SoundFile e:\sounds\mid\10s_RMF_MID_no_ext
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.MIDI.69 - GetDuration rmf with other ext
+SoundFile e:\sounds\mid\10s_RMF_MID_other_ext.awb
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 111
+Title Plugin.MIDI.70 - GetDuration mxmf 10s_MXMF.mxmf
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.MIDI.71 - GetDuration mxmf without ext
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.MIDI.72 - GetDuration mxmf with other ext
+SoundFile e:\sounds\mxmf\10s_MXMF_other_ext.awb
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Volume Max and Medium (ID 112)
+//**************************
+
+[TestCase]
+id 112
+Title Plugin.MIDI.73 - SettingVolume mid 10s_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext.mid
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.MIDI.74 - SettingVolume mid without ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.MIDI.75 - SettingVolume mid with other ext
+SoundFile e:\sounds\mid\10s_MID_Generic_other_ext.amr
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.MIDI.76 - SettingVolume sp-mid 10s_SP_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_SP_MID_Generic.mid
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.MIDI.77 - SettingVolume sp-mid without ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_no_ext
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.MIDI.78 - SettingVolume sp-mid with other ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_other_ext.amr
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.MIDI.79 - SettingVolume rmf 10s_RMF_MID.rmf
+SoundFile e:\sounds\mid\10s_RMF_MID.rmf
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.MIDI.80 - SettingVolume rmf without ext
+SoundFile e:\sounds\mid\10s_RMF_MID_no_ext
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.MIDI.81 - SettingVolume rmf with other ext
+SoundFile e:\sounds\mid\10s_RMF_MID_other_ext.awb
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.MIDI.82 - SettingVolume mxmf 10s_MXMF.mxmf
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.MIDI.83 - SettingVolume mxmf without ext
+SoundFile e:\sounds\mxmf\10s_MXMF_no_ext
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.MIDI.84 - SettingVolume mxmf with other ext
+SoundFile e:\sounds\mxmf\10s_MXMF_other_ext.awb
+[End_TestCase]
+
+//**************************
+//* Play - Volume Ramping (ID 113)
+//**************************
+
+[TestCase]
+id 113
+Title Plugin.MIDI.85 - 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 113
+Title Plugin.MIDI.86 - VolumeRamping mid without ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 113
+Title Plugin.MIDI.87 - 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 113
+Title Plugin.MIDI.88 - 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 113
+Title Plugin.MIDI.89 - 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 113
+Title Plugin.MIDI.90 - 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 113
+Title Plugin.MIDI.91 - VolumeRamping rmf 10s_RMF_MID.rmf
+SoundFile e:\sounds\mid\10s_RMF_MID.rmf
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 113
+Title Plugin.MIDI.92 - VolumeRamping rmf without ext
+SoundFile e:\sounds\mid\10s_RMF_MID_no_ext
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 113
+Title Plugin.MIDI.93 - 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 113
+Title Plugin.MIDI.94 - VolumeRamping mxmf 10s_MXMF.mxmf
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 113
+Title Plugin.MIDI.95 - VolumeRamping mxmf without ext
+SoundFile e:\sounds\mxmf\10s_MXMF_no_ext
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 113
+Title Plugin.MIDI.96 - 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 115)
+//**************************
+
+[TestCase]
+id 115
+Title Plugin.MIDI.97 - SetPlaybackWindow midi 10s_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext.mid
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.MIDI.98 - SetPlaybackWindow midi without ext
+SoundFile e:\sounds\mid\10s_MID_Generic_no_ext
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.MIDI.99 - SetPlaybackWindow midi with other ext
+SoundFile e:\sounds\mid\10s_MID_Generic_other_ext.amr
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.MIDI.100 - SetPlaybackWindow sp-midi 10s_SP_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_SP_MID_Generic.mid
+//StartPosition 10 000 000
+//EndPosition   20 000 000
+StartPosition 03 000 000
+EndPosition   06 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 115
+Title Plugin.MIDI.101 - SetPlaybackWindow sp-midi without ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_no_ext
+//StartPosition 10 000 000
+//EndPosition   20 000 000
+StartPosition 02 000 000
+EndPosition   06 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.MIDI.102 - SetPlaybackWindow sp-midi with other ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_other_ext.awb
+//StartPosition 10 000 000
+//EndPosition   20 000 000
+StartPosition 02 000 000
+EndPosition   06 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.MIDI.103 - SetPlaybackWindow rmf 10s_RMF_MID.rmf
+SoundFile e:\sounds\mid\10s_RMF_MID.rmf
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.MIDI.104 - SetPlaybackWindow rmf without ext
+SoundFile e:\sounds\mid\10s_RMF_MID_no_ext
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.MIDI.105 - SetPlaybackWindow rmf with other ext
+SoundFile e:\sounds\mid\10s_RMF_MID_other_ext.3gp
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.MIDI.106 - SetPlaybackWindow mxmf 10s_MXMF.mxmf
+SoundFile e:\sounds\mxmf\10s_MXMF.mxmf
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.MIDI.107 - SetPlaybackWindow mxmf without ext
+SoundFile e:\sounds\mxmf\10s_MXMF_no_ext
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.MIDI.108 - SetPlaybackWindow mxmf with other ext
+SoundFile e:\sounds\mxmf\10s_MXMF_other_ext.awb
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Delete Playback Window (ID 116)
+//**************************
+
+[TestCase]
+id 116
+Title Plugin.MIDI.109 - 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 116
+Title Plugin.MIDI.110 - 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 116
+Title Plugin.MIDI.111 - 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 116
+Title Plugin.MIDI.112 - 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 116
+Title Plugin.MIDI.113 - 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 116
+Title Plugin.MIDI.114 - 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 116
+Title Plugin.MIDI.115 - 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 116
+Title Plugin.MIDI.116 - 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 116
+Title Plugin.MIDI.117 - 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 116
+Title Plugin.MIDI.118 - 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 116
+Title Plugin.MIDI.119 - 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 116
+Title Plugin.MIDI.120 - 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]
+
+# Configuration Filename: PluginTest_MP3.cfg
+# DESCRIPTION: This config file is to test the MP3 audio.
+#
+# History
+# 2005-03-21	Sue Xu - 137 Test cases	
+
+//**************************
+//* Play MP3 Sample Rate (ID 102)
+//**************************
+// Testing Playback to EOF
+
+[TestCase]
+id 102
+Title Plugin.MP3.1 - Play 8Khz MPEG2.5
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2.5_8kbps_8khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.2 - Play 11Khz MPEG2.5
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2.5_8kbps_11.025khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.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 102
+Title Plugin.MP3.4 - Play 16Khz MPEG2
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_16kbps_16khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.5 - Play 22Khz MPEG2
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_16kbps_22.05khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.6 - Play 24 Khz MPEG2
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_16kbps_24khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.7 - Play 32 Khz MPEG1
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_32kbps_32khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.8 - Play 44 Khz MPEG1
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_32kbps_44.1khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.9 - Play 48 Khz MPEG1
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_32kbps_48khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+//**********************************
+//* Play and Stop SampleRate(ID 103)
+//**********************************
+
+[TestCase]
+id 103
+Title Plugin.MP3.10 - PlayStop 8Khz MPEG2.5
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2.5_8kbps_8khz_stereo.mp3
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2.5_8kbps_8khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.11 - PlayStop 11Khz MPEG2.5
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2.5_24kbps_11.025khz_stereo.mp3
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2.5_24kbps_11.025khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.12 - PlayStop 12Khz MPEG2.5
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2.5_24kbps_12khz_stereo.mp3
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2.5_24kbps_12khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.13 - PlayStop 16Khz MPEG2
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_16kbps_16khz_stereo.mp3
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_16kbps_16khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.14 - PlayStop 22Khz MPEG2
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_16kbps_22.05khz_stereo.mp3
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_16kbps_22.05khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.15 - PlayStop 24Khz 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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.16 - PlayStop 32Khz MPEG1
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_32kbps_32khz_stereo.mp3
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_32kbps_32khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.17 - PlayStop 44Khz MPEG1
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_32kbps_44.1khz_stereo.mp3
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_32kbps_44.1khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.18 - PlayStop 48Khz MPEG1
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_32kbps_48khz_stereo.mp3
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_32kbps_48khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+
+//*****************************************
+//* Play MP3 Sample Rate Descriptor(ID 104)
+//*****************************************
+// Testing Play Descriptor to EOF
+
+
+
+//**********************************
+//* Play MP3 Bit Rate MPEG1 (ID 102)
+//**********************************
+// Testing Playback to EOF
+
+[TestCase]
+id 102
+Title Plugin.MP3.19 - Play 32Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_32kbps_44.1khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.20 - Play 40Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_40kbps_48khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.21 - Play 48Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_48kbps_48khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.22 - Play 56Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_56kbps_48khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.23 - Play 64Kbps MPEG1 
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_64kbps_48khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.24 - Play 80Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_80kbps_48khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.25 - Play 96Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_96kbps_48khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.26 - Play 112Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_112kbps_48khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.27 - Play 128Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_128kbps_48khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.28 - Play 160Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_160kbps_48khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.29 - Play 192Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_192kbps_48khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.30 - Play 224Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_224kbps_48khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.31 - Play 256Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_256kbps_48khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.32 - Play 320Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_320kbps_48khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+//*******************************************
+//* Play and Stop MP3 Bit Rate MPEG1 (ID 103)
+//*******************************************
+
+[TestCase]
+id 103
+Title Plugin.MP3.33 - PlayStop 32Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_32kbps_44.1khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_32kbps_44.1khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.34 - PlayStop 40Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_40kbps_48khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_40kbps_48khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.35 - PlayStop 48Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_48kbps_48khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_48kbps_48khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.36 - PlayStop 56Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_56kbps_48khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_56kbps_48khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.37 - PlayStop 64Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_64kbps_48khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_64kbps_48khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.38 - PlayStop 80Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_80kbps_48khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_80kbps_48khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.39 - PlayStop 96Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_96kbps_48khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_96kbps_48khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.40 - PlayStop 112Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_112kbps_48khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_112kbps_48khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.41 - PlayStop 128Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_128kbps_48khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_128kbps_48khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.42 - PlayStop 160Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_160kbps_48khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_160kbps_48khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.43 - PlayStop 192Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_192kbps_48khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_192kbps_48khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.44 - PlayStop 224Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_224kbps_48khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_224kbps_48khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.45 - PlayStop 256Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_256kbps_48khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_256kbps_48khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.46 - PlayStop 320Kbps MPEG1
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_320kbps_48khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_320kbps_48khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+
+//********************************************
+//* Play MP3 Bit Rate MPEG1 Descriptor(ID 104)
+//********************************************
+
+
+
+
+//**************************************
+//* Play MP3 Bit Rate MPEG2/2.5 (ID 102)
+//**************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 102
+Title Plugin.MP3.47 - Play 8Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_8kbps_24khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.48 - Play 16Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_16kbps_24khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.49 - Play 24Kbps MPEG2.5
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_24kbps_12khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.50 - Play 32Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_32kbps_24khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.51 - Play 40Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_40kbps_24khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.52 - Play 48Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_48kbps_24khz_mono.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.53 - Play 56Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.54 - Play 64Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_64kbps_24khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.55 - Play 80Kbps MPEG2.5
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_80kbps_12khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.56 - Play 96Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_96kbps_12khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.57 - Play 112Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_112kbps_12khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.58 - Play 128Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_128kbps_12khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.59 - Play 144Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_144kbps_24khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.MP3.60 - Play 160Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_160kbps_12khz_stereo.mp3
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+//******************************************
+//* PlayStop MP3 Bit Rate MPEG2/2.5 (ID 103)
+//******************************************
+
+[TestCase]
+id 103
+Title Plugin.MP3.61 - PlayStop 8Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_8kbps_24khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_8kbps_24khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.62 - PlayStop 16Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_16kbps_24khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_16kbps_24khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.63 - PlayStop 24Kbps MPEG2.5
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_24kbps_12khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_24kbps_12khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.64 - PlayStop 32Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_32kbps_24khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_32kbps_24khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.65 - PlayStop 40Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_40kbps_24khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_40kbps_24khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.66 - PlayStop 48Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_48kbps_24khz_mono.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_48kbps_24khz_mono.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.67 - PlayStop 56Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.68 - PlayStop 64Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_64kbps_24khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_64kbps_24khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.69 - PlayStop 80Kbps MPEG2.5
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_80kbps_12khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_80kbps_12khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.70 - PlayStop 96Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_96kbps_12khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_96kbps_12khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.71 - PlayStop 112Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_112kbps_12khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_112kbps_12khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.72 - PlayStop 128Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_128kbps_12khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_128kbps_12khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.73 - PlayStop 144Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_144kbps_24khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2_144kbps_24khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.MP3.74 - PlayStop 160Kbps MPEG2
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_160kbps_12khz_stereo.mp3
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_160kbps_12khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+
+
+//************************************************
+//* Play MP3 Bit Rate MPEG2/2.5 Descriptor(ID 104)
+//************************************************
+
+
+//***************************************
+//* Play Descriptor after another (ID 105)
+//***************************************
+
+
+//**************************
+//* Play Pause Play (ID 108)
+//**************************
+
+[TestCase]
+id 108
+Title Plugin.MP3.75 - PlayPausePlay MP3 MPEG2 24KHz 160Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_160kbps_24khz_stereo.mp3
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 108
+Title Plugin.MP3.76 - PlayPausePlay MP3 MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 108
+Title Plugin.MP3.77 - PlayPausePlay MP3 MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_224kbps_48khz_stereo.mp3
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+//******************************
+//* Set Position - Play (ID 109)
+//******************************
+
+[TestCase]
+id 109
+Title Plugin.MP3.78 - SetPosition_Play MP3 MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_224kbps_48khz_stereo.mp3
+Position 000 500 000
+ErrorRange 3 000 000
+[End_TestCase]
+
+[TestCase]
+id 109
+Title Plugin.MP3.79 - SetPosition_Play MP3 MPEG1 48KHz 96Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_96kbps_48khz_stereo.mp3
+Position 05 000 000   
+ErrorRange 3 000 000  
+[End_TestCase]
+
+[TestCase]
+id 109
+Title Plugin.MP3.80 - SetPosition_Play MP3 MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+Position 10 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+//*******************************
+//* Play - Get Position (ID 110)
+//*******************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+[TestCase]
+id 110
+Title Plugin.MP3.81 - GetPosition_Play MP3 MPEG2 24KHz 160Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_160kbps_24khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.MP3.82 - GetPosition_Play MP3 MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.MP3.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 111)
+//******************************
+
+[TestCase]
+id 111
+Title Plugin.MP3.84 - GetDuration MP3 MPEG1 48KHz 96Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_96kbps_48khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.MP3.85 - GetDuration MP3 MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_224kbps_48khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.MP3.86 - GetDuration MP3 MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+Delay 1000000
+[End_TestCase]
+
+//***************************************
+//* Play - Volume Max and Medium (ID 112)
+//***************************************
+
+[TestCase]
+id 112
+Title Plugin.MP3.87 - SettingVolume MP3 MPEG2 16KHz
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_16kbps_16khz_stereo.mp3
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.MP3.88 - SettingVolume MP3 MPEG2.5 24Kbps
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_MPEG2.5_24kbps_12khz_stereo.mp3
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.MP3.89 - SettingVolume MP3 MPEG1 128Kbps
+SoundFile e:\sounds\mp3\BitRate\10s_MP3_128kbps_48khz_stereo.mp3
+[End_TestCase]
+
+//********************************
+//* Play - Volume Ramping (ID 113)
+//********************************
+
+[TestCase]
+id 113
+Title Plugin.MP3.90 - VolumeRamping MP3 MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+RampDuration 5 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 113
+Title Plugin.MP3.91 - VolumeRamping MP3 MPEG2 24KHz 160Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_160kbps_24khz_stereo.mp3
+RampDuration 5 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 113
+Title Plugin.MP3.92 - VolumeRamping MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_224kbps_48khz_stereo.mp3
+RampDuration 5 000 000
+Delay 1000000
+[End_TestCase]
+
+//*************************************
+//* Play - Set Playback Window (ID 115)
+//*************************************
+
+[TestCase]
+id 115
+Title Plugin.MP3.93 - SetPlaybackWindow MP3 MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_224kbps_48khz_stereo.mp3
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.MP3.94 - SetPlaybackWindow MP3 MPEG1 48KHz 96Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_96kbps_48khz_stereo.mp3
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.MP3.95 - SetPlaybackWindow MP3 MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_56kbps_24khz_stereo.mp3
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+//****************************************
+//* Play - Delete Playback Window (ID 116)
+//****************************************
+
+[TestCase]
+id 116
+Title Plugin.MP3.96 - DeletePlaybackWindow MP3 MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_224kbps_48khz_stereo.mp3
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 116
+Title Plugin.MP3.97 - 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 116
+Title Plugin.MP3.98 - DeletePlaybackWindow MP3 MPEG2 24KHz 160Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_MPEG2_160kbps_24khz_stereo.mp3
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+# Configuration Filename: PluginTest_wav.cfg
+# DESCRIPTION: This config file is to test the wav audio.
+#
+# History
+# 2005-03-21	Sue Xu - 137 Test cases	
+
+//**************************
+//* Play WAV Sample Rate (ID 102)
+//**************************
+// Testing Playback to EOF
+
+[TestCase]
+id 102
+Title Plugin.wav.1 - maintst2.wav
+SoundFile e:\sounds\wav\maintst2.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.2 - Play 11Khz MPEG2.5
+SoundFile e:\sounds\wav\maintst2.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.3 - Play 12Khz MPEG2.5
+SoundFile e:\sounds\wav\maintst2.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.4 - Play 16Khz MPEG2
+SoundFile e:\sounds\wav\maintst2.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.5 - Play 22Khz MPEG2
+SoundFile e:\sounds\wav\maintst2.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.6 - Play 24 Khz MPEG2
+SoundFile e:\sounds\wav\maintst2.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.7 - Play 32 Khz MPEG1
+SoundFile e:\sounds\wav\maintst2.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.8 - Play 44 Khz MPEG1
+SoundFile e:\sounds\wav\maintst2.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.9 - Play 48 Khz MPEG1
+SoundFile e:\sounds\wav\maintst2.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+//**********************************
+//* Play and Stop SampleRate(ID 103)
+//**********************************
+
+[TestCase]
+id 103
+Title Plugin.wav.10 - PlayStop 8Khz MPEG2.5
+SoundFile e:\sounds\wav\maintst2.wav
+SoundFile e:\sounds\wav\maintst2.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.11 - PlayStop 11Khz MPEG2.5
+SoundFile e:\sounds\wav\maintst2.wav
+SoundFile e:\sounds\wav\maintst2.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.12 - PlayStop 12Khz MPEG2.5
+SoundFile e:\sounds\wav\maintst2.wav
+SoundFile e:\sounds\wav\maintst2.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.13 - PlayStop 16Khz MPEG2
+SoundFile e:\sounds\wav\maintst2.wav
+SoundFile e:\sounds\wav\maintst2.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.14 - PlayStop 22Khz MPEG2
+SoundFile e:\sounds\wav\maintst2.wav
+SoundFile e:\sounds\wav\maintst2.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.15 - PlayStop 24Khz MPEG2
+SoundFile e:\sounds\wav\maintst2.wav
+SoundFile e:\sounds\wav\maintst2.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.16 - PlayStop 32Khz MPEG1
+SoundFile e:\sounds\wav\maintst2.wav
+SoundFile e:\sounds\wav\maintst2.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.17 - PlayStop 44Khz MPEG1
+SoundFile e:\sounds\wav\maintst2.wav
+SoundFile e:\sounds\wav\maintst2.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.18 - PlayStop 48Khz MPEG1
+SoundFile e:\sounds\wav\maintst2.wav
+SoundFile e:\sounds\wav\maintst2.wav
+Delay 1000000
+[End_TestCase]
+
+
+//*****************************************
+//* Play wav Sample Rate Descriptor(ID 104)
+//*****************************************
+// Testing Play Descriptor to EOF
+
+
+//**********************************
+//* Play wav Bit Rate MPEG1 (ID 102)
+//**********************************
+// Testing Playback to EOF
+
+[TestCase]
+id 102
+Title Plugin.wav.19 - Play 32Kbps MPEG1
+SoundFile e:\sounds\wav\maintst3.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.20 - Play 40Kbps MPEG1
+SoundFile e:\sounds\wav\maintst3.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.21 - Play 48Kbps MPEG1
+SoundFile e:\sounds\wav\maintst3.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.22 - Play 56Kbps MPEG1
+SoundFile e:\sounds\wav\maintst3.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.23 - Play 64Kbps MPEG1 
+SoundFile e:\sounds\wav\maintst3.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.24 - Play 80Kbps MPEG1
+SoundFile e:\sounds\wav\maintst3.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.25 - Play 96Kbps MPEG1
+SoundFile e:\sounds\wav\maintst3.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.26 - Play 112Kbps MPEG1
+SoundFile e:\sounds\wav\maintst3.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.27 - Play 128Kbps MPEG1
+SoundFile e:\sounds\wav\maintst3.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.28 - Play 160Kbps MPEG1
+SoundFile e:\sounds\wav\maintst3.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.29 - Play 192Kbps MPEG1
+SoundFile e:\sounds\wav\maintst3.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.30 - Play 224Kbps MPEG1
+SoundFile e:\sounds\wav\maintst3.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.31 - Play 256Kbps MPEG1
+SoundFile e:\sounds\wav\maintst3.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.32 - Play 320Kbps MPEG1
+SoundFile e:\sounds\wav\maintst3.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+//*******************************************
+//* Play and Stop wav Bit Rate MPEG1 (ID 103)
+//*******************************************
+
+[TestCase]
+id 103
+Title Plugin.wav.33 - PlayStop 32Kbps MPEG1
+SoundFile e:\sounds\wav\maintst.wav
+SoundFile e:\sounds\wav\maintst.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.34 - PlayStop 40Kbps MPEG1
+SoundFile e:\sounds\wav\maintst.wav
+SoundFile e:\sounds\wav\maintst.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.35 - PlayStop 48Kbps MPEG1
+SoundFile e:\sounds\wav\maintst.wav
+SoundFile e:\sounds\wav\maintst.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.36 - PlayStop 56Kbps MPEG1
+SoundFile e:\sounds\wav\maintst.wav
+SoundFile e:\sounds\wav\maintst.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.37 - PlayStop 64Kbps MPEG1
+SoundFile e:\sounds\wav\maintst.wav
+SoundFile e:\sounds\wav\maintst.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.38 - PlayStop 80Kbps MPEG1
+SoundFile e:\sounds\wav\maintst.wav
+SoundFile e:\sounds\wav\maintst.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.39 - PlayStop 96Kbps MPEG1
+SoundFile e:\sounds\wav\maintst.wav
+SoundFile e:\sounds\wav\maintst.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.40 - PlayStop 112Kbps MPEG1
+SoundFile e:\sounds\wav\maintst.wav
+SoundFile e:\sounds\wav\maintst.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.41 - PlayStop 128Kbps MPEG1
+SoundFile e:\sounds\wav\maintst.wav
+SoundFile e:\sounds\wav\maintst.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.42 - PlayStop 160Kbps MPEG1
+SoundFile e:\sounds\wav\maintst.wav
+SoundFile e:\sounds\wav\maintst.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.43 - PlayStop 192Kbps MPEG1
+SoundFile e:\sounds\wav\maintst.wav
+SoundFile e:\sounds\wav\maintst.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.44 - PlayStop 224Kbps MPEG1
+SoundFile e:\sounds\wav\maintst.wav
+SoundFile e:\sounds\wav\maintst.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.45 - PlayStop 256Kbps MPEG1
+SoundFile e:\sounds\wav\maintst.wav
+SoundFile e:\sounds\wav\maintst.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.46 - PlayStop 320Kbps MPEG1
+SoundFile e:\sounds\wav\maintst.wav
+SoundFile e:\sounds\wav\maintst.wav
+Delay 1000000
+[End_TestCase]
+
+
+//********************************************
+//* Play wav Bit Rate MPEG1 Descriptor(ID 104)
+//********************************************
+
+
+
+
+//**************************************
+//* Play wav Bit Rate MPEG2/2.5 (ID 102)
+//**************************************
+// Testing Playback to EOF
+
+[TestCase]
+id 102
+Title Plugin.wav.47 - Play 8Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav10s.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.48 - Play 16Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav10s.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.49 - Play 24Kbps MPEG2.5
+SoundFile e:\sounds\wav\recordwav10s.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.50 - Play 32Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav10s.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.51 - Play 40Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav10s.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.52 - Play 48Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav10s.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.53 - Play 56Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav10s.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.54 - Play 64Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav10s.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.55 - Play 80Kbps MPEG2.5
+SoundFile e:\sounds\wav\recordwav10s.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.56 - Play 96Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav10s.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.57 - Play 112Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav10s.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.58 - Play 128Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav10s.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.59 - Play 144Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav10s.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.wav.60 - Play 160Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav10s.wav
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+//******************************************
+//* PlayStop wav Bit Rate MPEG2/2.5 (ID 103)
+//******************************************
+
+[TestCase]
+id 103
+Title Plugin.wav.61 - PlayStop 8Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav30s.wav
+SoundFile e:\sounds\wav\recordwav30s.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.62 - PlayStop 16Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav30s.wav
+SoundFile e:\sounds\wav\recordwav30s.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.63 - PlayStop 24Kbps MPEG2.5
+SoundFile e:\sounds\wav\recordwav30s.wav
+SoundFile e:\sounds\wav\recordwav30s.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.64 - PlayStop 32Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav30s.wav
+SoundFile e:\sounds\wav\recordwav30s.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.65 - PlayStop 40Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav30s.wav
+SoundFile e:\sounds\wav\recordwav30s.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.66 - PlayStop 48Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav30s.wav
+SoundFile e:\sounds\wav\recordwav30s.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.67 - PlayStop 56Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav30s.wav
+SoundFile e:\sounds\wav\recordwav30s.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.68 - PlayStop 64Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav30s.wav
+SoundFile e:\sounds\wav\recordwav30s.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.69 - PlayStop 80Kbps MPEG2.5
+SoundFile e:\sounds\wav\recordwav30s.wav
+SoundFile e:\sounds\wav\recordwav30s.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.70 - PlayStop 96Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav30s.wav
+SoundFile e:\sounds\wav\recordwav30s.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.71 - PlayStop 112Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav30s.wav
+SoundFile e:\sounds\wav\recordwav30s.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.72 - PlayStop 128Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav30s.wav
+SoundFile e:\sounds\wav\recordwav30s.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.73 - PlayStop 144Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav30s.wav
+SoundFile e:\sounds\wav\recordwav30s.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.wav.74 - PlayStop 160Kbps MPEG2
+SoundFile e:\sounds\wav\recordwav30s.wav
+SoundFile e:\sounds\wav\recordwav30s.wav
+Delay 1000000
+[End_TestCase]
+
+
+
+//************************************************
+//* Play wav Bit Rate MPEG2/2.5 Descriptor(ID 104)
+//************************************************
+
+
+//***************************************
+//* Play Descriptor after another (ID 105)
+//***************************************
+
+
+[TestCase]
+id 108
+Title Plugin.wav.76 - PlayPausePlay wav MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 108
+Title Plugin.wav.77 - PlayPausePlay wav MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+PauseDelay 5000000
+PlayDelay 10000000
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+//******************************
+//* Set Position - Play (ID 109)
+//******************************
+
+[TestCase]
+id 109
+Title Plugin.wav.78 - SetPosition_Play wav MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+Position 000 500 000
+ErrorRange 3 000 000
+[End_TestCase]
+
+[TestCase]
+id 109
+Title Plugin.wav.79 - SetPosition_Play wav MPEG1 48KHz 96Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+Position 20 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 109
+Title Plugin.wav.80 - SetPosition_Play wav MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+Position 10 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+
+//*******************************
+//* Play - Get Position (ID 110)
+//*******************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+[TestCase]
+id 110
+Title Plugin.wav.81 - GetPosition_Play wav MPEG2 24KHz 160Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.wav.82 - GetPosition_Play wav MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.wav.83 - GetPosition_Play wav MPEG1 48KHz 96Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+Delay 1000000
+[End_TestCase]
+
+//******************************
+//* Play - Get Duration (ID 111)
+//******************************
+
+[TestCase]
+id 111
+Title Plugin.wav.84 - GetDuration wav MPEG1 48KHz 96Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.wav.85 - GetDuration wav MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.wav.86 - GetDuration wav MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+Delay 1000000
+[End_TestCase]
+
+//***************************************
+//* Play - Volume Max and Medium (ID 112)
+//***************************************
+
+[TestCase]
+id 112
+Title Plugin.wav.87 - SettingVolume wav MPEG2 16KHz
+SoundFile e:\sounds\wav\recordwav30s.wav
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.wav.88 - SettingVolume wav MPEG2.5 24Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.wav.89 - SettingVolume wav MPEG1 128Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+[End_TestCase]
+
+//********************************
+//* Play - Volume Ramping (ID 113)
+//********************************
+
+[TestCase]
+id 113
+Title Plugin.wav.90 - VolumeRamping wav MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+RampDuration 5 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 113
+Title Plugin.wav.91 - VolumeRamping wav MPEG2 24KHz 160Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+RampDuration 5 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 113
+Title Plugin.wav.92 - VolumeRamping MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+RampDuration 5 000 000
+Delay 1000000
+[End_TestCase]
+
+//*************************************
+//* Play - Set Playback Window (ID 115)
+//*************************************
+
+[TestCase]
+id 115
+Title Plugin.wav.93 - SetPlaybackWindow wav MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.wav.94 - SetPlaybackWindow wav MPEG1 48KHz 96Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.wav.95 - SetPlaybackWindow wav MPEG2 24KHz 56Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+StartPosition 10 000 000
+EndPosition   20 000 000
+ErrorRange 2 000 000
+Delay 1000000
+[End_TestCase]
+
+//****************************************
+//* Play - Delete Playback Window (ID 116)
+//****************************************
+
+[TestCase]
+id 116
+Title Plugin.wav.96 - DeletePlaybackWindow wav MPEG1 48KHz 224Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 116
+Title Plugin.wav.97 - DeletePlaybackWindow wav MPEG1 48KHz 96Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 116
+Title Plugin.wav.98 - DeletePlaybackWindow wav MPEG2 24KHz 160Kbps
+SoundFile e:\sounds\wav\recordwav30s.wav
+StartPosition 10 000 000
+EndPosition   20 000 000
+Delay 1000000
+[End_TestCase]
+
+# Configuration Filename: PluginTest_3GPP-MP4.cfg
+# DESCRIPTION: This config file is to test the 3GPP and MP4 audio.
+#
+# History
+# 2005-11-01	Sue Xu		 70 Test cases 
+//**************************
+//* Play 3GPP , 3g2 and MP4
+//**************************
+// Testing Playback to EOF
+
+[TestCase]
+id 102
+Title Plugin.3GP.3g2.mp4.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 102
+Title Plugin.3GP.3g2.mp4.2 - Play 3gpp-aac audio
+SoundFile e:\sounds\3gpp\10s_3GP_AAC+_24kbps_16khz_mono.3gp
+Expected Duration 29 120 000
+ErrorRange 1 500 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.3GP.3g2.mp4.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 102
+Title Plugin.3GP.3g2.mp4.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 102
+Title Plugin.3GP.3g2.mp4.5 - Play 3gpp2-aac audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+ErrorRange 1 500 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.3GP.3g2.mp4.6 - Play 3gpp2-amr audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+ErrorRange 1 500 000
+[End_TestCase]
+
+[TestCase]
+id 102
+Title Plugin.3GP.3g2.mp4.7 - Play 3gpp2-awb audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AWB_Generic.3g2
+ErrorRange 1 500 000
+[End_TestCase]
+
+
+
+
+//**************************
+//* Play and Stop (ID 103)
+//**************************
+
+[TestCase]
+id 103
+Title Plugin.3GP.3g2.mp4.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.3GP.3g2.mp4.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.3GP.3g2.mp4.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.3GP.3g2.mp4.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
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.3GP.3g2.mp4.12 - Play 3gpp2-aac audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.3GP.3g2.mp4.13 - Play 3gpp2-amr audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 103
+Title Plugin.3GP.3g2.mp4.14 - Play 3gpp2-awb audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AWB_Generic.3g2
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AWB_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+
+//**************************
+//* Play Pause Play (ID 108)
+//**************************
+
+[TestCase]
+id 108
+Title Plugin.3GP.3g2.mp4.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 108
+Title Plugin.3GP.3g2.mp4.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 108
+Title Plugin.3GP.3g2.mp4.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 108
+Title Plugin.3GP.3g2.mp4.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 108
+Title Plugin.3GP.3g2.mp4.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 108
+Title Plugin.3GP.3g2.mp4.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 108
+Title Plugin.3GP.3g2.mp4.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 109)
+//**************************
+
+[TestCase]
+id 109
+Title Plugin.3GP.3g2.mp4.22 - SetPosition_Play mp4 audio
+SoundFile e:\sounds\3gpp\10s_MP4_16kbps_22.05khz_mono.mp4
+Position 10 000 000
+ErrorRange 1 000 000
+[End_TestCase]
+
+[TestCase]
+id 109
+Title Plugin.3GP.3g2.mp4.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 109
+Title Plugin.3GP.3g2.mp4.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 109
+Title Plugin.3GP.3g2.mp4.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 109
+Title Plugin.3GP.3g2.mp4.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 109
+Title Plugin.3GP.3g2.mp4.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 109
+Title Plugin.3GP.3g2.mp4.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 110)
+//**************************
+// Delay is the setting position, meaning every delay value, the get position is called. 
+// This info be seen on the log file.
+
+[TestCase]
+id 110
+Title Plugin.3GP.3g2.mp4.29 - GetPosition_Play mp4 audio
+SoundFile e:\sounds\3gpp\10s_MP4_16kbps_22.05khz_mono.mp4
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.3GP.3g2.mp4.30 - GetPosition_Play 3gpp-aac audio
+SoundFile e:\sounds\3gpp\10s_3GP_AAC+_24kbps_16khz_mono.3gp
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.3GP.3g2.mp4.31 - GetPosition_Play 3gpp-amr audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_NB_mode3.3gp
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.3GP.3g2.mp4.32 - GetPosition_Play 3gpp-awb audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_WB_mode0.3gp
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.3GP.3g2.mp4.33 - Play 3gpp2-aac audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.3GP.3g2.mp4.34 - Play 3gpp2-amr audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 110
+Title Plugin.3GP.3g2.mp4.35 - Play 3gpp2-awb audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AWB_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Get Duration (ID 111)
+//**************************
+
+[TestCase]
+id 111
+Title Plugin.3GP.3g2.mp4.36 - GetDuration mp4 audio
+SoundFile e:\sounds\3gpp\10s_MP4_16kbps_22.05khz_mono.mp4
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.3GP.3g2.mp4.37 - GetDuration 3gpp-aac audio
+SoundFile e:\sounds\3gpp\10s_3GP_AAC+_24kbps_16khz_mono.3gp
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.3GP.3g2.mp4.38 - GetDuration 3gpp-amr audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_NB_mode3.3gp
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.3GP.3g2.mp4.39 - GetDuration 3gpp-awb audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_WB_mode0.3gp
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.3GP.3g2.mp4.40 - GetDuration 3gpp2-aac audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.3GP.3g2.mp4.41 - GetDuration 3gpp2-amr audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 111
+Title Plugin.3GP.3g2.mp4.42 - GetDuration 3gpp2-awb audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AWB_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+
+
+//**************************
+//* Play - Volume Max and Medium (ID 112)
+//**************************
+
+[TestCase]
+id 112
+Title Plugin.3GP.3g2.mp4.43 - SettingVolume mp4 audio
+SoundFile e:\sounds\3gpp\10s_MP4_16kbps_22.05khz_mono.mp4
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.3GP.3g2.mp4.44 - SettingVolume 3gpp-aac audio
+SoundFile e:\sounds\3gpp\10s_3GP_AAC+_24kbps_16khz_mono.3gp
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.3GP.3g2.mp4.45 - SettingVolume 3gpp-amr audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_NB_mode3.3gp
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.3GP.3g2.mp4.46 - SettingVolume 3gpp-awb audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_WB_mode0.3gp
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.3GP.3g2.mp4.47 - SettingVolume 3gpp2-aac audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.3GP.3g2.mp4.48 - SettingVolume 3gpp2-amr audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 112
+Title Plugin.3GP.3g2.mp4.49 - SettingVolume 3gpp2-awb audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AWB_Generic.3g2
+Delay 1000000
+[End_TestCase]
+
+//**************************
+//* Play - Volume Ramping (ID 113)
+//**************************
+
+[TestCase]
+id 113
+Title Plugin.3GP.3g2.mp4.50 - VolumeRamping mp4 audio
+SoundFile e:\sounds\3gpp\10s_MP4_16kbps_22.05khz_mono.mp4
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 113
+Title Plugin.3GP.3g2.mp4.51 - 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 113
+Title Plugin.3GP.3g2.mp4.52 - VolumeRamping 3gpp-amr audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_NB_mode3.3gp
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 113
+Title Plugin.3GP.3g2.mp4.53 - VolumeRamping 3gpp-awb audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_WB_mode0.3gp
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 113
+Title Plugin.3GP.3g2.mp4.54 - VolumeRamping 3gpp2-aac audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 113
+Title Plugin.3GP.3g2.mp4.55 - VolumeRamping 3gpp2-amr audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+RampDuration 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 113
+Title Plugin.3GP.3g2.mp4.56 - 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 115)
+//**************************
+
+[TestCase]
+id 115
+Title Plugin.3GP.3g2.mp4.57 - SetPlaybackWindow mp4 audio
+SoundFile e:\sounds\3gpp\10s_MP4_16kbps_22.05khz_mono.mp4
+//StartPosition 10 000 000
+//EndPosition   25 000 000
+StartPosition 02 000 000
+EndPosition   07 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.3GP.3g2.mp4.58 - SetPlaybackWindow 3gpp-aac audio
+SoundFile e:\sounds\3gpp\10s_3GP_AAC+_24kbps_16khz_mono.3gp
+//StartPosition 10 000 000
+//EndPosition   25 000 000
+StartPosition 02 000 000
+EndPosition   07 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.3GP.3g2.mp4.59 - SetPlaybackWindow 3gpp-amr audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_NB_mode3.3gp
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 03 000 000
+EndPosition   05 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.3GP.3g2.mp4.60 - SetPlaybackWindow 3gpp-awb audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_WB_mode0.3gp
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 03 000 000
+EndPosition   05 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.3GP.3g2.mp4.61 - SetPlaybackWindow 3gpp2-aac audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 03 000 000
+EndPosition   05 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.3GP.3g2.mp4.62 - SetPlaybackWindow 3gpp2-amr audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 03 000 000
+EndPosition   05 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.3GP.3g2.mp4.63 - SetPlaybackWindow 3gpp2-awb audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AWB_Generic.3g2
+//StartPosition 15 000 000
+//EndPosition   35 000 000
+StartPosition 02 000 000
+EndPosition   06 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+
+//**************************
+//* Play - Delete Playback Window (ID 116)
+//**************************
+
+[TestCase]
+id 116
+Title Plugin.3GP.3g2.mp4.64 - 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 116
+Title Plugin.3GP.3g2.mp4.65 - 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 116
+Title Plugin.3GP.3g2.mp4.66 - 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 116
+Title Plugin.3GP.3g2.mp4.67 - 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 116
+Title Plugin.3GP.3g2.mp4.68 - 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 116
+Title Plugin.3GP.3g2.mp4.69 - 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 116
+Title Plugin.3GP.3g2.mp4.70 - 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]
+
+//Get Formats. Required: id
+//             Optional: Title, InterfaceId
+[TestCase]
+id 101
+Title MMFTS.PLAY.1 - Get playback formats (KUidInterfaceMMFAudioPlayDevice)
+InterfaceId 270497494
+[End_TestCase]
+
+//Get Formats. Required: id
+//             Optional: Title, InterfaceId
+[TestCase]
+id 101
+Title MMFTS.PLAY.1 - Get playback formats (KUidInterfaceMMFAudioPlayController)
+InterfaceId 270497496
+[End_TestCase]
+
+//Play. Required: id (to specify the type of test case), SoundFile (the clip to be played)
+//      Optional: Title (to differentiate this case by name from other cases)
+[TestCase]
+id 102
+Title MMFTS.PLAY.2 - Play PCM_08_08_m.wav
+SoundFile e:\sounds\PCM_08_08_m.wav
+ErrorRange 0 800 000
+ExpectedDuration 2 000 000
+[End_TestCase]
+
+//Play. Required: id (to specify the type of test case), SoundFile (the clip to be played)
+//      Optional: Title (to differentiate this case by name from other cases)
+[TestCase]
+id 102
+Title MMFTS.PLAY.2 - Play PCM_08_08_m.wav (don't check duration)
+SoundFile e:\sounds\PCM_08_08_m.wav
+#ErrorRange 0 800 000
+#ExpectedDuration 2 000 000
+[End_TestCase]
+
+//Play. Stop and then open and play a second file. Required id, SoundFile (x2)
+//      Optional: Title, Delay (Microseconds)
+[TestCase]
+id 103
+Title MMFTS.PLAY.3 - PlayStop PCM_08_08_m / SOUND24
+SoundFile e:\sounds\secretag.wav
+SoundFile e:\sounds\SOUND24.WAV
+Delay 5000000
+[End_TestCase]
+
+//Play using descriptor based sound. Required: id, SoundDes
+//      Optional: Title
+[TestCase]
+id 104
+Title MMFTS.PLAY.4 - Descriptor SOUND24.WAV
+SoundDes e:\sounds\SOUND24.WAV
+ErrorRange 0 500 000
+ExpectedDuration 1 080 000
+[End_TestCase]
+
+//Play. Stop and then open and play a second descriptor. Required id, SoundDes (x2)
+//      Optional: Title, Delay (Microseconds)
+[TestCase]
+id 105
+Title MMFTS.PLAY.5 - PlayStopDes CLAP / SOUND24
+SoundDes e:\sounds\kissapp.wav
+SoundDes e:\sounds\SOUND24.WAV
+Delay 3000000
+[End_TestCase]
+
+//Play url. Required: id, SoundUrl
+//      Optional: Title, MimeType (default is KNullDesC8), IapId
+#[TestCase]
+#id 106
+#Title MMFTS.PLAY.6 - Url PCM_08_08_m.wav
+#SoundUrl http://www.freewebs.com/tpcconline/wav/texasfight.wav
+#MimeType audio/x-wav
+#IapId -1
+#[End_TestCase]
+
+//Play url. Stop then open another url. Required: id, SoundUrl
+//      Optional: Title, MimeType (KNullDesC8), IapId, Delay, another set of SoundUrl, Mimetype, IapId
+#[TestCase]
+#id 107
+#Title MMFTS.PLAY.7 - Url Stop/Open PCM_08_08_m / CLAP.WAV
+#SoundUrl http://www.freewebs.com/tpcconline/wav/texasfight.wav
+#MimeType audio/x-wav
+#IapId 12
+#Delay 1 500 0
+#SoundUrl http://www.freewebs.com/tpcconline/wav/texasfight.wav
+#MimeType audio/wav
+#IapId 11
+#[End_TestCase]
+
+//Play a file. Pause for a few seconds. Required id, SoundFile
+//      Optional: Title, PauseDelay (Microseconds), PlayDelay (Microseconds).
+//      Note, if the play delay is shorter than the pause delay they'll be swapped
+//      The PauseDelay and PlayDelay represent the amount of time that has passed since the 
+//      clip began playing. So in this example the clip will be paused half a second after it started, 
+//      and then continue playing 1.5 seconds later (this means 2 seconds after it started playing)
+//      
+//      Think about this timeline:
+//      |-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|-------|
+//      Start          0.5s           1 sec          1.5 sec           2 sec           2.5 sec
+//                    Pause                                       Resume Playback
+[TestCase]
+id 108
+Title MMFTS.PLAY.8 - PlayPause kissapp.wav
+SoundFile e:\sounds\kissapp.wav
+PauseDelay 3000000 
+PlayDelay 5000000
+ErrorRange 2 000 000
+[End_TestCase]
+
+//Set Play Position. Required: id, SoundFile
+//      Optional: Title, Position (seconds miliseconds microseconds, added), ErrorRange (seconds miliseconds microseconds, added)
+[TestCase]
+id 109
+Title MMFTS.PLAY.9 - Position kissapp.wav
+SoundFile e:\sounds\kissapp.wav
+Position 2 000 000
+ErrorRange 3 000 000
+[End_TestCase]
+
+//Play and report position. Required: id, SoundFile
+//      Optional: Title, Delay
+[TestCase]
+id 110
+Title MMFTS.PLAY.10 - report position DRUMROLL.wav
+SoundFile e:\sounds\DRUMROLL.wav
+Delay 250000
+[End_TestCase]
+
+//Play and report duration. Required: id, SoundFile
+//      Optional: Title, Delay(Microseconds), Expected duration (seconds miliseconds microseconds)
+[TestCase]
+id 111
+Title MMFTS.PLAY.11 - Report duration SOUND24.WAV
+SoundFile e:\sounds\SOUND24.WAV
+Delay 1500
+ExpectedDuration 1 085 351
+[End_TestCase]
+
+//Play two files with different volumes. Required: id, SoundFile
+//      Optional: Title, SoundFile (second file to play)
+[TestCase]
+id 112
+Title MMFTS.PLAY.12 - Volumes SOUND24 / CLAP
+SoundFile e:\sounds\SOUND24.WAV
+SoundFile e:\sounds\CLAP.WAV
+[End_TestCase]
+
+//Required: id, Title, SoundFile
+//      Optional: Ramp (seconds miliseconds microseconds, added), Delay (Microseconds)
+[TestCase]
+id 113
+Title MMFTS.PLAY.13 - Ramp SOUND24.WAV
+SoundFile e:\sounds\SOUND24.WAV
+RampDuration 0 750
+Delay 2500
+[End_TestCase]
+
+//Metainformation. Required: id, SoundFile
+//      Optional: Title
+[TestCase]
+id 114
+Title MMFTS.PLAY.14 - MetaInfo (Radioboy - Nike)
+SoundFile e:\Sounds\Radioboy-Nike.mp3
+[End_TestCase]
+
+//Metainformation. Required: id, SoundFile
+//      Optional: Title
+#[TestCase]
+#id 114
+#itle MMFTS.PLAY.14 - MetaInfo (canyon.mid)
+#SoundFile e:\Sounds\canyon.mid
+#[End_TestCase]
+
+//Play with window. Required: id, SoundFile
+//      Optional: Title, StartPosition, EndPosition (seconds miliseconds microseconds, added), Delay (Microseconds)
+[TestCase]
+id 115
+Title MMFTS.PLAY.15 - Window
+SoundFile e:\sounds\kissapp.wav
+StartPosition 2 000 000
+EndPosition 4 000 000
+ErrorRange 3 000 000
+Delay 500000
+[End_TestCase]
+
+//Play with window. Required: id, SoundFile
+//      Optional: Title, StartPosition, EndPosition (seconds miliseconds microseconds, added), Delay (Microseconds)
+[TestCase]
+id 116
+Title MMFTS.PLAY.16 - Window Clear
+SoundFile e:\sounds\kissapp.wav
+StartPosition 2 000 000
+EndPosition 4 000 000
+ErrorRange 3 000 000
+Delay 100000
+[End_TestCase]
+
+//Required: id, SoundFile
+//      Optional: Title, RepeatTimes, SilenceDuration, ErrorRange (leave out so that expected duration is not checked)
+[TestCase]
+id 117
+Title MMFTS.PLAY.17 - Repeat PCM_08_08_m
+SoundFile e:\sounds\PCM_08_08_m.wav
+RepeatTimes 3
+SilenceDuration 3 000 000
+ErrorRange 2 0 0
+ExpectedDuration 2 000 000
+[End_TestCase]
+
+//Required: id, SoundFile
+//      Optional: Title, RepeatTimes, SilenceDuration, ErrorRange (leave out so that expected duration is not checked), ExpectedDuration (leave out to use GetDuration())
+[TestCase]
+id 117
+Title MMFTS.PLAY.17 - Repeat PCM_08_08_m (don't check duration)
+SoundFile e:\sounds\PCM_08_08_m.wav
+RepeatTimes 3
+SilenceDuration 3 000 000
+#ErrorRange 0 500 0
+#ExpectedDuration 2 000 000
+[End_TestCase]
+
+//Balance. Required: id, SoundFile
+//      Optional: Title, Balance
+[TestCase]
+id 118
+Title MMFTS.PLAY.18 - balance ULAW_08_08_s.wav
+SoundFile e:\sounds\ULAW_08_08_s.wav
+Balance 90
+[End_TestCase]
+
+//Play two files with different priorities. Required: id, SoundFile
+//      Optional: Title, SoundFile (second file), Priority (either specify two values or none. If only one is specified then the behavior is undefined)
+[TestCase]
+id 119
+Title MMFTS.PLAY.19 - SOUND24.WAV
+SoundFile e:\sounds\SOUND24.WAV
+SoundFile e:\sounds\CLAP.WAV
+Priority 3 
+Priority 23
+
+PriorityPreference 2
+PriorityPreference 1
+[End_TestCase]
+
+
+//******************NEGATIVE TEST CASE******************//
+
+[TestCase]
+id 115
+Title Plugin.AMR.01 - SetPlaybackWindow 10s_AMR_NB_mode7.amr
+SoundFile e:\sounds\amr\10s_AMR_NB_mode7.amr
+NegativeValue 1 
+StartPosition 15 000 000
+EndPosition   35 000 000
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.AMR.02 - SetPlaybackWindow AMR without ext
+SoundFile e:\sounds\amr\10s_AMR_NB_mode7_no_ext
+StartPosition 15 000 000
+EndPosition   35 000 000
+NegativeValue 1 
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 115
+Title Plugin.AMR.03 - SetPlaybackWindow AMR with other ext
+SoundFile e:\sounds\amr\10s_3GP_AMR_NB_12.2kbps.3gp
+StartPosition 15 000 000
+EndPosition   35 000 000
+NegativeValue 1 
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.AWB.04 - SetPlaybackWindow 10s_AMR_WB_23.05kbps.amr
+SoundFile e:\sounds\awb\10s_AMR_WB_23.05kbps.amr
+StartPosition 15 000 000
+EndPosition   35 000 000
+NegativeValue 1 
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.AWB.05 - SetPlaybackWindow AWB without ext
+SoundFile e:\sounds\awb\10s_AMR_WB_23.05kbps_no_ext
+StartPosition 15 000 000
+EndPosition   35 000 000
+NegativeValue 1 
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.AWB.06 - SetPlaybackWindow AWB with other ext
+SoundFile e:\sounds\awb\10s_3GP_AMR_WB_23.05kbps.3gp
+StartPosition 15 000 000
+EndPosition   35 000 000
+NegativeValue 1 
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.MIDI.07 - SetPlaybackWindow sp-midi 10s_SP_MID_Generic.mid
+SoundFile e:\sounds\mid\10s_SP_MID_Generic.mid
+StartPosition 10 000 000
+EndPosition   25 000 000
+NegativeValue 1 
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+
+[TestCase]
+id 115
+Title Plugin.MIDI.08 - SetPlaybackWindow sp-midi without ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_no_ext
+StartPosition 10 000 000
+EndPosition   25 000 000
+NegativeValue 1 
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.MIDI.09 - SetPlaybackWindow sp-midi with other ext
+SoundFile e:\sounds\mid\10s_SP_MID_Generic_other_ext.awb
+StartPosition 10 000 000
+EndPosition   25 000 000
+NegativeValue 1 
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.3GP.3g2.mp4.10 - SetPlaybackWindow mp4 audio
+SoundFile e:\sounds\3gpp\10s_MP4_16kbps_22.05khz_mono.mp4
+StartPosition 10 000 000
+EndPosition   25 000 000
+NegativeValue 1 
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.3GP.3g2.mp4.11 - SetPlaybackWindow 3gpp-aac audio
+SoundFile e:\sounds\3gpp\10s_3GP_AAC+_24kbps_16khz_mono.3gp
+StartPosition 10 000 000
+EndPosition   25 000 000
+NegativeValue 1 
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.3GP.3g2.mp4.12 - SetPlaybackWindow 3gpp-amr audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_NB_mode3.3gp
+StartPosition 15 000 000
+EndPosition   35 000 000
+NegativeValue 1 
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.3GP.3g2.mp4.13 - SetPlaybackWindow 3gpp-awb audio
+SoundFile e:\sounds\3gpp\10s_3GP_AMR_WB_mode0.3gp
+StartPosition 15 000 000
+EndPosition   35 000 000
+NegativeValue 1 
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.3GP.3g2.mp4.14 - SetPlaybackWindow 3gpp2-aac audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AAC_Generic.3g2
+StartPosition 15 000 000
+EndPosition   35 000 000
+NegativeValue 1 
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.3GP.3g2.mp4.15 - SetPlaybackWindow 3gpp2-amr audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AMR_Generic.3g2
+StartPosition 15 000 000
+EndPosition   35 000 000
+NegativeValue 1 
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.3GP.3g2.mp4.16 - SetPlaybackWindow 3gpp2-awb audio
+SoundFile e:\sounds\3gpp2\10s_3GPP2_AWB_Generic.3g2
+StartPosition 15 000 000
+EndPosition   35 000 000
+NegativeValue 1 
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
+[TestCase]
+id 115
+Title Plugin.MP3.17 - SetPlaybackWindow MP3 MPEG1 48KHz 96Kbps
+SoundFile e:\sounds\mp3\SampleRate\10s_MP3_96kbps_48khz_stereo.mp3
+StartPosition 15 000 000
+EndPosition   35 000 000
+NegativeValue 1 
+ErrorRange 3 000 000
+Delay 1000000
+[End_TestCase]
+
--- a/mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioPlaybackTestModule/inc/MmfTsPlay.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioPlaybackTestModule/inc/MmfTsPlay.h	Fri May 28 19:26:28 2010 -0500
@@ -80,7 +80,10 @@
 	_LIT(KTagExpectedDuration, "ExpectedDuration");
 	_LIT(KTagWindowStart, "StartPosition");
 	_LIT(KTagWindowEnd, "EndPosition");
+		
 
+	_LIT(KNegativeTag, "NegativeValue");
+	
 	_LIT(KTagMime, "MimeType");
 	_LIT(KTagIapId, "IapId");
 
--- a/mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioPlaybackTestModule/inc/SimpleSoundPlayer.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioPlaybackTestModule/inc/SimpleSoundPlayer.h	Fri May 28 19:26:28 2010 -0500
@@ -204,6 +204,8 @@
 	TBool playVolume;
 	TBool metaInfo;
 	TBool playWindow;
+	
+	TBool iNegativePlayBackWindow;
 	TBool clearWindow;
 	TBool setBalance;
 	TBool iDontPlayAudioClip; // Binh
--- a/mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioPlaybackTestModule/src/MmfTsPlay_core.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioPlaybackTestModule/src/MmfTsPlay_core.cpp	Fri May 28 19:26:28 2010 -0500
@@ -1934,7 +1934,7 @@
 
 	if ( !section->GetLine(KTagSoundFile, FileNamePtr, ENoTag) )
 		{
-		TBool UsingStartDefault, UsingEndDefault, UsingDefaultReportDelay;
+		TBool UsingStartDefault, UsingEndDefault, UsingDefaultReportDelay ,UsingNegativeTestCaseDefault;
 		TFileName FileName = FileNamePtr;
 	//	TInt WindowError;
 
@@ -1956,6 +1956,14 @@
 
 		ReportDelay = GetTimeIntervalL(section, KTagDelay, UsingDefaultReportDelay, (TTimeIntervalMicroSeconds32)KDefaultReportDelay);
 		iLogger->Log(_L("Setting delays to report position to [%d]"), ReportDelay.Int());
+		
+	
+		TInt NegativeTestCaseValue = GetIntL(section, KNegativeTag, UsingNegativeTestCaseDefault,0);
+		
+		if  (NegativeTestCaseValue == 1)
+		    {
+		     sndPlayer->iNegativePlayBackWindow = true;
+		    }
 
 		CParameters *reportParams = new(ELeave)CParameters(CSimpleSoundPlayer::KPlayerActionReportPosition);
 		CleanupStack::PushL(reportParams);
@@ -1975,8 +1983,14 @@
 
 		TTimeIntervalMicroSeconds ExpectedDuration = TTimeIntervalMicroSeconds(I64INT(EndPosition.Int64()) - I64INT(StartPosition.Int64()));
 		iLogger->Log(_L("ExpectedDuration: %d") ,ExpectedDuration.Int64() );
-
-		if (  Abs(ExpectedDuration.Int64() - PerceivedDuration.Int64()) > ErrorRange.Int64() )
+		
+	    if((ExpectedDuration > (sndPlayer->GetDuration())) && (sndPlayer->iNegativePlayBackWindow)) 
+		   {
+		   iLogger->Log(_L("ExpectedDuration is greater than the actual duration of the file"));
+		   iLogger->Log(_L("Negative Test was successful"));		   
+		   aResult.iResultDes.Copy(KTestCaseResultSuccess());
+       } 
+	    else if (  Abs(ExpectedDuration.Int64() - PerceivedDuration.Int64()) > ErrorRange.Int64() )
 			{	//Durations too different
 			iLogger->Log(_L("The clips duration is too different from the actual duration + position") );
 			aResult.iResult = KErrExpectedValueDifferent;
--- a/mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioPlaybackTestModule/src/SimpleSoundPlayer.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmfenh/advancedaudiocontroller/tsrc/advancedaudiocontrollertestmodule/AudioPlaybackTestModule/src/SimpleSoundPlayer.cpp	Fri May 28 19:26:28 2010 -0500
@@ -448,12 +448,14 @@
 			}
 
 
-
+			
+			TInt pwErr =0;		            
+			
 			if (playWindow)
 			{
 				iLogger.Log(_L("SetPlayWindow, start=[%d]"),startPosition.Int64());
 				iLogger.Log(_L("SetPlayWindow, end=[%d]"), endPosition.Int64() );
-				TInt pwErr = iMdaPlayer->SetPlayWindow(startPosition, endPosition);
+				pwErr = iMdaPlayer->SetPlayWindow(startPosition, endPosition);
 				iLogger.Log(_L("SetPlayWindow err=[%d]"), pwErr);
 				if (clearWindow)
 				{
@@ -462,7 +464,11 @@
 
 				}
 			}
-
+			if (iNegativePlayBackWindow && pwErr ) 
+			{
+			   iLogger.Log(_L("SetPlayWindow Expected Err for negative test case"));
+			   CActiveScheduler::Stop(); 
+			}
 			if (setBalance)
 			{
 				SetBalance(aBalance);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/group/bld.inf	Fri May 28 19:26:28 2010 -0500
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+* 
+* Description:
+*
+*/
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_TESTMMPFILES
+#include "../openmaxaltestmodule/group/bld.inf"
+
+//  End of File
--- a/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_common.cfg	Fri May 14 18:19:45 2010 -0500
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_common.cfg	Fri May 28 19:26:28 2010 -0500
@@ -52,6 +52,7 @@
 MO_ENGINE                           1
 MO_PLAYER                           4
 MO_RECORDER                         5
+MO_RADIO			    6											6
 
 XA_BOOLEAN_FALSE                    0
 XA_BOOLEAN_TRUE                     1
@@ -107,6 +108,7 @@
 XA_PLAYSTATE_STOPPED                1
 XA_PLAYSTATE_PAUSED                 2
 XA_PLAYSTATE_PLAYING                3
+XA_IODEVICE_RADIO		    5
 
 WinPtX                              0
 WinPtY                              300
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_mp_streaming.cfg	Fri May 28 19:26:28 2010 -0500
@@ -0,0 +1,148 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+
+[Test]
+title 22.1 PlayItf RTSP
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_SetDataLocator 1 rtsp:\/\/10.48.2.51/Copyright_Free_Test_Content/Clips/Video/3GP/176x144/h263/h263_176x144_15fps_384kbps_AAC-LC_128kbps_mono_44.1kHz.3gp
+ALImpl al_SetDataFormat 1 video/3gp 17
+ALImpl al_SetDataSource 1 1 1
+ALImpl al_SetDataSink 3 6 1
+ALImpl al_CreateWindow WinPtX WinPtY WinTopLeft WinTopRight WinBotLeft WinBotRight
+ALImpl al_SetDataSink 5 3 2
+ALImpl al_engitf_CreateMediaPlayer 0
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_PLAYER XA_IID_PLAY
+ALImpl al_playitf_SetPlayState XA_PLAYSTATE_PLAYING
+ALImpl al_playitf_GetPlayState XA_PLAYSTATE_PLAYING
+pause 20000
+ALImpl al_playitf_SetPlayState XA_PLAYSTATE_STOPPED
+ALImpl al_playitf_GetPlayState XA_PLAYSTATE_STOPPED
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+ALImpl al_DeleteWindow
+delete ALImpl
+[Endtest]
+
+[Test]
+title 22.2 PlayItf RTSPU
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_SetDataLocator 1 rtsp:\/\/10.48.2.56/WMTest/192k_WMV9_VBR_CIF_WMA9_60fps.wmv
+ALImpl al_SetDataFormat 1 audio/3gp 17
+ALImpl al_SetDataSource 1 1 1
+ALImpl al_SetDataSink 3 6 1
+ALImpl al_CreateWindow WinPtX WinPtY WinTopLeft WinTopRight WinBotLeft WinBotRight
+ALImpl al_SetDataSink 5 3 2
+ALImpl al_engitf_CreateMediaPlayer 0
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_PLAYER XA_IID_PLAY
+ALImpl al_playitf_SetPlayState XA_PLAYSTATE_PLAYING
+ALImpl al_playitf_GetPlayState XA_PLAYSTATE_PLAYING
+pause 40000
+ALImpl al_playitf_SetPlayState XA_PLAYSTATE_STOPPED
+ALImpl al_playitf_GetPlayState XA_PLAYSTATE_STOPPED
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+ALImpl al_DeleteWindow
+delete ALImpl
+[Endtest]
+
+[Test]
+title 22.3 PlayItf RTSPT
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_SetDataLocator 1 rtspt:\/\/10.48.2.56/WMTest/128k_WMV9_VBR_QCIF_WMA9_30fps.wmv
+ALImpl al_SetDataFormat 1 audio/3gp 17
+ALImpl al_SetDataSource 1 1 1
+ALImpl al_SetDataSink 3 6 1
+ALImpl al_CreateWindow WinPtX WinPtY WinTopLeft WinTopRight WinBotLeft WinBotRight
+ALImpl al_SetDataSink 5 3 2
+ALImpl al_engitf_CreateMediaPlayer 0
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_PLAYER XA_IID_PLAY
+ALImpl al_playitf_SetPlayState XA_PLAYSTATE_PLAYING
+ALImpl al_playitf_GetPlayState XA_PLAYSTATE_PLAYING
+pause 20000
+ALImpl al_playitf_SetPlayState XA_PLAYSTATE_STOPPED
+ALImpl al_playitf_GetPlayState XA_PLAYSTATE_STOPPED
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+ALImpl al_DeleteWindow
+delete ALImpl
+[Endtest]
+
+[Test]
+title 22.4 PlayItf MMS
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_SetDataLocator 1 mms:\/\/10.48.2.56/WMTest/128k_WMV9_VBR_QCIF_WMA9_30fps.wmv
+ALImpl al_SetDataFormat 1 audio/3gp 17
+ALImpl al_SetDataSource 1 1 1
+ALImpl al_SetDataSink 3 6 1
+ALImpl al_CreateWindow WinPtX WinPtY WinTopLeft WinTopRight WinBotLeft WinBotRight
+ALImpl al_SetDataSink 5 3 2
+ALImpl al_engitf_CreateMediaPlayer 0
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_PLAYER XA_IID_PLAY
+ALImpl al_playitf_SetPlayState XA_PLAYSTATE_PLAYING
+ALImpl al_playitf_GetPlayState XA_PLAYSTATE_PLAYING
+pause 20000
+ALImpl al_playitf_SetPlayState XA_PLAYSTATE_STOPPED
+ALImpl al_playitf_GetPlayState XA_PLAYSTATE_STOPPED
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+ALImpl al_DeleteWindow
+delete ALImpl
+[Endtest]
+
+
+[Test]
+title 22.5 PlayItf HTTP
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_SetDataLocator 1 http:\/\/10.48.2.51/Copyright_Free_Test_Content/Clips/Video/3GP/176x144/mpeg4/mpeg4_176x144_15fps_384kbps_AAC-LC_128kbps_mono_44.1kHz.3gp
+ALImpl al_SetDataFormat 1 audio/3gp 17
+ALImpl al_SetDataSource 1 1 1
+ALImpl al_SetDataSink 3 6 1
+ALImpl al_CreateWindow WinPtX WinPtY WinTopLeft WinTopRight WinBotLeft WinBotRight
+ALImpl al_SetDataSink 5 3 2
+ALImpl al_engitf_CreateMediaPlayer 0
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_PLAYER XA_IID_PLAY
+ALImpl al_playitf_SetPlayState XA_PLAYSTATE_PLAYING
+ALImpl al_playitf_GetPlayState XA_PLAYSTATE_PLAYING
+pause 20000
+ALImpl al_playitf_SetPlayState XA_PLAYSTATE_STOPPED
+ALImpl al_playitf_GetPlayState XA_PLAYSTATE_STOPPED
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+ALImpl al_DeleteWindow
+delete ALImpl
+[Endtest]
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/conf/openmaxaltestmodule_radioitf.cfg	Fri May 28 19:26:28 2010 -0500
@@ -0,0 +1,729 @@
+[Test]
+title 21.1 RadioItf Start Radio
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+ALImpl al_engitf_CreateMediaPlayer 0 
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+request Event_XA_PLAYEVENT_HEADMOVING
+ALImpl al_playitf_SetPlayState XA_PLAYSTATE_PLAYING
+wait Event_XA_PLAYEVENT_HEADMOVING
+release Event_XA_PLAYEVENT_HEADMOVING
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest]  
+
+[Test]
+title 21.2 RadioItf Set Freq 106.0 MHz
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+
+ALImpl al_engitf_CreateMediaPlayer 0 
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+request Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+ALImpl al_radioitf_SetFrequency 106000000
+wait Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+release Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 21.3 RadioItf Get Freq 
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+
+ALImpl al_engitf_CreateMediaPlayer 0 
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+request Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+ALImpl al_radioitf_SetFrequency 106000000
+wait Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+release Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+
+ALImpl al_radioitf_GetFrequency 106000000
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 21.4 RadioItf Set Freq Range
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+
+ALImpl al_engitf_CreateMediaPlayer 0 
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+request Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED
+ALImpl al_radioitf_SetFreqRange 1 // EFmRangeJapan
+wait Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED
+release Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED
+
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 21.5 RadioItf Get Freq Range
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+
+ALImpl al_engitf_CreateMediaPlayer 0 
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+request Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED
+ALImpl al_radioitf_SetFreqRange 1 // EFmRangeJapan
+wait Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED
+release Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED
+
+ALImpl al_radioitf_GetFreqRange 1 // EFmRangeJapan
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 21.6 RadioItf Get FR Properties 
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+
+ALImpl al_engitf_CreateMediaPlayer 0 
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+request Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED
+ALImpl al_radioitf_SetFreqRange 0 // EFmRangeEuroAmerica
+wait Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED
+release Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED
+
+ALImpl al_radioitf_GetFreqRangeProperties 0 87500000 108000000 20 // range expected: min freq, max freq, freq interval
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 21.7 RadioItf Is Freq Range Supported
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+
+ALImpl al_engitf_CreateMediaPlayer 0 
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+ALImpl al_radioitf_IsFreqRangeSupported 1
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 21.8 RadioItf Set Squelch
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+
+ALImpl al_engitf_CreateMediaPlayer 0 
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+allownextresult XA_RESULT_FEATURE_UNSUPPORTED
+ALImpl al_radioitf_SetSquelch 1
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 21.9 RadioItf Get Squelch
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+
+ALImpl al_engitf_CreateMediaPlayer 0 
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+allownextresult XA_RESULT_FEATURE_UNSUPPORTED
+ALImpl al_radioitf_GetSquelch 1
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 21.10 RadioItfSetStereoModeMONO
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+
+ALImpl al_engitf_CreateMediaPlayer 0 
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+request Event_XA_PLAYEVENT_HEADMOVING
+ALImpl al_playitf_SetPlayState XA_PLAYSTATE_PLAYING
+wait Event_XA_PLAYEVENT_HEADMOVING
+release Event_XA_PLAYEVENT_HEADMOVING
+
+ALImpl al_radioitf_SetStereoMode 0
+ALImpl al_radioitf_GetStereoMode 0
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 21.11 RadioItf SetStereoModeSTEREO
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+
+ALImpl al_engitf_CreateMediaPlayer 0 
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+request Event_XA_PLAYEVENT_HEADMOVING
+ALImpl al_playitf_SetPlayState XA_PLAYSTATE_PLAYING
+wait Event_XA_PLAYEVENT_HEADMOVING
+release Event_XA_PLAYEVENT_HEADMOVING
+
+ALImpl al_radioitf_SetStereoMode 1
+ALImpl al_radioitf_GetStereoMode 1
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 21.12 RadioItf SetStereoModeAUTO
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+
+ALImpl al_engitf_CreateMediaPlayer 0 
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+request Event_XA_PLAYEVENT_HEADMOVING
+ALImpl al_playitf_SetPlayState XA_PLAYSTATE_PLAYING
+wait Event_XA_PLAYEVENT_HEADMOVING
+release Event_XA_PLAYEVENT_HEADMOVING
+
+ALImpl al_radioitf_SetStereoMode 2
+ALImpl al_radioitf_GetStereoMode 2
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest] 
+[Test]
+title 21.13 RadioItf Get Signal Strength
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+
+ALImpl al_engitf_CreateMediaPlayer 0 
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+request Event_XA_PLAYEVENT_HEADMOVING
+ALImpl al_playitf_SetPlayState XA_PLAYSTATE_PLAYING
+wait Event_XA_PLAYEVENT_HEADMOVING
+release Event_XA_PLAYEVENT_HEADMOVING
+
+ALImpl al_radioitf_GetSignalStrength
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 21.14 RadioItf Seek
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+
+ALImpl al_engitf_CreateMediaPlayer 0 
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+request Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+ALImpl al_radioitf_SetFrequency 103700000
+wait Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+release Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+
+request Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+ALImpl al_radioitf_SetFrequency 106000000
+wait Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+release Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+
+request Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+ALImpl al_radioitf_SetFrequency 090900000
+wait Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+release Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+
+request Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+ALImpl al_radioitf_SetFrequency 096100000
+wait Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+release Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+
+request Event_XA_RADIO_EVENT_SEEK_COMPLETED
+ALImpl al_radioitf_Seek 1
+wait Event_XA_RADIO_EVENT_SEEK_COMPLETED
+release Event_XA_RADIO_EVENT_SEEK_COMPLETED
+
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 21.15 RadioItf Stop Seeking
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+
+ALImpl al_engitf_CreateMediaPlayer 0 
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+request Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+ALImpl al_radioitf_SetFrequency 103700000
+wait Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+release Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+
+request Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+ALImpl al_radioitf_SetFrequency 106000000
+wait Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+release Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+
+request Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+ALImpl al_radioitf_SetFrequency 090900000
+wait Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+release Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+
+request Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+ALImpl al_radioitf_SetFrequency 096100000
+wait Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+release Event_XA_RADIO_EVENT_FREQUENCY_CHANGED
+
+ALImpl al_radioitf_Seek 1
+ALImpl al_radioitf_StopSeeking
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest]
+
+[Test]
+title 21.16 RadioItf Cancel Set Freq
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+
+ALImpl al_engitf_CreateMediaPlayer 0 
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+ALImpl al_radioitf_CancelSetFrequency
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest]  
+
+[Test]
+title 21.17 RadioItf Set Volume
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+ALImpl al_engitf_CreateMediaPlayer 2 XA_IID_NOKIALINEARVOLUME XA_IID_NOKIAVOLUMEEXT
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+ALImpl al_objitf_GetInterface MO_PLAYER XA_IID_NOKIAVOLUMEEXT
+ALImpl al_objitf_GetInterface MO_PLAYER XA_IID_NOKIALINEARVOLUME
+ALImpl al_nokiavolumeextitf_RegisterVolumeCallback
+ALImpl al_nokialinearvolumeitf_RegisterVolumeCallback
+
+ALImpl al_nokialinearvolumeitf_SetGetVolumeLevel 20
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 21.18 RadioItf Get Step Count
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+ALImpl al_engitf_CreateMediaPlayer 2 XA_IID_NOKIALINEARVOLUME XA_IID_NOKIAVOLUMEEXT
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+ALImpl al_objitf_GetInterface MO_PLAYER XA_IID_NOKIAVOLUMEEXT
+ALImpl al_objitf_GetInterface MO_PLAYER XA_IID_NOKIALINEARVOLUME
+ALImpl al_nokiavolumeextitf_RegisterVolumeCallback
+ALImpl al_nokialinearvolumeitf_RegisterVolumeCallback
+
+ALImpl al_nokialinearvolumeitf_GetStepCount
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 21.19 RadioItf SetMute On
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+ALImpl al_engitf_CreateMediaPlayer 2 XA_IID_NOKIALINEARVOLUME XA_IID_NOKIAVOLUMEEXT
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+ALImpl al_objitf_GetInterface MO_PLAYER XA_IID_NOKIAVOLUMEEXT
+ALImpl al_objitf_GetInterface MO_PLAYER XA_IID_NOKIALINEARVOLUME
+ALImpl al_nokiavolumeextitf_RegisterVolumeCallback
+ALImpl al_nokialinearvolumeitf_RegisterVolumeCallback
+
+ALImpl al_nokiavolumeextitf_SetMute 1
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 21.20 RadioItf SetMute Off
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+ALImpl al_engitf_CreateMediaPlayer 2 XA_IID_NOKIALINEARVOLUME XA_IID_NOKIAVOLUMEEXT
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+ALImpl al_objitf_GetInterface MO_PLAYER XA_IID_NOKIAVOLUMEEXT
+ALImpl al_objitf_GetInterface MO_PLAYER XA_IID_NOKIALINEARVOLUME
+ALImpl al_nokiavolumeextitf_RegisterVolumeCallback
+ALImpl al_nokialinearvolumeitf_RegisterVolumeCallback
+
+ALImpl al_nokiavolumeextitf_SetMute 0
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest] 
+
+[Test]
+title 21.21 RadioItf Stop Radio
+create openmaxaltestmodule ALImpl
+ALImpl al_createEngine 1 1 0 0
+ALImpl al_objitf_Realize MO_ENGINE XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_ENGINE XA_IID_ENGINE
+ALImpl al_engitf_CreateRadioDevice 0
+ALImpl al_objitf_Realize MO_RADIO XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface MO_RADIO XA_IID_RADIO
+ALImpl al_radioitf_RegisterRadioCallback  
+
+ALImpl al_SetDataLocator 3 5 0 1
+ALImpl al_SetDataSource 3 0 1
+ALImpl al_SetDataSink 3 6 1
+ALImpl al_engitf_CreateMediaPlayer 0 
+
+ALImpl al_objitf_Realize MO_PLAYER XA_BOOLEAN_FALSE
+ALImpl al_objitf_GetInterface 4 XA_IID_PLAY
+ALImpl al_playitf_RegisterCallback
+
+request Event_XA_PLAYEVENT_HEADMOVING
+ALImpl al_playitf_SetPlayState XA_PLAYSTATE_PLAYING
+wait Event_XA_PLAYEVENT_HEADMOVING
+release Event_XA_PLAYEVENT_HEADMOVING
+
+request Event_XA_PLAYEVENT_HEADSTALLED
+ALImpl al_playitf_SetPlayState XA_PLAYSTATE_STOPPED
+wait Event_XA_PLAYEVENT_HEADSTALLED
+release Event_XA_PLAYEVENT_HEADSTALLED
+
+ALImpl al_objitf_Destroy MO_RADIO
+ALImpl al_objitf_Destroy MO_PLAYER
+ALImpl al_objitf_Destroy MO_ENGINE
+delete ALImpl
+[Endtest]        
\ No newline at end of file
--- a/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/group/bld.inf	Fri May 14 18:19:45 2010 -0500
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/group/bld.inf	Fri May 28 19:26:28 2010 -0500
@@ -43,6 +43,7 @@
 ../conf/openmaxaltestmodule_mp_preemption.cfg       /epoc32/winscw/c/testframework/openmaxaltestmodule_mp_preemption.cfg
 ../conf/openmaxaltestmodule_mo_mdextractionitf.cfg  /epoc32/winscw/c/testframework/openmaxaltestmodule_mo_mdextractionitf.cfg
 ../conf/openmaxaltestmodule_mp_mdextractionitf.cfg  /epoc32/winscw/c/testframework/openmaxaltestmodule_mp_mdextractionitf.cfg
+../conf/openmaxaltestmodule_radioitf.cfg 	    /epoc32/winscw/c/testframework/openmaxaltestmodule_radioitf.cfg
 ../data/c/omxaltestdata/test.wav                    /epoc32/winscw/c/testing/data/omxaltestdata/test.wav
 ../data/c/omxaltestdata/test.mp3                    /epoc32/winscw/c/testing/data/omxaltestdata/test.mp3
 ../data/c/omxaltestdata/test.3gp                    /epoc32/winscw/c/testing/data/omxaltestdata/test.3gp
--- a/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/group/openmaxaltestmodule.mmp	Fri May 14 18:19:45 2010 -0500
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/group/openmaxaltestmodule.mmp	Fri May 28 19:26:28 2010 -0500
@@ -79,6 +79,9 @@
 SOURCEPATH      ../src/metadata
 SOURCE		openmaxalmetadataextractionitftests.cpp
 
+SOURCEPATH      ../src/radio
+SOURCE 		openmaxalradioitftests.cpp
+
 LIBRARY         euser.lib
 LIBRARY			libglib.lib
 LIBRARY         stiftestinterface.lib
--- a/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/group/openmaxaltestmodule.pkg	Fri May 14 18:19:45 2010 -0500
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/group/openmaxaltestmodule.pkg	Fri May 28 19:26:28 2010 -0500
@@ -65,12 +65,14 @@
 "..\conf\openmaxaltestmodule_mp_objectitf.cfg"                      -   "!:\testframework\openmaxaltestmodule_mp_objectitf.cfg"
 "..\conf\openmaxaltestmodule_mp_playitf.cfg"                        -   "!:\testframework\openmaxaltestmodule_mp_playitf.cfg"
 "..\conf\openmaxaltestmodule_mp_seekitf.cfg"                        -   "!:\testframework\openmaxaltestmodule_mp_seekitf.cfg"
-"..\conf\openmaxaltestmodule_common_dynsrcitf.cfg"                      -   "!:\testframework\openmaxaltestmodule_common_dynsrcitf.cfg"
+"..\conf\openmaxaltestmodule_common_dynsrcitf.cfg"                  -   "!:\testframework\openmaxaltestmodule_common_dynsrcitf.cfg"
 "..\conf\openmaxaltestmodule_mp_strminfoitf.cfg"                    -   "!:\testframework\openmaxaltestmodule_mp_strminfoitf.cfg"
 "..\conf\openmaxaltestmodule_mp_preemption.cfg"                     -   "!:\testframework\openmaxaltestmodule_mp_preemption.cfg"
 "..\conf\openmaxaltestmodule_mo_mdextractionitf.cfg"                -   "!:\testframework\openmaxaltestmodule_mo_mdextractionitf.cfg"
 "..\conf\openmaxaltestmodule_mp_mdextractionitf.cfg"                -   "!:\testframework\openmaxaltestmodule_mp_mdextractionitf.cfg"
 "..\conf\openmaxaltestmodule_mp_variousformats.cfg"                 -   "!:\testframework\openmaxaltestmodule_mp_variousformats.cfg"
+"..\conf\openmaxaltestmodule_radioitf.cfg"                          -   "!:\testframework\openmaxaltestmodule_radioitf.cfg"
+"..\conf\openmaxaltestmodule_mp_streaming.cfg"                      -   "!:\testframework\openmaxaltestmodule_mp_streaming.cfg"
 ;data files
 "..\data\c\omxaltestdata\test.wav"                                  -   "!:\testing\data\omxaltestdata\test.wav"
 "..\data\c\omxaltestdata\test.mp3"                                  -  "!:\testing\data\omxaltestdata\test.mp3"
--- a/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/inc/openmaxaltestmodule.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/inc/openmaxaltestmodule.h	Fri May 28 19:26:28 2010 -0500
@@ -98,6 +98,7 @@
         virtual ~COpenMAXALTestModule();
 
         virtual void HandlePlayItfCallback( XAPlayItf caller, XAuint32 event );
+        virtual void HandleRadioItfCallback(XARadioItf caller, XAuint32 event );
         virtual void HandleObjectCallback(XAObjectItf caller,XAuint32 event,
                                 XAresult result,XAuint32 param, void * pInterface);
      
@@ -354,6 +355,21 @@
         
         virtual TInt al_dynsrcitf_SetSource( CStifItemParser& aItem );
         
+        virtual TInt al_radioitf_SetFreqRange(CStifItemParser& aItem );
+        virtual TInt al_radioitf_GetFreqRange(CStifItemParser& aItem );
+        virtual TInt al_radioitf_IsFreqRangeSupported(CStifItemParser& aItem );
+        virtual TInt al_radioitf_GetFreqRangeProperties(CStifItemParser& aItem );
+        virtual TInt al_radioitf_SetFrequency(CStifItemParser& aItem );
+        virtual TInt al_radioitf_CancelSetFrequency(CStifItemParser& aItem );
+        virtual TInt al_radioitf_GetFrequency(CStifItemParser& aItem );
+        virtual TInt al_radioitf_SetSquelch(CStifItemParser& aItem );
+        virtual TInt al_radioitf_GetSquelch(CStifItemParser& aItem );
+        virtual TInt al_radioitf_SetStereoMode(CStifItemParser& aItem );
+        virtual TInt al_radioitf_GetStereoMode(CStifItemParser& aItem );
+        virtual TInt al_radioitf_GetSignalStrength(CStifItemParser& aItem );
+        virtual TInt al_radioitf_Seek(CStifItemParser& aItem );
+        virtual TInt al_radioitf_StopSeeking(CStifItemParser& aItem ); 
+       	virtual TInt al_radioitf_RegisterRadioCallback(CStifItemParser& aItem ); 
         virtual TInt al_strminfoitf_QueryMediaContainerInformation( CStifItemParser& aItem );
         virtual TInt al_strminfoitf_QueryStreamType( CStifItemParser& aItem );
         virtual TInt al_strminfoitf_QueryStreamInformation( CStifItemParser& aItem );
@@ -387,6 +403,7 @@
 
         virtual TInt al_nokialinearvolumeitf_SetVolumeLevel( CStifItemParser& aItem );
         virtual TInt al_nokialinearvolumeitf_GetVolumeLevel( CStifItemParser& aItem );
+        virtual TInt al_nokialinearvolumeitf_SetGetVolumeLevel( CStifItemParser& aItem );        
         virtual TInt al_nokialinearvolumeitf_GetStepCount( CStifItemParser& aItem );
         virtual TInt al_nokialinearvolumeitf_RegisterVolumeCallback( CStifItemParser& aItem );
         virtual TInt al_nokialinearvolumeitf_SetCallbackEventsMask( CStifItemParser& aItem );
@@ -467,6 +484,7 @@
 
         XAPlayItf m_PlayItf;
         XASeekItf m_SeekItf;
+        XARadioItf m_RadioItf;
         XADynamicSourceItf m_DynSrcItf;
         
         XAVolumeItf m_VolumeItf;
--- a/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/init/testframework.ini	Fri May 14 18:19:45 2010 -0500
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/init/testframework.ini	Fri May 28 19:26:28 2010 -0500
@@ -131,6 +131,8 @@
 TestCaseFile= c:\testframework\openmaxaltestmodule_mp_mdextractionitf.cfg
 TestCaseFile= c:\testframework\openmaxaltestmodule_mo.cfg
 #TestCaseFile= c:\testframework\openmaxaltestmodule_mp_variousformats.cfg
+TestCaseFile= c:\testframework\openmaxaltestmodule_radioitf.cfg
+TestCaseFile= c:\testframework\openmaxaltestmodule_mp_streaming.cfg
 [End_Module]
 
 
--- a/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxalnokialinearvolumeitftests.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxalnokialinearvolumeitftests.cpp	Fri May 28 19:26:28 2010 -0500
@@ -98,6 +98,40 @@
     return status;
     }
     
+TInt COpenMAXALTestModule::al_nokialinearvolumeitf_SetGetVolumeLevel( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt volume(0);
+    XAuint32 alvol;
+    XAuint32 getVol(0);
+    status = aItem.GetNextInt(volume);
+    RET_ERR_IF_ERR(status);
+    XAuint32 expectedVol = volume;
+    
+    if(m_NokiaLinearVolumeItf)
+        {
+        alvol = volume;
+        status = (*m_NokiaLinearVolumeItf)->SetVolumeLevel(m_NokiaLinearVolumeItf, &alvol);
+        if (status != KErrNone)
+        {
+        	return status;
+        }
+        status = (*m_NokiaLinearVolumeItf)->GetVolumeLevel(m_NokiaLinearVolumeItf, &getVol);
+        if (status != KErrNone)
+        {
+        	return status;
+        } 
+        if (getVol != expectedVol) 
+        	status = KErrCompletion;     
+        }
+    else
+        {
+        return KErrNotFound;
+        }
+    
+    return status;
+    }    
+    
 TInt COpenMAXALTestModule::al_nokialinearvolumeitf_GetVolumeLevel( CStifItemParser& /*aItem*/ )
     {
     TInt status(KErrNone);
--- a/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxaltestmoduleblocks.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/common/openmaxaltestmoduleblocks.cpp	Fri May 28 19:26:28 2010 -0500
@@ -245,6 +245,23 @@
         ENTRY( "al_dynsrcitf_SetSource", COpenMAXALTestModule::al_dynsrcitf_SetSource ),
         /*DynamicSourceItf ends*/
         
+        /*RadioItf begins*/
+        ENTRY( "al_radioitf_SetFreqRange", COpenMAXALTestModule::al_radioitf_SetFreqRange ),    
+        ENTRY( "al_radioitf_GetFreqRange", COpenMAXALTestModule::al_radioitf_GetFreqRange ),    
+        ENTRY( "al_radioitf_IsFreqRangeSupported", COpenMAXALTestModule::al_radioitf_IsFreqRangeSupported ),    
+        ENTRY( "al_radioitf_GetFreqRangeProperties", COpenMAXALTestModule::al_radioitf_GetFreqRangeProperties ),    
+        ENTRY( "al_radioitf_SetFrequency", COpenMAXALTestModule::al_radioitf_SetFrequency ),            	        	        	        	
+        ENTRY( "al_radioitf_CancelSetFrequency", COpenMAXALTestModule::al_radioitf_CancelSetFrequency ),    
+        ENTRY( "al_radioitf_GetFrequency", COpenMAXALTestModule::al_radioitf_GetFrequency ),    
+        ENTRY( "al_radioitf_SetSquelch", COpenMAXALTestModule::al_radioitf_SetSquelch ),    
+        ENTRY( "al_radioitf_GetSquelch", COpenMAXALTestModule::al_radioitf_GetSquelch ),    
+        ENTRY( "al_radioitf_SetStereoMode", COpenMAXALTestModule::al_radioitf_SetStereoMode ),    
+        ENTRY( "al_radioitf_GetStereoMode", COpenMAXALTestModule::al_radioitf_GetStereoMode ),    
+        ENTRY( "al_radioitf_GetSignalStrength", COpenMAXALTestModule::al_radioitf_GetSignalStrength ),    
+        ENTRY( "al_radioitf_Seek", COpenMAXALTestModule::al_radioitf_Seek ),
+        ENTRY( "al_radioitf_StopSeeking", COpenMAXALTestModule::al_radioitf_StopSeeking ),  
+        ENTRY( "al_radioitf_RegisterRadioCallback", COpenMAXALTestModule::al_radioitf_RegisterRadioCallback ),        	        	            	        	        	        	        	        	        	        	
+        /*RadioItf ends*/       	    
         /*StreamInformationItf begins*/
         ENTRY( "al_strminfoitf_QueryMediaContainerInformation", COpenMAXALTestModule::al_strminfoitf_QueryMediaContainerInformation ),
         ENTRY( "al_strminfoitf_QueryStreamType", COpenMAXALTestModule::al_strminfoitf_QueryStreamType ),
@@ -285,6 +302,7 @@
         /*NokiaLinearVolumeItf begins*/
         ENTRY( "al_nokialinearvolumeitf_SetVolumeLevel", COpenMAXALTestModule::al_nokialinearvolumeitf_SetVolumeLevel ),
         ENTRY( "al_nokialinearvolumeitf_GetVolumeLevel", COpenMAXALTestModule::al_nokialinearvolumeitf_GetVolumeLevel ),
+		ENTRY( "al_nokialinearvolumeitf_SetGetVolumeLevel", COpenMAXALTestModule::al_nokialinearvolumeitf_SetGetVolumeLevel ),        	
         ENTRY( "al_nokialinearvolumeitf_GetStepCount", COpenMAXALTestModule::al_nokialinearvolumeitf_GetStepCount ),
         ENTRY( "al_nokialinearvolumeitf_RegisterVolumeCallback", COpenMAXALTestModule::al_nokialinearvolumeitf_RegisterVolumeCallback ),
         ENTRY( "al_nokialinearvolumeitf_SetCallbackEventsMask", COpenMAXALTestModule::al_nokialinearvolumeitf_SetCallbackEventsMask ),
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/src/radio/openmaxalradioitftests.cpp	Fri May 28 19:26:28 2010 -0500
@@ -0,0 +1,462 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+* 
+* Description: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifTestInterface.h>
+#include <StifTestEventInterface.h>
+#include "openmaxaltestmodule.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+void RadioItfCallback(XARadioItf caller, 
+void* pContext, 
+XAuint32 event,
+XAuint32 eventIntData,
+XAboolean eventBooleanData);
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+TInt COpenMAXALTestModule::al_radioitf_SetFreqRange( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt freqRange(0);
+    status = aItem.GetNextInt(freqRange);
+    RET_ERR_IF_ERR(status);
+
+    if(m_RadioItf)
+        {
+        status = (*m_RadioItf)->SetFreqRange(
+                m_RadioItf, freqRange);              
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_radioitf_GetFreqRange( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    XAuint8 freqRange;
+		TInt expectedRange;   
+    status = aItem.GetNextInt(expectedRange);
+    RET_ERR_IF_ERR(status);
+
+    if (m_RadioItf)
+        {
+        status = (*m_RadioItf)->GetFreqRange(
+                m_RadioItf, &freqRange);              
+        if (!status)
+            {
+            if (freqRange != (TInt)expectedRange)
+                {
+                status = KErrCompletion;
+                }
+            }
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_radioitf_IsFreqRangeSupported( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt freqRange;  
+    XAboolean isSupported;
+    status = aItem.GetNextInt(freqRange);    
+    if (m_RadioItf)
+        {
+        status = (*m_RadioItf)->IsFreqRangeSupported(
+                m_RadioItf, (XAuint8)freqRange, &isSupported);  
+        if (!isSupported)   
+        	status = KErrCompletion;                 
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_radioitf_GetFreqRangeProperties( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt range;
+    status = aItem.GetNextInt(range); 
+    RET_ERR_IF_ERR(status);         
+    TInt expectedMinFreq;
+    status = aItem.GetNextInt(expectedMinFreq);  
+    RET_ERR_IF_ERR(status);         
+    TInt expectedMaxFreq;
+    status = aItem.GetNextInt(expectedMaxFreq);    
+    RET_ERR_IF_ERR(status);       
+    TInt expectedFreqInterval;
+    status = aItem.GetNextInt(expectedFreqInterval); 
+    RET_ERR_IF_ERR(status);     
+ 		XAuint32 minFreq;
+ 		XAuint32 maxFreq;
+ 		XAuint32 freqInterval;   
+
+    if (m_RadioItf)
+        {
+        status = (*m_RadioItf)->GetFreqRangeProperties(
+                m_RadioItf, range, &minFreq, &maxFreq, &freqInterval);              
+        if (!status)
+            {
+            /* If duration does not fall between the range we expected fail the case */
+            if ( ( minFreq != (XAuint32)expectedMinFreq) || (maxFreq != (XAuint32)expectedMaxFreq) || (freqInterval != (XAuint32)expectedFreqInterval) )
+                {
+                status = KErrCompletion;
+                }
+            }
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_radioitf_SetFrequency( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TInt freq;
+    status = aItem.GetNextInt(freq); 
+    RET_ERR_IF_ERR(status);             
+    if (m_RadioItf)
+        {
+        status = (*m_RadioItf)->SetFrequency(
+                m_RadioItf, freq); 
+       	if (status != KErrNone)
+       		status = KErrCompletion;               
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_radioitf_GetFrequency( CStifItemParser& aItem)
+    {
+    TInt status(KErrNone);
+    TInt expectedFreq;
+    status = aItem.GetNextInt(expectedFreq); 
+    RET_ERR_IF_ERR(status); 
+    XAuint32 freq;
+                 
+    if (m_RadioItf)
+        {
+        status = (*m_RadioItf)->GetFrequency(
+                m_RadioItf, &freq); 
+         if (!status)
+            {
+            if ( freq != expectedFreq )
+                {
+                status = KErrCompletion;
+                }
+            }                                 
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_radioitf_RegisterRadioCallback( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+    XAresult res;
+
+    if(m_RadioItf)
+        {
+        res = (*m_RadioItf)->RegisterRadioCallback(
+                m_RadioItf, &RadioItfCallback, (void*)this);              
+        status = res;
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+
+    return status;
+    }
+
+
+TInt COpenMAXALTestModule::al_radioitf_SetSquelch( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TBool squelch;
+    status = aItem.GetNextInt(squelch);
+    RET_ERR_IF_ERR(status);
+
+    if(m_RadioItf)
+        {
+        status = (*m_RadioItf)->SetSquelch(
+                m_RadioItf, squelch);
+                              
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+    return status;
+    }
+    
+TInt COpenMAXALTestModule::al_radioitf_GetSquelch( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+    TBool expectedSquelch;
+    status = aItem.GetNextInt(expectedSquelch);
+    RET_ERR_IF_ERR(status);
+    XAboolean squelch;
+
+    if(m_RadioItf)
+        {
+        status = (*m_RadioItf)->GetSquelch(
+                m_RadioItf, &squelch);
+         if (!status)
+            {
+            if (squelch != (XAboolean)expectedSquelch)
+                {
+                status = KErrCompletion;
+                }
+            }                                       
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+    return status;
+    }    
+
+TInt COpenMAXALTestModule::al_radioitf_CancelSetFrequency( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+
+    if(m_RadioItf)
+        {
+        status = (*m_RadioItf)->CancelSetFrequency(
+                m_RadioItf);              
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_radioitf_SetStereoMode( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+		TInt stereoMode;
+    status = aItem.GetNextInt(stereoMode);
+    RET_ERR_IF_ERR(status);
+
+    if(m_RadioItf)
+        {
+        status = (*m_RadioItf)->SetStereoMode(
+                m_RadioItf, (XAuint32)stereoMode);
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+    return status;
+    }
+    
+TInt COpenMAXALTestModule::al_radioitf_GetStereoMode( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+		TInt expectedStereoMode;
+    status = aItem.GetNextInt(expectedStereoMode);
+    RET_ERR_IF_ERR(status);
+    XAuint32 stereoMode;
+
+    if(m_RadioItf)
+        {
+        status = (*m_RadioItf)->GetStereoMode(
+                m_RadioItf, &stereoMode);
+        if (!status)
+           {
+           if (stereoMode != (XAboolean)expectedStereoMode)
+               {
+               status = KErrCompletion;
+               }
+           }                        
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+    return status;
+    }    
+
+TInt COpenMAXALTestModule::al_radioitf_GetSignalStrength( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+    XAuint32 signalStrength;
+
+    if(m_RadioItf)
+        {
+        status = (*m_RadioItf)->GetSignalStrength(
+                m_RadioItf, &signalStrength);
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+    return status;
+    }
+
+TInt COpenMAXALTestModule::al_radioitf_Seek( CStifItemParser& aItem )
+    {
+    TInt status(KErrNone);
+		TBool upwards;
+    status = aItem.GetNextInt(upwards);
+    RET_ERR_IF_ERR(status);
+    		
+    if(m_RadioItf)
+        {
+        status = (*m_RadioItf)->Seek(
+                m_RadioItf, upwards);
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+    return status;
+    }
+    
+TInt COpenMAXALTestModule::al_radioitf_StopSeeking( CStifItemParser& /*aItem*/ )
+    {
+    TInt status(KErrNone);
+
+    if(m_RadioItf)
+        {
+        status = (*m_RadioItf)->StopSeeking(
+                m_RadioItf);
+        }
+    else
+        {
+        status = KErrNotFound;
+        }    
+    return status;
+    }
+      
+      
+void COpenMAXALTestModule::HandleRadioItfCallback(
+        XARadioItf 	caller,
+        XAuint32   	event
+)
+{
+    XAuint32   freq;
+    XAmillibel volume;     		
+    
+    switch (event)
+        {
+        case XA_RADIO_EVENT_ANTENNA_STATUS_CHANGED:
+            TEventIf antennaStatusEvent( TEventIf::ESetEvent, _L("Event_XA_RADIO_EVENT_ANTENNA_STATUS_CHANGED:") );
+            TestModuleIf().Event( antennaStatusEvent );
+            break;
+
+        case XA_RADIO_EVENT_FREQUENCY_CHANGED:
+            TEventIf freqChangedEvent( TEventIf::ESetEvent, _L("Event_XA_RADIO_EVENT_FREQUENCY_CHANGED") );
+            TestModuleIf().Event( freqChangedEvent );
+            break;
+
+        case XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED:
+            TEventIf freqRangeChangedEvent( TEventIf::ESetEvent,_L("Event_XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED"));
+            TestModuleIf().Event( freqRangeChangedEvent );     
+            break;
+
+        case XA_RADIO_EVENT_SEEK_COMPLETED:
+           	TEventIf seekEvent( TEventIf::ESetEvent, _L("Event_XA_RADIO_EVENT_SEEK_COMPLETED") );
+            TestModuleIf().Event( seekEvent );          
+            break; 
+               
+        default:
+            break;	
+          }
+ 
+}        
+
+void RadioItfCallback (
+    XARadioItf caller,
+    void * pContext,
+    XAuint32 event,
+		XAuint32 eventIntData,
+		XAboolean eventBooleanData    
+    )
+    {
+    if (pContext)
+        {
+        ((COpenMAXALTestModule*)pContext)->HandleRadioItfCallback(caller, event);
+        }
+    }
+
--- a/mmmw_plat/openmax_al_ext_api/group/bld.inf	Fri May 14 18:19:45 2010 -0500
+++ b/mmmw_plat/openmax_al_ext_api/group/bld.inf	Fri May 28 19:26:28 2010 -0500
@@ -25,5 +25,6 @@
 #ifdef FF_OPENMAX_AL
 ../inc/xanokiavolumeextitf.h        MW_LAYER_PLATFORM_EXPORT_PATH(khronos/xanokiavolumeextitf.h)
 ../inc/xanokialinearvolumeitf.h     MW_LAYER_PLATFORM_EXPORT_PATH(khronos/xanokialinearvolumeitf.h)
+../inc/xaradioitfext.h              MW_LAYER_PLATFORM_EXPORT_PATH(khronos/xaradioitfext.h)
 ../readme_ext.txt                   MW_LAYER_PLATFORM_EXPORT_PATH(khronos/readme_ext.txt)
 #endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/openmax_al_ext_api/inc/xaradioitfext.h	Fri May 28 19:26:28 2010 -0500
@@ -0,0 +1,32 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef XARADIOITFEXT_H
+#define XARADIOITFEXT_H
+
+// Currently defined in OpenMAXAL.h for RADIO:
+//#define XA_RADIO_EVENT_ANTENNA_STATUS_CHANGED       ((XAuint32) 0x00000001)
+//#define XA_RADIO_EVENT_FREQUENCY_CHANGED            ((XAuint32) 0x00000002)
+//#define XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED      ((XAuint32) 0x00000003)
+//#define XA_RADIO_EVENT_PRESET_CHANGED               ((XAuint32) 0x00000004)
+//#define XA_RADIO_EVENT_SEEK_COMPLETED               ((XAuint32) 0x00000005)
+
+// ADDED:
+#define XA_RADIO_EVENT_STEREO_STATUS_CHANGED          ((XAuint32) 0x00000006)
+#define XA_RADIO_EVENT_SIGNAL_STRENGTH_CHANGED 				((XAuint32) 0x00000007)
+
+#endif /* XARADIOITFEXT_H */
--- a/mmmw_plat/system_tone_service_api/tsrc/conf/systemtoneservicestif.cfg	Fri May 14 18:19:45 2010 -0500
+++ b/mmmw_plat/system_tone_service_api/tsrc/conf/systemtoneservicestif.cfg	Fri May 28 19:26:28 2010 -0500
@@ -61,6 +61,126 @@
 [Enddefine]
 
 [Test]
+title 01 Play EmailAlert
+create systemtoneservicestif STSSTIF
+STSSTIF Create
+STSSTIF PlayTone EmailAlert
+pause 5000
+STSSTIF Delete
+delete STSSTIF
+[Endtest]
+
+[Test]
+title 02 Play SmsAlert
+create systemtoneservicestif STSSTIF
+STSSTIF Create
+STSSTIF PlayTone SmsAlert
+pause 5000
+STSSTIF Delete
+delete STSSTIF
+[Endtest]
+
+[Test]
+title 03 Play ChatAlert
+create systemtoneservicestif STSSTIF
+STSSTIF Create
+STSSTIF PlayTone ChatAlert
+pause 5000
+STSSTIF Delete
+delete STSSTIF
+[Endtest]
+
+[Test]
+title 04 Play MmsAlert
+create systemtoneservicestif STSSTIF
+STSSTIF Create
+STSSTIF PlayTone MmsAlert
+pause 5000
+STSSTIF Delete
+delete STSSTIF
+[Endtest]
+
+[Test]
+title 05 Play WarningBeep
+create systemtoneservicestif STSSTIF
+STSSTIF Create
+STSSTIF PlayTone WarningBeep
+pause 5000
+STSSTIF Delete
+delete STSSTIF
+[Endtest]
+
+
+[Test]
+title 06 Play DeafultBeep
+create systemtoneservicestif STSSTIF
+STSSTIF Create
+STSSTIF PlayTone DefaultBeep
+pause 5000
+STSSTIF Delete
+delete STSSTIF
+[Endtest]
+
+
+[Test]
+title 07 Play IncomingCall
+create systemtoneservicestif STSSTIF
+STSSTIF Create
+STSSTIF PlayAlarm IncomingCall
+pause 10000
+STSSTIF StopAlarm True
+pause 5000
+STSSTIF Delete
+delete STSSTIF
+[Endtest]
+
+
+[Test]
+title 08 Play IncomingCall2
+create systemtoneservicestif STSSTIF
+STSSTIF Create
+STSSTIF PlayAlarm IncomingCallLine2
+pause 10000
+STSSTIF StopAlarm True
+pause 5000
+STSSTIF Delete
+delete STSSTIF
+[Endtest]
+
+
+[Test]
+title 09 Play VideoCall
+create systemtoneservicestif STSSTIF
+STSSTIF Create
+STSSTIF PlayAlarm IncomingDataCall
+pause 10000
+STSSTIF StopAlarm True
+pause 5000
+STSSTIF Delete
+delete STSSTIF
+[Endtest]
+
+
+[Test]
+title 10 Play DefaultAlarm
+create systemtoneservicestif STSSTIF
+STSSTIF Create
+STSSTIF PlayAlarm ToDoAlarm
+pause 10000
+STSSTIF StopAlarm True
+pause 5000
+STSSTIF Delete
+delete STSSTIF
+[Endtest]
+
+
+
+
+
+
+
+
+[Test]
 title NFT
 create systemtoneservicestif STSSTIF
 STSSTIF Create
@@ -74,7 +194,7 @@
 
 
 [Test]
-title 01 Create systemtoneservicestif
+title 11 Create systemtoneservicestif
 create systemtoneservicestif STSSTIF
 STSSTIF Create
 delete STSSTIF
@@ -83,7 +203,7 @@
 
 
 [Test]
-title 02 Play ClockAlarm Ringtone
+title 12 Play ClockAlarm Ringtone
 create systemtoneservicestif STSSTIF
 STSSTIF Create
 STSSTIF PlayAlarm  ClockAlarm
@@ -94,17 +214,17 @@
 
 
 [Test]
-title 03 Play ClockAlarmContext Ringtone
+title 13 Play ClockAlarmContext Ringtone
 create systemtoneservicestif STSSTIF
 STSSTIF Create
-STSSTIF PlayAlarm ClockAlarm
-pause 10000
+STSSTIF PlayTone EmailAlert
+pause 5000
 STSSTIF Delete
 delete STSSTIF
 [Endtest]
 
 [Test]
-title 04 Stop ClockAlarm with recognized Context
+title 14 Stop ClockAlarm with recognized Context
 create systemtoneservicestif STSSTIF
 STSSTIF Create
 STSSTIF PlayAlarm ClockAlarm
@@ -117,7 +237,7 @@
 
 
 [Test]
-title 05 Stop ClockAlarm with non-recognized Context
+title 15 Stop ClockAlarm with non-recognized Context
 create systemtoneservicestif STSSTIF
 STSSTIF Create
 STSSTIF PlayAlarm ClockAlarm
@@ -130,12 +250,12 @@
 
 
 [Test]
-title 06 Play two tones
+title 16 Play two tones
 create systemtoneservicestif STSSTIF
 STSSTIF Create
 STSSTIF PlayAlarm ClockAlarm
-pause 10000
-STSSTIF PlayTone DefaultTone
+pause 5000
+STSSTIF PlayTone DefaultBeep
 pause 10000
 STSSTIF StopAlarm True
 STSSTIF Delete
--- a/mmmw_plat/system_tone_service_api/tsrc/group/systemtoneservicestif.pkg	Fri May 14 18:19:45 2010 -0500
+++ b/mmmw_plat/system_tone_service_api/tsrc/group/systemtoneservicestif.pkg	Fri May 28 19:26:28 2010 -0500
@@ -47,7 +47,9 @@
 
 ; Install files
 "\epoc32\release\armv5\udeb\systemtoneservicestif.dll"   -   "!:\Sys\Bin\systemtoneservicestif.dll"
-  
+"..\conf\systemtoneservicestif.cfg"                      -   "C:\testframework\systemtoneservicestif.cfg" 
+"..\init\TestFramework.ini"                              -   "C:\TestFramework\TestFramework.ini"
+ 
 ; Embedded SIS 
 ; None
 
--- a/mmmw_plat/system_tone_service_api/tsrc/inc/systemtoneservicesactiveobj.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmmw_plat/system_tone_service_api/tsrc/inc/systemtoneservicesactiveobj.h	Fri May 28 19:26:28 2010 -0500
@@ -18,9 +18,12 @@
 
 
 #include <e32base.h>
+#include <e32svr.h>
+#include <StifParser.h>
+#include <StifLogger.h>
+#include <StifTestInterface.h>
 #include <systemtoneservice.h>
 
-
  
 
 
@@ -28,10 +31,9 @@
 {
     
     public:
-    CStsActiveObj( MStsPlayAlarmObserver* aObserver);
+    static CStsActiveObj* NewL( MStsPlayAlarmObserver* aObserver,CStifLogger* aLogger );
     ~CStsActiveObj();
-
-    
+       
     public:     // Functions from base classes
 
     /**
@@ -48,11 +50,23 @@
     * RunError derived from CActive handles errors from active handler.
     */
     TInt RunError( TInt aError );
-   
+    
+    private:
+
+        /**
+        * By default Symbian OS constructor is private.
+        */
+        void ConstructL(MStsPlayAlarmObserver* aObserver, CStifLogger* aLogger);
+
+        /**
+        * C++ constructor.
+        */
+        CStsActiveObj();
     
 
     private:    // Data
     MStsPlayAlarmObserver*   iObserver;
+    CStifLogger* 			 iLog;
    
 
 };
--- a/mmmw_plat/system_tone_service_api/tsrc/src/systemtoneservicesactiveobj.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmmw_plat/system_tone_service_api/tsrc/src/systemtoneservicesactiveobj.cpp	Fri May 28 19:26:28 2010 -0500
@@ -19,14 +19,29 @@
 #include <systemtoneservice.h>
 #include "systemtoneservicesactiveobj.h"
 
-CStsActiveObj::CStsActiveObj(MStsPlayAlarmObserver* aObserver) : CActive (EPriorityStandard)
+
+CStsActiveObj::CStsActiveObj() : CActive (CActive::EPriorityStandard)
 {
+   
+}
+
+
+void CStsActiveObj::ConstructL(MStsPlayAlarmObserver* aObserver, CStifLogger* aLogger) 
+{  
+	iObserver = aObserver;
+    iLog = aLogger;
     CActiveScheduler::Add(this);
 }
 
-
+CStsActiveObj* CStsActiveObj::NewL( MStsPlayAlarmObserver* aTestClass, CStifLogger* aLogger)
+{
+    CStsActiveObj* self = new ( ELeave ) CStsActiveObj();
+    CleanupStack::PushL( self );
+    self->ConstructL( aTestClass, aLogger);
+    CleanupStack::Pop( self );
+    return self;
 
-
+}
 
 CStsActiveObj::~ CStsActiveObj()
 {
@@ -39,12 +54,12 @@
 
 void  CStsActiveObj::RunL()
 {
-	if(IsActive())
+	/*(if(IsActive())
     {
         Cancel();
     }
     
-    SetActive();
+    SetActive();*/
 }
 
 
--- a/mmmw_plat/system_tone_service_api/tsrc/src/systemtoneservicestifblocks.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmmw_plat/system_tone_service_api/tsrc/src/systemtoneservicestifblocks.cpp	Fri May 28 19:26:28 2010 -0500
@@ -229,15 +229,13 @@
     if (aAlarmContext == iCurrentContext)
         {
         	
-         _LIT( Ksystemtoneservicestif, "STS" );
+          _LIT( Ksystemtoneservicestif, "STS" );
           _LIT( KPrint, "PlayAlarmComplete" );
           TestModuleIf().Printf( 0, Ksystemtoneservicestif, KPrint );
-          // Print to log file
-          iLog->Log( KPrint );	
-        	
-        iPlayState = EStopped;
-        iCallbackController->Cancel();
-        //HandleEvent();
+                 	
+        	iPlayState = EStopped;
+        	iCallbackController->Cancel();
+        	//HandleEvent();
         }
     }  
 
--- a/mmmw_plat/telephony_multimedia_service_api/inc/tmsfactory.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmmw_plat/telephony_multimedia_service_api/inc/tmsfactory.h	Fri May 28 19:26:28 2010 -0500
@@ -394,6 +394,8 @@
     IMPORT_C gint DeleteDTMF(TMSDTMF*& dtmf);
 
     /**
+     * FEATURE IS CURRENTLY NOT SUPPORTED
+     *
      * Creates TMSRTPSession object.
      *
      * @param  rtpsession
@@ -406,22 +408,21 @@
      *      Buffer processing mode: either PULL or PUSH.
      *
      * @return
-     *      TMS_RESULT_SUCCESS when object is created successfully.
-     *      TMS_RESULT_INSUFFICIENT_MEMORY when object creation failed due to
-     *      insufficient memory.
+     *      TMS_RESULT_FEATURE_NOT_SUPPORTED
      */
     IMPORT_C gint CreateRTPSession(TMSRTPSession*& rtpsession, guint8* sdp,
             guint mode);
 
     /**
+     * FEATURE IS CURRENTLY NOT SUPPORTED
+     *
      * Deletes TMSRTPSession object.
      *
      * @param  rtpsession
      *      RTP Session object to be deleted.
      *
      * @return
-     *      TMS_RESULT_SUCCESS when object is deleted successfully.
-     *      TMS_RESULT_INVALID_ARGUMENT if RTP session object is invalid.
+     *      TMS_RESULT_FEATURE_NOT_SUPPORTED
      */
     IMPORT_C gint DeleteRTPSession(TMSRTPSession*& rtpsession);
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmmw_plat/telephony_multimedia_service_api/telephony_multimedia_service_api.metaxml	Fri May 28 19:26:28 2010 -0500
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<api id="e1fff71a33909022430461d13e338a8f" dataversion="2.0">
+  <name>telephony_multimedia_service_api</name>
+  <description>API to Telephony Multimedia Server</description>
+  <type>c++</type>
+  <collection>mmserv</collection>
+  <libs>
+    <lib name="tmsapi.lib"/>
+    <lib name="tmsfactory.lib"/>
+  </libs>
+  <release category="platform" sinceversion="0"/>
+  <attributes>
+    <htmldocprovided>no</htmldocprovided>
+    <adaptation>no</adaptation>
+  </attributes>
+</api>
--- a/mmserv/radioutility/presetutility/group/bld.inf	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/radioutility/presetutility/group/bld.inf	Fri May 28 19:26:28 2010 -0500
@@ -28,6 +28,9 @@
 ../conf/presetutility_10207B87.crml           MW_LAYER_CRML(presetutility_10207B87.crml)
 
 
+backup_registration.xml z:/private/10207B87/backup_registration.xml
+
+
 // iby files
 ../rom/fmpresetutility.iby			CORE_MW_LAYER_IBY_EXPORT_PATH(fmpresetutility.iby)
 ../rom/presetutility.iby			  CORE_MW_LAYER_IBY_EXPORT_PATH(presetutility.iby)
--- a/mmserv/radioutility/presetutility/tsrc/group/Bld.inf	Fri May 14 18:19:45 2010 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-* 
-* Description:
-*
-*/
-#include <platform_paths.hrh>
-
-
-PRJ_PLATFORMS
-// specify the platforms your component needs to be built for here
-// defaults to WINS MARM so you can ignore this if you just build these
-	
-	DEFAULT
-
-PRJ_TESTEXPORTS
-// NOTE: If using ARS requirements all export operations should be done under this.
-// 'abld test export'
-
-PRJ_EXPORTS
-// Specify the source file followed by its destination here
-// copy will be used to copy the source file to its destination
-// If there's no destination then the source file will be copied
-// to the same name in /epoc32/include
-// Example: 
-/*
-/agnmodel/inc/AGMCOMON.H
-*/
-
-PRJ_TESTMMPFILES
-
-	PresetUtilityTestModule.mmp
-
-PRJ_MMPFILES
-
-	PresetUtilityTestModule_nrm.mmp
-
-// Specify the .mmp files required for building the important component
-// releasables.
-//
-// Specify "tidy" if the component you need to build doesn't need to be
-// released. Specify "ignore" if the MMP file exists but should be
-// ignored.
-// Example:
-/*
-/agnmodel/group/agnmodel.mmp
-#if defined(MARM)
-/agnmodel/group/agsvexe.mmp
-#endif
-*/
-
-//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/radioutility/presetutility/tsrc/group/bld.inf	Fri May 28 19:26:28 2010 -0500
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+* 
+* Description:
+*
+*/
+#include <platform_paths.hrh>
+
+
+PRJ_PLATFORMS
+// specify the platforms your component needs to be built for here
+// defaults to WINS MARM so you can ignore this if you just build these
+	
+	DEFAULT
+
+PRJ_TESTEXPORTS
+// NOTE: If using ARS requirements all export operations should be done under this.
+// 'abld test export'
+
+PRJ_EXPORTS
+// Specify the source file followed by its destination here
+// copy will be used to copy the source file to its destination
+// If there's no destination then the source file will be copied
+// to the same name in /epoc32/include
+// Example: 
+/*
+/agnmodel/inc/AGMCOMON.H
+*/
+
+PRJ_TESTMMPFILES
+
+	PresetUtilityTestModule.mmp
+
+PRJ_MMPFILES
+
+	PresetUtilityTestModule_nrm.mmp
+
+// Specify the .mmp files required for building the important component
+// releasables.
+//
+// Specify "tidy" if the component you need to build doesn't need to be
+// released. Specify "ignore" if the MMP file exists but should be
+// ignored.
+// Example:
+/*
+/agnmodel/group/agnmodel.mmp
+#if defined(MARM)
+/agnmodel/group/agsvexe.mmp
+#endif
+*/
+
+//  End of File
--- a/mmserv/radioutility/radioserver/Server/Src/RadioServer.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/radioutility/radioserver/Server/Src/RadioServer.cpp	Fri May 28 19:26:28 2010 -0500
@@ -1435,6 +1435,7 @@
         iState = EStateTunerOff;
         iPreEmpted = ETrue;
         iSettings->SetRadioOff(aError);
+        RADIO_RDEBUG(_L("[RADIO-SVR] PlayError() - Call TunerOff and start waiting"));
         iTunerControl->TunerOff();		//The adaptation is expected to call TunerOffComplete() upon completion
         // wait for TunerOffComplete callback
         iSchedulerWait->Start();
@@ -1680,12 +1681,6 @@
         return;
         }
 
-    if ( iState != EStateStarted )
-        {
-        CompleteAsyncRequest(KErrAlreadyExists);
-        return;
-        }
-
     TInt err = KErrNone;
     if ( !iTunerControl )
         {
@@ -1832,7 +1827,7 @@
             break;
         case EStateTunerOff:
             if ( iSettings->IsAntennaAttached() && AllowRadioInOfflineMode()
-                    && !iSettings->IsTransmitterActive() )
+                    && !iSettings->IsTransmitterActive() && !iPreEmpted )
                 {
                 RADIO_RDEBUG(_L("[RADIO-SVR] ProcessSetFrequency() - Sent TunerOn request"));
                 RecreateFmTunerControl();
--- a/mmserv/sts/rom/mmmwsystemtoneservice.iby	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/sts/rom/mmmwsystemtoneservice.iby	Fri May 28 19:26:28 2010 -0500
@@ -19,8 +19,8 @@
  *
  */
 
-#ifndef SYSTEMTONESERVICE_IBY
-#define SYSTEMTONESERVICE_IBY
+#ifndef MMMWSYSTEMTONESERVICE_IBY
+#define MMMWSYSTEMTONESERVICE_IBY
 
 #include <bldvariant.hrh>
 
@@ -30,6 +30,6 @@
 //STS_Stub
 data=ZSYSTEM/install/sts_stub.sis                    System/Install/sts_stub.sis
 
-#endif //SYSTEMTONESERVICE_IBY
+#endif //MMMWSYSTEMTONESERVICE_IBY
 
 //End of File
\ No newline at end of file
--- a/mmserv/sts/sts/group/sts.mmp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/sts/sts/group/sts.mmp	Fri May 28 19:26:28 2010 -0500
@@ -21,6 +21,7 @@
 TARGET          sts.lib
 TARGETTYPE      lib
 
+APP_LAYER_SYSTEMINCLUDE
 MW_LAYER_SYSTEMINCLUDE
 OS_LAYER_LIBC_SYSTEMINCLUDE
 OS_LAYER_STDCPP_SYSTEMINCLUDE
--- a/mmserv/sts/sts/inc/stsplayer.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/sts/sts/inc/stsplayer.h	Fri May 28 19:26:28 2010 -0500
@@ -21,6 +21,9 @@
 #include <mdaaudiosampleplayer.h>
 #include <systemtoneservice.h>
 
+class MProEngEngine;
+class MProEngProfile;
+
 class MStsPlayerObserver
     {
 public:
@@ -30,6 +33,7 @@
 class CStsPlayer : private MMdaAudioPlayerCallback
     {
 public:
+
     static CStsPlayer* CreateTonePlayer(MStsPlayerObserver& aObserver,
             CSystemToneService::TToneType aTone, unsigned int aContext);
     static CStsPlayer* CreateAlarmPlayer(MStsPlayerObserver& aObserver,
@@ -38,9 +42,14 @@
     void Play();
     void Stop();
 
+
 protected:
+    
+    void LoadActiveProfileSettingsL();
+    void SetToneSettings(CSystemToneService::TToneType aTone);
+    void SetAlarmSettings(CSystemToneService::TAlarmType aAlarm);
     CStsPlayer(MStsPlayerObserver& aObserver, const TDesC& aFileName,
-            int aRepeatNumberOfTimes, unsigned int aContext);
+    int aRepeatNumberOfTimes, unsigned int aContext);
     bool Init();
 
 private:
@@ -53,6 +62,15 @@
     TPtrC iFileName;
     int iRepeatNumberOfTimes;
     unsigned int iContext;
+
+    MProEngEngine* iEngine;
+    MProEngProfile* iProfile;
+
+    TInt iVolume;
+    TBool iWarningToneEnabled;
+    TUint iAudioPreference;
+    TUint iAudioPriority;
+
     };
 
 #endif // STSPLAYER_H_
--- a/mmserv/sts/sts/src/stsplayer.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/sts/sts/src/stsplayer.cpp	Fri May 28 19:26:28 2010 -0500
@@ -15,30 +15,51 @@
  * This file provides the implementation for creating and deleting a
  * an MMF based player for playing and stopping a tone playback.
  */
+#include "stsplayer.h"
+#include <AudioPreference.h>
+#include <MProEngEngine.h>
+#include <MProEngProfile.h>
+#include <MProEngTones.h>
+#include <MProEngToneSettings.h>
+#include <ProEngFactory.h>
+#include <systemtoneservice.h>
 
-#include "stsplayer.h"
 
 _LIT(KDefaultFile,"z:\\data\\sounds\\digital\\clock.aac");
 
+
+
+
+
 /*static*/CStsPlayer* CStsPlayer::CreateTonePlayer(
         MStsPlayerObserver& aObserver, CSystemToneService::TToneType aTone,
         unsigned int aContext)
     {
     CStsPlayer* self = 0;
-    switch (aTone)
+     
+    self = new CStsPlayer(aObserver, KDefaultFile, 0, aContext);
+    
+    if( self != 0)
+    	{
+    		TRAPD(err,self->LoadActiveProfileSettingsL());
+             
+    		if( err == KErrNone )
+       		self->SetToneSettings(aTone);
+    		else 
         {
-        default:
-            self = new CStsPlayer(aObserver, KDefaultFile, 0, aContext);
-            break;
-        }
-    if (self != 0)
-        {
-        bool successful = self->Init();
-        if (!successful)
+          delete self;
+          self = 0;
+         }
+        	        
+    		if (self != 0)
+         {
+            bool successful = self->Init();
+            if (!successful)
             {
-            delete self;
-            self = 0;
+               delete self;
+               self = 0;
             }
+          }
         }
     return self;
     }
@@ -48,43 +69,181 @@
         unsigned int aContext)
     {
     CStsPlayer* self = 0;
-    switch (aAlarm)
-        {
-        case CSystemToneService::EClockAlarm:
-            self = new CStsPlayer(aObserver, KDefaultFile, 10, aContext);
-            break;
-        default:
-            self = new CStsPlayer(aObserver, KDefaultFile, 10, aContext);
-            break;
-        }
-    if (self != 0)
-        {
-        bool successful = self->Init();
-        if (!successful)
+   	
+   	self = new CStsPlayer(aObserver, KDefaultFile, 10, aContext);
+   	
+   	if( self != 0)
+    	{		
+   			TRAPD(err,self->LoadActiveProfileSettingsL());
+   			
+   			if( err == KErrNone )
+   	    	self->SetAlarmSettings(aAlarm); 
+   			else 
+   	  	 {
+   	    	 delete self;
+   	     	 self = 0;
+   	   		}           
+   
+    	if (self != 0)
+      	  {
+        	  bool successful = self->Init();
+          	if (!successful)
             {
-            delete self;
-            self = 0;
-            }
+             	  delete self;
+               	self = 0;
+            }	
+        	}
         }
     return self;
     }
 
+void CStsPlayer::LoadActiveProfileSettingsL()
+	{
+		if(!iEngine)
+		   	{
+		   		iEngine =  ProEngFactory::NewEngineL();
+        	}
+		
+        if (iEngine)
+            iProfile = iEngine->ActiveProfileL();
+	    
+	    if (iProfile)
+	        {
+             MProEngToneSettings& settings  = iProfile->ToneSettings();
+             iWarningToneEnabled = settings.WarningAndGameTones();
+	        }
+     
+     
+     
+     
+  }
+
+void CStsPlayer::SetToneSettings(CSystemToneService::TToneType aTone)
+	{
+		
+    if(iProfile)
+    
+    {
+    	MProEngTones&         tones = iProfile->ProfileTones();
+		
+			switch (aTone)
+				{
+				case CSystemToneService::EEmailAlert:
+				    iFileName.Set(tones.EmailAlertTone());
+				    iAudioPreference = KAudioPrefNewSMS;
+				    iAudioPriority = KAudioPriorityRecvMsg ;
+				    break;
+				case CSystemToneService::ESmsAlert:
+				    iFileName.Set(tones.MessageAlertTone());
+				    iAudioPreference = KAudioPrefNewSMS;
+				    iAudioPriority = KAudioPriorityRecvMsg;
+				    break; 
+				case CSystemToneService::EMmsAlert:
+				    iFileName.Set(tones.MessageAlertTone());
+				    iAudioPreference = KAudioPrefNewSMS;
+				    iAudioPriority = KAudioPriorityRecvMsg;
+				    break;
+				case CSystemToneService::EChatAlert:
+				    iFileName.Set(tones.MessageAlertTone());
+				    iAudioPreference = KAudioPrefNewSMS ;
+				    iAudioPriority = KAudioPriorityRecvMsg;
+				    break; 
+				case CSystemToneService::EWarningBeep:
+				    iAudioPreference = KAudioPrefWarning;
+				    iAudioPriority =  KAudioPriorityWarningTone ;
+				    if (iWarningToneEnabled)
+				        iFileName.Set(KDefaultFile);
+				    else
+				        iVolume = 0;
+				        
+				    break;
+				default:
+					iAudioPreference = KAudioPrefDefaultTone;
+				    iAudioPriority = KAudioPriorityWarningTone ;
+				    break;
+				}
+			}
+			
+		else
+		{			 
+				 iAudioPreference = KAudioPrefDefaultTone;
+				 iAudioPriority = KAudioPriorityWarningTone ;
+		}
+		
+	}	
+	
+	
+void CStsPlayer::SetAlarmSettings(CSystemToneService::TAlarmType aAlarm)
+	{
+		if(iProfile)
+    
+   		 {
+    		MProEngTones&         tones = iProfile->ProfileTones();
+		 
+		 	switch (aAlarm)
+        	{
+        	case CSystemToneService::EIncomingCall:
+            	iFileName.Set(tones.RingingTone1());
+            	iAudioPreference = KAudioPrefIncomingCall ;
+				iAudioPriority = KAudioPriorityRingingTone ;
+            	break;
+       		case CSystemToneService::EIncomingCallLine2:
+            	iFileName.Set(tones.RingingTone2());
+            	iAudioPreference = KAudioPrefIncomingCall;
+				iAudioPriority = KAudioPriorityRingingTone ;
+            	break;  
+            case CSystemToneService::EIncomingDataCall:
+            	iFileName.Set(tones.VideoCallRingingTone());
+            	iAudioPreference = KAudioPrefIncomingDataCall;
+		    	iAudioPriority = KAudioPriorityRealOnePlayer;
+            	break;
+        	default:
+        		iAudioPreference = KAudioPrefAlarmClock  ;
+				iAudioPriority = KAudioPriorityAlarm;
+            	break;
+       		}
+      	}
+      else
+		{			 
+				 iAudioPreference = KAudioPrefDefaultTone;
+				 iAudioPriority = KAudioPriorityWarningTone ;
+		}  
+	}	
+
+
+
+
 CStsPlayer::CStsPlayer(MStsPlayerObserver& aObserver, const TDesC& aFileName,
         int aRepeatNumberOfTimes, unsigned int aContext) :
     iObserver(aObserver), iPlayer(0), iFileName(aFileName),
             iRepeatNumberOfTimes(aRepeatNumberOfTimes), iContext(aContext)
     {
+    	iEngine =  ProEngFactory::NewEngineL();
     }
 
 bool CStsPlayer::Init()
     {
-    TRAPD(result, iPlayer = CMdaAudioPlayerUtility::NewL(*this));
-    return result == KErrNone;
+
+    
+        TRAPD(result, iPlayer = CMdaAudioPlayerUtility::NewL(*this));
+        return result == KErrNone;
+    
     }
 
+
 CStsPlayer::~CStsPlayer()
     {
-    delete iPlayer;
+    	if (iProfile)
+        {
+        iProfile->Release();
+        }
+    	if (iEngine)
+        {
+        iEngine->Release();
+        }
+        
+    delete iPlayer; 
+    
     }
 
 void CStsPlayer::Play()
@@ -111,6 +270,8 @@
     if (aError == KErrNone)
         {
         TTimeIntervalMicroSeconds delay = 0;
+        // Set PriorityPref
+        iPlayer->SetPriority(iAudioPriority,iAudioPreference);
         iPlayer->SetRepeats(iRepeatNumberOfTimes, delay);
         iPlayer->Play();
         }
@@ -118,6 +279,7 @@
         {
         //TODO: add trace
         // Since there is an error, indicate that the playback is complete
+        RDebug::Print(_L("InitCompleteReturned"), aError);
         iObserver.PlayComplete(iContext);
         }
     }
--- a/mmserv/sts/stsserver/group/stsserver.mmp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/sts/stsserver/group/stsserver.mmp	Fri May 28 19:26:28 2010 -0500
@@ -49,3 +49,4 @@
 LIBRARY        libc.lib
 LIBRARY        libstdcpp.lib
 LIBRARY        mediaclientaudio.lib
+LIBRARY        profileengine.lib
\ No newline at end of file
--- a/mmserv/tms/inc/tmscallclisrv.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/inc/tmscallclisrv.h	Fri May 28 19:26:28 2010 -0500
@@ -89,6 +89,7 @@
     TMSStreamType StreamType;
     gint StreamId;
     TMSFormatType FormatType;
+    gint RetryTime;
     };
 typedef TPckgBuf<TMSCliSrvStreamInitDataStruct>
         TMSCliSrvStreamInitDataStructBufPckg;
@@ -98,6 +99,7 @@
     TMSCallType CallType;
     TMSStreamType StreamType;
     gint StreamId;
+    gint RetryTime;
     };
 typedef TPckgBuf<TMSCliSrvStreamOpDataStruct>
         TMSCliSrvStreamOpDataStructBufPckg;
--- a/mmserv/tms/inc/tmscallproxy.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/inc/tmscallproxy.h	Fri May 28 19:26:28 2010 -0500
@@ -42,9 +42,10 @@
             const TMSStreamType strmType, gint& strmId);
     IMPORT_C gint InitStream(const TMSCallType callType,
             const TMSStreamType strmType, gint strmId,
-            const TMSFormatType frmtType, RHandleBase* msgQueue);
+            const TMSFormatType frmtType, RHandleBase* msgQueue,
+            const gint retrytime);
     IMPORT_C gint StartStream(const TMSCallType callType,
-            const TMSStreamType strmType, gint strmId);
+            const TMSStreamType strmType, gint strmId, const gint retrytime);
     IMPORT_C gint PauseStream(const TMSCallType callType,
             const TMSStreamType strmType, gint strmId);
     IMPORT_C gint StopStream(const TMSCallType callType,
--- a/mmserv/tms/inc/tmsstreambody.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/inc/tmsstreambody.h	Fri May 28 19:26:28 2010 -0500
@@ -50,9 +50,9 @@
     virtual gint GetState() = 0;
     virtual gint GetStreamType() = 0;
     virtual gint GetStreamId() = 0;
-    virtual gint Init() = 0;
+    virtual gint Init(gint retrytime) = 0;
     virtual gint Pause() = 0;
-    virtual gint Start() = 0;
+    virtual gint Start(gint retrytime) = 0;
     virtual gint Stop() = 0;
     virtual void Deinit() = 0;
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/inc/tmstimer.h	Fri May 28 19:26:28 2010 -0500
@@ -0,0 +1,128 @@
+/*
+ * 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:
+ *    Utility class for CTimer object
+ *
+ */
+
+#ifndef TMSTIMER_H
+#define TMSTIMER_H
+
+// INCLUDES
+#include <e32base.h>
+#include <glib.h>
+
+namespace TMS {
+
+/**
+ *  TMSTimerObserver observer.
+ */
+class TMSTimerObserver
+    {
+public:
+
+    /**
+     * Called upon timer timeout.
+     */
+    virtual void TimerEvent() = 0;
+    };
+
+// CLASS DECLARATION
+/**
+ *  TMSTimer - Timer service.
+ */
+class TMSTimer : protected CTimer
+    {
+public:
+
+    /**
+     * Two-phased constructor.
+     */
+    IMPORT_C static TMSTimer* NewL(gint aPriority = CActive::EPriorityStandard);
+
+    /**
+     * Destructor.
+     */
+    IMPORT_C virtual ~TMSTimer();
+
+    /**
+     * Call callback method upon timer timeout event.
+     * All former request will be canceled first
+     */
+    IMPORT_C void NotifyAfter(gint timeout, TCallBack aCallBack);
+
+    /**
+     * Call client observer upon timer timeout event.
+     * All former request will be canceled first
+     */
+    IMPORT_C void NotifyAfter(gint timeout, TMSTimerObserver& observer);
+
+    /**
+     * Cancel the timer
+     */
+    IMPORT_C void CancelNotify();
+
+    /**
+     * Determines if the timer is running.
+     */
+    IMPORT_C gboolean IsRunning();
+
+protected:
+
+    /**
+     * From CTimer::RunL()
+     */
+    virtual void RunL();
+
+    /**
+     * From CTimer::RunL()
+     */
+    virtual TInt RunError(TInt aError);
+
+    /**
+     * From CTimer::DoCancel()
+     */
+    virtual void DoCancel();
+
+private:
+
+    /**
+     * C++ default constructor.
+     */
+    TMSTimer(gint aPriority);
+
+    /**
+     * Symbian OS constructor.
+     */
+    void ConstructL();
+
+    // By default, prohibit copy constructor
+    TMSTimer(const TMSTimer&);
+
+    // Prohibit assigment operator
+    TMSTimer& operator = (const TMSTimer&);
+
+private:
+
+    // Optional callback instead of observer
+    TCallBack iCallBack;
+
+    // Observer for notify service.
+    TMSTimerObserver* iObserver;
+    };
+
+} //namespace TMS
+
+#endif //TMSTIMER_H
+
--- a/mmserv/tms/tmsapi/src/tmsstream.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmsapi/src/tmsstream.cpp	Fri May 28 19:26:28 2010 -0500
@@ -166,7 +166,7 @@
     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
     if (iBody)
         {
-        status = iBody->Init();
+        status = iBody->Init(0);
         }
     return status;
     }
@@ -186,7 +186,7 @@
     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
     if (iBody)
         {
-        status = iBody->Start();
+        status = iBody->Start(0);
         }
     return status;
     }
--- a/mmserv/tms/tmscallproxy/bwins/tmscallproxy.def	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallproxy/bwins/tmscallproxy.def	Fri May 28 19:26:28 2010 -0500
@@ -1,35 +1,35 @@
 EXPORTS
 	?GetVolume@TMSCallProxy@TMS@@QAEHAAI@Z @ 1 NONAME ; int TMS::TMSCallProxy::GetVolume(unsigned int &)
-	?StartStream@TMSCallProxy@TMS@@QAEHHHH@Z @ 2 NONAME ; int TMS::TMSCallProxy::StartStream(int, int, int)
-	?SetCNG@TMSCallProxy@TMS@@QAEHHH@Z @ 3 NONAME ; int TMS::TMSCallProxy::SetCNG(int, int)
-	?BufferFilled@TMSCallProxy@TMS@@QAEHHHHAAVTMSBuffer@2@@Z @ 4 NONAME ; int TMS::TMSCallProxy::BufferFilled(int, int, int, class TMS::TMSBuffer &)
-	?CreateStream@TMSCallProxy@TMS@@QAEHHHAAH@Z @ 5 NONAME ; int TMS::TMSCallProxy::CreateStream(int, int, int &)
-	?GetSupportedBitRates@TMSCallProxy@TMS@@QAEHAAV?$vector@IV?$allocator@I@std@@@std@@@Z @ 6 NONAME ; int TMS::TMSCallProxy::GetSupportedBitRates(class std::vector<unsigned int, class std::allocator<unsigned int> > &)
-	?Close@TMSCallProxy@TMS@@QAEXXZ @ 7 NONAME ; void TMS::TMSCallProxy::Close(void)
-	?InitStream@TMSCallProxy@TMS@@QAEHHHHHPAVRHandleBase@@@Z @ 8 NONAME ; int TMS::TMSCallProxy::InitStream(int, int, int, int, class RHandleBase *)
-	?GetCNG@TMSCallProxy@TMS@@QAEHHAAH@Z @ 9 NONAME ; int TMS::TMSCallProxy::GetCNG(int, int &)
-	?GetMaxVolume@TMSCallProxy@TMS@@QAEHAAI@Z @ 10 NONAME ; int TMS::TMSCallProxy::GetMaxVolume(unsigned int &)
-	?GetVADMode@TMSCallProxy@TMS@@QAEHHAAH@Z @ 11 NONAME ; int TMS::TMSCallProxy::GetVADMode(int, int &)
-	?PauseStream@TMSCallProxy@TMS@@QAEHHHH@Z @ 12 NONAME ; int TMS::TMSCallProxy::PauseStream(int, int, int)
-	?GetBitRate@TMSCallProxy@TMS@@QAEHAAI@Z @ 13 NONAME ; int TMS::TMSCallProxy::GetBitRate(unsigned int &)
-	?SetFormatCodecMode@TMSCallProxy@TMS@@QAEHHHH@Z @ 14 NONAME ; int TMS::TMSCallProxy::SetFormatCodecMode(int, int, int)
-	?GetPlc@TMSCallProxy@TMS@@QAEHHAAH@Z @ 15 NONAME ; int TMS::TMSCallProxy::GetPlc(int, int &)
-	?StopStream@TMSCallProxy@TMS@@QAEHHHH@Z @ 16 NONAME ; int TMS::TMSCallProxy::StopStream(int, int, int)
-	?SetVolume@TMSCallProxy@TMS@@QAEHI@Z @ 17 NONAME ; int TMS::TMSCallProxy::SetVolume(unsigned int)
-	?GetGain@TMSCallProxy@TMS@@QAEHAAI@Z @ 18 NONAME ; int TMS::TMSCallProxy::GetGain(unsigned int &)
-	?SetPlc@TMSCallProxy@TMS@@QAEHHH@Z @ 19 NONAME ; int TMS::TMSCallProxy::SetPlc(int, int)
-	??1TMSCallProxy@TMS@@UAE@XZ @ 20 NONAME ; TMS::TMSCallProxy::~TMSCallProxy(void)
-	?GetMaxGain@TMSCallProxy@TMS@@QAEHAAI@Z @ 21 NONAME ; int TMS::TMSCallProxy::GetMaxGain(unsigned int &)
-	?CreateCall@TMSCallProxy@TMS@@QAEHH@Z @ 22 NONAME ; int TMS::TMSCallProxy::CreateCall(int)
-	?SetVADMode@TMSCallProxy@TMS@@QAEHHH@Z @ 23 NONAME ; int TMS::TMSCallProxy::SetVADMode(int, int)
-	?DeleteCall@TMSCallProxy@TMS@@QAEXXZ @ 24 NONAME ; void TMS::TMSCallProxy::DeleteCall(void)
-	?GetDataXferChunkHandle@TMSCallProxy@TMS@@QAEHHHHI@Z @ 25 NONAME ; int TMS::TMSCallProxy::GetDataXferChunkHandle(int, int, int, unsigned int)
-	?DeleteStream@TMSCallProxy@TMS@@QAEHHHAAH@Z @ 26 NONAME ; int TMS::TMSCallProxy::DeleteStream(int, int, int &)
-	??0TMSCallProxy@TMS@@QAE@XZ @ 27 NONAME ; TMS::TMSCallProxy::TMSCallProxy(void)
-	?BufferEmptied@TMSCallProxy@TMS@@QAEHHHHAAVTMSBuffer@2@@Z @ 28 NONAME ; int TMS::TMSCallProxy::BufferEmptied(int, int, int, class TMS::TMSBuffer &)
-	?Connect@TMSCallProxy@TMS@@QAEHXZ @ 29 NONAME ; int TMS::TMSCallProxy::Connect(void)
-	?SetGain@TMSCallProxy@TMS@@QAEHI@Z @ 30 NONAME ; int TMS::TMSCallProxy::SetGain(unsigned int)
-	?SetBitRate@TMSCallProxy@TMS@@QAEHI@Z @ 31 NONAME ; int TMS::TMSCallProxy::SetBitRate(unsigned int)
+	?GetGain@TMSCallProxy@TMS@@QAEHAAI@Z @ 2 NONAME ; int TMS::TMSCallProxy::GetGain(unsigned int &)
+	?SetPlc@TMSCallProxy@TMS@@QAEHHH@Z @ 3 NONAME ; int TMS::TMSCallProxy::SetPlc(int, int)
+	??1TMSCallProxy@TMS@@UAE@XZ @ 4 NONAME ; TMS::TMSCallProxy::~TMSCallProxy(void)
+	?SetCNG@TMSCallProxy@TMS@@QAEHHH@Z @ 5 NONAME ; int TMS::TMSCallProxy::SetCNG(int, int)
+	?GetMaxGain@TMSCallProxy@TMS@@QAEHAAI@Z @ 6 NONAME ; int TMS::TMSCallProxy::GetMaxGain(unsigned int &)
+	?BufferFilled@TMSCallProxy@TMS@@QAEHHHHAAVTMSBuffer@2@@Z @ 7 NONAME ; int TMS::TMSCallProxy::BufferFilled(int, int, int, class TMS::TMSBuffer &)
+	?CreateCall@TMSCallProxy@TMS@@QAEHH@Z @ 8 NONAME ; int TMS::TMSCallProxy::CreateCall(int)
+	?CreateStream@TMSCallProxy@TMS@@QAEHHHAAH@Z @ 9 NONAME ; int TMS::TMSCallProxy::CreateStream(int, int, int &)
+	?SetVADMode@TMSCallProxy@TMS@@QAEHHH@Z @ 10 NONAME ; int TMS::TMSCallProxy::SetVADMode(int, int)
+	?GetSupportedBitRates@TMSCallProxy@TMS@@QAEHAAV?$vector@IV?$allocator@I@std@@@std@@@Z @ 11 NONAME ; int TMS::TMSCallProxy::GetSupportedBitRates(class std::vector<unsigned int, class std::allocator<unsigned int> > &)
+	?InitStream@TMSCallProxy@TMS@@QAEHHHHHPAVRHandleBase@@H@Z @ 12 NONAME ; int TMS::TMSCallProxy::InitStream(int, int, int, int, class RHandleBase *, int)
+	?GetDataXferChunkHandle@TMSCallProxy@TMS@@QAEHHHHI@Z @ 13 NONAME ; int TMS::TMSCallProxy::GetDataXferChunkHandle(int, int, int, unsigned int)
+	?Close@TMSCallProxy@TMS@@QAEXXZ @ 14 NONAME ; void TMS::TMSCallProxy::Close(void)
+	?DeleteCall@TMSCallProxy@TMS@@QAEXXZ @ 15 NONAME ; void TMS::TMSCallProxy::DeleteCall(void)
+	?GetCNG@TMSCallProxy@TMS@@QAEHHAAH@Z @ 16 NONAME ; int TMS::TMSCallProxy::GetCNG(int, int &)
+	?StartStream@TMSCallProxy@TMS@@QAEHHHHH@Z @ 17 NONAME ; int TMS::TMSCallProxy::StartStream(int, int, int, int)
+	?GetMaxVolume@TMSCallProxy@TMS@@QAEHAAI@Z @ 18 NONAME ; int TMS::TMSCallProxy::GetMaxVolume(unsigned int &)
+	??0TMSCallProxy@TMS@@QAE@XZ @ 19 NONAME ; TMS::TMSCallProxy::TMSCallProxy(void)
+	?DeleteStream@TMSCallProxy@TMS@@QAEHHHAAH@Z @ 20 NONAME ; int TMS::TMSCallProxy::DeleteStream(int, int, int &)
+	?BufferEmptied@TMSCallProxy@TMS@@QAEHHHHAAVTMSBuffer@2@@Z @ 21 NONAME ; int TMS::TMSCallProxy::BufferEmptied(int, int, int, class TMS::TMSBuffer &)
+	?GetVADMode@TMSCallProxy@TMS@@QAEHHAAH@Z @ 22 NONAME ; int TMS::TMSCallProxy::GetVADMode(int, int &)
+	?Connect@TMSCallProxy@TMS@@QAEHXZ @ 23 NONAME ; int TMS::TMSCallProxy::Connect(void)
+	?PauseStream@TMSCallProxy@TMS@@QAEHHHH@Z @ 24 NONAME ; int TMS::TMSCallProxy::PauseStream(int, int, int)
+	?GetBitRate@TMSCallProxy@TMS@@QAEHAAI@Z @ 25 NONAME ; int TMS::TMSCallProxy::GetBitRate(unsigned int &)
+	?SetFormatCodecMode@TMSCallProxy@TMS@@QAEHHHH@Z @ 26 NONAME ; int TMS::TMSCallProxy::SetFormatCodecMode(int, int, int)
+	?SetGain@TMSCallProxy@TMS@@QAEHI@Z @ 27 NONAME ; int TMS::TMSCallProxy::SetGain(unsigned int)
+	?SetBitRate@TMSCallProxy@TMS@@QAEHI@Z @ 28 NONAME ; int TMS::TMSCallProxy::SetBitRate(unsigned int)
+	?GetPlc@TMSCallProxy@TMS@@QAEHHAAH@Z @ 29 NONAME ; int TMS::TMSCallProxy::GetPlc(int, int &)
+	?StopStream@TMSCallProxy@TMS@@QAEHHHH@Z @ 30 NONAME ; int TMS::TMSCallProxy::StopStream(int, int, int)
+	?DeinitStream@TMSCallProxy@TMS@@QAEHHHH@Z @ 31 NONAME ; int TMS::TMSCallProxy::DeinitStream(int, int, int)
 	?GetFormatCodecMode@TMSCallProxy@TMS@@QAEHHHAAH@Z @ 32 NONAME ; int TMS::TMSCallProxy::GetFormatCodecMode(int, int, int &)
-	?DeinitStream@TMSCallProxy@TMS@@QAEHHHH@Z @ 33 NONAME ; int TMS::TMSCallProxy::DeinitStream(int, int, int)
+	?SetVolume@TMSCallProxy@TMS@@QAEHI@Z @ 33 NONAME ; int TMS::TMSCallProxy::SetVolume(unsigned int)
 
--- a/mmserv/tms/tmscallproxy/eabi/tmscallproxy.def	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallproxy/eabi/tmscallproxy.def	Fri May 28 19:26:28 2010 -0500
@@ -4,12 +4,12 @@
 	_ZN3TMS12TMSCallProxy10GetBitRateERj @ 3 NONAME
 	_ZN3TMS12TMSCallProxy10GetMaxGainERj @ 4 NONAME
 	_ZN3TMS12TMSCallProxy10GetVADModeEiRi @ 5 NONAME
-	_ZN3TMS12TMSCallProxy10InitStreamEiiiiP11RHandleBase @ 6 NONAME
+	_ZN3TMS12TMSCallProxy10InitStreamEiiiiP11RHandleBasei @ 6 NONAME
 	_ZN3TMS12TMSCallProxy10SetBitRateEj @ 7 NONAME
 	_ZN3TMS12TMSCallProxy10SetVADModeEii @ 8 NONAME
 	_ZN3TMS12TMSCallProxy10StopStreamEiii @ 9 NONAME
 	_ZN3TMS12TMSCallProxy11PauseStreamEiii @ 10 NONAME
-	_ZN3TMS12TMSCallProxy11StartStreamEiii @ 11 NONAME
+	_ZN3TMS12TMSCallProxy11StartStreamEiiii @ 11 NONAME
 	_ZN3TMS12TMSCallProxy12BufferFilledEiiiRNS_9TMSBufferE @ 12 NONAME
 	_ZN3TMS12TMSCallProxy12CreateStreamEiiRi @ 13 NONAME
 	_ZN3TMS12TMSCallProxy12DeinitStreamEiii @ 14 NONAME
--- a/mmserv/tms/tmscallproxy/src/tmscallproxy.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallproxy/src/tmscallproxy.cpp	Fri May 28 19:26:28 2010 -0500
@@ -119,7 +119,8 @@
 //
 EXPORT_C gint TMSCallProxy::InitStream(const TMSCallType callType,
         const TMSStreamType strmType, gint strmId,
-        const TMSFormatType frmtType, RHandleBase* msgQueue)
+        const TMSFormatType frmtType, RHandleBase* msgQueue,
+        const gint retrytime)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_SUCCESS);
@@ -128,6 +129,7 @@
     inPckg().StreamType = strmType;
     inPckg().StreamId = strmId;
     inPckg().FormatType = frmtType;
+    inPckg().RetryTime = retrytime;
     status = RSessionBase::SendReceive(TMS_INIT_STREAM, TIpcArgs(&inPckg,
             *msgQueue));
     TRACE_PRN_FN_EXT;
@@ -140,7 +142,7 @@
 // -----------------------------------------------------------------------------
 //
 EXPORT_C gint TMSCallProxy::StartStream(const TMSCallType callType,
-        const TMSStreamType strmType, gint strmId)
+        const TMSStreamType strmType, gint strmId, const gint retrytime)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_SUCCESS);
@@ -148,6 +150,7 @@
     inPckg().CallType = callType;
     inPckg().StreamType = strmType;
     inPckg().StreamId = strmId;
+    inPckg().RetryTime = retrytime;
     status = RSessionBase::SendReceive(TMS_START_STREAM, TIpcArgs(&inPckg));
     TRACE_PRN_FN_EXT;
     return TMSRESULT(status);
--- a/mmserv/tms/tmscallserver/inc/tmscalladpt.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallserver/inc/tmscalladpt.h	Fri May 28 19:26:28 2010 -0500
@@ -31,24 +31,28 @@
     virtual ~TMSCallAdpt();
 
     // From TMSStream
-    virtual gint CreateStream(TMSCallType callType,
-            TMSStreamType strmType, gint& outStrmId) = 0;
-    virtual gint InitStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId, TMSFormatType frmtType, const RMessage2& aMessage) = 0;
-    virtual gint StartStream(TMSCallType callType,
-            TMSStreamType strmType, gint strmId) = 0;
-    virtual gint PauseStream(TMSCallType callType,
-            TMSStreamType strmType, gint strmId) = 0;
-    virtual gint StopStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId) = 0;
-    virtual gint DeinitStream(TMSCallType callType,
-            TMSStreamType strmType, gint strmId) = 0;
-    virtual gint DeleteStream(TMSCallType callType,
-            TMSStreamType strmType, gint strmId) = 0;
-    virtual gint DataXferBufferEmptied(TMSCallType callType,
-            TMSStreamType strmType, gint strmId) = 0;
-    virtual gint DataXferBufferFilled(TMSCallType callType,
-            TMSStreamType strmType, gint strmId, guint datasize) = 0;
+    virtual gint CreateStream(const TMSCallType callType,
+            const TMSStreamType strmType, gint& outStrmId) = 0;
+    virtual gint InitStream(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId,
+            const TMSFormatType frmtType, const gint retrytime,
+            const RMessage2& aMessage) = 0;
+    virtual gint StartStream(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId,
+            const gint retrytime) = 0;
+    virtual gint PauseStream(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId) = 0;
+    virtual gint StopStream(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId) = 0;
+    virtual gint DeinitStream(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId) = 0;
+    virtual gint DeleteStream(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId) = 0;
+    virtual gint DataXferBufferEmptied(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId) = 0;
+    virtual gint DataXferBufferFilled(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId,
+            const guint datasize) = 0;
     virtual gint GetDataXferBufferHndl(const TMSCallType callType,
             const TMSStreamType strmType, const gint strmId,
             const guint32 key, RChunk& chunk) = 0;
@@ -84,20 +88,19 @@
     virtual gint SetPlc(const TMSFormatType fmttype, const gboolean plc) = 0;
 
     // From TMS routing
-    virtual gint SetOutput(TMSAudioOutput output) = 0;
+    virtual gint SetOutput(const TMSAudioOutput output) = 0;
     virtual gint GetOutput(TMSAudioOutput& output) = 0;
     virtual gint GetPreviousOutput(TMSAudioOutput& output) = 0;
-    virtual gint GetAvailableOutputsL(gint& count,
-            CBufFlat*& outputsbuffer) = 0;
+    virtual gint GetAvailableOutputsL(gint& count, CBufFlat*& outputsbuf) = 0;
 
     // From TMSDTMF
-    virtual gint StartDTMF(TMSStreamType streamtype, TDes& dtmfstring) = 0;
-    virtual gint StopDTMF(TMSStreamType streamtype) = 0;
-    virtual gint ContinueDTMF(TBool continuesending) = 0;
+    virtual gint StartDTMF(const TMSStreamType streamtype, TDes& dtmfstr) = 0;
+    virtual gint StopDTMF(const TMSStreamType streamtype) = 0;
+    virtual gint ContinueDTMF(const gboolean sending) = 0;
 
 protected:
     TMSCallAdpt();
-    virtual gint PostConstruct();
+    virtual gint PostConstruct() = 0;
 
 protected:
     gint iGlobalVol;
--- a/mmserv/tms/tmscallserver/inc/tmscallcsadpt.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallserver/inc/tmscallcsadpt.h	Fri May 28 19:26:28 2010 -0500
@@ -18,6 +18,7 @@
 #ifndef CALLCSADPT_H
 #define CALLCSADPT_H
 
+// INCLUDES
 #include <TelephonyAudioRouting.h>
 #include <MTelephonyAudioRoutingObserver.h>
 #include <e32msgqueue.h>
@@ -40,37 +41,42 @@
 class TMSDtmfNotifier;
 
 /*
- * CallCSAdapt class
+ * TMSCallCSAdpt class
  */
 class TMSCallCSAdpt : public TMSCallAdpt,
-                      public TMSCSPDevSoundObserver,
+                      public TMSCSDevSoundObserver,
                       public MTelephonyAudioRoutingObserver,
                       public TMSDTMFTonePlayerObserver,
                       public TMSDTMFObserver
     {
 public:
-    TMSCallCSAdpt();
+	static TMSCallCSAdpt* NewL();
     virtual ~TMSCallCSAdpt();
     virtual gint PostConstruct();
 
-    virtual gint CreateStream(TMSCallType callType, TMSStreamType strmType,
-            gint& outStrmId);
-    virtual gint InitStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId, TMSFormatType frmtType, const RMessage2& message);
-    virtual gint StartStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId);
-    virtual gint PauseStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId);
-    virtual gint StopStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId);
-    virtual gint DeinitStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId);
-    virtual gint DeleteStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId);
-    virtual gint DataXferBufferEmptied(TMSCallType callType,
-            TMSStreamType strmType, gint strmId);
-    virtual gint DataXferBufferFilled(TMSCallType callType,
-            TMSStreamType strmType, gint strmId, guint datasize);
+    // From TMSStream
+    virtual gint CreateStream(const TMSCallType callType,
+            const TMSStreamType strmType, gint& outStrmId);
+    virtual gint InitStream(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId,
+            const TMSFormatType frmtType, const gint retryTime,
+            const RMessage2& message);
+    virtual gint StartStream(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId,
+            const gint retrytime);
+    virtual gint PauseStream(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId);
+    virtual gint StopStream(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId);
+    virtual gint DeinitStream(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId);
+    virtual gint DeleteStream(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId);
+    virtual gint DataXferBufferEmptied(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId);
+    virtual gint DataXferBufferFilled(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId,
+            const guint datasize);
     virtual gint GetDataXferBufferHndl(const TMSCallType callType,
             const TMSStreamType strmType, const gint strmId,
             const guint32 key, RChunk& chunk);
@@ -106,45 +112,47 @@
     virtual gint SetPlc(const TMSFormatType fmttype, const gboolean plc);
 
     // From TMS audio routing
-    virtual gint SetOutput(TMSAudioOutput output);
+    virtual gint SetOutput(const TMSAudioOutput output);
     virtual gint GetOutput(TMSAudioOutput& output);
     virtual gint GetPreviousOutput(TMSAudioOutput& output);
-    virtual gint GetAvailableOutputsL(gint& count, CBufFlat*& outputsbuffer);
-	
+    virtual gint GetAvailableOutputsL(gint& count, CBufFlat*& outputsbuf);
+
 	// From TMSDTMF
-    virtual gint StartDTMF(TMSStreamType streamtype, TDes& dtmfstring);
-    virtual gint StopDTMF(TMSStreamType streamtype);
-    virtual gint ContinueDTMF(TBool continuesending);
+    virtual gint StartDTMF(const TMSStreamType streamtype, TDes& dtmfstr);
+    virtual gint StopDTMF(const TMSStreamType streamtype);
+    virtual gint ContinueDTMF(const gboolean sending);
 
-    //From TMSCSPDevSoundObserver
-    void DownlinkInitCompleted(TInt status);
-    void UplinkInitCompleted(TInt status);
-    void UplinkActivatedSuccessfully();
-    void DownlinkActivatedSuccessfully();
-    void UplinkActivationFailed();
-    void DownlinkActivationFailed();
+    //From TMSCSDevSoundObserver
+    void DownlinkInitCompleted(gint status);
+    void UplinkInitCompleted(gint status);
+    void DownlinkActivationCompleted(gint status);
+    void UplinkActivationCompleted(gint status);
 
-    //From DTMFTonePlayerObserver
-    void DTMFInitCompleted(TInt error);
-    void DTMFToneFinished(TInt error);
+    //From TMSDTMFTonePlayerObserver
+    void DTMFInitCompleted(gint status);
+    void DTMFToneFinished(gint status);
 
     //From TMSDTMFObserver
-     void HandleDTMFEvent(const TMSDTMFObserver::TCCPDtmfEvent aEvent,
-             const TInt aError, const TChar aTone);
+    void HandleDTMFEvent(const TMSDTMFObserver::TCCPDtmfEvent event,
+            const gint status, const TChar tone);
 
 private:
+    TMSCallCSAdpt();
+    void ConstructL();
+
+    gint InitUplink(const gint retrytime);
+    gint InitDownlink(const gint retrytime);
     void AvailableOutputsChanged(
             CTelephonyAudioRouting& aTelephonyAudioRouting);
     void OutputChanged(CTelephonyAudioRouting& aTelephonyAudioRouting);
     void SetOutputComplete(CTelephonyAudioRouting& aTelephonyAudioRouting,
-            gint aError);
+            gint status);
     void GetSupportedBitRatesL(CBufFlat*& brbuffer);
     void NotifyClient(const gint strmId, const gint command,
             const gint status = KErrNone, const gint64 int64 = TInt64(0));
 
 private:
     gint iNextStreamId;
-
     TMSCSUplink* iCSUplink;
     TMSCSDownlink* iCSDownlink;
     CTelephonyAudioRouting* iRouting;
@@ -152,8 +160,8 @@
     TMSAudioDtmfTonePlayer* iDTMFDnlinkPlayer;
     TMSDtmfNotifier* iDTMFNotifier;
     TMSDTMFProvider* iDTMFUplinkPlayer;
-    TMSStreamType iStrmtype;
 
+    // Message queues for communication and data transfer back to the client
     RMsgQueue<TmsMsgBuf> iMsgQueueUp;
     RMsgQueue<TmsMsgBuf> iMsgQueueDn;
     TmsMsgBuf iMsgBuffer;
--- a/mmserv/tms/tmscallserver/inc/tmscallipadpt.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallserver/inc/tmscallipadpt.h	Fri May 28 19:26:28 2010 -0500
@@ -15,8 +15,8 @@
  *
  */
 
-#ifndef __CALLIPADAPT_H
-#define __CALLIPADAPT_H
+#ifndef CALLIPADAPT_H
+#define CALLIPADAPT_H
 
 // INCLUDES
 #include <e32msgqueue.h>
@@ -24,6 +24,7 @@
 #include "tmsclientserver.h"
 #include "tmsshared.h"
 #include "tmscalladpt.h"
+#include "tmsipcallstream.h"
 #include "tmsdtmftoneplayer.h"
 #include "tmsdtmfnotifier.h"
 
@@ -33,35 +34,41 @@
 class TMSIPDownlink;
 class TMSIPUplink;
 
-// TMSCallIPAdpt class
+/*
+ * TMSCallIPAdpt class
+ */
 class TMSCallIPAdpt : public TMSCallAdpt,
+                      public TMSIPDevSoundObserver,
                       public TMSDTMFTonePlayerObserver
     {
 public:
-    // Constractor
     static TMSCallIPAdpt* NewL();
     virtual ~TMSCallIPAdpt();
     virtual gint PostConstruct();
 
     // From TMSStream
-    virtual gint CreateStream(TMSCallType callType, TMSStreamType strmType,
-            gint& outStrmId);
-    virtual gint InitStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId, TMSFormatType frmtType, const RMessage2& message);
-    virtual gint StartStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId);
-    virtual gint PauseStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId);
-    virtual gint StopStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId);
-    virtual gint DeinitStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId);
-    virtual gint DeleteStream(TMSCallType callType, TMSStreamType strmType,
-            gint strmId);
-    virtual gint DataXferBufferEmptied(TMSCallType callType,
-            TMSStreamType strmType, gint strmId);
-    virtual gint DataXferBufferFilled(TMSCallType callType,
-            TMSStreamType strmType, gint strmId, guint datasize);
+    virtual gint CreateStream(const TMSCallType callType,
+            const TMSStreamType strmType, gint& outStrmId);
+    virtual gint InitStream(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId,
+            const TMSFormatType frmtType, const gint retryTime,
+            const RMessage2& message);
+    virtual gint StartStream(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId,
+            const gint retrytime);
+    virtual gint PauseStream(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId);
+    virtual gint StopStream(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId);
+    virtual gint DeinitStream(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId);
+    virtual gint DeleteStream(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId);
+    virtual gint DataXferBufferEmptied(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId);
+    virtual gint DataXferBufferFilled(const TMSCallType callType,
+            const TMSStreamType strmType, const gint strmId,
+            const guint datasize);
     virtual gint GetDataXferBufferHndl(const TMSCallType callType,
             const TMSStreamType strmType, const gint strmId,
             const guint32 key, RChunk& chunk);
@@ -96,16 +103,16 @@
     virtual gint GetPlc(const TMSFormatType fmttype, gboolean& plc);
     virtual gint SetPlc(const TMSFormatType fmttype, const gboolean plc);
 
-    // From TMS audio output
-    virtual gint SetOutput(TMSAudioOutput output);
+    // From TMS audio routing
+    virtual gint SetOutput(const TMSAudioOutput output);
     virtual gint GetOutput(TMSAudioOutput& output);
     virtual gint GetPreviousOutput(TMSAudioOutput& output);
-    virtual gint GetAvailableOutputsL(gint& count, CBufFlat*& outputsbuffer);
+    virtual gint GetAvailableOutputsL(gint& count, CBufFlat*& outputsbuf);
 
-    // From TMSDTMF
-    virtual gint StartDTMF(TMSStreamType streamtype, TDes& dtmfstring);
-    virtual gint StopDTMF(TMSStreamType streamtype);
-    virtual gint ContinueDTMF(gboolean continuesending);
+	// From TMSDTMF
+    virtual gint StartDTMF(const TMSStreamType streamtype, TDes& dtmfstr);
+    virtual gint StopDTMF(const TMSStreamType streamtype);
+    virtual gint ContinueDTMF(const gboolean sending);
 
     // From TMS codec formats
     gint SetIlbcCodecMode(const gint mode, const TMSStreamType strmtype);
@@ -118,8 +125,6 @@
     gint ConcealErrorForNextBuffer();
     gint BadLsfNextBuffer();
 
-    gint OpenDownlinkL(const RMessage2& message);
-    gint OpenUplinkL(const RMessage2& message);
     void SetFormat(const gint strmId, const guint32 aFormat);
 
     void BufferFilledL(guint dataSize);
@@ -127,34 +132,45 @@
     gint GetDataXferChunkHndl(const TMSStreamType strmType,
             const guint32 key, RChunk& chunk);
 
-    //From DTMFTonePlayerObserver
-     void DTMFInitCompleted(gint error);
-     void DTMFToneFinished(gint error);
+    //From TMSIPDevSoundObserver
+    void DownlinkInitCompleted(gint status);
+    void UplinkInitCompleted(gint status);
+    void DownlinkStarted(gint status);
+    void UplinkStarted(gint status);
+
+    //From TMSDTMFTonePlayerObserver
+    void DTMFInitCompleted(gint status);
+    void DTMFToneFinished(gint status);
 
 private:
+    TMSCallIPAdpt();
     void ConstructL();
-    TMSCallIPAdpt();
+
+    gint OpenDownlink(const RMessage2& message, const gint retrytime);
+    gint OpenUplink(const RMessage2& message, const gint retrytime);
 
     gint InitDTMF(TMSStreamType strmtype);
-    void NotifyClient(const gint strmId, const gint aCommand,
-            const gint aStatus = KErrNone, const gint64 aInt64 = gint64(0));
     void GetSupportedBitRatesL(CBufFlat*& brbuffer);
+    void NotifyClient(const gint strmId, const gint command,
+            const gint status = KErrNone, const gint64 int64 = TInt64(0));
 
 private:
     gint iNextStreamId;
+    TMSIPUplink* iIPUplink;
+    TMSIPDownlink* iIPDownlink;
+    TMSAudioDtmfTonePlayer* iDTMFDnlinkPlayer;
+    TMSDtmfNotifier* iDTMFNotifier;
+    TMSAudioDtmfTonePlayer* iDTMFUplinkPlayer;
+    // Message queues for communication and data transfer back to the client
+    RMsgQueue<TmsMsgBuf> iMsgQueueUp;
+    RMsgQueue<TmsMsgBuf> iMsgQueueDn;
+    TmsMsgBuf iMsgBuffer;
+
     gboolean iUplinkInitialized;
     gint iUplinkStreamId;
     gboolean iDnlinkInitialized;
     gint iDnlinkStreamId;
 
-    TMSIPDownlink* iIPDownlink;
-    TMSIPUplink* iIPUplink;
-
-    // Message queues for communication and data transfer back to the client
-    RMsgQueue<TmsMsgBuf> iMsgQueueUp;
-    RMsgQueue<TmsMsgBuf> iMsgQueueDn;
-
-    TmsMsgBuf iMsgBuffer;
     TMMFPrioritySettings iPriority;
     guint32 iUpFourCC;
     guint32 iDnFourCC;
@@ -163,14 +179,10 @@
     RArray<guint> iArrBitrates;
     RArray<TFourCC> iCodecs;
     gint iCodecsCount;
-
-    TMSAudioDtmfTonePlayer* iDTMFDnlinkPlayer;
-    TMSAudioDtmfTonePlayer* iDTMFUplinkPlayer;
-    TMSDtmfNotifier* iDTMFNotifier;
     };
 
 } //namespace TMS
 
-#endif //__CALLIPADAPT_H
+#endif //CALLIPADPT_H
 
 // End of file
--- a/mmserv/tms/tmscallserver/inc/tmscsdevsound.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallserver/inc/tmscsdevsound.h	Fri May 28 19:26:28 2010 -0500
@@ -19,58 +19,50 @@
 #define TMSCSDEVSOUND_H
 
 #include <sounddevice.h>
+#include "tmstimer.h"
 
 namespace TMS {
 
-class TMSCSPDevSoundObserver;
+// FORWARD DECLARATIONS
+class TMSTimer;
+class TMSCSDevSoundObserver;
 
 /**
  *  Wrapper for CMMFDevSound
  *
  */
-NONSHARABLE_CLASS(TMSCSPDevSound) : public CBase,
-                                    public MDevSoundObserver
+NONSHARABLE_CLASS(TMSCSDevSound) : public CBase,
+                                   public MDevSoundObserver,
+                                   public TMSTimerObserver
     {
 public:
 
     /**
      * Destructor.
      */
-    virtual ~TMSCSPDevSound();
-
-    /**
-     * Activates the dev sound stream. TMSCSPDevSoundObserver methods are called
-     * when activation goes ok or fails. If the stream is already active or
-     * activating then nothing is done.
-     */
-    virtual void Activate();
-
-    /**
-     * Deactivates the devsound stream. If stream is not active or
-     * activation is not ongoing then nothing is done.
-     */
-    virtual void Deactivate();
+    virtual ~TMSCSDevSound();
 
     /**
-     * Indicates that activation is ongoing,
-     * but the result of the activation is still unknown.
-     * @return ETrue - activation ongoing, EFalse - activation not ongoing.
+     * Activates the DevSound stream.
+     * Stream activation status is indicated by TMSCSDevSoundObserver callback
+     * methods. If the stream is already active or being activated, call to
+     * this will result in no action.
      */
-    TBool IsActivationOngoing() const;
+    virtual void Activate(const gint retrytime);
 
     /**
-     * Determines wether the devsound stream is active or not.
-     * @return ETrue - Stream is active, EFalse - Stream not active.
+     * Deactivates an active DevSound stream.
      */
-    TBool IsActive() const;
+    virtual void Deactivate(gboolean reset = TRUE);
 
+    /*
+     * Returns DevSound instance associated with the stream.
+     */
     CMMFDevSound& DevSound();
 
-    // from base class MDevSoundObserver
-
     /**
      * From MDevSoundObserver
-     * Empty implementation
+     * Indicates DevSound initialization status.
      */
     void InitializeComplete(TInt aError);
 
@@ -78,50 +70,58 @@
      * From MDevSoundObserver
      * Empty implementation
      */
-    void BufferToBeFilled(CMMFBuffer* aBuffer);
+    void BufferToBeFilled(CMMFBuffer* /*aBuffer*/) {}
 
     /**
      * From MDevSoundObserver
      * Empty implementation
      */
-    void PlayError(TInt aError);
+    void PlayError(TInt /*aError*/) {}
 
     /**
      * From MDevSoundObserver
      * Empty implementation
      */
-    void ToneFinished(TInt aError);
+    void ToneFinished(TInt /*aError*/) {}
+
+    /**
+     * From MDevSoundObserver
+     * Empty implementation
+     */
+    void BufferToBeEmptied(CMMFBuffer* /*aBuffer*/) {}
 
     /**
      * From MDevSoundObserver
      * Empty implementation
      */
-    void BufferToBeEmptied(CMMFBuffer* aBuffer);
+    void RecordError(TInt /*aError*/) {}
 
     /**
      * From MDevSoundObserver
      * Empty implementation
      */
-    void RecordError(TInt aError);
+    void ConvertError(TInt /*aError*/) {}
 
     /**
      * From MDevSoundObserver
      * Empty implementation
      */
-    void ConvertError(TInt aError);
+    void DeviceMessage(TUid /*aMessageType*/, const TDesC8& /*aMsg*/) {}
 
-    /**
-     * From MDevSoundObserver
-     * Empty implementation
+    /*
+     * From TMSTimerObserver.
+     * Called upon timer timeout event.
      */
-    void DeviceMessage(TUid aMessageType, const TDesC8& aMsg);
+    void TimerEvent();
 
 protected:
 
-    TMSCSPDevSound(TMSCSPDevSoundObserver& aObserver);
-
-    void ConstructL(TMMFState aMode, gint aAudioPreference,
-            gint aAudioPriority);
+    TMSCSDevSound(TMSCSDevSoundObserver& observer);
+    void ConstructL(const TMSStreamType strmtype, const gint retrytime);
+    void InitializeL();
+    void NotifyEvent(gint error);
+    void StartTimer();
+    void CancelTimer();
 
 private:
 
@@ -132,31 +132,40 @@
 
 protected:
 
-    TUint iStreamType;
-
     /**
-     * Indication if device is activated. Derived class has to update this.
+     * Indication of DevSound activated state. TRUE == stream activated.
+     * Derived class has to update this.
      */
-    TBool iActive;
+    gboolean iActive;
 
     /**
-     * Indication if activation is ongoing.
+     * Indication of an ongoing DevSound activation.
      * Derived class has to update this.
      */
-    TBool iActivationOngoing;
+    gboolean iActivationOngoing;
 
     /**
-     * Devsound instance
-     * Own.
+     * Devsound instance associated with the stream.
      */
     CMMFDevSound* iDevSound;
 
     /**
-     * Observer for successfull activation.
-     * Not own.
+     * An observer subscribing to TMSCSDevSound notifications.
      */
-    TMSCSPDevSoundObserver& iObserver;
+    TMSCSDevSoundObserver& iObserver;
+
+    TMSStreamType iStreamType;
+    gint iPreference;
+    gint iPriority;
+    TMMFState iMode;
 
+    /*
+     * For retry timer
+     */
+    gint iInitRetryTime;
+    gint iStartRetryTime;
+    TMSTimer* iTimer;
+    gint iTimeout;
     };
 
 } //namespace TMS
--- a/mmserv/tms/tmscallserver/inc/tmscsdevsoundobserver.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallserver/inc/tmscsdevsoundobserver.h	Fri May 28 19:26:28 2010 -0500
@@ -21,39 +21,16 @@
 namespace TMS {
 
 /**
- *  Observer interface for knowing when audio streams have been
- *  successfully ramped up.
- *
+ *  TMSCSDevSoundObserver
+  * An observer interface providing TMSCSDevSound event notifications.
  */
-class TMSCSPDevSoundObserver
+class TMSCSDevSoundObserver
     {
 public:
-    virtual void DownlinkInitCompleted(TInt status) = 0;
-    virtual void UplinkInitCompleted(TInt status) = 0;
-
-    /**
-     * Notification that Mic has been activated successfully
-     *
-     */
-    virtual void UplinkActivatedSuccessfully() = 0;
-
-    /**
-     * Notification that speaker has been activated successfully
-     *
-     */
-    virtual void DownlinkActivatedSuccessfully() = 0;
-
-    /**
-     * Notification that Mic initialisation failed.
-     *
-     */
-    virtual void UplinkActivationFailed() = 0;
-
-    /**
-     * Notification that Speaker activation failed.
-     *
-     */
-    virtual void DownlinkActivationFailed() = 0;
+    virtual void DownlinkInitCompleted(gint status) = 0;
+    virtual void UplinkInitCompleted(gint status) = 0;
+    virtual void UplinkActivationCompleted(gint status) = 0;
+    virtual void DownlinkActivationCompleted(gint status) = 0;
     };
 
 } //namespace TMS
--- a/mmserv/tms/tmscallserver/inc/tmscsdownlink.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallserver/inc/tmscsdownlink.h	Fri May 28 19:26:28 2010 -0500
@@ -23,26 +23,24 @@
 
 namespace TMS {
 
-//
-class TMSCSPDevSoundObserver;
-
 /**
- *  Provides Downlink functionality.
+ *  Provides Downlink stream functionality.
  *
  */
-NONSHARABLE_CLASS(TMSCSDownlink) : public TMSCSPDevSound
+NONSHARABLE_CLASS(TMSCSDownlink) : public TMSCSDevSound
     {
 public:
 
-    static TMSCSDownlink* NewL(TMSCSPDevSoundObserver& aObserver);
+    static TMSCSDownlink* NewL(TMSCSDevSoundObserver& observer,
+            const gint retrytime);
 
     virtual ~TMSCSDownlink();
 
     /**
      * Sets volume.
-     * @param aVolume Volume.
+     * @param volume Volume.
      */
-    void SetVolume(gint aVolume);
+    void SetVolume(gint volume);
 
     /**
      * Gets volume.
@@ -60,31 +58,29 @@
 
     /**
      * From MDevSoundObserver.
-     * Indication from devsound that stream (Downlink) has been activated
+     * Indication from the devsound that Downlink has been activated
      * successfully.
      */
     void BufferToBeFilled(CMMFBuffer* /*aBuffer*/);
 
     /**
      * From MDevSoundObserver.
-     * Indication from devsound that activation of stream( Downlink)
-     * failed.
+     * Indication from devsound that Downlink activation has failed.
      */
     void PlayError(TInt aErrorCode);
 
 private:
 
     /**
-     * From CSPDevSound.
+     * From TMSCSDevSound.
      * Tries to activate the mic stream.
      */
     void DoActivateL();
 
 protected:
 
-    TMSCSDownlink(TMSCSPDevSoundObserver& aObserver);
-
-    void ConstructL();
+    TMSCSDownlink(TMSCSDevSoundObserver& observer);
+    void ConstructL(const gint retrytime);
     };
 
 } //namespace TMS
--- a/mmserv/tms/tmscallserver/inc/tmscsuplink.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallserver/inc/tmscsuplink.h	Fri May 28 19:26:28 2010 -0500
@@ -24,14 +24,15 @@
 namespace TMS {
 
 /**
- *  Provides uplink functionality.
+ *  Provides Uplink stream functionality.
  *
  */
-NONSHARABLE_CLASS(TMSCSUplink) : public TMSCSPDevSound
+NONSHARABLE_CLASS(TMSCSUplink) : public TMSCSDevSound
     {
 public:
 
-    static TMSCSUplink* NewL(TMSCSPDevSoundObserver& aObserver);
+    static TMSCSUplink* NewL(TMSCSDevSoundObserver& observer,
+            const gint retrytime);
 
     virtual ~TMSCSUplink();
 
@@ -40,22 +41,12 @@
      *
      * @return ETrue - mic is muted, EFalse - mic is not muted.
      */
-    TBool IsMuted();
-
-    /**
-     * Set mic muted.
-     */
-    void SetMuted();
-
-    /**
-     * Set mic unmuted.
-     */
-    void SetUnmuted();
+    gboolean IsMuted();
 
     /**
      * Set mic gain.
      */
-    void SetGain(gint aGain);
+    void SetGain(gint gain);
 
     /**
      * Get mic muted.
@@ -70,33 +61,30 @@
     // from base class MDevSoundObserver
 
     /**
-     * From MDevSoundObserver
-     * Notification from Devsound that stream (mic) is
-     * activated successfully.
+     * From MDevSoundObserver.
+     * Indication from the devsound that Uplink has been activated
+     * successfully.
      */
     void BufferToBeEmptied(CMMFBuffer* aBuffer);
 
     /**
      * From MDevSoundObserver
-     * Notification from devsound that downstream(mic) activation
-     * feiled.
+     * Indication from devsound that Uplink activation has failed.
      */
     void RecordError(TInt aError);
 
 private:
 
-    // from base class MCSPDevSound
-
     /**
-     * From MCSPDevSound.
+     * From TMSCSDevSound.
      * Tries to activate the mic stream.
      */
     void DoActivateL();
 
 protected:
 
-    TMSCSUplink(TMSCSPDevSoundObserver& aObserver);
-    void ConstructL();
+    TMSCSUplink(TMSCSDevSoundObserver& aObserver);
+    void ConstructL(const gint retrytime);
     };
 
 } //namespace TMS
--- a/mmserv/tms/tmscallserver/inc/tmsdtmfobserver.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallserver/inc/tmsdtmfobserver.h	Fri May 28 19:26:28 2010 -0500
@@ -63,13 +63,13 @@
 
     /**
      * HandleDTMFEvents.
-     * @param aEvent Event type
-     * @param aError Error code
-     * @param aTone Character
+     * @param event Event type
+     * @param status Error code
+     * @param tone Character
      * @return none
      */
-    virtual void HandleDTMFEvent(const TMSDTMFObserver::TCCPDtmfEvent aEvent,
-            const TInt aError, const TChar aTone) /*const*/ = 0;
+    virtual void HandleDTMFEvent(const TMSDTMFObserver::TCCPDtmfEvent event,
+            const gint status, const TChar tone) /*const*/ = 0;
     };
 
 } //namespace TMS
--- a/mmserv/tms/tmscallserver/inc/tmsdtmftoneplayerobserver.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallserver/inc/tmsdtmftoneplayerobserver.h	Fri May 28 19:26:28 2010 -0500
@@ -18,6 +18,8 @@
 #ifndef DTMFTONEPLAYEROBSERVER_H
 #define DTMFTONEPLAYEROBSERVER_H
 
+#include <glib.h>
+
 namespace TMS {
 
 /**
@@ -26,8 +28,8 @@
 class TMSDTMFTonePlayerObserver
     {
 public:
-    virtual void DTMFInitCompleted(TInt error) = 0;
-    virtual void DTMFToneFinished(TInt error) = 0;
+    virtual void DTMFInitCompleted(gint status) = 0;
+    virtual void DTMFToneFinished(gint status) = 0;
     };
 } //namespace TMS
 
--- a/mmserv/tms/tmscallserver/inc/tmsipcallstream.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallserver/inc/tmsipcallstream.h	Fri May 28 19:26:28 2010 -0500
@@ -56,6 +56,19 @@
 
 namespace TMS {
 
+/**
+ *  TMSIPDevSoundObserver
+  * An observer interface providing TMSIPCallStreamBase event notifications.
+ */
+class TMSIPDevSoundObserver
+    {
+public:
+    virtual void DownlinkInitCompleted(gint status) = 0;
+    virtual void UplinkInitCompleted(gint status) = 0;
+    virtual void UplinkStarted(gint status) = 0;
+    virtual void DownlinkStarted(gint status) = 0;
+    };
+
 // -----------------------------------------------------------------------------
 //  Class Name:  TMSIPCallStreamBase
 //
@@ -78,7 +91,7 @@
 public:
     virtual ~TMSIPCallStreamBase();
 
-    virtual void Start() = 0;
+    virtual void Start(const gint retrytime) = 0;
     virtual void Stop() = 0;
     virtual gint SetCodecCi() = 0;
 
@@ -91,6 +104,8 @@
     gint ConfigureMedia(const guint32 aCodecID);
 
 protected:
+    TMSIPCallStreamBase(TMSIPDevSoundObserver& observer);
+
 #ifndef __USE_GSTREAMER__
     // From MDevSoundObserver
     virtual void InitializeComplete(TInt aError) = 0;
@@ -105,7 +120,7 @@
 #endif //__USE_GSTREAMER__
 
 protected:
-
+    TMSIPDevSoundObserver& iObserver;
     CActiveScheduler* iActiveScheduler;
     TStreamState iStatus;
 
@@ -145,14 +160,13 @@
     static void cb_raw_playback_handoff(GstElement* appsrc, guint size);
     static gboolean bus_call(GstBus* bus, GstMessage* msg, gpointer data);
 #endif //__USE_GSTREAMER__
-    static TMSIPDownlink* NewL(const guint32 codecID,
-            const TMMFPrioritySettings priority);
-    TMSIPDownlink();
-    void ConstructL(const guint32 codecID,
-            const TMMFPrioritySettings priority);
+
+    static TMSIPDownlink* NewL(TMSIPDevSoundObserver& observer,
+            const guint32 codecID, const TMMFPrioritySettings priority,
+            const gint retrytime);
 
     gint SetCodecCi();
-    void Start();
+    void Start(const gint retrytime);
     void Stop();
     void BufferFilled(const guint buflen);
     gint SetVolume(const guint volume);
@@ -178,6 +192,11 @@
     void SetAudioDeviceL(TMSAudioOutput output);
     void GetAudioDeviceL(TMSAudioOutput& output);
 
+protected:
+    TMSIPDownlink(TMSIPDevSoundObserver& observer);
+    void ConstructL(const guint32 codecID,
+            const TMMFPrioritySettings priority, const gint retrytime);
+
 private:
     void SetCodecCiL();
 
@@ -214,9 +233,6 @@
     GstElement* iSink;
     GstBus* iBusPlay;
 #endif //__USE_GSTREAMER__
-#ifdef _DEBUG
-    gint iSamplesPlayedCount;
-#endif
 
 #ifdef __PLAY_WAV_FROM_FILE__
     RFile iFile;
@@ -242,14 +258,13 @@
     static void cb_record_raw_handoff(GstElement *sink);
     static gboolean bus_call(GstBus* bus, GstMessage* msg, gpointer data);
 #endif //__USE_GSTREAMER__
-    static TMSIPUplink* NewL(const guint32 codecID,
-            const TMMFPrioritySettings priority);
-    TMSIPUplink();
-    void ConstructL(const guint32 codecID,
-            const TMMFPrioritySettings priority);
+
+    static TMSIPUplink* NewL(TMSIPDevSoundObserver& observer,
+            const guint32 codecID, const TMMFPrioritySettings priority,
+            const gint retrytime);
 
     gint SetCodecCi();
-    void Start();
+    void Start(const gint retrytime);
     void Stop();
     void BufferEmptied();
     gint SetGain(const guint gain);
@@ -268,6 +283,11 @@
     gint SetVad(const TMSFormatType fmttype, const gboolean vad);
     gint GetVad(const TMSFormatType fmttype, gboolean& vad);
 
+protected:
+    TMSIPUplink(TMSIPDevSoundObserver& observer);
+    void ConstructL(const guint32 codecID,
+            const TMMFPrioritySettings priority, const gint retrytime);
+
 private:
     void SetCodecCiL();
 
@@ -300,9 +320,6 @@
     GstElement* iAppSink;
     GstBus* iBusRec;
 #endif //__USE_GSTREAMER__
-#ifdef _DEBUG
-    gint iSamplesRecCount;
-#endif
     };
 
 } //namespace TMS
--- a/mmserv/tms/tmscallserver/src/tmscalladpt.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallserver/src/tmscalladpt.cpp	Fri May 28 19:26:28 2010 -0500
@@ -73,7 +73,7 @@
 
         case TMS_CALL_CS:
             retVal = TMS_RESULT_INSUFFICIENT_MEMORY;
-            self = new TMSCallCSAdpt();
+            self = TMSCallCSAdpt::NewL();
             if (self)
                 {
                 retVal = self->PostConstruct();
@@ -93,14 +93,4 @@
     return retVal;
     }
 
-// -----------------------------------------------------------------------------
-// TMSCallAdpt::PostConstruct
-//
-// -----------------------------------------------------------------------------
-//
-gint TMSCallAdpt::PostConstruct()
-    {
-    return TMS_RESULT_SUCCESS;
-    }
-
 // End of file
--- a/mmserv/tms/tmscallserver/src/tmscallcsadpt.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallserver/src/tmscallcsadpt.cpp	Fri May 28 19:26:28 2010 -0500
@@ -33,14 +33,27 @@
 using namespace TMS;
 
 // -----------------------------------------------------------------------------
-// TMSCallCSAdpt::TMSCallCSAdpt
-//
+// TMSCallCSAdpt::NewL
+// Symbian constructor.
 // -----------------------------------------------------------------------------
 //
-TMSCallCSAdpt::TMSCallCSAdpt()
+TMSCallCSAdpt* TMSCallCSAdpt::NewL()
+    {
+    TMSCallCSAdpt* self = new (ELeave) TMSCallCSAdpt();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::ConstructL
+// 2-nd phase constructor.
+// -----------------------------------------------------------------------------
+//
+void TMSCallCSAdpt::ConstructL()
     {
     TRACE_PRN_FN_ENT;
-
     iCSDownlink = NULL;
     iCSUplink = NULL;
     iRouting = NULL;
@@ -48,8 +61,16 @@
     iDTMFDnlinkPlayer = NULL;
     iDTMFUplinkPlayer = NULL;
     iDTMFNotifier = NULL;
+    TRACE_PRN_FN_EXT;
+    }
 
-    TRACE_PRN_FN_EXT;
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::TMSCallCSAdpt
+//
+// -----------------------------------------------------------------------------
+//
+TMSCallCSAdpt::TMSCallCSAdpt()
+    {
     }
 
 // -----------------------------------------------------------------------------
@@ -60,19 +81,19 @@
 TMSCallCSAdpt::~TMSCallCSAdpt()
     {
     TRACE_PRN_FN_ENT;
-    delete iCSDownlink;
-    delete iCSUplink;
+
     delete iRouting;
     delete iTarSettings;
+    delete iDTMFUplinkPlayer;
     delete iDTMFDnlinkPlayer;
-    delete iDTMFUplinkPlayer;
     delete iDTMFNotifier;
+    delete iCSUplink;
+    delete iCSDownlink;
 
     if (iMsgQueueUp.Handle() > 0)
         {
         iMsgQueueUp.Close();
         }
-
     if (iMsgQueueDn.Handle() > 0)
         {
         iMsgQueueDn.Close();
@@ -93,7 +114,6 @@
     iNextStreamId = 1;
     iUplinkInitialized = FALSE;
     iDnlinkInitialized = FALSE;
-
     TRACE_PRN_FN_EXT;
     return status;
     }
@@ -103,40 +123,44 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallCSAdpt::CreateStream(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint& outStrmId)
+gint TMSCallCSAdpt::CreateStream(const TMSCallType /*callType*/,
+        const TMSStreamType strmType, gint& outStrmId)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_SUCCESS);
     switch (strmType)
         {
         case TMS_STREAM_UPLINK:
+            {
             status = TMS_RESULT_ALREADY_EXIST;
             if (!iUplinkInitialized)
                 {
-                iUplinkInitialized = TRUE;
                 iUplinkStreamId = iNextStreamId;
                 outStrmId = iUplinkStreamId;
                 iNextStreamId++;
-                iUplinkInitialized = TRUE;
+                //iUplinkInitialized = TRUE; //not initialized yet!
                 status = TMS_RESULT_SUCCESS;
                 }
             break;
+            }
         case TMS_STREAM_DOWNLINK:
+            {
             status = TMS_RESULT_ALREADY_EXIST;
             if (!iDnlinkInitialized)
                 {
-                iDnlinkInitialized = TRUE;
                 iDnlinkStreamId = iNextStreamId;
                 outStrmId = iDnlinkStreamId;
                 iNextStreamId++;
-                iDnlinkInitialized = TRUE;
+                //iDnlinkInitialized = TRUE; //not initialized yet!
                 status = TMS_RESULT_SUCCESS;
                 }
             break;
+            }
         default:
+            {
             status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
             break;
+            }
         }
     TRACE_PRN_FN_EXT;
     return status;
@@ -147,8 +171,10 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallCSAdpt::InitStream(TMSCallType /*callType*/, TMSStreamType strmType,
-        gint strmId, TMSFormatType /*frmtType*/, const RMessage2& message)
+gint TMSCallCSAdpt::InitStream(const TMSCallType /*callType*/,
+        const TMSStreamType strmType, const gint strmId,
+        const TMSFormatType /*frmtType*/, const gint retrytime,
+        const RMessage2& message)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_SUCCESS);
@@ -157,6 +183,7 @@
         {
         case TMS_STREAM_UPLINK:
             {
+            status = TMS_RESULT_DOES_NOT_EXIST;
             if (strmId == iUplinkStreamId)
                 {
                 // Open message queue handling client-server communication
@@ -167,30 +194,14 @@
                     }
                 if (status == TMS_RESULT_SUCCESS)
                     {
-                    TRAP(status, iCSUplink = TMSCSUplink::NewL(*this));
-
-                    if (status == TMS_RESULT_SUCCESS)
-                        {
-                        TRAP(status, iDTMFUplinkPlayer =
-                                TMSDTMFProvider::NewL());
-                        iDTMFUplinkPlayer->AddObserver(*this);
-                        if (!iDTMFNotifier)
-                            {
-                            TRAP(status, iDTMFNotifier =
-                                    TMSDtmfNotifier::NewL());
-                            }
-                        }
+                    status = InitUplink(retrytime);
                     }
-                iStrmtype = TMS_STREAM_UPLINK;
-                }
-            else
-                {
-                status = TMS_RESULT_DOES_NOT_EXIST;
                 }
             break;
             }
         case TMS_STREAM_DOWNLINK:
             {
+            status = TMS_RESULT_DOES_NOT_EXIST;
             if (strmId == iDnlinkStreamId)
                 {
                 // Open message queue handling client-server communication
@@ -201,35 +212,8 @@
                     }
                 if (status == TMS_RESULT_SUCCESS)
                     {
-                    TRAP(status, iCSDownlink = TMSCSDownlink::NewL(*this));
-                    if (status == TMS_RESULT_SUCCESS)
-                        {
-                        TRAP(status, iRouting =
-                                CTelephonyAudioRouting::NewL(*this));
-                        if (status == TMS_RESULT_SUCCESS)
-                            {
-                            TRAP(status, iTarSettings = TMSTarSettings::NewL());
-                            }
-                        if (status == TMS_RESULT_SUCCESS)
-                            {
-                            TRAP(status, iDTMFDnlinkPlayer =
-                                    TMSAudioDtmfTonePlayer::NewL(*this,
-                                    KAudioDTMFString,
-                                    KAudioPriorityDTMFString));
-
-                            if (!iDTMFNotifier)
-                                {
-                                TRAP(status, iDTMFNotifier =
-                                        TMSDtmfNotifier::NewL());
-                                }
-                            }
-                        }
+                    status = InitDownlink(retrytime);
                     }
-                iStrmtype = TMS_STREAM_DOWNLINK;
-                }
-            else
-                {
-                status = TMS_RESULT_DOES_NOT_EXIST;
                 }
             break;
             }
@@ -246,32 +230,98 @@
     }
 
 // -----------------------------------------------------------------------------
+// TMSCallCSAdpt::InitUplink
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::InitUplink(const gint retrytime)
+    {
+    gint status(TMS_RESULT_SUCCESS);
+
+    if (!iCSUplink)
+        {
+        TRAP(status, iCSUplink = TMSCSUplink::NewL(*this, retrytime));
+        }
+    if (!iDTMFUplinkPlayer && status == TMS_RESULT_SUCCESS)
+        {
+        TRAP(status, iDTMFUplinkPlayer = TMSDTMFProvider::NewL());
+        iDTMFUplinkPlayer->AddObserver(*this);
+        }
+    if (!iDTMFNotifier && status == TMS_RESULT_SUCCESS)
+        {
+        TRAP(status, iDTMFNotifier = TMSDtmfNotifier::NewL());
+        }
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallCSAdpt::InitDownlink
+//
+// -----------------------------------------------------------------------------
+//
+gint TMSCallCSAdpt::InitDownlink(const gint retrytime)
+    {
+    gint status(TMS_RESULT_SUCCESS);
+
+    if (!iCSDownlink)
+        {
+        TRAP(status, iCSDownlink = TMSCSDownlink::NewL(*this, retrytime));
+        }
+    if (!iRouting && status == TMS_RESULT_SUCCESS)
+        {
+        TRAP(status, iRouting = CTelephonyAudioRouting::NewL(*this));
+        }
+    if (!iTarSettings && status == TMS_RESULT_SUCCESS)
+        {
+        TRAP(status, iTarSettings = TMSTarSettings::NewL());
+        }
+    if (!iDTMFDnlinkPlayer && status == TMS_RESULT_SUCCESS)
+        {
+        TRAP(status, iDTMFDnlinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this,
+                KAudioDTMFString, KAudioPriorityDTMFString));
+        }
+    if (!iDTMFNotifier && status == TMS_RESULT_SUCCESS)
+        {
+        TRAP(status, iDTMFNotifier = TMSDtmfNotifier::NewL());
+        }
+    return status;
+    }
+
+// -----------------------------------------------------------------------------
 // TMSCallCSAdpt::StartStream
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallCSAdpt::StartStream(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId)
+gint TMSCallCSAdpt::StartStream(const TMSCallType /*callType*/,
+        const TMSStreamType strmType, const gint strmId, const gint retrytime)
     {
     TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
+    gint status(TMS_RESULT_INVALID_STATE);
     switch (strmType)
         {
         case TMS_STREAM_UPLINK:
+            {
             if (iCSUplink && strmId == iUplinkStreamId)
                 {
-                iCSUplink->Activate();
+                iCSUplink->Activate(retrytime);
+                status = TMS_RESULT_SUCCESS;
                 }
             break;
+            }
         case TMS_STREAM_DOWNLINK:
+            {
             if (iCSDownlink && strmId == iDnlinkStreamId)
                 {
-                iCSDownlink->Activate();
+                iCSDownlink->Activate(retrytime);
+                status = TMS_RESULT_SUCCESS;
                 }
             break;
+            }
         default:
+            {
             status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
             break;
+            }
         }
     TRACE_PRN_FN_EXT;
     return status;
@@ -282,11 +332,11 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallCSAdpt::PauseStream(TMSCallType /*callType*/,
-        TMSStreamType /*strmType*/, gint /*strmId*/)
+gint TMSCallCSAdpt::PauseStream(const TMSCallType /*callType*/,
+        const TMSStreamType /*strmType*/, const gint /*strmId*/)
     {
     TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
+    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
     TRACE_PRN_FN_EXT;
     return status;
     }
@@ -296,32 +346,39 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallCSAdpt::StopStream(TMSCallType /*callType*/, TMSStreamType strmType,
-        gint strmId)
+gint TMSCallCSAdpt::StopStream(const TMSCallType /*callType*/,
+        const TMSStreamType strmType, const gint strmId)
     {
     TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
+    gint status(TMS_RESULT_INVALID_STATE);
+
     switch (strmType)
         {
         case TMS_STREAM_UPLINK:
+            {
             if (iCSUplink && strmId == iUplinkStreamId)
                 {
                 iCSUplink->Deactivate();
-                NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete,
-                        status, 0);
+                status = TMS_RESULT_SUCCESS;
+                NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
                 }
             break;
+            }
         case TMS_STREAM_DOWNLINK:
+            {
             if (iCSDownlink && strmId == iDnlinkStreamId)
                 {
                 iCSDownlink->Deactivate();
-                NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete,
-                        status, 0);
+                status = TMS_RESULT_SUCCESS;
+                NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
                 }
             break;
+            }
         default:
+            {
             status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
             break;
+            }
         }
     TRACE_PRN_FN_EXT;
     return status;
@@ -332,20 +389,22 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallCSAdpt::DeinitStream(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId)
+gint TMSCallCSAdpt::DeinitStream(const TMSCallType /*callType*/,
+        const TMSStreamType strmType, const gint strmId)
     {
     TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
+    gint status(TMS_RESULT_INVALID_STATE);
+
     switch (strmType)
         {
         case TMS_STREAM_UPLINK:
+            {
             if (iCSUplink && strmId == iUplinkStreamId)
                 {
                 iCSUplink->Deactivate();
                 iUplinkInitialized = FALSE;
-                NotifyClient(iUplinkStreamId, ECmdUplinkDeInitComplete,
-                        status, 0);
+                status = TMS_RESULT_SUCCESS;
+                NotifyClient(iUplinkStreamId, ECmdUplinkDeInitComplete, status);
                 }
             break;
         case TMS_STREAM_DOWNLINK:
@@ -353,13 +412,17 @@
                 {
                 iCSDownlink->Deactivate();
                 iDnlinkInitialized = FALSE;
+                status = TMS_RESULT_SUCCESS;
                 NotifyClient(iDnlinkStreamId, ECmdDownlinkDeInitComplete,
-                        status, 0);
+                        status);
                 }
             break;
+            }
         default:
+            {
             status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
             break;
+            }
         }
     TRACE_PRN_FN_EXT;
     return status;
@@ -370,30 +433,36 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallCSAdpt::DeleteStream(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId)
+gint TMSCallCSAdpt::DeleteStream(const TMSCallType /*callType*/,
+        const TMSStreamType strmType, const gint strmId)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_SUCCESS);
     switch (strmType)
         {
         case TMS_STREAM_UPLINK:
+            {
             if (strmId == iUplinkStreamId)
                 {
                 iUplinkStreamId = -1;
                 iUplinkInitialized = FALSE;
                 }
             break;
+            }
         case TMS_STREAM_DOWNLINK:
+            {
             if (strmId == iDnlinkStreamId)
                 {
                 iDnlinkStreamId = -1;
                 iDnlinkInitialized = FALSE;
                 }
             break;
+            }
         default:
+            {
             status = TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED;
             break;
+            }
         }
     TRACE_PRN_FN_EXT;
     return status;
@@ -404,8 +473,8 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallCSAdpt::DataXferBufferEmptied(TMSCallType /*callType*/,
-        TMSStreamType /*strmType*/, gint /*strmId*/)
+gint TMSCallCSAdpt::DataXferBufferEmptied(const TMSCallType /*callType*/,
+        const TMSStreamType /*strmType*/, const gint /*strmId*/)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
@@ -418,8 +487,9 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallCSAdpt::DataXferBufferFilled(TMSCallType /*callType*/,
-        TMSStreamType /*strmType*/, gint /*strmId*/, guint /*datasize*/)
+gint TMSCallCSAdpt::DataXferBufferFilled(const TMSCallType /*callType*/,
+        const TMSStreamType /*strmType*/, const gint /*strmId*/,
+        const guint /*datasize*/)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
@@ -450,11 +520,12 @@
 gint TMSCallCSAdpt::GetMaxVolume(guint& volume)
     {
     TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_ILLEGAL_OPERATION);
+    gint status(TMS_RESULT_INVALID_STATE);
     if (iCSDownlink && iDnlinkInitialized)
         {
         volume = iCSDownlink->MaxVolume();
         status = TMS_RESULT_SUCCESS;
+        TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt: GetMaxVolume [%d]"), volume);
         }
     TRACE_PRN_FN_EXT;
     return status;
@@ -468,12 +539,12 @@
 gint TMSCallCSAdpt::SetVolume(const guint volume)
     {
     TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_ILLEGAL_OPERATION);
+    gint status(TMS_RESULT_INVALID_STATE);
     if (iCSDownlink && iDnlinkInitialized)
         {
         iCSDownlink->SetVolume(volume);
         status = TMS_RESULT_SUCCESS;
-        NotifyClient(iDnlinkStreamId, ECmdSetVolume, status, 0);
+        NotifyClient(iDnlinkStreamId, ECmdSetVolume, status);
         }
     TRACE_PRN_FN_EXT;
     return status;
@@ -487,13 +558,12 @@
 gint TMSCallCSAdpt::GetVolume(guint& volume)
     {
     TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_ILLEGAL_OPERATION);
+    gint status(TMS_RESULT_INVALID_STATE);
     if (iCSDownlink && iDnlinkInitialized)
         {
         volume = iCSDownlink->Volume();
         status = TMS_RESULT_SUCCESS;
         }
-
     TRACE_PRN_FN_EXT;
     return status;
     }
@@ -506,11 +576,12 @@
 gint TMSCallCSAdpt::GetMaxGain(guint& gain)
     {
     TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_ILLEGAL_OPERATION);
+    gint status(TMS_RESULT_INVALID_STATE);
     if (iCSUplink && iUplinkInitialized)
         {
         gain = iCSUplink->MaxGain();
         status = TMS_RESULT_SUCCESS;
+        TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetMaxGain [%d]"), gain);
         }
     TRACE_PRN_FN_EXT;
     return status;
@@ -524,12 +595,12 @@
 gint TMSCallCSAdpt::SetGain(const guint gain)
     {
     TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_ILLEGAL_OPERATION);
-    if (iUplinkInitialized)
+    gint status(TMS_RESULT_INVALID_STATE);
+    if (iCSUplink && iUplinkInitialized)
         {
         iCSUplink->SetGain(gain);
         status = TMS_RESULT_SUCCESS;
-        NotifyClient(iUplinkInitialized, ECmdSetGain, status, 0);
+        NotifyClient(iUplinkStreamId, ECmdSetGain, status);
         }
     TRACE_PRN_FN_EXT;
     return status;
@@ -543,7 +614,7 @@
 gint TMSCallCSAdpt::GetGain(guint& gain)
     {
     TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_ILLEGAL_OPERATION);
+    gint status(TMS_RESULT_INVALID_STATE);
     if (iCSUplink && iUplinkInitialized)
         {
         gain = iCSUplink->Gain();
@@ -561,11 +632,12 @@
 gint TMSCallCSAdpt::GetGlobalMaxVolume(guint& volume)
     {
     TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_ILLEGAL_OPERATION);
+    gint status(TMS_RESULT_INVALID_STATE);
     if (iCSDownlink && iDnlinkInitialized)
         {
         volume = iCSDownlink->MaxVolume();
         status = TMS_RESULT_SUCCESS;
+        TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetGlobalMaxVolume [%d]"), volume);
         }
     TRACE_PRN_FN_EXT;
     return status;
@@ -579,8 +651,7 @@
 gint TMSCallCSAdpt::SetGlobalVolume(const guint volume)
     {
     TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-
+    gint status(TMS_RESULT_INVALID_STATE);
     iGlobalVol = volume;
     if (iCSDownlink && iDnlinkInitialized)
         {
@@ -599,13 +670,12 @@
 gint TMSCallCSAdpt::GetGlobalVolume(guint& volume)
     {
     TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_ILLEGAL_OPERATION);
+    gint status(TMS_RESULT_INVALID_STATE);
     if (iCSDownlink && iDnlinkInitialized)
         {
         volume = iCSDownlink->Volume();
         status = TMS_RESULT_SUCCESS;
         }
-
     TRACE_PRN_FN_EXT;
     return status;
     }
@@ -618,11 +688,12 @@
 gint TMSCallCSAdpt::GetGlobalMaxGain(guint& gain)
     {
     TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_ILLEGAL_OPERATION);
+    gint status(TMS_RESULT_INVALID_STATE);
     if (iCSUplink && iUplinkInitialized)
         {
         gain = iCSUplink->MaxGain();
         status = TMS_RESULT_SUCCESS;
+        TRACE_PRN_N1(_L("TMS->TMSCallCSAdpt::GetGlobalMaxGain [%d]"), gain);
         }
     TRACE_PRN_FN_EXT;
     return status;
@@ -636,8 +707,7 @@
 gint TMSCallCSAdpt::SetGlobalGain(const guint gain)
     {
     TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-
+    gint status(TMS_RESULT_INVALID_STATE);
     iGlobalGain = gain;
     if (iCSUplink && iUplinkInitialized)
         {
@@ -656,7 +726,7 @@
 gint TMSCallCSAdpt::GetGlobalGain(guint& gain)
     {
     TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_ILLEGAL_OPERATION);
+    gint status(TMS_RESULT_INVALID_STATE);
     if (iCSUplink && iUplinkInitialized)
         {
         gain = iCSUplink->Gain();
@@ -668,7 +738,7 @@
 
 // -----------------------------------------------------------------------------
 // TMSCallCSAdpt::GetCodecMode
-//
+// No codec format in CS call
 // -----------------------------------------------------------------------------
 //
 gint TMSCallCSAdpt::GetCodecMode(const TMSFormatType /*fmttype*/,
@@ -682,7 +752,7 @@
 
 // -----------------------------------------------------------------------------
 // TMSCallCSAdpt::SetCodecMode
-//
+// No codec format in CS call
 // -----------------------------------------------------------------------------
 //
 gint TMSCallCSAdpt::SetCodecMode(const TMSFormatType /*fmttype*/,
@@ -696,7 +766,7 @@
 
 // -----------------------------------------------------------------------------
 // TMSCallCSAdpt::GetSupportedBitRatesCount
-//
+// No codec format in CS call
 // -----------------------------------------------------------------------------
 //
 gint TMSCallCSAdpt::GetSupportedBitRatesCount(guint& /*count*/)
@@ -712,26 +782,15 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallCSAdpt::GetSupportedBitRates(CBufFlat*& brbuffer)
+gint TMSCallCSAdpt::GetSupportedBitRates(CBufFlat*& /*brbuffer*/)
     {
     TRACE_PRN_FN_ENT;
-    TRAPD(status, GetSupportedBitRatesL(brbuffer));
+    gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
     TRACE_PRN_FN_EXT;
     return status;
     }
 
 // -----------------------------------------------------------------------------
-// TMSCallCSAdpt::GetSupportedBitRatesL
-//
-// GetSupportedBitRates implementation which can leave.
-// -----------------------------------------------------------------------------
-//
-void TMSCallCSAdpt::GetSupportedBitRatesL(CBufFlat*& /*brbuffer*/)
-    {
-    User::Leave(TMS_RESULT_FEATURE_NOT_SUPPORTED);
-    }
-
-// -----------------------------------------------------------------------------
 // TMSCallCSAdpt::GetBitRate
 //
 // -----------------------------------------------------------------------------
@@ -775,7 +834,8 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallCSAdpt::SetVAD(const TMSFormatType /*fmttype*/, const gboolean /*vad*/)
+gint TMSCallCSAdpt::SetVAD(const TMSFormatType /*fmttype*/,
+        const gboolean /*vad*/)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_FEATURE_NOT_SUPPORTED);
@@ -842,7 +902,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallCSAdpt::SetOutput(TMSAudioOutput output)
+gint TMSCallCSAdpt::SetOutput(const TMSAudioOutput output)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
@@ -913,7 +973,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallCSAdpt::GetAvailableOutputsL(gint& count, CBufFlat*& outputsbuffer)
+gint TMSCallCSAdpt::GetAvailableOutputsL(gint& count, CBufFlat*& outputsbuf)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
@@ -922,11 +982,11 @@
     if (iRouting)
         {
         RBufWriteStream stream;
-        stream.Open(*outputsbuffer);
+        stream.Open(*outputsbuf);
         CleanupClosePushL(stream);
 
-        TArray<CTelephonyAudioRouting::TAudioOutput> availableOutputs =
-                iRouting->AvailableOutputs();
+        TArray<CTelephonyAudioRouting::TAudioOutput>
+                availableOutputs = iRouting->AvailableOutputs();
 
         guint numOfItems = availableOutputs.Count();
         count = numOfItems;
@@ -949,26 +1009,23 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallCSAdpt::StartDTMF(TMSStreamType strmtype, TDes& dtmfstring)
+gint TMSCallCSAdpt::StartDTMF(const TMSStreamType strmtype, TDes& dtmfstring)
     {
     TRACE_PRN_FN_ENT;
-    gint status(TMS_RESULT_SUCCESS);
-
+    gint status(TMS_RESULT_STREAM_TYPE_NOT_SUPPORTED);
     TmsMsgBufPckg dtmfpckg;
+    dtmfpckg().iStatus = status;
+    dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
 
     if (strmtype == TMS_STREAM_DOWNLINK && iDnlinkInitialized)
         {
         if (iDTMFDnlinkPlayer)
             {
             iDTMFDnlinkPlayer->PlayDtmfTone(dtmfstring);
+            status = TMS_RESULT_SUCCESS;
             }
-
         dtmfpckg().iStatus = TMS_RESULT_SUCCESS;
         dtmfpckg().iRequest = ECmdDTMFToneDnlPlayStarted;
-        if (iDTMFNotifier)
-            {
-            iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
-            }
         }
     else if (strmtype == TMS_STREAM_UPLINK && iUplinkInitialized)
         {
@@ -976,17 +1033,18 @@
         if (iDTMFUplinkPlayer)
             {
             status = iDTMFUplinkPlayer->SendDtmfToneString(dtmfstring);
+            status = TMS_RESULT_SUCCESS;
             }
-
         dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(status);
         dtmfpckg().iRequest = ECmdDTMFToneUplPlayStarted;
-
-        if (iDTMFNotifier)
-            {
-            iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
-            }
         }
 
+    if (iDTMFNotifier)
+        {
+        iDTMFNotifier->SetDtmf(dtmfpckg);
+        }
+
+    TRACE_PRN_IF_ERR(status);
     TRACE_PRN_FN_EXT;
     return status;
     }
@@ -996,7 +1054,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallCSAdpt::StopDTMF(TMSStreamType streamtype)
+gint TMSCallCSAdpt::StopDTMF(const TMSStreamType streamtype)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_SUCCESS);
@@ -1020,14 +1078,14 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallCSAdpt::ContinueDTMF(gboolean continuesending)
+gint TMSCallCSAdpt::ContinueDTMF(const gboolean sending)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
 
     if (iDTMFUplinkPlayer)
         {
-        status = iDTMFUplinkPlayer->ContinueDtmfStringSending(continuesending);
+        status = iDTMFUplinkPlayer->ContinueDtmfStringSending(sending);
         status = TMSUtility::EtelToTMSResult(status);
         }
 
@@ -1035,13 +1093,13 @@
     return status;
     }
 
-//From DTMFTonePlayerObserver
+//From TMSDTMFTonePlayerObserver
 // -----------------------------------------------------------------------------
 // TMSCallCSAdpt::DTMFInitCompleted
 //
 // -----------------------------------------------------------------------------
 //
-void TMSCallCSAdpt::DTMFInitCompleted(gint /*error*/)
+void TMSCallCSAdpt::DTMFInitCompleted(gint /*status*/)
     {
     TRACE_PRN_FN_ENT;
     // TODO: process error
@@ -1053,23 +1111,23 @@
 //
 // -----------------------------------------------------------------------------
 //
-void TMSCallCSAdpt::DTMFToneFinished(gint error)
+void TMSCallCSAdpt::DTMFToneFinished(gint status)
     {
     TRACE_PRN_FN_ENT;
+    TRACE_PRN_IF_ERR(status);
     TmsMsgBufPckg dtmfpckg;
 
-    if (error == KErrUnderflow || error == KErrInUse)
+    // KErrUnderflow indicates end of DTMF playback.
+    if (status == KErrUnderflow || status == KErrInUse)
         {
-        error = TMS_RESULT_SUCCESS;
+        status = TMS_RESULT_SUCCESS;
         }
-
-    dtmfpckg().iStatus = TMSUtility::TMSResult(error);
+    dtmfpckg().iStatus = TMSUtility::TMSResult(status);
     dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
     if (iDTMFNotifier)
         {
-        iDTMFNotifier->SetDtmf(dtmfpckg, TRUE);
+        iDTMFNotifier->SetDtmf(dtmfpckg);
         }
-
     TRACE_PRN_FN_EXT;
     }
 
@@ -1079,19 +1137,18 @@
 // -----------------------------------------------------------------------------
 //
 void TMSCallCSAdpt::HandleDTMFEvent(
-        const TMSDTMFObserver::TCCPDtmfEvent aEvent, const gint aError,
-        const TChar /*aTone*/)
+        const TMSDTMFObserver::TCCPDtmfEvent event, const gint status,
+        const TChar /*tone*/)
     {
     TRACE_PRN_FN_ENT;
     TmsMsgBufPckg dtmfpckg;
 
-    TRACE_PRN_N1(_L("**TMS TMSCallCSAdpt::HandleDTMFEvent error:%d"),aError);
-
-    dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(aError);
+    TRACE_PRN_N1(_L("**TMS TMSCallCSAdpt::HandleDTMFEvent error:%d"), status);
 
-    switch (aEvent)
+    dtmfpckg().iStatus = TMSUtility::EtelToTMSResult(status);
+
+    switch (event)
         {
-
         case ECCPDtmfUnknown:               //Unknown
             break;
         case ECCPDtmfManualStart:           //DTMF sending started manually
@@ -1117,78 +1174,59 @@
     TRACE_PRN_FN_EXT;
     }
 
-// From TMSCSPDevSoundObserver
-
 // -----------------------------------------------------------------------------
 // TMSCallCSAdpt::DownlinkInitCompleted
-//
+// From TMSCSDevSoundObserver
 // -----------------------------------------------------------------------------
 //
 void TMSCallCSAdpt::DownlinkInitCompleted(gint status)
     {
     TRACE_PRN_FN_ENT;
-    NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status, 0);
+    if (status == TMS_RESULT_SUCCESS)
+        {
+        iDnlinkInitialized = TRUE;
+        }
+    NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
     TRACE_PRN_FN_EXT;
     }
 
 // -----------------------------------------------------------------------------
 // TMSCallCSAdpt::UplinkInitCompleted
-//
+// From TMSCSDevSoundObserver
 // -----------------------------------------------------------------------------
 //
 void TMSCallCSAdpt::UplinkInitCompleted(gint status)
     {
     TRACE_PRN_FN_ENT;
-    NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status, 0);
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::UplinkActivatedSuccessfully
-//
-// -----------------------------------------------------------------------------
-//
-void TMSCallCSAdpt::UplinkActivatedSuccessfully()
-    {
-    TRACE_PRN_FN_ENT;
-    NotifyClient(iUplinkStreamId, ECmdUplinkStarted, KErrNone, 0);
-    TRACE_PRN_FN_EXT;
-    }
-
-// -----------------------------------------------------------------------------
-// TMSCallCSAdpt::DownlinkActivatedSuccessfully
-//
-// -----------------------------------------------------------------------------
-//
-void TMSCallCSAdpt::DownlinkActivatedSuccessfully()
-    {
-    TRACE_PRN_FN_ENT;
-    NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, KErrNone, 0);
+    if (status == TMS_RESULT_SUCCESS)
+        {
+        iUplinkInitialized = TRUE;
+        }
+    NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
     TRACE_PRN_FN_EXT;
     }
 
 // -----------------------------------------------------------------------------
 // TMSCallCSAdpt::UplinkActivationFailed
-//
+// From TMSCSDevSoundObserver
 // -----------------------------------------------------------------------------
 //
-void TMSCallCSAdpt::UplinkActivationFailed()
+void TMSCallCSAdpt::UplinkActivationCompleted(gint status)
     {
     TRACE_PRN_FN_ENT;
-    NotifyClient(iUplinkStreamId, ECmdUplinkStarted, TMS_RESULT_FATAL_ERROR, 0);
+    NotifyClient(iUplinkStreamId, ECmdUplinkStarted, status);
     TRACE_PRN_FN_EXT;
     }
 
 // -----------------------------------------------------------------------------
 // TMSCallCSAdpt::DownlinkActivationFailed
-//
+// From TMSCSDevSoundObserver
 // -----------------------------------------------------------------------------
 //
-void TMSCallCSAdpt::DownlinkActivationFailed()
+void TMSCallCSAdpt::DownlinkActivationCompleted(gint status)
     {
     TRACE_PRN_FN_ENT;
-    NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted,
-            TMS_RESULT_FATAL_ERROR, 0);
+    NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, status);
     TRACE_PRN_FN_EXT;
     }
 
@@ -1229,7 +1267,7 @@
 // -----------------------------------------------------------------------------
 //
 void TMSCallCSAdpt::SetOutputComplete(
-        CTelephonyAudioRouting& aTelephonyAudioRouting, gint /*aError*/)
+        CTelephonyAudioRouting& aTelephonyAudioRouting, gint /*status*/)
     {
     TRACE_PRN_FN_ENT;
     TRoutingMsgBufPckg pckg;
--- a/mmserv/tms/tmscallserver/src/tmscallipadpt.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallserver/src/tmscallipadpt.cpp	Fri May 28 19:26:28 2010 -0500
@@ -19,7 +19,6 @@
 #include "tmsutility.h"
 #include "tmsclientserver.h"
 #include "tmsshared.h"
-#include "tmsipcallstream.h"
 #include "tmscallipadpt.h"
 
 using namespace TMS;
@@ -46,8 +45,8 @@
 void TMSCallIPAdpt::ConstructL()
     {
     TRACE_PRN_FN_ENT;
+    iIPDownlink = NULL;
     iIPUplink = NULL;
-    iIPDownlink = NULL;
     iDTMFDnlinkPlayer = NULL;
     iDTMFUplinkPlayer = NULL;
     iDTMFNotifier = NULL;
@@ -114,8 +113,8 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallIPAdpt::CreateStream(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint& outStrmId)
+gint TMSCallIPAdpt::CreateStream(const TMSCallType /*callType*/,
+        const TMSStreamType strmType, gint& outStrmId)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_SUCCESS);
@@ -126,10 +125,10 @@
             status = TMS_RESULT_ALREADY_EXIST;
             if (!iUplinkInitialized)
                 {
-                iUplinkInitialized = TRUE;
                 iUplinkStreamId = iNextStreamId;
                 outStrmId = iUplinkStreamId;
                 iNextStreamId++;
+                //iUplinkInitialized = TRUE; //not initialized yet!
                 status = TMS_RESULT_SUCCESS;
                 }
             break;
@@ -139,10 +138,10 @@
             status = TMS_RESULT_ALREADY_EXIST;
             if (!iDnlinkInitialized)
                 {
-                iDnlinkInitialized = TRUE;
                 iDnlinkStreamId = iNextStreamId;
                 outStrmId = iDnlinkStreamId;
                 iNextStreamId++;
+                //iDnlinkInitialized = TRUE; //not initialized yet!
                 status = TMS_RESULT_SUCCESS;
                 }
             break;
@@ -162,12 +161,13 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallIPAdpt::InitStream(TMSCallType /*callType*/, TMSStreamType strmType,
-        gint strmId, TMSFormatType frmtType, const RMessage2& message)
+gint TMSCallIPAdpt::InitStream(const TMSCallType /*callType*/,
+        const TMSStreamType strmType, const gint strmId,
+        const TMSFormatType frmtType, const gint retrytime,
+        const RMessage2& message)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_SUCCESS);
-
     guint32 fourCC = TOFOURCC(frmtType);
     if (fourCC == NULL)
         {
@@ -182,12 +182,11 @@
             if (strmId == iUplinkStreamId)
                 {
                 SetFormat(iUplinkStreamId, fourCC);
-                status = OpenUplinkL(message);
+                status = OpenUplink(message, retrytime);
                 if (status == TMS_RESULT_SUCCESS)
                     {
                     status = InitDTMF(TMS_STREAM_UPLINK);
                     }
-                NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
                 }
             break;
             }
@@ -197,12 +196,11 @@
             if (strmId == iDnlinkStreamId)
                 {
                 SetFormat(iDnlinkStreamId, fourCC);
-                status = OpenDownlinkL(message);
+                status = OpenDownlink(message, retrytime);
                 if (status == TMS_RESULT_SUCCESS)
                     {
                     status = InitDTMF(TMS_STREAM_DOWNLINK);
                     }
-                NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
                 }
             break;
             }
@@ -223,8 +221,8 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallIPAdpt::StartStream(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId)
+gint TMSCallIPAdpt::StartStream(const TMSCallType /*callType*/,
+        const TMSStreamType strmType, const gint strmId, const gint retrytime)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_INVALID_STATE);
@@ -232,9 +230,9 @@
         {
         case TMS_STREAM_UPLINK:
             {
-            if (strmId == iUplinkStreamId && iIPUplink)
+            if (iIPUplink && strmId == iUplinkStreamId)
                 {
-                iIPUplink->Start();
+                iIPUplink->Start(retrytime);
                 status = TMS_RESULT_SUCCESS;
                 NotifyClient(iUplinkStreamId, ECmdUplinkStarted, status);
                 }
@@ -242,9 +240,9 @@
             }
         case TMS_STREAM_DOWNLINK:
             {
-            if (strmId == iDnlinkStreamId && iIPDownlink)
+            if (iIPDownlink && strmId == iDnlinkStreamId)
                 {
-                iIPDownlink->Start();
+                iIPDownlink->Start(retrytime);
                 status = TMS_RESULT_SUCCESS;
                 NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, status);
                 }
@@ -265,8 +263,8 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallIPAdpt::PauseStream(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId)
+gint TMSCallIPAdpt::PauseStream(const TMSCallType /*callType*/,
+        const TMSStreamType strmType, const gint strmId)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_INVALID_STATE);
@@ -307,8 +305,8 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallIPAdpt::StopStream(TMSCallType /*callType*/, TMSStreamType strmType,
-        gint strmId)
+gint TMSCallIPAdpt::StopStream(const TMSCallType /*callType*/,
+        const TMSStreamType strmType, const gint strmId)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_INVALID_STATE);
@@ -317,7 +315,7 @@
         {
         case TMS_STREAM_UPLINK:
             {
-            if (strmId == iUplinkStreamId && iIPUplink)
+            if (iIPUplink && strmId == iUplinkStreamId)
                 {
                 iIPUplink->Stop();
                 status = TMS_RESULT_SUCCESS;
@@ -327,7 +325,7 @@
             }
         case TMS_STREAM_DOWNLINK:
             {
-            if (strmId == iDnlinkStreamId && iIPDownlink)
+            if (iIPDownlink && strmId == iDnlinkStreamId)
                 {
                 iIPDownlink->Stop();
                 status = TMS_RESULT_SUCCESS;
@@ -350,8 +348,8 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallIPAdpt::DeinitStream(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId)
+gint TMSCallIPAdpt::DeinitStream(const TMSCallType /*callType*/,
+        const TMSStreamType strmType, const gint strmId)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_INVALID_STATE);
@@ -360,20 +358,19 @@
         {
         case TMS_STREAM_UPLINK:
             {
-            if (strmId == iUplinkStreamId && iIPUplink)
+            if (iIPUplink && strmId == iUplinkStreamId)
                 {
                 iIPUplink->Stop();
                 //iUplinkStreamId = -1;
                 iUplinkInitialized = FALSE;
                 status = TMS_RESULT_SUCCESS;
-                NotifyClient(iUplinkStreamId, ECmdDownlinkDeInitComplete,
-                        status);
+                NotifyClient(iUplinkStreamId, ECmdUplinkDeInitComplete, status);
                 }
             break;
             }
         case TMS_STREAM_DOWNLINK:
             {
-            if (strmId == iDnlinkStreamId && iIPDownlink)
+            if (iIPDownlink && strmId == iDnlinkStreamId)
                 {
                 iIPDownlink->Stop();
                 //iDnlinkStreamId = -1;
@@ -400,8 +397,8 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallIPAdpt::DeleteStream(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId)
+gint TMSCallIPAdpt::DeleteStream(const TMSCallType /*callType*/,
+        const TMSStreamType strmType, const gint strmId)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_SUCCESS);
@@ -409,7 +406,6 @@
         {
         case TMS_STREAM_UPLINK:
             {
-            // This is additional error checking
             if (strmId == iUplinkStreamId)
                 {
                 iUplinkStreamId = -1;
@@ -419,7 +415,6 @@
             }
         case TMS_STREAM_DOWNLINK:
             {
-            // This is additional error checking
             if (strmId == iDnlinkStreamId)
                 {
                 iDnlinkStreamId = -1;
@@ -442,8 +437,8 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallIPAdpt::DataXferBufferEmptied(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId)
+gint TMSCallIPAdpt::DataXferBufferEmptied(const TMSCallType /*callType*/,
+        const TMSStreamType strmType, const gint strmId)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_SUCCESS);
@@ -473,8 +468,8 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallIPAdpt::DataXferBufferFilled(TMSCallType /*callType*/,
-        TMSStreamType strmType, gint strmId, guint datasize)
+gint TMSCallIPAdpt::DataXferBufferFilled(const TMSCallType /*callType*/,
+        const TMSStreamType strmType, const gint strmId, const guint datasize)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_SUCCESS);
@@ -543,14 +538,12 @@
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_INVALID_STATE);
-
     if (iDnlinkInitialized && iIPDownlink)
         {
         status = iIPDownlink->GetMaxVolume(volume);
         iMaxVolume = volume;
         TRACE_PRN_N1(_L("TMS->TMSCallIPAdpt: GetMaxVolume [%d]"), iMaxVolume);
         }
-
     TRACE_PRN_FN_EXT;
     return status;
     }
@@ -657,7 +650,7 @@
         {
         status = iIPDownlink->GetMaxVolume(volume);
         iMaxVolume = volume;
-        TRACE_PRN_N1(_L("TMS->TMSCallIPAdpt: GetMaxVolume [%d]"), iMaxVolume);
+        TRACE_PRN_N1(_L("TMS->TMSCallIPAdpt::GetGlobalMaxVolume [%d]"), volume);
         }
     TRACE_PRN_FN_EXT;
     return status;
@@ -672,6 +665,7 @@
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_INVALID_STATE);
+    //iGlobalVol = volume;
     if (iDnlinkInitialized && iIPDownlink)
         {
         status = iIPDownlink->SetVolume(volume);
@@ -710,7 +704,7 @@
         {
         status = iIPUplink->GetMaxGain(gain);
         iMaxGain = gain;
-        TRACE_PRN_N1(_L("TMS->TMSCallIPAdpt::GetMaxGain [%d]"), iMaxGain);
+        TRACE_PRN_N1(_L("TMS->TMSCallIPAdpt::GetGlobalMaxGain [%d]"), gain);
         }
     TRACE_PRN_FN_EXT;
     return status;
@@ -725,6 +719,7 @@
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_INVALID_STATE);
+    //iGlobalGain = gain;
     if (iUplinkInitialized && iIPUplink)
         {
         status = iIPUplink->SetGain(gain);
@@ -995,11 +990,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// TMSCallIPAdpt::OpenDownlinkL
+// TMSCallIPAdpt::OpenDownlink
 // Method for player initialization.
 // -----------------------------------------------------------------------------
 //
-gint TMSCallIPAdpt::OpenDownlinkL(const RMessage2& message)
+gint TMSCallIPAdpt::OpenDownlink(const RMessage2& message, const gint retrytime)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
@@ -1019,10 +1014,11 @@
 
     if (!iIPDownlink)
         {
-        iIPDownlink = TMSIPDownlink::NewL(iDnFourCC, iPriority);
+        TRAP(status, iIPDownlink = TMSIPDownlink::NewL(*this, iDnFourCC,
+                iPriority, retrytime));
         }
 
-    if (iIPDownlink)
+    if (iIPDownlink && status == TMS_RESULT_SUCCESS)
         {
         // Open message queue for handling server notifications to the client
         if (iMsgQueueDn.Handle() <= 0)
@@ -1043,11 +1039,11 @@
     }
 
 // -----------------------------------------------------------------------------
-// TMSCallIPAdpt::OpenUplinkL
+// TMSCallIPAdpt::OpenUplink
 // Method for recorder initialization.
 // -----------------------------------------------------------------------------
 //
-gint TMSCallIPAdpt::OpenUplinkL(const RMessage2& message)
+gint TMSCallIPAdpt::OpenUplink(const RMessage2& message, const gint retrytime)
     {
     TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
@@ -1065,10 +1061,11 @@
 
     if (!iIPUplink)
         {
-        iIPUplink = TMSIPUplink::NewL(iUpFourCC, iPriority);
+        TRAP(status, iIPUplink = TMSIPUplink::NewL(*this, iUpFourCC, iPriority,
+                retrytime));
         }
 
-    if (iIPUplink)
+    if (iIPUplink && status == TMS_RESULT_SUCCESS)
         {
         // Open message queue for handling server notifications to the client
         if (iMsgQueueUp.Handle() <= 0)
@@ -1360,11 +1357,13 @@
 //
 gint TMSCallIPAdpt::SetOutput(TMSAudioOutput output)
     {
+    TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
     if (iDnlinkInitialized && iIPDownlink)
         {
         TRAP(status, iIPDownlink->SetAudioDeviceL(output));
         }
+    TRACE_PRN_FN_EXT;
     return status;
     }
 // -----------------------------------------------------------------------------
@@ -1374,13 +1373,16 @@
 //
 gint TMSCallIPAdpt::GetOutput(TMSAudioOutput& output)
     {
+    TRACE_PRN_FN_ENT;
     gint status(TMS_RESULT_UNINITIALIZED_OBJECT);
     if (iDnlinkInitialized && iIPDownlink)
         {
         TRAP(status, iIPDownlink->GetAudioDeviceL(output));
         }
+    TRACE_PRN_FN_EXT;
     return status;
     }
+
 // -----------------------------------------------------------------------------
 // TMSCallIPAdpt::GetPreviousOutput
 //
@@ -1397,7 +1399,7 @@
 // -----------------------------------------------------------------------------
 //
 gint TMSCallIPAdpt::GetAvailableOutputsL(gint& /*count*/,
-        CBufFlat*& /*outputsbuffer*/)
+        CBufFlat*& /*outputsbuf*/)
     {
     return TMS_RESULT_FEATURE_NOT_SUPPORTED;
     }
@@ -1416,35 +1418,15 @@
         {
         delete iDTMFDnlinkPlayer;
         iDTMFDnlinkPlayer = NULL;
-
-        /* Clarify with adaptation team which prio/pref values should be used.
-         * 1) KAudioDTMFString                       -local play, no mixing
-         *    KAudioPriorityDTMFString               -local play, no mixing
-         * 2) KAudioPrefUnknownVoipAudioDownlink     -3rd party VoIP?
-         *    KAudioPriorityUnknownVoipAudioDownlink -3rd party VoIP?
-         * 3) KAudioPrefVoipAudioDownlink            -NOK native VoIP?
-         *    KAudioPriorityVoipAudioDownlink        -NOK native VoIP?
-         */
         TRAP(status, iDTMFDnlinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this,
-                KAudioPrefVoipAudioDownlink, KAudioPriorityVoipAudioDownlink));
+                KAudioDTMFString, KAudioPriorityDTMFString));
          }
     else if (strmtype == TMS_STREAM_UPLINK)
         {
         delete iDTMFUplinkPlayer;
         iDTMFUplinkPlayer = NULL;
-
-        /* Clarify with adaptation team which prio/pref values should be used.
-         * Currently the audio policy blocks DTMF mixing with the UPL stream.
-         * 1) KAudioPrefUnknownVoipAudioUplink      -3rd party VoIP?
-         *    KAudioPriorityUnknownVoipAudioUplink  -3rd party VoIP?
-         *    KAudioPriorityUnknownVoipAudioUplinkNonSignal -???
-         * 2) KAudioPrefVoipAudioUplink             -NOK native VoIP?
-         *    KAudioPrefUnknownVoipAudioUplinkNonSignal -???
-         *    KAudioPrefVoipAudioUplinkNonSignal        -???
-         *    KAudioPriorityVoipAudioUplink         -NOK native VoIP?
-         */
         TRAP(status, iDTMFUplinkPlayer = TMSAudioDtmfTonePlayer::NewL(*this,
-                KAudioPrefVoipAudioUplink, KAudioPriorityVoipAudioUplink));
+                KAudioDTMFString, KAudioPriorityDTMFString));
         }
 
     if (!iDTMFNotifier && status == TMS_RESULT_SUCCESS)
@@ -1510,18 +1492,20 @@
 gint TMSCallIPAdpt::StopDTMF(TMSStreamType streamtype)
     {
     TRACE_PRN_FN_ENT;
+    gint status(TMS_RESULT_SUCCESS);
 
-    if (streamtype == TMS_STREAM_DOWNLINK)
+    if (streamtype == TMS_STREAM_DOWNLINK && iDTMFDnlinkPlayer)
         {
         iDTMFDnlinkPlayer->Cancel();
         }
-    else if (streamtype == TMS_STREAM_UPLINK)
+    else if (streamtype == TMS_STREAM_UPLINK && iDTMFUplinkPlayer)
         {
+        //status = iDTMFUplinkPlayer->StopDtmfTone();
         iDTMFUplinkPlayer->Cancel();
         }
 
     TRACE_PRN_FN_EXT;
-    return TMS_RESULT_SUCCESS;
+    return status;
     }
 
 // -----------------------------------------------------------------------------
@@ -1529,7 +1513,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-gint TMSCallIPAdpt::ContinueDTMF(gboolean /*continuesending*/)
+gint TMSCallIPAdpt::ContinueDTMF(const gboolean /*sending*/)
     {
     return TMS_RESULT_FEATURE_NOT_SUPPORTED;
     }
@@ -1540,10 +1524,10 @@
 //
 // -----------------------------------------------------------------------------
 //
-void TMSCallIPAdpt::DTMFInitCompleted(gint /*error*/)
+void TMSCallIPAdpt::DTMFInitCompleted(gint /*status*/)
     {
     TRACE_PRN_FN_ENT;
-    //TRACE_PRN_IF_ERR(error);
+    // TODO: process error
     TRACE_PRN_FN_EXT;
     }
 
@@ -1552,18 +1536,18 @@
 //
 // -----------------------------------------------------------------------------
 //
-void TMSCallIPAdpt::DTMFToneFinished(gint error)
+void TMSCallIPAdpt::DTMFToneFinished(gint status)
     {
     TRACE_PRN_FN_ENT;
-    TRACE_PRN_IF_ERR(error);
+    TRACE_PRN_IF_ERR(status);
     TmsMsgBufPckg dtmfpckg;
 
-    // Ignore KErrUnderflow - end of DTMF playback.
-    if(error == KErrUnderflow /*|| error == KErrInUse*/)
-         {
-         error = TMS_RESULT_SUCCESS;
-         }
-    dtmfpckg().iStatus = error;
+    // KErrUnderflow indicates end of DTMF playback.
+    if (status == KErrUnderflow /*|| status == KErrInUse*/)
+        {
+        status = TMS_RESULT_SUCCESS;
+        }
+    dtmfpckg().iStatus = TMSUtility::TMSResult(status);
     dtmfpckg().iRequest = ECmdDTMFTonePlayFinished;
     if (iDTMFNotifier)
         {
@@ -1573,14 +1557,70 @@
     }
 
 // -----------------------------------------------------------------------------
+// TMSCallIPAdpt::DownlinkInitCompleted
+// From TMSIPDevSoundObserver
+// -----------------------------------------------------------------------------
+//
+void TMSCallIPAdpt::DownlinkInitCompleted(gint status)
+    {
+    TRACE_PRN_FN_ENT;
+    if (status == TMS_RESULT_SUCCESS)
+        {
+        iDnlinkInitialized = TRUE;
+        }
+    NotifyClient(iDnlinkStreamId, ECmdDownlinkInitComplete, status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::UplinkInitCompleted
+// From TMSIPDevSoundObserver
+// -----------------------------------------------------------------------------
+//
+void TMSCallIPAdpt::UplinkInitCompleted(gint status)
+    {
+    TRACE_PRN_FN_ENT;
+    if (status == TMS_RESULT_SUCCESS)
+        {
+        iUplinkInitialized = TRUE;
+        }
+    NotifyClient(iUplinkStreamId, ECmdUplinkInitComplete, status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::UplinkStarted
+// From TMSIPDevSoundObserver
+// -----------------------------------------------------------------------------
+//
+void TMSCallIPAdpt::UplinkStarted(gint status)
+    {
+    TRACE_PRN_FN_ENT;
+    NotifyClient(iUplinkStreamId, ECmdUplinkStarted, status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSCallIPAdpt::DownlinkStarted
+// From TMSIPDevSoundObserver
+// -----------------------------------------------------------------------------
+//
+void TMSCallIPAdpt::DownlinkStarted(gint status)
+    {
+    TRACE_PRN_FN_ENT;
+    NotifyClient(iDnlinkStreamId, ECmdDownlinkStarted, status);
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
 // TMSCallIPAdpt::NotifyClient
 // -----------------------------------------------------------------------------
 //
-void TMSCallIPAdpt::NotifyClient(const gint strmId, const gint aCommand,
-        const gint aStatus, const gint64 /*aInt64*/)
+void TMSCallIPAdpt::NotifyClient(const gint strmId, const gint command,
+        const gint status, const gint64 /*int64*/)
     {
-    iMsgBuffer.iRequest = aCommand;
-    iMsgBuffer.iStatus = aStatus;
+    iMsgBuffer.iRequest = command;
+    iMsgBuffer.iStatus = status;
 
     if (strmId == iUplinkStreamId)
         {
--- a/mmserv/tms/tmscallserver/src/tmscallsession.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallserver/src/tmscallsession.cpp	Fri May 28 19:26:28 2010 -0500
@@ -300,7 +300,7 @@
         TMSCliSrvStreamInitDataStructBufPckg pckg;
         aMessage.ReadL(0, pckg);
         status = iCallAdpt->InitStream(pckg().CallType, pckg().StreamType,
-                pckg().StreamId, pckg().FormatType, aMessage);
+                pckg().StreamId, pckg().FormatType, pckg().RetryTime, aMessage);
 
         switch (pckg().StreamType)
             {
@@ -336,7 +336,7 @@
         TMSCliSrvStreamOpDataStructBufPckg pckg;
         aMessage.ReadL(0, pckg);
         status = iCallAdpt->StartStream(pckg().CallType, pckg().StreamType,
-                pckg().StreamId);
+                pckg().StreamId, pckg().RetryTime);
         }
     aMessage.Complete(status);
     TRACE_PRN_FN_EXT;
--- a/mmserv/tms/tmscallserver/src/tmscsdevsound.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallserver/src/tmscsdevsound.cpp	Fri May 28 19:26:28 2010 -0500
@@ -16,46 +16,93 @@
  */
 
 #include <AudioPreference.h>
-#include <glib.h>
+#include <tms.h>
 #include <S60FourCC.h>
+#include "tmsutility.h"
 #include "tmscsdevsound.h"
 #include "tmscsdevsoundobserver.h"
 
 using namespace TMS;
 
+// CONSTANTS
+const gint KTimeoutInitial = 200000; // 200 ms initial timeout
+const gint KTimeoutMultiplier = 2;   // Double the timeout for each retry
+const gint KMicroSecMultiply = 1000000; //1 sec
+
 // -----------------------------------------------------------------------------
-// TMSCSPDevSound
+// TMSCSDevSound
 // -----------------------------------------------------------------------------
 //
-TMSCSPDevSound::TMSCSPDevSound(TMSCSPDevSoundObserver& aObserver) :
-    iObserver(aObserver)
+TMSCSDevSound::TMSCSDevSound(TMSCSDevSoundObserver& observer) :
+    iObserver(observer)
     {
+    iTimer = NULL;
+    iTimeout = KTimeoutInitial;
+    iInitRetryTime = 0;
+    iStartRetryTime = 0;
     }
 
 // -----------------------------------------------------------------------------
 // ConstructL
 // -----------------------------------------------------------------------------
 //
-void TMSCSPDevSound::ConstructL(TMMFState aMode, gint aAudioPreference,
-        gint aAudioPriority)
+void TMSCSDevSound::ConstructL(const TMSStreamType strmtype,
+        const gint retrytime)
     {
+    TRACE_PRN_FN_ENT;
+    iInitRetryTime = retrytime;
+    iStreamType = strmtype;
+
+    if (strmtype == TMS_STREAM_UPLINK)
+        {
+        iMode = EMMFStateRecording;
+        iPriority = KAudioPriorityCSCallUplink;
+        iPreference = KAudioPrefCSCallUplink;
+        }
+    else if (strmtype == TMS_STREAM_DOWNLINK)
+        {
+        iMode = EMMFStatePlaying;
+        iPriority = KAudioPriorityCSCallDownlink;
+        iPreference = KAudioPrefCSCallDownlink;
+        }
+
+    if (iInitRetryTime != 0)
+        {
+        iTimer = TMSTimer::NewL();
+        }
+
+    InitializeL();
+    TRACE_PRN_FN_EXT;
+    }
+
+// -----------------------------------------------------------------------------
+// InitializeL
+// -----------------------------------------------------------------------------
+//
+void TMSCSDevSound::InitializeL()
+    {
+    TRACE_PRN_FN_ENT;
     TMMFPrioritySettings audioPriority;
     TFourCC modemFourCC;
     modemFourCC.Set(KS60FourCCCodeModem);
+
+    delete iDevSound;
+    iDevSound = NULL;
     iDevSound = CMMFDevSound::NewL();
     if (iDevSound)
         {
 #ifndef __WINSCW__
-        iDevSound->InitializeL(*this, modemFourCC, aMode);
-#else //For testing TMS in WINSCW
-        iDevSound->InitializeL(*this, KMMFFourCCCodePCM16, aMode);
+        iDevSound->InitializeL(*this, modemFourCC, iMode);
+#else
+        //For testing TMS in WINSCW
+        iDevSound->InitializeL(*this, KMMFFourCCCodePCM16, iMode);
 #endif
-        iStreamType = aAudioPreference;
-        audioPriority.iPriority = aAudioPriority;
-        audioPriority.iPref = aAudioPreference;
-        audioPriority.iState = aMode;
+        audioPriority.iPriority = iPriority;
+        audioPriority.iPref = iPreference;
+        audioPriority.iState = iMode;
         iDevSound->SetPrioritySettings(audioPriority);
         }
+    TRACE_PRN_FN_EXT;
     }
 
 // -----------------------------------------------------------------------------
@@ -63,18 +110,24 @@
 // Not implemented
 // -----------------------------------------------------------------------------
 //
-TMSCSPDevSound::~TMSCSPDevSound()
+TMSCSDevSound::~TMSCSDevSound()
     {
+    TRACE_PRN_FN_ENT;
+    CancelTimer();
+    delete iTimer;
     delete iDevSound;
+    TRACE_PRN_FN_EXT;
     }
 
 // -----------------------------------------------------------------------------
 // Tries to activate the audio stream if not active or activating
 // -----------------------------------------------------------------------------
 //
-void TMSCSPDevSound::Activate()
+void TMSCSDevSound::Activate(const gint retrytime)
     {
-    if (!IsActive() && !IsActivationOngoing())
+    iStartRetryTime = retrytime;
+
+    if (!iActive && !iActivationOngoing)
         {
         iActivationOngoing = ETrue;
         TRAP_IGNORE(DoActivateL());
@@ -85,122 +138,129 @@
 // Deactivates the audio device.
 // -----------------------------------------------------------------------------
 //
-void TMSCSPDevSound::Deactivate()
+void TMSCSDevSound::Deactivate(gboolean reset)
     {
-    if (iDevSound && (IsActive() || IsActivationOngoing()))
+    TRACE_PRN_FN_ENT;
+    if (reset)
+        {
+        iTimeout = KTimeoutInitial;
+        }
+    CancelTimer();
+    if (iDevSound && (iActive || iActivationOngoing))
         {
         iDevSound->Stop();
         iActive = EFalse;
         iActivationOngoing = EFalse;
         }
-    }
-
-// -----------------------------------------------------------------------------
-// ActivationOngoing
-// -----------------------------------------------------------------------------
-//
-TBool TMSCSPDevSound::IsActivationOngoing() const
-    {
-    return iActivationOngoing;
-    }
-
-// -----------------------------------------------------------------------------
-// IsActive
-// -----------------------------------------------------------------------------
-//
-TBool TMSCSPDevSound::IsActive() const
-    {
-    return iActive;
+    TRACE_PRN_FN_EXT;
     }
 
 // -----------------------------------------------------------------------------
 // DevSound
 // -----------------------------------------------------------------------------
 //
-CMMFDevSound& TMSCSPDevSound::DevSound()
+CMMFDevSound& TMSCSDevSound::DevSound()
     {
     return *iDevSound;
     }
 
 // -----------------------------------------------------------------------------
 // From class MDevSoundObserver
-// Not implemented
 // -----------------------------------------------------------------------------
 //
-void TMSCSPDevSound::InitializeComplete(TInt aError)
+void TMSCSDevSound::InitializeComplete(TInt aError)
     {
-    if (iStreamType == KAudioPrefCSCallDownlink)
+    TRACE_PRN_FN_ENT;
+    if (aError != TMS_RESULT_SUCCESS && iInitRetryTime != 0)
         {
-        iObserver.DownlinkInitCompleted(aError);
+        StartTimer();
         }
     else
         {
-        iObserver.UplinkInitCompleted(aError);
+        iTimeout = KTimeoutInitial;
+        CancelTimer();
+        NotifyEvent(aError);
+        }
+    TRACE_PRN_FN_EXT;
+    }
+
+
+// -----------------------------------------------------------------------------
+// TMSCSDevSound::NotifyEvent
+// -----------------------------------------------------------------------------
+//
+void TMSCSDevSound::NotifyEvent(gint error)
+    {
+    if (iStreamType == TMS_STREAM_DOWNLINK)
+        {
+        iObserver.DownlinkInitCompleted(error);
+        }
+    else if (iStreamType == TMS_STREAM_UPLINK)
+        {
+        iObserver.UplinkInitCompleted(error);
         }
     }
 
 // -----------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
+// TMSCSDevSound::CancelTimer
+// Resets timer
 // -----------------------------------------------------------------------------
 //
-void TMSCSPDevSound::BufferToBeFilled(CMMFBuffer* /*aBuffer*/)
+void TMSCSDevSound::CancelTimer()
     {
+    iInitRetryTime = 0;
+    if (iTimer)
+        {
+        if (iTimer->IsRunning())
+            {
+            iTimer->CancelNotify();
+            }
+        }
     }
 
 // -----------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
+// TMSCSDevSound::StartTimer
+// Activates timer
 // -----------------------------------------------------------------------------
 //
-void TMSCSPDevSound::PlayError(TInt /*aError*/)
+void TMSCSDevSound::StartTimer()
     {
-    }
-
-// -----------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// -----------------------------------------------------------------------------
-//
-void TMSCSPDevSound::ToneFinished(TInt /*aError*/)
-    {
+    if (iTimer && (iInitRetryTime != 0 || iStartRetryTime != 0))
+        {
+        iTimer->NotifyAfter(iTimeout, *this);
+        }
     }
 
 // -----------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// -----------------------------------------------------------------------------
-//
-void TMSCSPDevSound::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
+// From TMSTimerObserver
+// Notification upon TMSTimer timeout.
 // -----------------------------------------------------------------------------
 //
-void TMSCSPDevSound::RecordError(TInt /*aError*/)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// -----------------------------------------------------------------------------
-//
-void TMSCSPDevSound::ConvertError(TInt /*aError*/)
+void TMSCSDevSound::TimerEvent()
     {
-    }
+    iTimeout *= KTimeoutMultiplier;
 
-// -----------------------------------------------------------------------------
-// From class MDevSoundObserver
-// Not implemented
-// -----------------------------------------------------------------------------
-//
-void TMSCSPDevSound::DeviceMessage(TUid /*aMessageType*/,
-        const TDesC8& /*aMsg*/)
-    {
+    if (!iActivationOngoing) //Initializing
+        {
+        if (iTimeout > (iInitRetryTime * KMicroSecMultiply))
+            {
+            iInitRetryTime = 0;
+            }
+        TRAPD(status, InitializeL());
+        if (status != TMS_RESULT_SUCCESS)
+            {
+            NotifyEvent(status);
+            }
+        }
+    else //Activating
+        {
+        if (iTimeout > (iStartRetryTime * KMicroSecMultiply))
+            {
+            iStartRetryTime = 0;
+            }
+        Deactivate(FALSE);
+        Activate(iStartRetryTime);
+        }
     }
 
 //  End of File
--- a/mmserv/tms/tmscallserver/src/tmscsdownlink.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallserver/src/tmscsdownlink.cpp	Fri May 28 19:26:28 2010 -0500
@@ -16,6 +16,7 @@
  */
 
 #include <AudioPreference.h>
+#include "tmsutility.h"
 #include "tmscsdownlink.h"
 #include "tmscsdevsoundobserver.h"
 
@@ -25,20 +26,44 @@
 const gint KDefaultMaxVolume = 10;
 
 // -----------------------------------------------------------------------------
+// Constructor
+// -----------------------------------------------------------------------------
+//
+TMSCSDownlink::TMSCSDownlink(TMSCSDevSoundObserver& observer) :
+    TMSCSDevSound(observer)
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// Second phase constructor
+// -----------------------------------------------------------------------------
+//
+void TMSCSDownlink::ConstructL(const gint retrytime)
+    {
+    TMSCSDevSound::ConstructL(TMS_STREAM_DOWNLINK, retrytime);
+
+    if (iDevSound)
+        {
+        iDevSound->SetVolume(KDefaultVolume);
+        }
+    }
+
+// -----------------------------------------------------------------------------
 // Static constructor
 // -----------------------------------------------------------------------------
 //
-TMSCSDownlink* TMSCSDownlink::NewL(TMSCSPDevSoundObserver& aObserver)
+TMSCSDownlink* TMSCSDownlink::NewL(TMSCSDevSoundObserver& observer,
+        const gint retrytime)
     {
-    TMSCSDownlink* self = new (ELeave) TMSCSDownlink(aObserver);
+    TMSCSDownlink* self = new (ELeave) TMSCSDownlink(observer);
     CleanupStack::PushL(self);
-    self->ConstructL();
+    self->ConstructL(retrytime);
     CleanupStack::Pop(self);
     return self;
     }
 
 // -----------------------------------------------------------------------------
-// Destructor.
+// Destructor
 // -----------------------------------------------------------------------------
 //
 TMSCSDownlink::~TMSCSDownlink()
@@ -49,19 +74,19 @@
 // Sets volume
 // -----------------------------------------------------------------------------
 //
-void TMSCSDownlink::SetVolume(gint aVolume)
+void TMSCSDownlink::SetVolume(gint volume)
     {
     if (iDevSound)
         {
         gint maxVolume(iDevSound->MaxVolume());
         maxVolume = (maxVolume > 0) ? maxVolume : KDefaultMaxVolume;
-        gint scaledVolume = (aVolume * maxVolume) / KDefaultMaxVolume;
+        gint scaledVolume = (volume * maxVolume) / KDefaultMaxVolume;
         iDevSound->SetVolume(scaledVolume);
         }
     }
 
 // -----------------------------------------------------------------------------
-// Gives volume
+// Returns volume
 // -----------------------------------------------------------------------------
 //
 gint TMSCSDownlink::Volume()
@@ -75,7 +100,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// Gives max volume
+// Returns device's max volume
 // -----------------------------------------------------------------------------
 //
 gint TMSCSDownlink::MaxVolume()
@@ -95,13 +120,14 @@
 //
 void TMSCSDownlink::BufferToBeFilled(CMMFBuffer* /*aBuffer*/)
     {
-    //CSPLOGSTRING( CSPINT, "TMSCSDownlink:: activated" );
+    TRACE_PRN_N(_L("TMSCSDownlink::BufferToBeFilled"));
+
     // We dont react to devsound messages unless we are activating.
-    if (IsActivationOngoing())
+    if (iActivationOngoing)
         {
         iActive = ETrue;
         iActivationOngoing = EFalse;
-        iObserver.DownlinkActivatedSuccessfully();
+        iObserver.DownlinkActivationCompleted(KErrNone);
         }
     }
 
@@ -112,23 +138,27 @@
 //
 void TMSCSDownlink::PlayError(TInt aError)
     {
-    //CSPLOGSTRING( CSPINT, "TMSCSDownlink::PlayError" );
+    TRACE_PRN_N1(_L("TMSCSDownlink::PlayError[%d]"), aError);
 
-    // We dont react to devsound messages unless we are activating.
-    if (IsActivationOngoing())
+    // We don't react to devsound errors unless we are activating.
+    if (iActivationOngoing && aError == KErrAccessDenied)
         {
-        //CSPLOGSTRING( CSPINT, "TMSCSDownlink::PlayError activation failed" );
-        if (aError == KErrAccessDenied)
+        if (iStartRetryTime != 0)
             {
+            StartTimer();
+            }
+        else
+            {
+            CancelTimer();
             iActivationOngoing = EFalse;
-            iObserver.DownlinkActivationFailed();
+            iObserver.DownlinkActivationCompleted(aError);
             }
         }
     }
 
 // -----------------------------------------------------------------------------
-// From class CSPDevsound
-// Tries to activate Downlink stream.
+// From class TMSCSDevSound
+// Activates Downlink stream.
 // -----------------------------------------------------------------------------
 //
 void TMSCSDownlink::DoActivateL()
@@ -139,28 +169,4 @@
         }
     }
 
-// -----------------------------------------------------------------------------
-// Constructor
-// -----------------------------------------------------------------------------
-//
-TMSCSDownlink::TMSCSDownlink(TMSCSPDevSoundObserver& aObserver) :
-    TMSCSPDevSound(aObserver)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// Second phase constructor
-// -----------------------------------------------------------------------------
-//
-void TMSCSDownlink::ConstructL()
-    {
-    TMSCSPDevSound::ConstructL(EMMFStatePlaying, KAudioPrefCSCallDownlink,
-            KAudioPriorityCSCallDownlink);
-
-    if (iDevSound)
-        {
-        iDevSound->SetVolume(KDefaultVolume);
-        }
-    }
-
 //  End of File
--- a/mmserv/tms/tmscallserver/src/tmscsuplink.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallserver/src/tmscsuplink.cpp	Fri May 28 19:26:28 2010 -0500
@@ -16,23 +16,40 @@
  */
 
 #include <AudioPreference.h>
+#include "tmsutility.h"
 #include "tmscsuplink.h"
 #include "tmscsdevsoundobserver.h"
 
 using namespace TMS;
 
-// Mute value
-const gint KSetMuteToDevSound = 0;
+// -----------------------------------------------------------------------------
+// Constructor
+// -----------------------------------------------------------------------------
+//
+TMSCSUplink::TMSCSUplink(TMSCSDevSoundObserver& observer) :
+    TMSCSDevSound(observer)
+    {
+    }
 
 // -----------------------------------------------------------------------------
-// Static constructor.
+// Second phase constructor
 // -----------------------------------------------------------------------------
 //
-TMSCSUplink* TMSCSUplink::NewL(TMSCSPDevSoundObserver& aObserver)
+void TMSCSUplink::ConstructL(const gint retrytime)
     {
-    TMSCSUplink* self = new (ELeave) TMSCSUplink(aObserver);
+    TMSCSDevSound::ConstructL(TMS_STREAM_UPLINK, retrytime);
+    }
+
+// -----------------------------------------------------------------------------
+// Static constructor
+// -----------------------------------------------------------------------------
+//
+TMSCSUplink* TMSCSUplink::NewL(TMSCSDevSoundObserver& observer,
+        const gint retrytime)
+    {
+    TMSCSUplink* self = new (ELeave) TMSCSUplink(observer);
     CleanupStack::PushL(self);
-    self->ConstructL();
+    self->ConstructL(retrytime);
     CleanupStack::Pop(self);
     return self;
     }
@@ -49,61 +66,31 @@
 // Gives mic mute state
 // -----------------------------------------------------------------------------
 //
-TBool TMSCSUplink::IsMuted()
+gboolean TMSCSUplink::IsMuted()
     {
-    TBool isMuted = EFalse;
-    gint gain = 0;
+    gint gain(0);
+
     if (iDevSound)
         {
         gain = iDevSound->Gain();
         }
-    if (!gain)
-        {
-        // Mute is on
-        isMuted = ETrue;
-        }
-    //   CSPLOGSTRING( CSPINT, "TMSCSUplink::IsMuted" );
-    return isMuted;
+    return ((!gain)? TRUE : FALSE);
     }
 
 // -----------------------------------------------------------------------------
-// Set mic muted.
+// Sets mic gain
 // -----------------------------------------------------------------------------
 //
-void TMSCSUplink::SetMuted()
+void TMSCSUplink::SetGain(gint gain)
     {
     if (iDevSound)
         {
-        iDevSound->SetGain(KSetMuteToDevSound);
+        iDevSound->SetGain(gain);
         }
     }
 
 // -----------------------------------------------------------------------------
-// Set mic unmuted
-// -----------------------------------------------------------------------------
-//
-void TMSCSUplink::SetUnmuted()
-    {
-    if (iDevSound)
-        {
-        iDevSound->SetGain(iDevSound->MaxGain());
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// Sets gain
-// -----------------------------------------------------------------------------
-//
-void TMSCSUplink::SetGain(gint aGain)
-    {
-    if (iDevSound)
-        {
-        iDevSound->SetGain(aGain);
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// Gives volume
+// Returns mic gain
 // -----------------------------------------------------------------------------
 //
 gint TMSCSUplink::Gain()
@@ -117,7 +104,7 @@
     }
 
 // -----------------------------------------------------------------------------
-// Gives max gain
+// Returns max mic gain
 // -----------------------------------------------------------------------------
 //
 gint TMSCSUplink::MaxGain()
@@ -132,46 +119,50 @@
 
 // -----------------------------------------------------------------------------
 // From class MDevSoundObserver
-// Activation was successfull.
+// Uplink stream has been activated successfully.
 // -----------------------------------------------------------------------------
 //
 void TMSCSUplink::BufferToBeEmptied(CMMFBuffer* /*aBuffer*/)
     {
-    //  CSPLOGSTRING( CSPINT, "TMSCSUplink::BufferToBeEmptied" );
+    TRACE_PRN_N(_L("TMSCSUplink::BufferToBeEmptied"));
 
     // We dont react to devsound messages unless we are activating.
-    if (IsActivationOngoing())
+    if (iActivationOngoing)
         {
         iActive = ETrue;
         iActivationOngoing = EFalse;
-        iObserver.UplinkActivatedSuccessfully();
+        iObserver.UplinkActivationCompleted(KErrNone);
         }
     }
 
 // -----------------------------------------------------------------------------
 // From class MDevSoundObserver
-// Activation feiled
+// Uplink stream activation failed
 // -----------------------------------------------------------------------------
 //
 void TMSCSUplink::RecordError(TInt aError)
     {
-    //  CSPLOGSTRING( CSPINT, "TMSCSUplink::RecordError" );
+    TRACE_PRN_N1(_L("TMSCSUplink::RecordError[%d]"), aError);
 
     // We dont react to devsound messages unless we are activating.
-    if (IsActivationOngoing())
+    if (iActivationOngoing && aError == KErrAccessDenied)
         {
-        if (aError == KErrAccessDenied)
+        if (iStartRetryTime != 0)
             {
+            StartTimer();
+            }
+        else
+            {
+            CancelTimer();
             iActivationOngoing = EFalse;
-            iObserver.UplinkActivationFailed();
+            iObserver.UplinkActivationCompleted(aError);
             }
         }
     }
 
 // -----------------------------------------------------------------------------
-// From class TMSCSPDevSound
-// Tries to activate mic stream. Stream becomes active when BufferToBeFilled
-// gets called.
+// From class TMSCSDevSound
+// Activates Uplink stream.
 // -----------------------------------------------------------------------------
 //
 void TMSCSUplink::DoActivateL()
@@ -182,23 +173,4 @@
         }
     }
 
-// -----------------------------------------------------------------------------
-// Constructor
-// -----------------------------------------------------------------------------
-//
-TMSCSUplink::TMSCSUplink(TMSCSPDevSoundObserver& aObserver) :
-    TMSCSPDevSound(aObserver)
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// Second phase constructor
-// -----------------------------------------------------------------------------
-//
-void TMSCSUplink::ConstructL()
-    {
-    TMSCSPDevSound::ConstructL(EMMFStateRecording, KAudioPrefCSCallUplink,
-            KAudioPriorityCSCallUplink);
-    }
-
 //  End of File
--- a/mmserv/tms/tmscallserver/src/tmsipcalldownlinkds.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallserver/src/tmsipcalldownlinkds.cpp	Fri May 28 19:26:28 2010 -0500
@@ -32,7 +32,8 @@
 // Standard Constructor
 // -----------------------------------------------------------------------------
 //
-TMSIPDownlink::TMSIPDownlink()
+TMSIPDownlink::TMSIPDownlink(TMSIPDevSoundObserver& observer) :
+    TMSIPCallStreamBase(observer)
     {
     }
 
@@ -61,12 +62,13 @@
 // Symbian two-phase constructor
 // -----------------------------------------------------------------------------
 //
-TMSIPDownlink* TMSIPDownlink::NewL(const guint32 codecID,
-        const TMMFPrioritySettings priority)
+TMSIPDownlink* TMSIPDownlink::NewL(TMSIPDevSoundObserver& observer,
+        const guint32 codecID, const TMMFPrioritySettings priority,
+        const gint retrytime)
     {
-    TMSIPDownlink* self = new (ELeave) TMSIPDownlink();
+    TMSIPDownlink* self = new (ELeave) TMSIPDownlink(observer);
     CleanupStack::PushL(self);
-    self->ConstructL(codecID, priority);
+    self->ConstructL(codecID, priority, retrytime);
     CleanupStack::Pop(self);
     return self;
     }
@@ -77,17 +79,15 @@
 // -----------------------------------------------------------------------------
 //
 void TMSIPDownlink::ConstructL(const guint32 codecID,
-        const TMMFPrioritySettings priority)
+        const TMMFPrioritySettings priority, const gint /*retrytime*/)
     {
     TRACE_PRN_FN_ENT;
-
     iCodecID = codecID;
     iPriority = priority;
 
     // Client must set these before querying!
     iG711DecodeMode = TMS_G711_CODEC_MODE_ALAW;
     iILBCDecodeMode = TMS_ILBC_CODEC_MODE_20MS_FRAME;
-
     TRAPD(err, InitDevSoundL(EMMFStatePlaying, priority));
     if (err != TMS_RESULT_SUCCESS)
         {
@@ -95,7 +95,6 @@
         }
 
     iMaxBufLen = ConfigureMedia(iCodecID);
-
     TRACE_PRN_FN_EXT;
     }
 
@@ -104,26 +103,21 @@
 //
 // -----------------------------------------------------------------------------
 //
-void TMSIPDownlink::Start()
+void TMSIPDownlink::Start(const gint /*retrytime*/)
     {
     TRACE_PRN_FN_ENT;
-
     gint err = TMS_RESULT_ILLEGAL_OPERATION;
 
     if (iStatus == EReady && iDevSound)
         {
         TRAP(err, iDevSound->PlayInitL());
         TRACE_PRN_IF_ERR(err);
-
-#ifdef _DEBUG
-        iSamplesPlayedCount = 0;
-#endif
         if (err != TMS_RESULT_SUCCESS)
             {
             iStatus = EReady;
+            iObserver.DownlinkStarted(err);
             }
         }
-
     TRACE_PRN_FN_EXT;
     }
 
@@ -141,7 +135,6 @@
         iDevSound->Stop();
         iStatus = EReady;
         }
-
     TRACE_PRN_FN_EXT;
     }
 
@@ -156,18 +149,19 @@
 void TMSIPDownlink::BufferToBeFilled(CMMFBuffer* aBuffer)
     {
     // Store pointer to the received buffer
-    iDevSoundBufPtr = static_cast<CMMFDataBuffer*>(aBuffer);
+    iDevSoundBufPtr = static_cast<CMMFDataBuffer*> (aBuffer);
     iBufLen = iDevSoundBufPtr->RequestSize();
     TRACE_PRN_N1(_L("TMS->DNL->BTBF: LEN[%d]"), iBufLen);
 
 #ifndef __WINSCW__
-    //TODO: revisit this!
+    //TODO: Is this still true?
     // The first AMR buffer returns 1 for no data frame.
     /*if (iCodecID == KMccFourCCIdAMRNB)
      {
      iBufLen = iMaxBufLen;
      }*/
 #endif //__WINSCW__
+
     // Create or adjust the chunk
     gint err = DoChunk(iBufLen, iMsgBuffer);
 
@@ -182,6 +176,7 @@
         iMsgBuffer.iStatus = err;
         iMsgBuffer.iInt = iBufLen;
         iStatus = EStreaming;
+
         // If chunk is opened, we will expect a call from the client to
         // get chunk handle. When we get a call to copy chunk handle,
         // check these variables and see if they match. This is not
@@ -195,7 +190,6 @@
 
     iMsgBuffer.iRequest = ECmdFillBuffer;
     err = iMsgQueue.Send(iMsgBuffer);
-
     TRACE_PRN_IF_ERR(err);
     }
 
@@ -210,7 +204,7 @@
 
     // Copy data over from chunk
     TPtr8 dataPtr(iChunk.Base(), buflen, iMaxBufLen);
-    //    RDebug::RawPrint(dataPtr);
+    //RDebug::RawPrint(dataPtr);
 
     if (iStatus == EStreaming && iDevSound && iDevSoundBufPtr)
         {
@@ -362,7 +356,6 @@
             status = TMS_RESULT_ILLEGAL_OPERATION;
             }
         }
-
     TRACE_PRN_IF_ERR(status);
     return status;
     }
@@ -396,7 +389,6 @@
                 }
             }
         }
-
     TRACE_PRN_IF_ERR(err);
     return err;
     }
@@ -443,7 +435,6 @@
                 }
             }
         }
-
     TRACE_PRN_IF_ERR(err);
     return err;
     }
@@ -478,7 +469,6 @@
             TRACE_PRN_N1(_L("TMS->DNL: FrameModeRqrdForEC [%d]"), frmodereq);
             }
         }
-
     TRACE_PRN_IF_ERR(err);
     return err;
     }
@@ -502,7 +492,6 @@
             TRACE_PRN_N1(_L("TMS->DNL: SetFrameMode [%d]"), frmode);
             }
         }
-
     TRACE_PRN_IF_ERR(err);
     return err;
     }
@@ -523,7 +512,6 @@
         TRACE_PRN_N1(_L("TMS->DNL: GetFrameMode [%d]"), frmode);
         err = TMS_RESULT_SUCCESS;
         }
-
     TRACE_PRN_IF_ERR(err);
     return err;
     }
@@ -542,7 +530,6 @@
         err = iErrConcealmentIntfc->ConcealErrorForNextBuffer();
         TRACE_PRN_N(_L("TMS->DNL: ConcealErrorForNextBuffer"));
         }
-
     TRACE_PRN_IF_ERR(err);
     return err;
     }
@@ -569,7 +556,6 @@
             TRACE_PRN_N1(_L("TMS->DNL: SetCng [%d]"), cng);
             }
         }
-
     TRACE_PRN_IF_ERR(err);
     return err;
     }
@@ -596,7 +582,6 @@
             TRACE_PRN_N1(_L("TMS->DNL: GetCng [%d]"), cng);
             }
         }
-
     TRACE_PRN_IF_ERR(err);
     return err;
     }
@@ -619,7 +604,6 @@
             TRACE_PRN_N1(_L("TMS->DNL: SetPlc [%d]"), plc);
             }
         }
-
     TRACE_PRN_IF_ERR(err);
     return err;
     }
@@ -640,7 +624,6 @@
         err = TMS_RESULT_SUCCESS;
         TRACE_PRN_N1(_L("TMS->DNL: GetPlc [%d]"), plc);
         }
-
     TRACE_PRN_IF_ERR(err);
     return err;
     }
@@ -662,7 +645,6 @@
             TRACE_PRN_N(_L("TMS->DNL: BadLsfNextBuffer"));
             }
         }
-
     TRACE_PRN_IF_ERR(err);
     return err;
     }
@@ -759,37 +741,30 @@
 void TMSIPDownlink::InitializeComplete(TInt aError)
     {
     TRACE_PRN_FN_ENT;
+    gint status = aError;
 
-    gint err = aError;
-
-    if (err == TMS_RESULT_SUCCESS && iDevSound)
+    if (status == TMS_RESULT_SUCCESS && iDevSound)
         {
         TMMFCapabilities conf;
         conf = iDevSound->Config();
         conf.iRate = EMMFSampleRate8000Hz;
         conf.iChannels = EMMFMono;
-        TRAP(err, iDevSound->SetConfigL(conf));
-        if (err == TMS_RESULT_SUCCESS)
+        TRAP(status, iDevSound->SetConfigL(conf));
+        if (status == TMS_RESULT_SUCCESS)
             {
             // We are ready to stream even in case of later CI setting failure
             iStatus = EReady;
             iMaxVolume = iDevSound->MaxVolume();
             }
 
-        // Init Custom Interface API to the decoder
-        err = SetCodecCi();
-        if (err != TMS_RESULT_SUCCESS)
-            {
-            // DEBUG only
-            // Can ignore error - although decoder is not fully configured but
-            // it can still run in the default mode.
-            TRACE_PRN_IF_ERR(err);
-            }
+        // Init Custom Interface API to the Decoder. Any return error can
+        // be ignored as codec can still run in the default mode even if not
+        // fully configured.
+        SetCodecCi();
         }
 
-    // TODO: Notify client
-
-    TRACE_PRN_IF_ERR(err);
+    iObserver.DownlinkInitCompleted(status);
+    TRACE_PRN_IF_ERR(status);
     TRACE_PRN_FN_EXT;
     }
 
@@ -800,16 +775,11 @@
 // The state of recorder is rolled back to EReady.
 // -----------------------------------------------------------------------------
 //
-void TMSIPDownlink::PlayError(TInt /*aError*/)
+void TMSIPDownlink::PlayError(TInt aError)
     {
-    //TRACE_PRN_IF_ERR(aError);
-
-#ifdef _DEBUG
-    iSamplesPlayedCount = 0;
-#endif
     iStatus = EReady;
-
-    // TODO: Notify client
+    iObserver.DownlinkStarted(aError);
+    TRACE_PRN_IF_ERR(aError);
     }
 
 // End of file
--- a/mmserv/tms/tmscallserver/src/tmsipcallstreambase.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallserver/src/tmsipcallstreambase.cpp	Fri May 28 19:26:28 2010 -0500
@@ -24,6 +24,16 @@
 using namespace TMS;
 
 // -----------------------------------------------------------------------------
+// TMSIPCallStreamBase::TMSIPCallStreamBase
+// Constructor
+// -----------------------------------------------------------------------------
+//
+TMSIPCallStreamBase::TMSIPCallStreamBase(TMSIPDevSoundObserver& observer) :
+    iObserver(observer)
+    {
+    }
+
+// -----------------------------------------------------------------------------
 // TMSIPCallStreamBase::~TMSIPCallStreamBase
 // Destructor
 // -----------------------------------------------------------------------------
--- a/mmserv/tms/tmscallserver/src/tmsipcalluplinkds.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmscallserver/src/tmsipcalluplinkds.cpp	Fri May 28 19:26:28 2010 -0500
@@ -31,7 +31,8 @@
 // Standard Constructor
 // -----------------------------------------------------------------------------
 //
-TMSIPUplink::TMSIPUplink()
+TMSIPUplink::TMSIPUplink(TMSIPDevSoundObserver& observer) :
+    TMSIPCallStreamBase(observer)
     {
     }
 
@@ -59,12 +60,13 @@
 // Symbian two-phase constructor
 // -----------------------------------------------------------------------------
 //
-TMSIPUplink* TMSIPUplink::NewL(const guint32 codecID,
-        const TMMFPrioritySettings priority)
+TMSIPUplink* TMSIPUplink::NewL(TMSIPDevSoundObserver& observer,
+        const guint32 codecID, const TMMFPrioritySettings priority,
+        const gint retrytime)
     {
-    TMSIPUplink* self = new (ELeave) TMSIPUplink();
+    TMSIPUplink* self = new (ELeave) TMSIPUplink(observer);
     CleanupStack::PushL(self);
-    self->ConstructL(codecID, priority);
+    self->ConstructL(codecID, priority, retrytime);
     CleanupStack::Pop(self);
     return self;
     }
@@ -75,17 +77,15 @@
 // -----------------------------------------------------------------------------
 //
 void TMSIPUplink::ConstructL(const guint32 codecID,
-        const TMMFPrioritySettings priority)
+        const TMMFPrioritySettings priority, const gint /*retrytime*/)
     {
     TRACE_PRN_FN_ENT;
-
     iCodecID = codecID;
     iPriority = priority;
 
     // Client must set these before querying!
     iG711EncodeMode = TMS_G711_CODEC_MODE_ALAW;
     iILBCEncodeMode = TMS_ILBC_CODEC_MODE_20MS_FRAME;
-
     TRAPD(err, InitDevSoundL(EMMFStateRecording, priority));
     if (err != TMS_RESULT_SUCCESS)
         {
@@ -93,7 +93,6 @@
         }
 
     iMaxBufLen = ConfigureMedia(iCodecID);
-
     TRACE_PRN_FN_EXT;
     }
 
@@ -102,7 +101,7 @@
 //
 // -----------------------------------------------------------------------------
 //
-void TMSIPUplink::Start()
+void TMSIPUplink::Start(const gint /*retrytime*/)
     {
     TRACE_PRN_FN_ENT;
 
@@ -116,17 +115,10 @@
 
         if (err != TMS_RESULT_SUCCESS)
             {
-            //TODO: Notify main thread
             iStatus = EReady;
+            iObserver.UplinkStarted(err);
             }
-#ifdef _DEBUG
-        else
-            {
-            iSamplesRecCount = 0;
-            }
-#endif
         }
-
     TRACE_PRN_FN_EXT;
     }
 
@@ -144,10 +136,6 @@
         iDevSound->Stop();
         iStatus = EReady;
         }
-    else
-        {
-        //TODO: Notify main thread
-        }
     TRACE_PRN_FN_EXT;
     }
 
@@ -158,9 +146,8 @@
 //
 void TMSIPUplink::BufferToBeEmptied(CMMFBuffer* aBuffer)
     {
-    iDevSoundBufPtr = static_cast<CMMFDataBuffer*>(aBuffer);
+    iDevSoundBufPtr = static_cast<CMMFDataBuffer*> (aBuffer);
     TDes8& data = iDevSoundBufPtr->Data();
-
     iBufLen = iDevSoundBufPtr->BufferSize();
     TRACE_PRN_N1(_L("TMS->UPL: BTBE->LEN [%d]"), iBufLen);
 
@@ -353,7 +340,6 @@
             status = TMS_RESULT_ILLEGAL_OPERATION;
             }
         }
-
     return status;
     }
 
@@ -386,7 +372,6 @@
                 }
             }
         }
-
     TRACE_PRN_IF_ERR(err);
     return err;
     }
@@ -433,7 +418,6 @@
                 }
             }
         }
-
     TRACE_PRN_IF_ERR(err);
     return err;
     }
@@ -465,7 +449,6 @@
         {
         err = iSpeechEncoderConfig->GetSupportedBitrates(bitrates);
         }
-
     TRACE_PRN_IF_ERR(err);
     return err;
     }
@@ -484,7 +467,6 @@
         err = iSpeechEncoderConfig->SetBitrate(bitrate);
         TRACE_PRN_N1(_L("TMS->UPL: SetBitrate [%d]"), bitrate);
         }
-
     TRACE_PRN_IF_ERR(err);
     return err;
     }
@@ -503,7 +485,6 @@
         err = iSpeechEncoderConfig->GetBitrate(bitrate);
         TRACE_PRN_N1(_L("TMS->UPL: GetBitrate [%d]"), bitrate);
         }
-
     TRACE_PRN_IF_ERR(err);
     return err;
     }
@@ -634,36 +615,30 @@
     {
     TRACE_PRN_FN_ENT;
 
-    gint err = aError;
+    gint status = aError;
 
-    if (err == TMS_RESULT_SUCCESS && iDevSound)
+    if (status == TMS_RESULT_SUCCESS && iDevSound)
         {
         TMMFCapabilities conf;
         conf = iDevSound->Config();
         conf.iRate = EMMFSampleRate8000Hz;
         conf.iChannels = EMMFMono;
-        TRAP(err, iDevSound->SetConfigL(conf));
-        if (err == TMS_RESULT_SUCCESS)
+        TRAP(status, iDevSound->SetConfigL(conf));
+        if (status == TMS_RESULT_SUCCESS)
             {
             // We are ready to stream even in case of CI setting failure
             iStatus = EReady;
             iMaxGain = iDevSound->MaxGain();
             }
 
-        // Init Custom Interface API to the Encoder
-        err = SetCodecCi();
-        if (err != TMS_RESULT_SUCCESS)
-            {
-            // DEBUG only
-            // Can ignore error - although encoder is not fully configured but
-            // it can still run in the default mode.
-            TRACE_PRN_IF_ERR(err);
-            }
+        // Init Custom Interface API to the Encoder. Any return error can
+        // be ignored as codec can still run in the default mode even if not
+        // fully configured.
+        SetCodecCi();
         }
 
-    // TODO: Notify client
-
-    TRACE_PRN_IF_ERR(err);
+    iObserver.UplinkInitCompleted(status);
+    TRACE_PRN_IF_ERR(status);
     TRACE_PRN_FN_EXT;
     }
 
@@ -674,16 +649,11 @@
 // The state of recorder is rolled back to EReady.
 // -----------------------------------------------------------------------------
 //
-void TMSIPUplink::RecordError(TInt /*aError*/)
+void TMSIPUplink::RecordError(TInt aError)
     {
-    //TRACE_PRN_IF_ERR(aError);
-
-#ifdef _DEBUG
-    iSamplesRecCount = 0;
-#endif
     iStatus = EReady;
-
-    // TODO: Notify client
+    iObserver.UplinkStarted(aError);
+    TRACE_PRN_IF_ERR(aError);
     }
 
 // End of file
--- a/mmserv/tms/tmsimpl/inc/tmsstreambodyimpl.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmsimpl/inc/tmsstreambodyimpl.h	Fri May 28 19:26:28 2010 -0500
@@ -66,9 +66,9 @@
     virtual TMSStreamState GetState();
     virtual TMSStreamType GetStreamType();
     virtual gint GetStreamId();
-    virtual gint Init();
+    virtual gint Init(gint retrytime);
     virtual gint Pause();
-    virtual gint Start();
+    virtual gint Start(gint retrytime);
     virtual gint Stop();
     virtual void Deinit();
 
--- a/mmserv/tms/tmsimpl/src/tmsstreambodyimpl.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmsimpl/src/tmsstreambodyimpl.cpp	Fri May 28 19:26:28 2010 -0500
@@ -334,7 +334,7 @@
     return iContext.StreamId;
     }
 
-gint TMSStreamBodyImpl::Init()
+gint TMSStreamBodyImpl::Init(gint retrytime)
     {
     gint ret(TMS_RESULT_SUCCESS);
 
@@ -355,7 +355,8 @@
     if (iContext.CallProxy)
         {
         ret = (iContext.CallProxy)->InitStream(iContext.CallType,
-                iContext.StreamType, iContext.StreamId, fmttype, &iMsgQueue);
+                iContext.StreamType, iContext.StreamId, fmttype, &iMsgQueue,
+                retrytime);
         }
     else
         {
@@ -490,13 +491,13 @@
     return ret;
     }
 
-gint TMSStreamBodyImpl::Start()
+gint TMSStreamBodyImpl::Start(gint retrytime)
     {
     gint ret(TMS_RESULT_SUCCESS);
     if (iContext.CallProxy)
         {
         ret = (iContext.CallProxy)->StartStream(iContext.CallType,
-                iContext.StreamType, iContext.StreamId);
+                iContext.StreamType, iContext.StreamId, retrytime);
         }
     else
         {
@@ -734,7 +735,15 @@
             event.prev_state = iPrevState;
             if (iObserver)
                 {
-                event.type = TMS_EVENT_STREAM_STATE_CHANGED;
+                if (aError != TMS_RESULT_SUCCESS)
+                    {
+					//event.type = TMS_EVENT_STREAM_STATE_CHANGE_ERROR;
+                    event.type = TMS_EVENT_STREAM_STATE_CHANGED;
+                    }
+                else
+                    {
+                    event.type = TMS_EVENT_STREAM_STATE_CHANGED;
+                    }
                 iObserver->TMSStreamEvent(*iParent, event);
                 }
             break;
--- a/mmserv/tms/tmsserver/group/tmsserver.mmp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmsserver/group/tmsserver.mmp	Fri May 28 19:26:28 2010 -0500
@@ -44,7 +44,6 @@
 SOURCE          tmsrtcontainer.cpp
 SOURCE          tmsrtaudiohdlr.cpp
 SOURCE          tmsrtplayer.cpp
-SOURCE          tmstimer.cpp
 SOURCE          tmsasyncreqao.cpp
 
 USERINCLUDE     ../inc
@@ -67,6 +66,7 @@
 LIBRARY         libglib.lib
 LIBRARY         mmfdevsound.lib
 LIBRARY         tmscallserver.lib
+LIBRARY         tmsutility.lib
 LIBRARY         centralrepository.lib
 LIBRARY         cenrepnotifhandler.lib
 LIBRARY         profileengine.lib
--- a/mmserv/tms/tmsserver/inc/tmsrtplayer.h	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmsserver/inc/tmsrtplayer.h	Fri May 28 19:26:28 2010 -0500
@@ -47,7 +47,7 @@
  */
 class TMSRingTonePlayer : public CBase,
                           public TMSRtAudioHdlrObsrv,
-                          public TMSTimerObsrv,
+                          public TMSTimerObserver,
                           public TMSAsyncReqObsrv
     {
 public:
@@ -226,9 +226,9 @@
             TInt aPlayer);
 
     /**
-     * @see TMSTimerObsrv
+     * From TMSTimerObserver
      */
-    virtual void HandleTimeOutL();
+    virtual void TimerEvent();
 
     /**
      * Enumerates how many times TTS has played
--- a/mmserv/tms/tmsserver/inc/tmstimer.h	Fri May 14 18:19:45 2010 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,139 +0,0 @@
-/*
- * 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:
- *    Utility class for CTimer object
- *
- */
-
-#ifndef TMSTIMER_H
-#define TMSTIMER_H
-
-//  INCLUDES
-#include <e32base.h>
-
-namespace TMS {
-
-/**
-*  Mixin class for phone timer
-*/
-class TMSTimerObsrv
-    {
-
-    public: // New functions
-
-        /**
-        * Destructor
-        */
-        virtual ~TMSTimerObsrv(){};
-
-        /**
-        * This function is called after on timeout
-        */
-        virtual void HandleTimeOutL() = 0;
-    };
-
-// CLASS DECLARATION
-
-/**
- *  Utility class for timer
- */
-class TMSTimer : public CTimer
-    {
-public:
-    // Constructors and destructor
-
-    /**
-     * Two-phased constructor.
-     */
-    IMPORT_C static TMSTimer* NewL(
-            TInt aPriority = CActive::EPriorityStandard);
-
-    /**
-     * Destructor.
-     */
-    IMPORT_C virtual ~TMSTimer();
-
-public:
-    // New functions
-
-    /**
-     * The Callback function is called after the interval
-     * All former request will be canceled first
-     */
-    IMPORT_C void After(TTimeIntervalMicroSeconds32 anInterval,
-            TCallBack aCallBack);
-
-    /**
-     * Use the maxin class to notify the timer
-     * All former request will be canceled first
-     */
-    IMPORT_C void After(TTimeIntervalMicroSeconds32 anInterval,
-            TMSTimerObsrv* aObserver);
-
-    /**
-     * Cancel the timer if needed
-     */
-    IMPORT_C void CancelTimer();
-
-protected:
-    // Functions from base classes
-
-    /**
-     * From CTimer::RunL()
-     */
-    virtual void RunL();
-
-    /**
-     * From CTimer::RunL()
-     */
-    virtual TInt RunError(TInt aError);
-
-    /**
-     * From CTimer::DoCancel()
-     */
-    virtual void DoCancel();
-
-private:
-
-    /**
-     * C++ default constructor.
-     */
-    TMSTimer(TInt aPriority);
-
-    /**
-     * By default Symbian OS constructor is private.
-     */
-    void ConstructL();
-
-    // By default, prohibit copy constructor
-    TMSTimer(const TMSTimer&);
-
-    // Prohibit assigment operator
-    TMSTimer& operator = (const TMSTimer&);
-
-private:
-    // Data
-
-    // Used by After( anInterval, aCallBack )
-    TCallBack iCallBack;
-
-    // Used by After( anInterval, aObserver )
-    TMSTimerObsrv* iTimerObserver;
-    };
-
-} // namespace TMS
-
-#endif // TMSTIMER_H
-
-// End of File
--- a/mmserv/tms/tmsserver/src/tmsrtplayer.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmsserver/src/tmsrtplayer.cpp	Fri May 28 19:26:28 2010 -0500
@@ -594,18 +594,18 @@
         if (!iAudioPlayer)
             {
             CreateAudioPlayerL();
-            if (!iTimer->IsActive())
+            if (!iTimer->IsRunning())
                 {
                 // If InitComplete event doesn't occur within permittable time,
                 // this will trigger fallback routine.
-                iTimer->After(KTMSMaxRingingWaiting, this);
+                iTimer->NotifyAfter(KTMSMaxRingingWaiting, *this);
                 }
             }
 
         // Start playing.
         if (!iAudioPlayer)
             {
-            iTimer->Cancel();
+            iTimer->CancelNotify();
             PlayDefaultToneL();
             }
         else
@@ -739,9 +739,9 @@
         iTtsDelaysCount = KTMSTtsDelaysCount;
 
         // Start TTS timer just before RT
-        if (!iTtsDelayTimer->IsActive())
+        if (!iTtsDelayTimer->IsRunning())
             {
-            iTtsDelayTimer->After(KTMSTtsDelays[iTtsDelayIndex],
+            iTtsDelayTimer->NotifyAfter(KTMSTtsDelays[iTtsDelayIndex],
                     TCallBack(HandleTtsDelayTimeout, this));
             }
         iTtsVolume = iRtParam.iVolume;
@@ -771,7 +771,7 @@
         iTonePlayingStatus = EBackupTonePlaying;
         iTtsToneToBePlayed = EFalse;
         iTTsTimeOutCounter = 0;
-        iTtsDelayTimer->Cancel();
+        iTtsDelayTimer->CancelNotify();
         if (iTtsPlayer)
             {
             iTtsPlayer->StopPlaying();
@@ -809,11 +809,11 @@
     if (!iDefaultPlayer)
         {
         CreateDefaultRtPlayerL();
-        if (!iTimer->IsActive())
+        if (!iTimer->IsRunning())
             {
             // If InitComplete event doesn't occur within permittable time,
             // this will trigger fallback routine.
-            iTimer->After(KTMSMaxRingingWaiting, this);
+            iTimer->NotifyAfter(KTMSMaxRingingWaiting, *this);
             }
         }
 
@@ -821,7 +821,7 @@
     if (!iDefaultPlayer)
         {
         // Default player not ready, play backup.
-        iTimer->Cancel();
+        iTimer->CancelNotify();
         PlayBackupToneL();
         }
     else
@@ -844,14 +844,14 @@
 
     iTtsToneToBePlayed = EFalse;
     iTTsTimeOutCounter = 0;
-    iTtsDelayTimer->Cancel();
+    iTtsDelayTimer->CancelNotify();
     if (iTtsPlayer)
         {
         iTtsPlayer->StopPlaying();
         delete iTtsPlayer;
         iTtsPlayer = NULL;
         }
-    iTimer->Cancel();
+    iTimer->CancelNotify();
 
     switch (iTonePlayingStatus)
         {
@@ -1240,7 +1240,7 @@
         if (ignore) ;
         }
 
-    iTimer->Cancel();
+    iTimer->CancelNotify();
     DoHandlePlayerError(!deleteAll, EFalse);
     iRtObserver.RtPlayerEvent(aEvent, aError);
     }
@@ -1256,7 +1256,7 @@
             (iTonePlayingStatus == EDefaultTonePlaying &&
             aPlayer == EPlayerDefault))
         {
-        iTimer->Cancel();
+        iTimer->CancelNotify();
         }
     else
         {
@@ -1302,10 +1302,10 @@
             // Need to restart TTS sequence TTS has completed its iterations,
             // set index to zero.
             iTtsDelayIndex = 0;
-            if (!iTtsDelayTimer->IsActive())
+            if (!iTtsDelayTimer->IsRunning())
                 {
                 // Restart TTS sequence
-                iTtsDelayTimer->After(KTMSTtsDelays[iTtsDelayIndex],
+                iTtsDelayTimer->NotifyAfter(KTMSTtsDelays[iTtsDelayIndex],
                         TCallBack(HandleTtsDelayTimeout, this));
                 }
             }
@@ -1332,10 +1332,10 @@
         // Caller name is said once. Increase tone player volume.
         SolveNewVolumeAndRamptime(ESaidOnce);
 
-        if (!iTtsDelayTimer->IsActive())
+        if (!iTtsDelayTimer->IsRunning())
             {
             // There are more TTS iterations to be played.
-            iTtsDelayTimer->After(KTMSTtsDelays[iTtsDelayIndex],
+            iTtsDelayTimer->NotifyAfter(KTMSTtsDelays[iTtsDelayIndex],
                     TCallBack(HandleTtsDelayTimeout, this));
             }
         }
@@ -1347,10 +1347,10 @@
     }
 
 // -----------------------------------------------------------------------------
-// TMSRingTonePlayer::HandleTimeOutL
+// TMSRingTonePlayer::TimerEvent
 // -----------------------------------------------------------------------------
 //
-void TMSRingTonePlayer::HandleTimeOutL()
+void TMSRingTonePlayer::TimerEvent()
     {
     DoHandlePlayerError(ETrue, ETrue);
     }
--- a/mmserv/tms/tmsserver/src/tmstimer.cpp	Fri May 14 18:19:45 2010 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,153 +0,0 @@
-/*
- * 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 FILES
-#include "tmstimer.h"
-
-using namespace TMS;
-
-// ---------------------------------------------------------
-// TMSTimer::TMSTimer
-// ---------------------------------------------------------
-//
-TMSTimer::TMSTimer(TInt aPriority) :
-    CTimer(aPriority)
-    {
-    CActiveScheduler::Add(this);
-    }
-
-// ---------------------------------------------------------
-// TMSTimer::ConstructL
-// ---------------------------------------------------------
-//
-void TMSTimer::ConstructL()
-    {
-    CTimer::ConstructL();
-    }
-
-// ---------------------------------------------------------
-// TMSTimer::NewL
-// ---------------------------------------------------------
-//
-EXPORT_C TMSTimer* TMSTimer::NewL(TInt aPriority)
-    {
-    TMSTimer* self = new (ELeave) TMSTimer(aPriority);
-
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-
-    return self;
-    }
-
-// ---------------------------------------------------------
-// TMSTimer::~TMSTimer
-// ---------------------------------------------------------
-//
-EXPORT_C TMSTimer::~TMSTimer()
-    {
-    Cancel();
-    }
-
-// ---------------------------------------------------------
-// TMSTimer::RunL()
-// ---------------------------------------------------------
-//
-void TMSTimer::RunL()
-    {
-    if (iStatus != KErrNone)
-        {
-        //error code is ignored, as CPeriodic.
-        return;
-        }
-
-    if (!iTimerObserver)
-        {
-        //"TMSTimer::RunL CallBack" );
-        iCallBack.CallBack();
-        }
-    else
-        {
-        //"TMSTimer::RunL HandleTimeOutL" );
-        iTimerObserver->HandleTimeOutL();
-        }
-    }
-
-// ---------------------------------------------------------
-// TMSTimer::RunL()
-// ---------------------------------------------------------
-//
-TInt TMSTimer::RunError(TInt aError)
-    {
-    //TODO: process error if HandleTimeOutL() in RunL leaves
-    return aError;
-    }
-
-// ---------------------------------------------------------
-// TMSTimer::After()
-// ---------------------------------------------------------
-//
-EXPORT_C void TMSTimer::After(TTimeIntervalMicroSeconds32 anInterval,
-        TCallBack aCallBack)
-    {
-    if (IsActive())
-        {
-        Cancel();
-        }
-    iTimerObserver = NULL;
-    iCallBack = aCallBack;
-    CTimer::After(anInterval);
-    }
-
-// ---------------------------------------------------------
-// TMSTimer::After()
-// ---------------------------------------------------------
-//
-
-EXPORT_C void TMSTimer::After(TTimeIntervalMicroSeconds32 anInterval,
-        TMSTimerObsrv* aObserver)
-    {
-    //__ASSERT_DEBUG( aObserver, Panic( EPhoneUtilsParameterNotInitialized ) );
-
-    if (IsActive())
-        {
-        Cancel();
-        }
-    iTimerObserver = aObserver;
-    CTimer::After(anInterval);
-    }
-
-// ---------------------------------------------------------
-//  TMSTimer::CancelTimer
-// ---------------------------------------------------------
-//
-EXPORT_C void TMSTimer::CancelTimer()
-    {
-    Cancel();
-    }
-
-// ---------------------------------------------------------
-//  TMSTimer::DoCancel
-// ---------------------------------------------------------
-//
-void TMSTimer::DoCancel()
-    {
-    iTimerObserver = NULL;
-    CTimer::DoCancel();
-    }
-
-//  End of File
--- a/mmserv/tms/tmsutility/bwins/tmsutility.def	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmsutility/bwins/tmsutility.def	Fri May 28 19:26:28 2010 -0500
@@ -1,8 +1,14 @@
 EXPORTS
-	?FourCCToTMSFormat@TMSUtility@TMS@@SAHK@Z @ 1 NONAME ; int TMS::TMSUtility::FourCCToTMSFormat(unsigned long)
-	?ToTAROutput@TMSUtility@TMS@@SA?AW4TAudioOutput@CTelephonyAudioRouting@@H@Z @ 2 NONAME ; enum CTelephonyAudioRouting::TAudioOutput TMS::TMSUtility::ToTAROutput(int)
-	?ToFourCC@TMSUtility@TMS@@SAKH@Z @ 3 NONAME ; unsigned long TMS::TMSUtility::ToFourCC(int)
-	?EtelToTMSResult@TMSUtility@TMS@@SAHH@Z @ 4 NONAME ; int TMS::TMSUtility::EtelToTMSResult(int)
-	?ToTMSOutput@TMSUtility@TMS@@SAHW4TAudioOutput@CTelephonyAudioRouting@@@Z @ 5 NONAME ; int TMS::TMSUtility::ToTMSOutput(enum CTelephonyAudioRouting::TAudioOutput)
-	?TMSResult@TMSUtility@TMS@@SAHH@Z @ 6 NONAME ; int TMS::TMSUtility::TMSResult(int)
+	?NewL@TMSTimer@TMS@@SAPAV12@H@Z @ 1 NONAME ; class TMS::TMSTimer * TMS::TMSTimer::NewL(int)
+	?EtelToTMSResult@TMSUtility@TMS@@SAHH@Z @ 2 NONAME ; int TMS::TMSUtility::EtelToTMSResult(int)
+	?ToTMSOutput@TMSUtility@TMS@@SAHW4TAudioOutput@CTelephonyAudioRouting@@@Z @ 3 NONAME ; int TMS::TMSUtility::ToTMSOutput(enum CTelephonyAudioRouting::TAudioOutput)
+	?IsRunning@TMSTimer@TMS@@QAEHXZ @ 4 NONAME ; int TMS::TMSTimer::IsRunning(void)
+	?TMSResult@TMSUtility@TMS@@SAHH@Z @ 5 NONAME ; int TMS::TMSUtility::TMSResult(int)
+	?CancelNotify@TMSTimer@TMS@@QAEXXZ @ 6 NONAME ; void TMS::TMSTimer::CancelNotify(void)
+	?FourCCToTMSFormat@TMSUtility@TMS@@SAHK@Z @ 7 NONAME ; int TMS::TMSUtility::FourCCToTMSFormat(unsigned long)
+	?NotifyAfter@TMSTimer@TMS@@QAEXHAAVTMSTimerObserver@2@@Z @ 8 NONAME ; void TMS::TMSTimer::NotifyAfter(int, class TMS::TMSTimerObserver &)
+	?ToTAROutput@TMSUtility@TMS@@SA?AW4TAudioOutput@CTelephonyAudioRouting@@H@Z @ 9 NONAME ; enum CTelephonyAudioRouting::TAudioOutput TMS::TMSUtility::ToTAROutput(int)
+	?ToFourCC@TMSUtility@TMS@@SAKH@Z @ 10 NONAME ; unsigned long TMS::TMSUtility::ToFourCC(int)
+	??1TMSTimer@TMS@@UAE@XZ @ 11 NONAME ; TMS::TMSTimer::~TMSTimer(void)
+	?NotifyAfter@TMSTimer@TMS@@QAEXHVTCallBack@@@Z @ 12 NONAME ; void TMS::TMSTimer::NotifyAfter(int, class TCallBack)
 
--- a/mmserv/tms/tmsutility/eabi/tmsutility.def	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmsutility/eabi/tmsutility.def	Fri May 28 19:26:28 2010 -0500
@@ -5,4 +5,14 @@
 	_ZN3TMS10TMSUtility17FourCCToTMSFormatEm @ 4 NONAME
 	_ZN3TMS10TMSUtility8ToFourCCEi @ 5 NONAME
 	_ZN3TMS10TMSUtility9TMSResultEi @ 6 NONAME
+	_ZN3TMS8TMSTimer11NotifyAfterEi9TCallBack @ 7 NONAME
+	_ZN3TMS8TMSTimer11NotifyAfterEiRNS_16TMSTimerObserverE @ 8 NONAME
+	_ZN3TMS8TMSTimer12CancelNotifyEv @ 9 NONAME
+	_ZN3TMS8TMSTimer4NewLEi @ 10 NONAME
+	_ZN3TMS8TMSTimer9IsRunningEv @ 11 NONAME
+	_ZN3TMS8TMSTimerD0Ev @ 12 NONAME
+	_ZN3TMS8TMSTimerD1Ev @ 13 NONAME
+	_ZN3TMS8TMSTimerD2Ev @ 14 NONAME
+	_ZTIN3TMS8TMSTimerE @ 15 NONAME
+	_ZTVN3TMS8TMSTimerE @ 16 NONAME
 
--- a/mmserv/tms/tmsutility/group/tmsutility.mmp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/tms/tmsutility/group/tmsutility.mmp	Fri May 28 19:26:28 2010 -0500
@@ -38,7 +38,9 @@
 
 SOURCEPATH      ../src
 SOURCE          tmsutility.cpp
+SOURCE          tmstimer.cpp
 
+LIBRARY         euser.lib
 LIBRARY         libc.lib
 LIBRARY         libglib.lib
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmserv/tms/tmsutility/src/tmstimer.cpp	Fri May 28 19:26:28 2010 -0500
@@ -0,0 +1,147 @@
+/*
+ * 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: Telephony Multimedia Service
+ *
+ */
+
+// INCLUDE FILES
+#include "tmstimer.h"
+
+using namespace TMS;
+
+// -----------------------------------------------------------------------------
+// Constructor
+// -----------------------------------------------------------------------------
+//
+TMSTimer::TMSTimer(gint aPriority) :
+    CTimer(aPriority)
+    {
+    CActiveScheduler::Add(this);
+    }
+
+// -----------------------------------------------------------------------------
+// TMSTimer::ConstructL
+// -----------------------------------------------------------------------------
+//
+void TMSTimer::ConstructL()
+    {
+    CTimer::ConstructL();
+    }
+
+// -----------------------------------------------------------------------------
+// TMSTimer::NewL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TMSTimer* TMSTimer::NewL(gint aPriority)
+    {
+    TMSTimer* self = new (ELeave) TMSTimer(aPriority);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// TMSTimer::~TMSTimer
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TMSTimer::~TMSTimer()
+    {
+    Cancel();
+    }
+
+// -----------------------------------------------------------------------------
+// TMSTimer::NotifyAfter
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMSTimer::NotifyAfter(gint timeout, TCallBack callback)
+    {
+    if (IsActive())
+        {
+        Cancel();
+        }
+    iObserver = NULL;
+    iCallBack = callback;
+    CTimer::After(TTimeIntervalMicroSeconds32(timeout));
+    }
+
+// -----------------------------------------------------------------------------
+// TMSTimer::NotifyAfter
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMSTimer::NotifyAfter(gint timeout, TMSTimerObserver& observer)
+    {
+    if (IsActive())
+        {
+        Cancel();
+        }
+    iObserver = &observer;
+    CTimer::After(TTimeIntervalMicroSeconds32(timeout));
+    }
+
+// -----------------------------------------------------------------------------
+//  TMSTimer::CancelNotify
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void TMSTimer::CancelNotify()
+    {
+    Cancel();
+    }
+
+// -----------------------------------------------------------------------------
+// TMSTimer::IsRunning
+// -----------------------------------------------------------------------------
+//
+EXPORT_C gboolean TMSTimer::IsRunning()
+    {
+    return IsActive();
+    }
+
+// -----------------------------------------------------------------------------
+// TMSTimer::RunL()
+// -----------------------------------------------------------------------------
+//
+void TMSTimer::RunL()
+    {
+    // Currently RunL doesn't leave.
+    if (iObserver)
+        {
+        iObserver->TimerEvent();
+        }
+    else
+        {
+        iCallBack.CallBack();
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// TMSTimer::RunError()
+// -----------------------------------------------------------------------------
+//
+TInt TMSTimer::RunError(TInt aError)
+    {
+    return aError;
+    }
+
+// -----------------------------------------------------------------------------
+//  TMSTimer::DoCancel
+// -----------------------------------------------------------------------------
+//
+void TMSTimer::DoCancel()
+    {
+    iObserver = NULL;
+    CTimer::DoCancel();
+    }
+
+//  End of File
--- a/mmserv/voipaudioservices/VoIPServer/group/VoIPAudioServer.mmp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/voipaudioservices/VoIPServer/group/VoIPAudioServer.mmp	Fri May 28 19:26:28 2010 -0500
@@ -25,6 +25,7 @@
 EPOCHEAPSIZE    0x20000 0x1000000 // Min 128kb, max 16Mb
 CAPABILITY      MultiMediaDD ReadDeviceData WriteDeviceData UserEnvironment ReadUserData WriteUserData
 VENDORID        VID_DEFAULT
+EPOCPROCESSPRIORITY high
 
 SOURCEPATH      ../src
 
--- a/mmserv/voipaudioservices/VoIPServer/src/VoIPServerSession.cpp	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/voipaudioservices/VoIPServer/src/VoIPServerSession.cpp	Fri May 28 19:26:28 2010 -0500
@@ -1907,14 +1907,12 @@
     if (aError == KErrNone)
         {
         TMMFPrioritySettings pSet;
-        iShared.iMutex.Wait();
-        pSet.iPref = iShared.iPreference;
-        pSet.iPriority = iShared.iPriority;
-        iShared.iMutex.Signal();
 
         if (iDTMFTonePlayer && iDTMFTonePlayerInitRequest)
             {
             // initialized DTMF player
+            pSet.iPref = KAudioDTMFString;
+            pSet.iPriority = KAudioPriorityDTMFString;
             iDTMFTonePlayer->SetPrioritySettings(pSet);
             iDTMFTonePlayer->SetVolume(iMaxVolume);
             iToneLenOn = KDTMFToneLengthOn;
@@ -1934,6 +1932,10 @@
         else if (iDevSound && iDevSoundInitRequest)
             {
             // initialized standard player to check G711 frame rate
+            iShared.iMutex.Wait();
+            pSet.iPref = iShared.iPreference;
+            pSet.iPriority = iShared.iPriority;
+            iShared.iMutex.Signal();
             iDevSound->SetPrioritySettings(pSet);
             iDevSoundInitRequest = EFalse;
 
--- a/mmserv/voipaudioservices/group/bld.inf	Fri May 14 18:19:45 2010 -0500
+++ b/mmserv/voipaudioservices/group/bld.inf	Fri May 28 19:26:28 2010 -0500
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). 
+ * Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
  * All rights reserved.
  * This component and the accompanying materials are made available
  * under the terms of "Eclipse Public License v1.0"
--- a/tsrc/group/bld.inf	Fri May 14 18:19:45 2010 -0500
+++ b/tsrc/group/bld.inf	Fri May 28 19:26:28 2010 -0500
@@ -34,6 +34,9 @@
 #include "../../mmmw_plat/radio_utilities_api/tsrc/Group/bld.inf"
 #include "../../mmmw_plat/thumbnail_engine_api/tsrc/group/bld.inf"
 #include "../../mmmw_plat/telephony_multimedia_service_api/tsrc/Group/Bld.inf"
+#include "../../mmmw_plat/openmax_al_api/tsrc/openmaxaltestmodule/group/bld.inf"
+#include "../../mmmw_plat/system_tone_service_api/tsrc/group/bld.inf"
+
 
 PRJ_MMPFILES