khronosfws/openmax_al/src/mmf_adaptation/cmmfbackendengine.cpp
changeset 20 b67dd1fc57c5
parent 19 4a629bc82c5e
child 21 2ed61feeead6
child 31 8dfd592727cb
--- a/khronosfws/openmax_al/src/mmf_adaptation/cmmfbackendengine.cpp	Fri Apr 30 19:18:45 2010 -0500
+++ b/khronosfws/openmax_al/src/mmf_adaptation/cmmfbackendengine.cpp	Fri May 14 18:19:45 2010 -0500
@@ -61,11 +61,18 @@
 void CMMFBackendEngine::ConstructL()
     {
     iAPIBeingUsed = ENoUtility;
-    iBaseAudioRecorder = CMdaAudioRecorderUtility::NewL(*this);
-    iAudioRecorder = (CMdaAudioRecorderUtility*)iBaseAudioRecorder;
     iActiveSchedulerWait = new (ELeave) CActiveSchedulerWait;
     }
 
+void CMMFBackendEngine::InitAudioRecorderUtilityL()
+    {
+    if (!iAudioRecorder)
+        {
+        iBaseAudioRecorder = CMdaAudioRecorderUtility::NewL(*this);
+        iAudioRecorder = (CMdaAudioRecorderUtility*)iBaseAudioRecorder;
+        }
+    }
+
 void CMMFBackendEngine::InitAudioPlayerUtilityL()
     {
     if (!iAudioPlayer)
@@ -113,33 +120,27 @@
         if (iRecordState == ERecorderNotReady)
             {
             iFileFormat = format;
-            iAPIBeingUsed = EAudioRecorderUtility;
-            TPtr8 fileuri(((TUint8*)uri), strlen(uri) ,strlen(uri));
-            TPtr8 filepath = fileuri.RightTPtr(strlen(uri)-fileslashlen);
-            TInt pos = filepath.LocateReverse(':');
-            if(pos != KErrNotFound)
+            iAPIBeingUsed = DetermineAPIToUse(uri, EPlay);
+            err = XA_RESULT_INTERNAL_ERROR;
+            if (iAPIBeingUsed == EAudioRecorderUtility)
                 {
-                fileuri.Delete(fileslashlen+pos,1);
-                }
-
-            TUriParser8 localfileUri;
-            TInt ret = localfileUri.Parse(fileuri);
-            HBufC* file = NULL;
-            TRAP(err,file = localfileUri.GetFileNameL());
-            TPtr des = file->Des();
-            iFileName = des;
-            delete file;
-            file = NULL;
-            TRAP(err, iAudioRecorder->OpenFileL(iFileName));
-            if (!err)
-                { /* Wait until we receive moscostatechanged callback */
+                /* Initialize URI as needed by MMF utilities */
+                err = InitializeURIForMMFUtil(uri);
+                RET_IF_ERR(err, XA_RESULT_INTERNAL_ERROR);
+                /* Initalize Recorder related objects */
+                TRAP(err, InitAudioRecorderUtilityL());
+                RET_IF_ERR(err, XA_RESULT_INTERNAL_ERROR);
+    
+                TRAP(err, iAudioRecorder->OpenFileL(iFileName));
+                RET_IF_ERR(err, XA_RESULT_INTERNAL_ERROR);
+                /* Wait until we receive moscostatechanged callback */
                 if(!iActiveSchedulerWait->IsStarted())
                     {
                     iActiveSchedulerWait->Start();
                     }
-                err = iErrorCode;
-                }
-           }
+                RET_IF_ERR(iErrorCode, XA_RESULT_INTERNAL_ERROR);
+               }
+            }
         }
     else
         {
@@ -505,6 +506,12 @@
 TInt CMMFBackendEngine::SetRecorderState(TRecorderState state, XAboolean stopCalled)
     {
     TInt err(KErrNone);
+
+    if (iAPIBeingUsed != EAudioRecorderUtility)
+        {
+        return XA_RESULT_INTERNAL_ERROR;
+        }
+
     switch(state)
         {
         case ERecorderNotReady:
@@ -574,28 +581,14 @@
         iPositionUpdateTimer->Stop();
         }
 
-    if(iActiveSchedulerWait)
+    if (iActiveSchedulerWait && iActiveSchedulerWait->IsStarted())
         {
-        if(iActiveSchedulerWait->IsStarted())
-            {
-            iActiveSchedulerWait->AsyncStop();
-            }
+        iActiveSchedulerWait->AsyncStop();
         }
     }
 
 void CMMFBackendEngine::Destroy()
     {
-
-    if (iBaseAudioRecorder)
-        {
-        iAudioRecorder->Close();
-        }
-
-    if (iActiveSchedulerWait && iActiveSchedulerWait->IsStarted())
-        {
-        iActiveSchedulerWait->AsyncStop();
-        }
-
     delete iPositionUpdateTimer;
     iPositionUpdateTimer = NULL;
     delete iUri;
@@ -607,12 +600,8 @@
     delete iBaseVideoPlayer;
     iBaseVideoPlayer = NULL;
     iVideoPlayer = NULL;
-    if (iaudioInputRecord)
-        {
-        delete iaudioInputRecord;
-        iaudioInputRecord = NULL;
-        }
-		
+    delete iaudioInputRecord;
+    iaudioInputRecord = NULL;
     delete iBaseAudioPlayer;
     iBaseAudioPlayer = NULL;
     iAudioPlayer = NULL;