25 lines
388 B
Go
25 lines
388 B
Go
package oggvorbis
|
|
|
|
var crcTable [256]uint32
|
|
|
|
func init() {
|
|
for i := range crcTable {
|
|
r := uint32(i) << 24
|
|
for j := 0; j < 8; j++ {
|
|
if r&0x80000000 != 0 {
|
|
r = (r << 1) ^ 0x04c11db7
|
|
} else {
|
|
r <<= 1
|
|
}
|
|
}
|
|
crcTable[i] = r
|
|
}
|
|
}
|
|
|
|
func crcUpdate(crc uint32, data []byte) uint32 {
|
|
for _, b := range data {
|
|
crc = (crc << 8) ^ crcTable[byte(crc>>24)^b]
|
|
}
|
|
return crc
|
|
}
|