Affects Version/s: libdiscid 0.3.0, libdiscid 0.3.1, libdiscid 0.3.2
Fix Version/s: libdiscid 0.5.0
I've been ripping a couple of CDs lately using sound juicer and wondered why it is so slow in reading the track list and why the CD drive is so busy.
The reason seems to be my upgrade to libdiscid 0.3 lately, since libdiscid now reads the ISRCs by default. Maybe it wasn't such a good idea to make ISRC reading an obligatory part of the discid_read method. The current behavior is a real drawback for applications just interested in the disc ID like most CD rippers and players are.
It would have been better to introduce a new method for complete TOC and subchannel reading so existing applications would not have been hit by this. But since this is now published we should probably introduce a new method which reads only the TOC and ID. This will require a change in the affected applications, but I'm sure once libdiscid 0.3 is more widely used there will be bug reports regarding the reading speed.
You can now use read_sparse() in new libdiscid version and a define (DISCID_HAVE_SPARSE_READ) to make sure the fix doesn't break things in earlier versions.