mirror of
https://github.com/WinampDesktop/winamp.git
synced 2025-06-18 00:05:45 -04:00
CDROM: Implement GetTN command
This commit is contained in:
@ -24,7 +24,7 @@ std::unique_ptr<CDImage> CDImage::Open(const char* filename)
|
||||
|
||||
if (CASE_COMPARE(extension, ".cue") == 0)
|
||||
return OpenCueSheetImage(filename);
|
||||
else if (CASE_COMPARE(extension, ".bin") == 0)
|
||||
else if (CASE_COMPARE(extension, ".bin") == 0 || CASE_COMPARE(extension, ".img") == 0)
|
||||
return OpenBinImage(filename);
|
||||
|
||||
#undef CASE_COMPARE
|
||||
|
@ -90,7 +90,9 @@ public:
|
||||
LBA GetPositionInTrack() const { return m_position_in_track; }
|
||||
Position GetMSFPositionInTrack() const { return Position::FromLBA(m_position_in_track); }
|
||||
LBA GetLBACount() const { return m_lba_count; }
|
||||
u32 GetIndexNumber() const { return m_current_index->index_number; }
|
||||
u32 GetTrackNumber() const { return m_current_index->track_number; }
|
||||
u32 GetTrackCount() const { return static_cast<u32>(m_tracks.size()); }
|
||||
|
||||
// Seek to data LBA.
|
||||
bool Seek(LBA lba);
|
||||
@ -120,6 +122,7 @@ protected:
|
||||
u32 file_sector_size;
|
||||
LBA start_lba_on_disc;
|
||||
u32 track_number;
|
||||
u32 index_number;
|
||||
LBA start_lba_in_track;
|
||||
u32 length;
|
||||
bool is_pregap;
|
||||
|
@ -48,6 +48,7 @@ bool CDImageBin::Open(const char* filename)
|
||||
pregap_index.start_lba_in_track = static_cast<LBA>(-static_cast<s32>(pregap_frames));
|
||||
pregap_index.length = pregap_frames;
|
||||
pregap_index.track_number = 1;
|
||||
pregap_index.index_number = 0;
|
||||
pregap_index.is_pregap = true;
|
||||
m_indices.push_back(pregap_index);
|
||||
|
||||
@ -58,6 +59,7 @@ bool CDImageBin::Open(const char* filename)
|
||||
data_index.file_sector_size = track_sector_size;
|
||||
data_index.start_lba_on_disc = pregap_index.length;
|
||||
data_index.track_number = 1;
|
||||
data_index.index_number = 1;
|
||||
data_index.start_lba_in_track = 0;
|
||||
data_index.length = m_lba_count;
|
||||
m_indices.push_back(data_index);
|
||||
|
@ -118,6 +118,7 @@ bool CDImageCueSheet::OpenAndParse(const char* filename)
|
||||
pregap_index.start_lba_in_track = static_cast<LBA>(static_cast<unsigned long>(-pregap_frames));
|
||||
pregap_index.length = pregap_frames;
|
||||
pregap_index.track_number = track_num;
|
||||
pregap_index.index_number = 0;
|
||||
pregap_index.is_pregap = true;
|
||||
m_indices.push_back(pregap_index);
|
||||
|
||||
@ -132,6 +133,7 @@ bool CDImageCueSheet::OpenAndParse(const char* filename)
|
||||
Index last_index;
|
||||
last_index.start_lba_on_disc = disc_lba;
|
||||
last_index.track_number = track_num;
|
||||
last_index.index_number = 1;
|
||||
last_index.file = it->second;
|
||||
last_index.file_sector_size = track_sector_size;
|
||||
last_index.file_offset = 0;
|
||||
@ -156,6 +158,7 @@ bool CDImageCueSheet::OpenAndParse(const char* filename)
|
||||
}
|
||||
|
||||
last_index.file_offset = index_offset * last_index.file_sector_size;
|
||||
last_index.index_number = static_cast<u32>(index_num);
|
||||
last_index_offset = index_offset;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user