void PlayerDriver::handleSetDataSource(PlayerSetDataSource* ec) { int error = 0; const char* url = ec->url(); int lengthofurl = strlen(url); oscl_wchar output[lengthofurl + 1]; OSCL_wHeapString<OsclMemAllocator> wFileName; if (mDataSource) { delete mDataSource; mDataSource = NULL; } // Create a URL datasource to feed PVPlayer mDataSource = new PVPlayerDataSourceURL(); oscl_UTF8ToUnicode(url, strlen(url), output, lengthofurl+1); wFileName.set(output, oscl_strlen(output)); mDataSource->SetDataSourceURL(wFileName); if (strncmp(url, "rtsp:", strlen("rtsp:")) == 0) { mDataSource->SetDataSourceFormatType(PVMF_DATA_SOURCE_RTSP_URL); } else if (strncmp(url, "http:", strlen("http:")) == 0) { setupHttpStreamPre(); } else { mDataSource->SetDataSourceFormatType(PVMF_FORMAT_UNKNOWN); // Let PV figure it out } OSCL_TRY(error, mPlayer->AddDataSource(*mDataSource, ec)); OSCL_FIRST_CATCH_ANY(error, commandFailed(ec)); }
int PlayerDriver::setupHttpStreamPost() { PvmiKvp iKVPSetAsync; OSCL_StackString<64> iKeyStringSetAsync; PvmiKvp *iErrorKVP = NULL; int error = 0; // PV will set a default user agent value. The below string will be appended to the default value. // The default value [PVPLAYER_ENGINE_SDKINFO_LABEL] can be found at device/extlibs/pv/engines/player/src/pv_player_sdkinfo.h iKVPSetAsync.key = _STRLIT_CHAR("x-pvmf/net/user-agent;valtype=wchar*"); OSCL_wHeapString<OsclMemAllocator> userAgent = _STRLIT_WCHAR("(Linux;U;Android 1.0)(AndroidMediaPlayer 1.0)"); iKVPSetAsync.value.pWChar_value=userAgent.get_str(); iErrorKVP=NULL; OSCL_TRY(error, mPlayerCapConfig->setParametersSync(NULL, &iKVPSetAsync, 1, iErrorKVP)); OSCL_FIRST_CATCH_ANY(error, return -1); iKeyStringSetAsync=_STRLIT_CHAR("x-pvmf/net/http-timeout;valtype=uint32"); iKVPSetAsync.key=iKeyStringSetAsync.get_str(); iKVPSetAsync.value.uint32_value=20; iErrorKVP=NULL; OSCL_TRY(error, mPlayerCapConfig->setParametersSync(NULL, &iKVPSetAsync, 1, iErrorKVP)); OSCL_FIRST_CATCH_ANY(error, return -1); iKeyStringSetAsync=_STRLIT_CHAR("x-pvmf/net/num-redirect-attempts;valtype=uint32"); iKVPSetAsync.key=iKeyStringSetAsync.get_str(); iKVPSetAsync.value.uint32_value=4; iErrorKVP=NULL; OSCL_TRY(error, mPlayerCapConfig->setParametersSync(NULL, &iKVPSetAsync, 1, iErrorKVP)); OSCL_FIRST_CATCH_ANY(error, return -1); // enable or disable HEAD request iKeyStringSetAsync=_STRLIT_CHAR("x-pvmf/net/http-header-request-disabled;valtype=bool"); iKVPSetAsync.key=iKeyStringSetAsync.get_str(); iKVPSetAsync.value.bool_value=false; iErrorKVP=NULL; OSCL_TRY(error, mPlayerCapConfig->setParametersSync(NULL, &iKVPSetAsync, 1, iErrorKVP)); OSCL_FIRST_CATCH_ANY(error, return -1); iKeyStringSetAsync=_STRLIT_CHAR("x-pvmf/net/max-tcp-recv-buffer-size-download;valtype=uint32"); iKVPSetAsync.key=iKeyStringSetAsync.get_str(); iKVPSetAsync.value.uint32_value=64000; iErrorKVP=NULL; OSCL_TRY(error, mPlayerCapConfig->setParametersSync(NULL, &iKVPSetAsync, 1, iErrorKVP)); OSCL_FIRST_CATCH_ANY(error, return -1); return 0; }
PVMFStatus PVAMRFFRecognizerPlugin::Recognize(PVMFDataStreamFactory& aSourceDataStreamFactory, PVMFRecognizerMIMEStringList* aFormatHint, Oscl_Vector<PVMFRecognizerResult, OsclMemAllocator>& aRecognizerResult) { OSCL_UNUSED_ARG(aFormatHint); OSCL_wHeapString<OsclMemAllocator> tmpfilename; Oscl_FileServer fileServ; PVFile pvfile; pvfile.SetCPM(&aSourceDataStreamFactory); if (!(pvfile.Open(tmpfilename.get_cstr(), Oscl_File::MODE_READ | Oscl_File::MODE_BINARY, fileServ))) { char* readData = NULL; readData = (char*)(oscl_malloc(sizeof(char) * AMRFF_MIN_DATA_SIZE_FOR_RECOGNITION)); if (readData != NULL) { int bytesRead = 0; bytesRead = pvfile.Read(readData, sizeof(char), AMRFF_MIN_DATA_SIZE_FOR_RECOGNITION); if (bytesRead != AMRFF_MIN_DATA_SIZE_FOR_RECOGNITION) { pvfile.Close(); oscl_free(readData); return PVMFFailure; } if (readData[0] == '#' && readData[1] == '!' && readData[2] == 'A' && readData[3] == 'M' && readData[4] == 'R') { PVMFRecognizerResult result; result.iRecognizedFormat = PVMF_MIME_AMRFF; result.iRecognitionConfidence = PVMFRecognizerConfidenceCertain; aRecognizerResult.push_back(result); } } pvfile.Close(); oscl_free(readData); return PVMFFailure; } else { return PVMFFailure; } return PVMFSuccess; }
int32 MP3Utils::OpenFile(OSCL_wHeapString<OsclMemAllocator> filename, uint32 mode, MP3_FF_FILE *fp) { OSCL_UNUSED_ARG(mode); if (fp != NULL) { return (fp->_pvfile.Open(filename.get_cstr(), Oscl_File::MODE_READ | Oscl_File::MODE_BINARY, (fp->_fileServSession))); } return -1; }
int32 AACUtils::OpenFile(OSCL_wHeapString<OsclMemAllocator> filename, uint32 mode, PVFile *fp, Oscl_FileServer fileServSession) { OSCL_UNUSED_ARG(mode); if (fp != NULL) { return (fp->Open(filename.get_cstr(), Oscl_File::MODE_READ | Oscl_File::MODE_BINARY, fileServSession)); } return -1; }