diff -r b67dd1fc57c5 -r 2ed61feeead6 khronosfws/openmax_al/src/mmf_adaptation/cmmfbackendengine.cpp --- 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 inputArray; - inputArray.Append( CAudioInput::EDefaultMic ); - // Set Audio Input - iaudioInputRecord->SetAudioInputL( inputArray.Array( ) ); - inputArray.Close(); + TRAP(err,iAudioInputRecord = CAudioInput::NewL( *iAudioRecorder )); + if(err == KErrNone) + { + RArray 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(iUriPtr.Ptr()) + KFileScheme().Length(), iUriPtr.Length(), iUriPtr.Length()); @@ -1477,6 +1521,10 @@ file = NULL; } + else + { + iUriType = EStreaming; + } return err; }