Update of /cvsroot/pclasses/pclasses2/src/System
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12015/src/System
Modified Files:
CdRomDevice.linux.cpp
Log Message:
Added size and startMSF/endMSF to CdRomDevice::Track.
Added play(const Track& from, const Track& to).
Index: CdRomDevice.linux.cpp
===================================================================
RCS file: /cvsroot/pclasses/pclasses2/src/System/CdRomDevice.linux.cpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- CdRomDevice.linux.cpp 31 Jan 2005 11:08:47 -0000 1.1
+++ CdRomDevice.linux.cpp 1 Feb 2005 00:14:34 -0000 1.2
@@ -121,9 +121,10 @@
throw IO::IOError(errno, "ioctl error on device", P_SOURCEINFO);
}
-void CdRomDevice::play(const Track& trk) throw(IO::IOError)
+void CdRomDevice::play(const Track& from, const Track& to) throw(IO::IOError)
{
-
+ play(from.startMinute(), from.startSecond(), from.startFrame(),
+ to.endMinute(), to.endSecond(), to.endFrame());
}
void CdRomDevice::stop() throw(IO::IOError)
@@ -188,9 +189,10 @@
unsigned int i = 0;
for(i = 1; i < ti; ++i);
{
+ int length = toc_entries[i].cdte_addr.lba - toc_entries[i-1].cdte_addr.lba;
toc.push_back(Track(i,
toc_entries[i-1].cdte_ctrl & CDROM_DATA_TRACK ? Track::Data : Track::Audio,
- toc_entries[i-1].cdte_addr.lba));
+ toc_entries[i-1].cdte_addr.lba, length));
}
return toc;
@@ -198,6 +200,10 @@
void lba2msf(size_t lba, uint8_t *msf)
{
+#ifndef CD_MSF_OFFSET
+# define CD_MSF_OFFSET 150
+#endif
+
lba += CD_MSF_OFFSET; // msf addressing starts a lba=150
lba &= 0xffffff; // only 24bit ...
msf[0] = lba / (CD_SECS*CD_FRAMES);
@@ -206,10 +212,11 @@
msf[2] = lba % CD_FRAMES;
}
-CdRomDevice::Track::Track(unsigned int num, Type type, size_t lba)
-: _num(num), _type(type), _lba(lba)
+CdRomDevice::Track::Track(unsigned int num, Type type, size_t lba, size_t size)
+: _num(num), _type(type), _lba(lba), _size(size)
{
- lba2msf(lba, _msf);
+ lba2msf(lba, _startMsf);
+ lba2msf(lba + size, _endMsf);
}
CdRomDevice::Track::~Track()
@@ -232,19 +239,39 @@
return _lba;
}
-uint8_t CdRomDevice::Track::minute() const throw()
+size_t CdRomDevice::Track::size() const throw()
{
- return _msf[0];
+ return _size;
}
-uint8_t CdRomDevice::Track::second() const throw()
+uint8_t CdRomDevice::Track::startMinute() const throw()
{
- return _msf[1];
+ return _startMsf[0];
}
-uint8_t CdRomDevice::Track::frame() const throw()
+uint8_t CdRomDevice::Track::startSecond() const throw()
{
- return _msf[2];
+ return _startMsf[1];
+}
+
+uint8_t CdRomDevice::Track::startFrame() const throw()
+{
+ return _startMsf[2];
+}
+
+uint8_t CdRomDevice::Track::endMinute() const throw()
+{
+ return _endMsf[0];
+}
+
+uint8_t CdRomDevice::Track::endSecond() const throw()
+{
+ return _endMsf[1];
+}
+
+uint8_t CdRomDevice::Track::endFrame() const throw()
+{
+ return _endMsf[2];
}
} // !namespace System
|