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)); }