CStdString CMediaManager::GetDiskUniqueId(const CStdString& devicePath) { CStdString strDevice = devicePath; if (strDevice.IsEmpty()) // if no value passed, use the current default disc path. strDevice = GetDiscPath(); // in case of non-Windows we must obtain the disc path #ifdef TARGET_WINDOWS if (!m_bhasoptical) return ""; strDevice = TranslateDevicePath(strDevice); URIUtils::AddSlashAtEnd(strDevice); #endif CStdString strDrive = g_mediaManager.TranslateDevicePath(strDevice); #ifndef TARGET_WINDOWS { CSingleLock waitLock(m_muAutoSource); CCdInfo* pInfo = g_mediaManager.GetCdInfo(); if ( pInfo ) { if (pInfo->IsISOUDF(1) || pInfo->IsISOHFS(1) || pInfo->IsIso9660(1) || pInfo->IsIso9660Interactive(1)) strDrive = "iso9660://"; else strDrive = "D:\\"; } else { CLog::Log(LOGERROR, "GetDiskUniqueId: Failed getting CD info"); return ""; } } #endif CStdString pathVideoTS = URIUtils::AddFileToFolder(strDrive, "VIDEO_TS"); if(! CDirectory::Exists(pathVideoTS) ) return ""; // return empty CLog::Log(LOGDEBUG, "GetDiskUniqueId: Trying to retrieve ID for path %s", pathVideoTS.c_str()); uint32_t dvdcrc = 0; CStdString strID; if (HashDVD(pathVideoTS, dvdcrc)) { strID.Format("removable://%s_%08x", GetDiskLabel(devicePath), dvdcrc); CLog::Log(LOGDEBUG, "GetDiskUniqueId: Got ID %s for DVD disk", strID.c_str()); } return strID; }
std::string CMediaManager::GetDiskUniqueId(const std::string& devicePath) { std::string mediaPath; CCdInfo* pInfo = g_mediaManager.GetCdInfo(devicePath); if (pInfo == NULL) return ""; if (mediaPath.empty() && pInfo->IsAudio(1)) mediaPath = "cdda://local/"; if (mediaPath.empty() && (pInfo->IsISOUDF(1) || pInfo->IsISOHFS(1) || pInfo->IsIso9660(1) || pInfo->IsIso9660Interactive(1))) mediaPath = "iso9660://"; if (mediaPath.empty()) mediaPath = devicePath; #ifdef TARGET_WINDOWS if (mediaPath.empty() || mediaPath == "iso9660://") { mediaPath = g_mediaManager.TranslateDevicePath(""); URIUtils::AddSlashAtEnd(mediaPath); } #endif // Try finding VIDEO_TS/VIDEO_TS.IFO - this indicates a DVD disc is inserted std::string pathVideoTS = URIUtils::AddFileToFolder(mediaPath, "VIDEO_TS"); if(!CFile::Exists(URIUtils::AddFileToFolder(pathVideoTS, "VIDEO_TS.IFO"))) return ""; // return empty // correct the filename if needed if (StringUtils::StartsWith(pathVideoTS, "dvd://") || StringUtils::StartsWith(pathVideoTS, "iso9660://")) pathVideoTS = g_mediaManager.TranslateDevicePath(""); CLog::Log(LOGDEBUG, "GetDiskUniqueId: Trying to retrieve ID for path %s", pathVideoTS.c_str()); CDVDInputStreamNavigator dvdNavigator(NULL); dvdNavigator.Open(pathVideoTS.c_str(), ""); std::string labelString; dvdNavigator.GetDVDTitleString(labelString); std::string serialString; dvdNavigator.GetDVDSerialString(serialString); std::string strID = StringUtils::Format("removable://%s_%s", labelString.c_str(), serialString.c_str()); CLog::Log(LOGDEBUG, "GetDiskUniqueId: Got ID %s for DVD disk", strID.c_str()); return strID; }
void CAutorun::ExecuteAutorun( bool bypassSettings, bool ignoreplaying ) { if ( (!ignoreplaying && (g_application.IsPlayingAudio() || g_application.IsPlayingVideo() || m_gWindowManager.HasModalDialog()) || m_gWindowManager.GetActiveWindow() == WINDOW_LOGIN_SCREEN)) return ; CCdInfo* pInfo = CDetectDVDMedia::GetCdInfo(); if ( pInfo == NULL ) return ; g_application.ResetScreenSaverWindow(); // turn off the screensaver if it's active if ( pInfo->IsAudio( 1 ) ) { if( !bypassSettings && !g_guiSettings.GetBool("autorun.cdda") ) return; if (!g_passwordManager.IsMasterLockUnlocked(false)) if (g_settings.m_vecProfiles[g_settings.m_iLastLoadedProfileIndex].musicLocked()) return ; RunCdda(); } else if (pInfo->IsUDFX( 1 ) || pInfo->IsUDF(1) || (pInfo->IsISOUDF(1) && g_advancedSettings.m_detectAsUdf)) { RunXboxCd(bypassSettings); } else if (pInfo->IsISOUDF(1) || pInfo->IsISOHFS(1) || pInfo->IsIso9660(1) || pInfo->IsIso9660Interactive(1)) { RunISOMedia(bypassSettings); } else { RunXboxCd(bypassSettings); } }
bool CAutorun::PlayDisc(const std::string& path, bool bypassSettings, bool startFromBeginning) { if ( !bypassSettings && CSettings::Get().GetInt("audiocds.autoaction") != AUTOCD_PLAY && !CSettings::Get().GetBool("dvds.autorun")) return false; int nSize = g_playlistPlayer.GetPlaylist( PLAYLIST_MUSIC ).size(); int nAddedToPlaylist = 0; std::string mediaPath; CCdInfo* pInfo = g_mediaManager.GetCdInfo(path); if (pInfo == NULL) return false; if (mediaPath.empty() && pInfo->IsAudio(1)) mediaPath = "cdda://local/"; if (mediaPath.empty() && (pInfo->IsISOUDF(1) || pInfo->IsISOHFS(1) || pInfo->IsIso9660(1) || pInfo->IsIso9660Interactive(1))) mediaPath = "iso9660://"; if (mediaPath.empty()) mediaPath = path; #ifdef TARGET_WINDOWS if (mediaPath.empty() || mediaPath == "iso9660://") mediaPath = g_mediaManager.TranslateDevicePath(""); #endif const CURL pathToUrl(mediaPath); auto_ptr<IDirectory> pDir ( CDirectoryFactory::Create( pathToUrl )); bool bPlaying = RunDisc(pDir.get(), mediaPath, nAddedToPlaylist, true, bypassSettings, startFromBeginning); if ( !bPlaying && nAddedToPlaylist > 0 ) { CGUIMessage msg( GUI_MSG_PLAYLIST_CHANGED, 0, 0 ); g_windowManager.SendMessage( msg ); g_playlistPlayer.SetCurrentPlaylist(PLAYLIST_MUSIC); // Start playing the items we inserted return g_playlistPlayer.Play(nSize); } return bPlaying; }
bool CAutorun::PlayDisc(const CStdString& path, bool bypassSettings, bool startFromBeginning) { if ( !bypassSettings && !g_guiSettings.GetBool("audiocds.autorun") && !g_guiSettings.GetBool("dvds.autorun")) return false; int nSize = g_playlistPlayer.GetPlaylist( PLAYLIST_MUSIC ).size(); int nAddedToPlaylist = 0; CStdString mediaPath; CCdInfo* pInfo = g_mediaManager.GetCdInfo(path); if (pInfo == NULL) return false; if (mediaPath.IsEmpty() && pInfo->IsAudio(1)) mediaPath = "cdda://local/"; if (mediaPath.IsEmpty() && (pInfo->IsISOUDF(1) || pInfo->IsISOHFS(1) || pInfo->IsIso9660(1) || pInfo->IsIso9660Interactive(1))) mediaPath = "iso9660://"; if (mediaPath.IsEmpty()) mediaPath = path; #ifdef _WIN32 if (mediaPath.IsEmpty() || mediaPath.CompareNoCase("iso9660://") == 0) mediaPath = g_mediaManager.TranslateDevicePath(""); #endif auto_ptr<IDirectory> pDir ( CFactoryDirectory::Create( mediaPath )); bool bPlaying = RunDisc(pDir.get(), mediaPath, nAddedToPlaylist, true, bypassSettings, startFromBeginning); if ( !bPlaying && nAddedToPlaylist > 0 ) { CGUIMessage msg( GUI_MSG_PLAYLIST_CHANGED, 0, 0 ); g_windowManager.SendMessage( msg ); g_playlistPlayer.SetCurrentPlaylist(PLAYLIST_MUSIC); // Start playing the items we inserted return g_playlistPlayer.Play(nSize); } return bPlaying; }
bool CAutorun::PlayDisc(const std::string& path, bool bypassSettings, bool startFromBeginning) { if ( !bypassSettings && CServiceBroker::GetSettings().GetInt(CSettings::SETTING_AUDIOCDS_AUTOACTION) != AUTOCD_PLAY && !CServiceBroker::GetSettings().GetBool(CSettings::SETTING_DVDS_AUTORUN)) return false; int nSize = CServiceBroker::GetPlaylistPlayer().GetPlaylist( PLAYLIST_MUSIC ).size(); int nAddedToPlaylist = 0; std::string mediaPath; CCdInfo* pInfo = g_mediaManager.GetCdInfo(path); if (pInfo == NULL) return false; if (mediaPath.empty() && pInfo->IsAudio(1)) mediaPath = "cdda://local/"; if (mediaPath.empty() && (pInfo->IsISOUDF(1) || pInfo->IsISOHFS(1) || pInfo->IsIso9660(1) || pInfo->IsIso9660Interactive(1))) mediaPath = "iso9660://"; if (mediaPath.empty()) mediaPath = path; if (mediaPath.empty() || mediaPath == "iso9660://") mediaPath = g_mediaManager.GetDiscPath(); const CURL pathToUrl(mediaPath); std::unique_ptr<IDirectory> pDir ( CDirectoryFactory::Create( pathToUrl )); bool bPlaying = RunDisc(pDir.get(), mediaPath, nAddedToPlaylist, true, bypassSettings, startFromBeginning); if ( !bPlaying && nAddedToPlaylist > 0 ) { CGUIMessage msg( GUI_MSG_PLAYLIST_CHANGED, 0, 0 ); g_windowManager.SendMessage( msg ); CServiceBroker::GetPlaylistPlayer().SetCurrentPlaylist(PLAYLIST_MUSIC); // Start playing the items we inserted return CServiceBroker::GetPlaylistPlayer().Play(nSize, ""); } return bPlaying; }
std::string CMediaManager::GetDiskUniqueId(const std::string& devicePath) { std::string mediaPath; CCdInfo* pInfo = g_mediaManager.GetCdInfo(devicePath); if (pInfo == NULL) return ""; if (mediaPath.empty() && pInfo->IsAudio(1)) mediaPath = "cdda://local/"; if (mediaPath.empty() && (pInfo->IsISOUDF(1) || pInfo->IsISOHFS(1) || pInfo->IsIso9660(1) || pInfo->IsIso9660Interactive(1))) mediaPath = "iso9660://"; if (mediaPath.empty()) mediaPath = devicePath; #ifdef TARGET_WINDOWS if (mediaPath.empty() || mediaPath == "iso9660://") { mediaPath = g_mediaManager.TranslateDevicePath(devicePath); URIUtils::AddSlashAtEnd(mediaPath); } #endif DiscInfo info = GetDiscInfo(mediaPath); if (info.empty()) { CLog::Log(LOGDEBUG, "GetDiskUniqueId: Retrieving ID for path %s failed, ID is empty.", CURL::GetRedacted(mediaPath).c_str()); return ""; } std::string strID = StringUtils::Format("removable://%s_%s", info.name.c_str(), info.serial.c_str()); CLog::Log(LOGDEBUG, "GetDiskUniqueId: Got ID %s for %s with path %s", strID.c_str(), info.type.c_str(), CURL::GetRedacted(mediaPath).c_str()); return strID; }
void CAutorun::RunMedia(bool bypassSettings) { if ( !bypassSettings && !g_guiSettings.GetBool("autorun.dvd") && !g_guiSettings.GetBool("autorun.vcd") && !g_guiSettings.GetBool("autorun.video") && !g_guiSettings.GetBool("autorun.music") && !g_guiSettings.GetBool("autorun.pictures") ) return ; int nSize = g_playlistPlayer.GetPlaylist( PLAYLIST_MUSIC ).size(); int nAddedToPlaylist = 0; #ifdef _WIN32 auto_ptr<IDirectory> pDir ( CFactoryDirectory::Create( MEDIA_DETECT::CLibcdio::GetInstance()->GetDeviceFileName()+4 )); bool bPlaying = RunDisc(pDir.get(), MEDIA_DETECT::CLibcdio::GetInstance()->GetDeviceFileName()+4, nAddedToPlaylist, true, bypassSettings); #else CCdInfo* pInfo = g_mediaManager.GetCdInfo(); if ( pInfo == NULL ) return ; bool bPlaying; if (pInfo->IsISOUDF(1) || pInfo->IsISOHFS(1) || pInfo->IsIso9660(1) || pInfo->IsIso9660Interactive(1)) { auto_ptr<IDirectory> pDir ( CFactoryDirectory::Create( "iso9660://" )); bPlaying = RunDisc(pDir.get(), "iso9660://", nAddedToPlaylist, true, bypassSettings); } else { auto_ptr<IDirectory> pDir ( CFactoryDirectory::Create( "D:\\" ) ); bPlaying = RunDisc(pDir.get(), "D:\\", nAddedToPlaylist, true, bypassSettings); } #endif if ( !bPlaying && nAddedToPlaylist > 0 ) { CGUIMessage msg( GUI_MSG_PLAYLIST_CHANGED, 0, 0 ); g_windowManager.SendMessage( msg ); g_playlistPlayer.SetCurrentPlaylist(PLAYLIST_MUSIC); // Start playing the items we inserted g_playlistPlayer.Play(nSize); } }
void CAutorun::RunMedia(bool bypassSettings, bool startFromBeginning) { if ( !bypassSettings && !g_guiSettings.GetBool("audiocds.autorun") && !g_guiSettings.GetBool("dvds.autorun")) return ; int nSize = g_playlistPlayer.GetPlaylist( PLAYLIST_MUSIC ).size(); int nAddedToPlaylist = 0; #ifdef _WIN32 auto_ptr<IDirectory> pDir ( CFactoryDirectory::Create( g_mediaManager.TranslateDevicePath("") )); bool bPlaying = RunDisc(pDir.get(), g_mediaManager.TranslateDevicePath(""), nAddedToPlaylist, true, bypassSettings, startFromBeginning); #else CCdInfo* pInfo = g_mediaManager.GetCdInfo(); if ( pInfo == NULL ) return ; bool bPlaying; if (pInfo->IsISOUDF(1) || pInfo->IsISOHFS(1) || pInfo->IsIso9660(1) || pInfo->IsIso9660Interactive(1)) { auto_ptr<IDirectory> pDir ( CFactoryDirectory::Create( "iso9660://" )); bPlaying = RunDisc(pDir.get(), "iso9660://", nAddedToPlaylist, true, bypassSettings, startFromBeginning); } else { auto_ptr<IDirectory> pDir ( CFactoryDirectory::Create( "D:\\" ) ); bPlaying = RunDisc(pDir.get(), "D:\\", nAddedToPlaylist, true, bypassSettings, startFromBeginning); } #endif if ( !bPlaying && nAddedToPlaylist > 0 ) { CGUIMessage msg( GUI_MSG_PLAYLIST_CHANGED, 0, 0 ); g_windowManager.SendMessage( msg ); g_playlistPlayer.SetCurrentPlaylist(PLAYLIST_MUSIC); // Start playing the items we inserted g_playlistPlayer.Play(nSize); } }