XString TranscodeExport::_GetTMPName( const XString& fileName ) const { if( !fileName.Contains(".") ) X_THROW(("No extension in file name!")); if( !fileName.Contains(PATH_SLASH) ) X_THROW(("Need full path to file for export.")); vector<XString> parts; fileName.Split( PATH_SLASH, parts ); if( parts.size() < 2 ) X_THROW(("Invalid export path: %s",fileName.c_str()));; XString path; for( int i = 0; i < ((int)parts.size() - 1); i++ ) path += XString::Format( "%s%s", PATH_SLASH, parts[i].c_str() ); XString mediaFileName = parts[parts.size()-1]; XString fileBaseName = mediaFileName.substr(0, mediaFileName.find(".")); XString extension = mediaFileName.substr(mediaFileName.find(".")+1); XMD5 hash; hash.Update( (uint8_t*)fileBaseName.c_str(), fileBaseName.length() ); hash.Finalize(); XString fileBaseNameHash = hash.GetAsString(); return XString::Format( "%s%sexport-tmp-%s.%s", path.c_str(), PATH_SLASH, fileBaseNameHash.c_str(), extension.c_str() ); }