diff options
Diffstat (limited to 'xbmc/filesystem/CDDAFile.h')
-rw-r--r-- | xbmc/filesystem/CDDAFile.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/xbmc/filesystem/CDDAFile.h b/xbmc/filesystem/CDDAFile.h new file mode 100644 index 0000000..654e0f9 --- /dev/null +++ b/xbmc/filesystem/CDDAFile.h @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2005-2018 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#pragma once + +#include "IFile.h" +#include "storage/cdioSupport.h" + +namespace XFILE +{ +class CFileCDDA : public IFile +{ +public: + CFileCDDA(void); + ~CFileCDDA(void) override; + bool Open(const CURL& url) override; + bool Exists(const CURL& url) override; + int Stat(const CURL& url, struct __stat64* buffer) override; + + ssize_t Read(void* lpBuf, size_t uiBufSize) override; + int64_t Seek(int64_t iFilePosition, int iWhence = SEEK_SET) override; + void Close() override; + int64_t GetPosition() override; + int64_t GetLength() override; + int GetChunkSize() override; + +protected: + bool IsValidFile(const CURL& url); + int GetTrackNum(const CURL& url); + +protected: + CdIo_t* m_pCdIo; + lsn_t m_lsnStart = CDIO_INVALID_LSN; // Start of m_iTrack in logical sector number + lsn_t m_lsnCurrent = CDIO_INVALID_LSN; // Position inside the track in logical sector number + lsn_t m_lsnEnd = CDIO_INVALID_LSN; // End of m_iTrack in logical sector number + int m_iSectorCount; // max number of sectors to read at once + std::shared_ptr<MEDIA_DETECT::CLibcdio> m_cdio; +}; +} |