Play-/Source/OpticalMedia.h

42 lines
911 B
C
Raw Normal View History

#pragma once
#include "Stream.h"
#include "ISO9660/ISO9660.h"
class COpticalMedia
{
public:
enum TRACK_DATA_TYPE
{
TRACK_DATA_TYPE_AUDIO,
TRACK_DATA_TYPE_MODE1_2048,
TRACK_DATA_TYPE_MODE2_2352,
};
typedef std::shared_ptr<Framework::CStream> StreamPtr;
2018-10-12 17:04:31 -04:00
static COpticalMedia* CreateAuto(StreamPtr&);
static COpticalMedia* CreateDvd(StreamPtr&, bool = false, uint32 = 0);
//TODO: Get Track Count
2018-04-30 21:01:23 +01:00
TRACK_DATA_TYPE GetTrackDataType(uint32) const;
CISO9660* GetFileSystem();
2018-10-08 00:04:04 -04:00
CISO9660* GetFileSystemL1();
2018-04-30 21:01:23 +01:00
bool GetDvdIsDualLayer() const;
uint32 GetDvdSecondLayerStart() const;
private:
2018-10-12 17:04:31 -04:00
COpticalMedia() = default;
typedef std::unique_ptr<CISO9660> Iso9660Ptr;
2018-04-30 21:01:23 +01:00
void CheckDualLayerDvd(const StreamPtr&);
TRACK_DATA_TYPE m_track0DataType = TRACK_DATA_TYPE_MODE1_2048;
2018-04-30 21:01:23 +01:00
bool m_dvdIsDualLayer = false;
uint32 m_dvdSecondLayerStart = 0;
Iso9660Ptr m_fileSystem;
2018-10-08 00:04:04 -04:00
Iso9660Ptr m_fileSystemL1;
};