1 /* adler32.c -- compute the Adler-32 checksum of a data stream
2 * Copyright (C) 1995 Mark Adler
3 * For conditions of distribution and use, see copyright notice in zlib.h
9 #define BASE 65521L /* largest prime smaller than 65536 */
11 #define DO1(buf) {s1 += *buf++; s2 += s1;}
12 #define DO4(buf) DO1(buf); DO1(buf); DO1(buf); DO1(buf);
13 #define DO16(buf) DO4(buf); DO4(buf); DO4(buf); DO4(buf);
15 unsigned long av_adler32_update(unsigned long adler, const uint8_t *buf, unsigned int len)
17 unsigned long s1 = adler & 0xffff;
18 unsigned long s2 = adler >> 16;
22 while(len>4 && s2 < (1U<<31)){
25 while(len>16 && s2 < (1U<<31)){
33 return (s2 << 16) | s1;
39 volatile int checksum;
43 av_log_level = AV_LOG_DEBUG;
45 data[i]= ((i*i)>>3) + 123*i;
46 for(i=0; i<1000; i++){
48 checksum= av_adler32_update(1, data, LEN);
51 av_log(NULL, AV_LOG_DEBUG, "%X == 50E6E508\n", checksum);