40 #define DO1(buf) { s1 += *buf++; s2 += s1; }
41 #define DO4(buf) DO1(buf); DO1(buf); DO1(buf); DO1(buf);
42 #define DO16(buf) DO4(buf); DO4(buf); DO4(buf); DO4(buf);
44 #if FF_API_CRYPTO_SIZE_T
51 unsigned long s1 = adler & 0xffff;
52 unsigned long s2 = adler >> 16;
55 #if HAVE_FAST_64BIT && HAVE_FAST_UNALIGNED && !CONFIG_SMALL
56 unsigned len2 =
FFMIN((
len-1) & ~7, 23*8);
68 a1 += v &0x00FF00FF00FF00FF;
69 b1 += (v>>8)&0x00FF00FF00FF00FF;
78 s1 += ((
a1+
b1)*0x1000100010001)>>48;
79 s2 += ((((
a2&0xFFFF0000FFFF)+(
b2&0xFFFF0000FFFF)+((
a2>>16)&0xFFFF0000FFFF)+((
b2>>16)&0xFFFF0000FFFF))*0x800000008)>>32)
81 + 2*((
b1*0x1000200030004)>>48)
82 + ((
a1*0x1000100010001)>>48)
83 + 2*((
a1*0x0000100020003)>>48);
85 + 2*((
a1*0x4000300020001)>>48)
86 + ((
b1*0x1000100010001)>>48)
87 + 2*((
b1*0x3000200010000)>>48);
91 while (
len > 4 &&
s2 < (1U << 31)) {
100 return (
s2 << 16) |
s1;
Public header for Adler-32 hash function implementation.
common internal and external API header
unsigned long av_adler32_update(unsigned long adler, const uint8_t *buf, unsigned int len)
Calculate the Adler32 checksum of a buffer.
static double b1(void *priv, double x, double y)
static double b2(void *priv, double x, double y)