changeset 67:0dbb7828d014 libavutil

move adler32 to libavutil
author mru
date Thu, 13 Jul 2006 21:29:01 +0000
parents c619660c74ab
children f3cf989e2a99
files Makefile adler32.c adler32.h
diffstat 3 files changed, 50 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile	Tue Jul 11 21:45:45 2006 +0000
+++ b/Makefile	Thu Jul 13 21:29:01 2006 +0000
@@ -12,9 +12,10 @@
       intfloat_readwrite.o \
       crc.o \
       md5.o \
+      adler32.o
 
 HEADERS = avutil.h common.h mathematics.h integer.h rational.h \
-          intfloat_readwrite.h md5.h
+          intfloat_readwrite.h md5.h adler32.h
 
 NAME=avutil
 ifeq ($(BUILD_SHARED),yes)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/adler32.c	Thu Jul 13 21:29:01 2006 +0000
@@ -0,0 +1,41 @@
+/* adler32.c -- compute the Adler-32 checksum of a data stream
+ * Copyright (C) 1995 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+#include "common.h"
+#include "adler32.h"
+
+#define BASE 65521L /* largest prime smaller than 65536 */
+#define NMAX 5552
+/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
+
+#define DO1(buf)  {s1 += *buf++; s2 += s1;}
+#define DO2(buf)  DO1(buf); DO1(buf);
+#define DO4(buf)  DO2(buf); DO2(buf);
+#define DO8(buf)  DO4(buf); DO4(buf);
+#define DO16(buf) DO8(buf); DO8(buf);
+
+unsigned long av_adler32_update(unsigned long adler, const uint8_t *buf, unsigned int len)
+{
+    unsigned long s1 = adler & 0xffff;
+    unsigned long s2 = (adler >> 16) & 0xffff;
+    int k;
+
+    if (buf == NULL) return 1L;
+
+    while (len > 0) {
+        k = len < NMAX ? len : NMAX;
+        len -= k;
+        while (k >= 16) {
+            DO16(buf);
+            k -= 16;
+        }
+        if (k != 0) do {
+            DO1(buf);
+        } while (--k);
+        s1 %= BASE;
+        s2 %= BASE;
+    }
+    return (s2 << 16) | s1;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/adler32.h	Thu Jul 13 21:29:01 2006 +0000
@@ -0,0 +1,7 @@
+#ifndef ADLER32_H
+#define ADLER32_H
+
+unsigned long av_adler32_update(unsigned long adler, const uint8_t *buf,
+                                unsigned int len);
+
+#endif