libflo_audio/core/
crc32.rs1const CRC32_TABLE: [u32; 256] = {
3 let mut table = [0u32; 256];
4 let mut i = 0;
5 while i < 256 {
6 let mut crc = i as u32;
7 let mut j = 0;
8 while j < 8 {
9 if crc & 1 != 0 {
10 crc = (crc >> 1) ^ 0xEDB88320;
11 } else {
12 crc >>= 1;
13 }
14 j += 1;
15 }
16 table[i] = crc;
17 i += 1;
18 }
19 table
20};
21
22pub fn compute(data: &[u8]) -> u32 {
24 let mut crc = 0xFFFFFFFF_u32;
25 for &byte in data {
26 let index = ((crc ^ byte as u32) & 0xFF) as usize;
27 crc = (crc >> 8) ^ CRC32_TABLE[index];
28 }
29 !crc
30}