summaryrefslogtreecommitdiff
path: root/NET/worlds/scape/CDDBHash.java
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
 */