mirror of
https://github.com/jpd002/Play-.git
synced 2025-04-28 13:47:57 +03:00
Properly set track type when loading a CHD disc image.
This commit is contained in:
parent
818bf57c0b
commit
33275bbc38
3 changed files with 7 additions and 7 deletions
|
@ -109,19 +109,19 @@ static DiskUtils::OpticalMediaPtr CreateOpticalMediaFromChd(const fs::path& imag
|
||||||
//Some notes about CHD support:
|
//Some notes about CHD support:
|
||||||
//- We don't support multi track CDs
|
//- We don't support multi track CDs
|
||||||
auto imageStream = std::make_shared<CChdImageStream>(CreateImageStream(imagePath));
|
auto imageStream = std::make_shared<CChdImageStream>(CreateImageStream(imagePath));
|
||||||
auto blockProvider = [&imageStream]() -> COpticalMedia::BlockProviderPtr {
|
auto trackInfo = [&imageStream]() -> std::pair<COpticalMedia::BlockProviderPtr, COpticalMedia::TRACK_DATA_TYPE> {
|
||||||
switch(imageStream->GetTrack0Type())
|
switch(imageStream->GetTrack0Type())
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
assert(false);
|
assert(false);
|
||||||
[[fallthrough]];
|
[[fallthrough]];
|
||||||
case CChdImageStream::TRACK_TYPE_MODE1:
|
case CChdImageStream::TRACK_TYPE_MODE1:
|
||||||
return std::make_shared<ISO9660::CBlockProviderCustom<0x990, 0>>(imageStream);
|
return std::make_pair(std::make_shared<ISO9660::CBlockProviderCustom<0x990, 0>>(imageStream), COpticalMedia::TRACK_DATA_TYPE_MODE1_2048);
|
||||||
case CChdImageStream::TRACK_TYPE_MODE2_RAW:
|
case CChdImageStream::TRACK_TYPE_MODE2_RAW:
|
||||||
return std::make_shared<ISO9660::CBlockProviderCustom<0x990, 0x18>>(imageStream);
|
return std::make_pair(std::make_shared<ISO9660::CBlockProviderCustom<0x990, 0x18>>(imageStream), COpticalMedia::TRACK_DATA_TYPE_MODE2_2352);
|
||||||
}
|
}
|
||||||
}();
|
}();
|
||||||
return COpticalMedia::CreateCustomSingleTrack(blockProvider);
|
return COpticalMedia::CreateCustomSingleTrack(std::move(trackInfo.first), trackInfo.second);
|
||||||
}
|
}
|
||||||
|
|
||||||
const DiskUtils::ExtensionList& DiskUtils::GetSupportedExtensions()
|
const DiskUtils::ExtensionList& DiskUtils::GetSupportedExtensions()
|
||||||
|
|
|
@ -54,11 +54,11 @@ std::unique_ptr<COpticalMedia> COpticalMedia::CreateDvd(StreamPtr& stream, bool
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<COpticalMedia> COpticalMedia::CreateCustomSingleTrack(BlockProviderPtr blockProvider)
|
std::unique_ptr<COpticalMedia> COpticalMedia::CreateCustomSingleTrack(BlockProviderPtr blockProvider, TRACK_DATA_TYPE trackDataType)
|
||||||
{
|
{
|
||||||
auto result = std::make_unique<COpticalMedia>();
|
auto result = std::make_unique<COpticalMedia>();
|
||||||
result->m_fileSystem = std::make_unique<CISO9660>(blockProvider);
|
result->m_fileSystem = std::make_unique<CISO9660>(blockProvider);
|
||||||
result->m_track0DataType = TRACK_DATA_TYPE_MODE1_2048;
|
result->m_track0DataType = trackDataType;
|
||||||
result->m_track0BlockProvider = blockProvider;
|
result->m_track0BlockProvider = blockProvider;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@ public:
|
||||||
|
|
||||||
static std::unique_ptr<COpticalMedia> CreateAuto(StreamPtr&, uint32 = 0);
|
static std::unique_ptr<COpticalMedia> CreateAuto(StreamPtr&, uint32 = 0);
|
||||||
static std::unique_ptr<COpticalMedia> CreateDvd(StreamPtr&, bool = false, uint32 = 0);
|
static std::unique_ptr<COpticalMedia> CreateDvd(StreamPtr&, bool = false, uint32 = 0);
|
||||||
static std::unique_ptr<COpticalMedia> CreateCustomSingleTrack(BlockProviderPtr);
|
static std::unique_ptr<COpticalMedia> CreateCustomSingleTrack(BlockProviderPtr, TRACK_DATA_TYPE);
|
||||||
|
|
||||||
//TODO: Get Track Count
|
//TODO: Get Track Count
|
||||||
TRACK_DATA_TYPE GetTrackDataType(uint32) const;
|
TRACK_DATA_TYPE GetTrackDataType(uint32) const;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue