int CDDAParanoia::numOfFramesOfAudioTracks() { if (numOfTracks() > 0) { int frames = 0; for (int i = 1; i <= numOfTracks(); ++i) { if (isAudioTrack(i)) frames += numOfFramesOfTrack(i); } return frames; } return 0; }
int CDDAParanoia::numOfAudioTracks() { if (numOfTracks() > 0) { int j = 0; for (int i = 1; i <= numOfTracks(); i++) { if (isAudioTrack(i)) j++; } return j; } return 0; }
int CDDAParanoia::numOfSkippedFrames(int n) { if (numOfTracks() > 0) { if (n < 1) n = 1; if (n > numOfTracks()) n = numOfTracks(); int frames = 0; for (int i = 1; i < n; ++i) { if (!isAudioTrack(i)) frames += numOfFramesOfTrack(i); } return frames; } return 0; }
int CDDAParanoia::numOfFramesOfTrack(int n) { if (numOfTracks() > 0) { if (n < 1) n = 1; if (n > numOfTracks()) n = numOfTracks(); if (n == numOfTracks()) { return numOfFrames()-paranoia_drive->disc_toc[n-1].dwStartSector; } else { return paranoia_drive->disc_toc[n].dwStartSector-paranoia_drive->disc_toc[n-1].dwStartSector; } } return 0; }
QList<quint32> CDDAParanoia::discSignature(const qint32 pregap) { QList<quint32> result; for (int i = 1; i <= numOfTracks()+1; ++i) result.append(frameOffsetOfTrack(i)+pregap); return result; }
double CDDAParanoia::sizeOfTrack(int n) { if (numOfTracks() > 0) { double frame_size = (double)(numOfFramesOfTrack(n)); if (isAudioTrack(n)) { return (frame_size*2352.0f)/(1024.0f*1024.0f); } else { return (frame_size*2048.0f)/(1024.0f*1024.0f); } } return 0.0f; }
K3b::AudioDoc::~AudioDoc() { // delete all tracks int i = 1; int cnt = numOfTracks(); while( d->firstTrack ) { qDebug() << "(K3b::AudioDoc::AudioDoc) deleting track " << i << " of " << cnt; delete d->firstTrack->take(); qDebug() << "(K3b::AudioDoc::AudioDoc) deleted."; ++i; } delete d; }
int CDDAParanoia::frameOffsetOfTrack(int n) { if (numOfTracks() > 0) { return paranoia_drive->disc_toc[n-1].dwStartSector; } return 0; }
int CDDAParanoia::lengthOfTrack(int n) { if (numOfTracks() > 0) { return numOfFramesOfTrack(n) / 75; } return 0; }
int CDDAParanoia::numOfFrames() { if (numOfTracks() > 0) { if (paranoia_drive) return cdda_disc_lastsector(paranoia_drive); } return 0; }