1/*
2 *  Copyright 2012 The LibYuv Project Authors. All rights reserved.
3 *
4 *  Use of this source code is governed by a BSD-style license
5 *  that can be found in the LICENSE file in the root of the source
6 *  tree. An additional intellectual property rights grant can be found
7 *  in the file PATENTS. All contributing project authors may
8 *  be found in the AUTHORS file in the root of the source tree.
9 */
10
11#include "libyuv/basic_types.h"
12
13#include "libyuv/compare_row.h"
14
15#ifdef __cplusplus
16namespace libyuv {
17extern "C" {
18#endif
19
20uint32 SumSquareError_C(const uint8* src_a, const uint8* src_b, int count) {
21  uint32 sse = 0u;
22  int i;
23  for (i = 0; i < count; ++i) {
24    int diff = src_a[i] - src_b[i];
25    sse += (uint32)(diff * diff);
26  }
27  return sse;
28}
29
30// hash seed of 5381 recommended.
31// Internal C version of HashDjb2 with int sized count for efficiency.
32uint32 HashDjb2_C(const uint8* src, int count, uint32 seed) {
33  uint32 hash = seed;
34  int i;
35  for (i = 0; i < count; ++i) {
36    hash += (hash << 5) + src[i];
37  }
38  return hash;
39}
40
41#ifdef __cplusplus
42}  // extern "C"
43}  // namespace libyuv
44#endif
45