Libav
libavutil
adler32.c
Go to the documentation of this file.
1
/*
2
* Compute the Adler-32 checksum of a data stream.
3
* This is a modified version based on adler32.c from the zlib library.
4
*
5
* Copyright (C) 1995 Mark Adler
6
*
7
* This software is provided 'as-is', without any express or implied
8
* warranty. In no event will the authors be held liable for any damages
9
* arising from the use of this software.
10
*
11
* Permission is granted to anyone to use this software for any purpose,
12
* including commercial applications, and to alter it and redistribute it
13
* freely, subject to the following restrictions:
14
*
15
* 1. The origin of this software must not be misrepresented; you must not
16
* claim that you wrote the original software. If you use this software
17
* in a product, an acknowledgment in the product documentation would be
18
* appreciated but is not required.
19
* 2. Altered source versions must be plainly marked as such, and must not be
20
* misrepresented as being the original software.
21
* 3. This notice may not be removed or altered from any source distribution.
22
*/
23
33
#include "
config.h
"
34
#include "
adler32.h
"
35
36
#define BASE 65521L
/* largest prime smaller than 65536 */
37
38
#define DO1(buf) { s1 += *buf++; s2 += s1; }
39
#define DO4(buf) DO1(buf); DO1(buf); DO1(buf); DO1(buf);
40
#define DO16(buf) DO4(buf); DO4(buf); DO4(buf); DO4(buf);
41
42
unsigned
long
av_adler32_update
(
unsigned
long
adler,
const
uint8_t
* buf,
43
unsigned
int
len
)
44
{
45
unsigned
long
s1 = adler & 0xffff;
46
unsigned
long
s2 = adler >> 16;
47
48
while
(len > 0) {
49
#if CONFIG_SMALL
50
while
(len > 4 && s2 < (1
U
<< 31)) {
51
DO4
(buf);
52
len -= 4;
53
}
54
#else
55
while
(len > 16 && s2 < (1
U
<< 31)) {
56
DO16
(buf);
57
len -= 16;
58
}
59
#endif
60
DO1
(buf); len--;
61
s1 %=
BASE
;
62
s2 %=
BASE
;
63
}
64
return
(s2 << 16) | s1;
65
}
U
Definition:
vf_drawbox.c:37
DO16
#define DO16(buf)
Definition:
adler32.c:40
BASE
#define BASE
Definition:
adler32.c:36
config.h
uint8_t
uint8_t
Definition:
audio_convert.c:194
DO4
#define DO4(buf)
Definition:
adler32.c:39
av_adler32_update
unsigned long av_adler32_update(unsigned long adler, const uint8_t *buf, unsigned int len)
Calculate the Adler32 checksum of a buffer.
Definition:
adler32.c:42
adler32.h
Public header for libavutil Adler32 hasher.
DO1
#define DO1(buf)
Definition:
adler32.c:38
len
int len
Definition:
vorbis_enc_data.h:452
Generated on Fri Dec 1 2017 07:12:14 for Libav by
1.8.13