From 98b0bde840e5c0eabbc1f37a5b2f1886fe0685dd Mon Sep 17 00:00:00 2001 From: nehalmistry <> Date: Sat, 7 Dec 2002 19:53:32 +0000 Subject: [PATCH] more speedups for CDDA --- src/sound/cdda.cpp | 20 +++++++++++++------- src/sound/sound_server.cpp | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/sound/cdda.cpp b/src/sound/cdda.cpp index 69df026b3..02119f62c 100644 --- a/src/sound/cdda.cpp +++ b/src/sound/cdda.cpp @@ -51,17 +51,23 @@ local int CDRead(Sample *sample, void *buf, int len) ++count; - if (count == 8) { + data.addr.lba = CDtocentry[CDTrack].cdte_addr.lba + pos / 2352; + data.addr_format = CDROM_LBA; + data.nframes = 14; + + if (count == 4) { + data.buf = bufstart; + ioctl(CDDrive, CDROMREADAUDIO, &data); + } else if (count == 8) { count = 0; sample->User = bufstart; - data.addr.lba = CDtocentry[CDTrack].cdte_addr.lba + pos / 2352; - data.addr_format = CDROM_LBA; - data.nframes = len * 8 / 2352; - data.buf = sample->User; + data.buf = sample->User + 2352 * 14; ioctl(CDDrive, CDROMREADAUDIO, &data); - } else { + } + + if (count) sample->User += len; - } + pos += len; memcpy(buf, sample->User, len); diff --git a/src/sound/sound_server.cpp b/src/sound/sound_server.cpp index 7b59b0b83..ebc19e96f 100644 --- a/src/sound/sound_server.cpp +++ b/src/sound/sound_server.cpp @@ -1273,7 +1273,7 @@ global void QuitCD(void) CDMode = ":off"; } #elif defined(USE_CDDA) - + close(CDDrive); #endif }