And just to demonstrate the point about collisions in ARv2.

ARv2 takes the 32-bit sample value, multiplies it by the sample number, resulting in 64-bit number, and then adds the higher 32 bits to lower bits.

Now consider for example the 15th sample in a track, and it's possible values.

ARv2(15,0x11111111) = 0xFFFFFFFF

ARv2(15,0x22222222) = hi32(15 * 0x22222222) + lo32(15 * 0x22222222) = hi32(0x1FFFFFFFE) + lo32(0x1FFFFFFFE) = 0x1 + 0xFFFFFFFE = 0xFFFFFFFF

ARv2(15,0x33333333) = hi32(0x2FFFFFFFD) + lo32(0x2FFFFFFFD) = 0xFFFFFFFF

...

ARv2(15,0xFFFFFFFF) = hi32(0xEFFFFFFF1) + lo32(0xEFFFFFFF1) = 0xFFFFFFFF

ARv2(15,0x00000001) = hi32(0x00000000F) + lo32(0x00000000F) = 0x0000000F

ARv2(15,0x11111112) = hi32(0x10000000E) + lo32(0x10000000E) = 0x0000000F

...

ARv2(15,0xEEEEEEEF) = hi32(0xE00000001) + lo32(0xE00000001) = 0x0000000F

That is, at least 15 sample values in this location produce the same CRC. At least 14 sample values produce another CRC. I'm too lazy to explore further, but this might be equivalent to loosing 3-4 bits of of this sample.

UPD: Not so lazy:) It gets worse for sample 255...

ARv2(255,0x01010101) = hi32(0x0FFFFFFFF) + lo32(0x0FFFFFFFF) = 0xFFFFFFFF

ARv2(255,0x02020202) = hi32(0x1FFFFFFFE) + lo32(0x1FFFFFFFE) = 0xFFFFFFFF

...

ARv2(255,0x0F0F0F0F) = hi32(0xEFFFFFFF1) + lo32(0xEFFFFFFF1) = 0xFFFFFFFF

ARv2(255,0x10101010) = hi32(0xFFFFFFFF0) + lo32(0xFFFFFFFF0) = 0xFFFFFFFF

ARv2(255,0x11111111) = hi32(0x10FFFFFFEF) + lo32(0x10FFFFFFEF) = 0xFFFFFFFF

...

ARv2(255,0x1F1F1F1F) = hi32(0x1EFFFFFFE1) + lo32(0x1EFFFFFFE1) = 0xFFFFFFFF

...

ARv2(255,0xFFFFFFFF) = hi32(0xFEFFFFFF01) + lo32(0xFEFFFFFF01) = 0xFFFFFFFF

That's 255 samples having the same CRC... Basically, the same problem as with ARv1.