Go to the documentation of this file.
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);
46 unsigned long s1 = adler & 0xffff;
47 unsigned long s2 = adler >> 16;
50 #if HAVE_FAST_64BIT && HAVE_FAST_UNALIGNED && !CONFIG_SMALL
51 unsigned len2 =
FFMIN((
len-1) & ~7, 23*8);
63 a1 += v &0x00FF00FF00FF00FF;
64 b1 += (v>>8)&0x00FF00FF00FF00FF;
73 s1 += ((
a1+
b1)*0x1000100010001)>>48;
74 s2 += ((((
a2&0xFFFF0000FFFF)+(
b2&0xFFFF0000FFFF)+((
a2>>16)&0xFFFF0000FFFF)+((
b2>>16)&0xFFFF0000FFFF))*0x800000008)>>32)
76 + 2*((
b1*0x1000200030004)>>48)
77 + ((
a1*0x1000100010001)>>48)
78 + 2*((
a1*0x0000100020003)>>48);
80 + 2*((
a1*0x4000300020001)>>48)
81 + ((
b1*0x1000100010001)>>48)
82 + 2*((
b1*0x3000200010000)>>48);
86 while (
len > 4 && s2 < (1
U << 31)) {
95 return (s2 << 16) | s1;
static double b1(void *priv, double x, double y)
static double a2(void *priv, double x, double y)
AVAdler av_adler32_update(AVAdler adler, const uint8_t *buf, size_t len)
Calculate the Adler32 checksum of a buffer.
static double b2(void *priv, double x, double y)
static double a1(void *priv, double x, double y)