bool CFileCDDA::Open(const CURL& url) { std::string strURL = url.GetWithoutFilename(); if (!g_mediaManager.IsDiscInDrive(strURL) || !IsValidFile(url)) return false; // Open the dvd drive #ifdef TARGET_POSIX m_pCdIo = m_cdio->cdio_open(g_mediaManager.TranslateDevicePath(strURL).c_str(), DRIVER_UNKNOWN); #elif defined(TARGET_WINDOWS) m_pCdIo = m_cdio->cdio_open_win32(g_mediaManager.TranslateDevicePath(strURL, true).c_str()); #endif if (!m_pCdIo) { CLog::Log(LOGERROR, "file cdda: Opening the dvd drive failed"); return false; } int iTrack = GetTrackNum(url); m_lsnStart = m_cdio->cdio_get_track_lsn(m_pCdIo, iTrack); m_lsnEnd = m_cdio->cdio_get_track_last_lsn(m_pCdIo, iTrack); m_lsnCurrent = m_lsnStart; if (m_lsnStart == CDIO_INVALID_LSN || m_lsnEnd == CDIO_INVALID_LSN) { m_cdio->cdio_destroy(m_pCdIo); m_pCdIo = NULL; return false; } return true; }
bool CDSMDirectory::GetDirectory(const CURL& url, CFileItemList &items) { std::unique_ptr<CDSMSession> session(CDSMSessionManager::CreateSession(url)); if (session) return session->GetDirectory(url.GetWithoutFilename().c_str(), url.GetFileName().c_str(), items); else RequireAuthentication(url); return false; }