1 #include "cd-utils.h" 2 cd_length(const SDL_CD * cdrom)3extern int cd_length(const SDL_CD * cdrom) 4 { 5 int len = 0, i; 6 for (i = 0; i < cdrom->numtracks; i++) { 7 len += cdrom->track[i].length; 8 } 9 return len; 10 } 11 cddb_sum(unsigned int n)12static int cddb_sum(unsigned int n) 13 { 14 int result = 0; 15 while (n != 0) { 16 result += n % 10; 17 n /= 10; 18 } 19 return result; 20 } 21 cddb_discid(const SDL_CD * cdrom)22extern unsigned long cddb_discid(const SDL_CD * cdrom) 23 { 24 int i, t = 0, n = 0; 25 for (i = 0; i < cdrom->numtracks; i++) { 26 n += cddb_sum(cdrom->track[i].offset / CD_FPS); 27 } 28 if (cdrom->numtracks > 0) { 29 t = (cdrom->track[cdrom->numtracks].offset / CD_FPS) - 30 (cdrom->track[0].offset / CD_FPS); 31 } 32 return ((n % 0xff) << 24 | t << 8 | cdrom->numtracks); 33 } 34