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