blob: 23e8a01a6aedd9ee883c1ec9bf10a907e693fe84 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
/* */ package NET.worlds.scape;
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public class CDDBHash
/* */ {
/* */ public static String hashString(CDTrackInfo tracks)
/* */ {
/* 12 */ String id = Integer.toHexString(hash(tracks));
/* 13 */ int len = id.length();
/* 14 */ if (len < 8) {
/* 15 */ String pad = "0";
/* */ do {
/* 17 */ pad = pad + "0";len++;
/* 16 */ } while (len < 8);
/* */
/* 18 */ return pad + id;
/* */ }
/* 20 */ return id;
/* */ }
/* */
/* */ public static String lookupString(CDTrackInfo tracks)
/* */ {
/* 25 */ int numTracks = tracks.getNumTracks();
/* 26 */ String ret = hashString(tracks) + " " + numTracks;
/* 27 */ for (int i = 0; i < numTracks; i++)
/* 28 */ ret = ret + " " + tracks.getStartFrames(i);
/* 29 */ return ret + " " + leadOutSecs(tracks);
/* */ }
/* */
/* */ private static int addDigits(int n)
/* */ {
/* 34 */ String buf = n;
/* 35 */ int ret = 0;
/* 36 */ for (int i = 0; i < buf.length(); i++)
/* 37 */ ret += buf.charAt(i) - '0';
/* 38 */ return ret;
/* */ }
/* */
/* */ private static int leadOutSecs(CDTrackInfo tracks)
/* */ {
/* 43 */ int last = tracks.getNumTracks() - 1;
/* */
/* 45 */ int omin = tracks.getPosM(last);
/* 46 */ int osec = tracks.getPosS(last);
/* 47 */ int ofrm = tracks.getPosF(last);
/* */
/* 49 */ int lmin = tracks.getLenM(last);
/* 50 */ int lsec = tracks.getLenS(last);
/* 51 */ int lfrm = tracks.getLenF(last);
/* */
/* 53 */ lfrm++; if (lfrm == 75) {
/* 54 */ lfrm = 0;
/* 55 */ lsec++; if (lsec == 60) {
/* 56 */ lsec = 0;
/* 57 */ lmin++;
/* */ }
/* */ }
/* */
/* 61 */ ofrm += lfrm;
/* 62 */ osec += ofrm / 75 + lsec;
/* 63 */ omin += osec / 60 + lmin;
/* 64 */ osec %= 60;
/* 65 */ return omin * 60 + osec;
/* */ }
/* */
/* */ private static int hash(CDTrackInfo tracks)
/* */ {
/* 70 */ int n = 0;
/* 71 */ int numTracks = tracks.getNumTracks();
/* */
/* 73 */ for (int i = 0; i < numTracks; i++) {
/* 74 */ n += addDigits(tracks.getPosM(i) * 60 + tracks.getPosS(i));
/* */ }
/* 76 */ int t = leadOutSecs(tracks) -
/* 77 */ tracks.getPosM(0) * 60 - tracks.getPosS(0);
/* 78 */ return n % 255 << 24 | t << 8 | numTracks;
/* */ }
/* */ }
/* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\scape\CDDBHash.class
* Java compiler version: 6 (50.0)
* JD-Core Version: 0.7.1
*/
|