From: Christian P. <cp...@us...> - 2005-02-01 00:14:43
|
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 |