diff -r 4a629bc82c5e -r b67dd1fc57c5 khronosfws/openmax_al/src/mmf_adaptation/cmmfbackendengine.cpp --- 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;