33 lines
694 B
Haxe
33 lines
694 B
Haxe
package kha.audio2.ogg.tools;
|
|
import haxe.ds.Vector;
|
|
|
|
/**
|
|
* ...
|
|
* @author shohei909
|
|
*/
|
|
class Crc32
|
|
{
|
|
static inline var POLY:UInt = 0x04c11db7;
|
|
static var table:Vector<UInt>;
|
|
|
|
public static function init() {
|
|
if (table != null) {
|
|
return;
|
|
}
|
|
|
|
table = new Vector(256);
|
|
for (i in 0...256) {
|
|
var s:UInt = ((i:UInt) << (24:UInt));
|
|
for (j in 0...8) {
|
|
s = (s << 1) ^ (s >= ((1:UInt) << 31) ? POLY : 0);
|
|
}
|
|
table[i] = s;
|
|
}
|
|
}
|
|
|
|
public static inline function update(crc:UInt, byte:UInt):UInt
|
|
{
|
|
return (crc << 8) ^ table[byte ^ (crc >>> 24)];
|
|
}
|
|
}
|