diff --git a/src/common/cd_image.cpp b/src/common/cd_image.cpp index fe15faf5e..3c924fa2f 100644 --- a/src/common/cd_image.cpp +++ b/src/common/cd_image.cpp @@ -54,6 +54,24 @@ CDImage::Position CDImage::GetTrackStartMSFPosition(u8 track) const return Position::FromLBA(m_tracks[track - 1].start_lba); } +CDImage::LBA CDImage::GetTrackLength(u8 track) const +{ + Assert(track > 0 && track <= m_tracks.size()); + return m_tracks[track - 1].length; +} + +CDImage::Position CDImage::GetTrackMSFLength(u8 track) const +{ + Assert(track > 0 && track <= m_tracks.size()); + return Position::FromLBA(m_tracks[track - 1].length); +} + +CDImage::TrackMode CDImage::GetTrackMode(u8 track) const +{ + Assert(track > 0 && track <= m_tracks.size()); + return m_tracks[track - 1].mode; +} + bool CDImage::Seek(LBA lba) { const Index* new_index; @@ -240,7 +258,8 @@ bool CDImage::GenerateSubChannelQ(SubChannelQ* subq, LBA lba) void CDImage::GenerateSubChannelQ(SubChannelQ* subq, const Index* index, u32 index_offset) { subq->control.bits = index->control.bits; - subq->track_number_bcd = (index->track_number <= m_tracks.size() ? BinaryToBCD(index->track_number) : index->track_number); + subq->track_number_bcd = + (index->track_number <= m_tracks.size() ? BinaryToBCD(index->track_number) : index->track_number); subq->index_number_bcd = BinaryToBCD(index->index_number); const Position relative_position = diff --git a/src/common/cd_image.h b/src/common/cd_image.h index 5463b5f11..6ad15e8d8 100644 --- a/src/common/cd_image.h +++ b/src/common/cd_image.h @@ -179,6 +179,9 @@ public: u32 GetTrackCount() const { return static_cast(m_tracks.size()); } LBA GetTrackStartPosition(u8 track) const; Position GetTrackStartMSFPosition(u8 track) const; + LBA GetTrackLength(u8 track) const; + Position GetTrackMSFLength(u8 track) const; + TrackMode GetTrackMode(u8 track) const; u32 GetFirstTrackNumber() const { return m_tracks.front().track_number; } u32 GetLastTrackNumber() const { return m_tracks.back().track_number; }