CDImage: Add track info accessors

This commit is contained in:
Connor McLaughlin 2020-05-16 20:00:53 +10:00
parent 53db03d10e
commit 6ebd9236c5
2 changed files with 23 additions and 1 deletions

View file

@ -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 =

View file

@ -179,6 +179,9 @@ public:
u32 GetTrackCount() const { return static_cast<u32>(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; }