ref: 3437fe484a20336a01c611a4090261f2a4a7fbde
dir: /third_party/libyuv/source/compare_common.cc/
/* * Copyright 2012 The LibYuv Project Authors. All rights reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source * tree. An additional intellectual property rights grant can be found * in the file PATENTS. All contributing project authors may * be found in the AUTHORS file in the root of the source tree. */ #include "libyuv/basic_types.h" #include "libyuv/compare_row.h" #ifdef __cplusplus namespace libyuv { extern "C" { #endif uint32 SumSquareError_C(const uint8* src_a, const uint8* src_b, int count) { uint32 sse = 0u; int i; for (i = 0; i < count; ++i) { int diff = src_a[i] - src_b[i]; sse += (uint32)(diff * diff); } return sse; } // hash seed of 5381 recommended. // Internal C version of HashDjb2 with int sized count for efficiency. uint32 HashDjb2_C(const uint8* src, int count, uint32 seed) { uint32 hash = seed; int i; for (i = 0; i < count; ++i) { hash += (hash << 5) + src[i]; } return hash; } #ifdef __cplusplus } // extern "C" } // namespace libyuv #endif