141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org/*
241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org *  Copyright 2011 The LibYuv Project Authors. All rights reserved.
341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org *
441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org *  Use of this source code is governed by a BSD-style license
541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org *  that can be found in the LICENSE file in the root of the source
641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org *  tree. An additional intellectual property rights grant can be found
741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org *  in the file PATENTS. All contributing project authors may
841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org *  be found in the AUTHORS file in the root of the source tree.
941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org */
1041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
1141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#ifndef INCLUDE_LIBYUV_COMPARE_H_  // NOLINT
1241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#define INCLUDE_LIBYUV_COMPARE_H_
1341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
1441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#include "libyuv/basic_types.h"
1541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
1641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#ifdef __cplusplus
1741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgnamespace libyuv {
1841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgextern "C" {
1941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#endif
2041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
2141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Compute a hash for specified memory. Seed of 5381 recommended.
2241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
2341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orguint32 HashDjb2(const uint8* src, uint64 count, uint32 seed);
2441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
2541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// Sum Square Error - used to compute Mean Square Error or PSNR.
2641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
2741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orguint64 ComputeSumSquareError(const uint8* src_a,
2841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                             const uint8* src_b, int count);
2941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
3041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
3141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orguint64 ComputeSumSquareErrorPlane(const uint8* src_a, int stride_a,
3241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                                  const uint8* src_b, int stride_b,
3341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                                  int width, int height);
3441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
3541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgstatic const int kMaxPsnr = 128;
3641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
3741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
3841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgdouble SumSquareErrorToPsnr(uint64 sse, uint64 count);
3941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
4041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
4141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgdouble CalcFramePsnr(const uint8* src_a, int stride_a,
4241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                     const uint8* src_b, int stride_b,
4341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                     int width, int height);
4441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
4541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
4641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgdouble I420Psnr(const uint8* src_y_a, int stride_y_a,
4741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                const uint8* src_u_a, int stride_u_a,
4841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                const uint8* src_v_a, int stride_v_a,
4941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                const uint8* src_y_b, int stride_y_b,
5041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                const uint8* src_u_b, int stride_u_b,
5141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                const uint8* src_v_b, int stride_v_b,
5241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                int width, int height);
5341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
5441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
5541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgdouble CalcFrameSsim(const uint8* src_a, int stride_a,
5641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                     const uint8* src_b, int stride_b,
5741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                     int width, int height);
5841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
5941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgLIBYUV_API
6041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.orgdouble I420Ssim(const uint8* src_y_a, int stride_y_a,
6141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                const uint8* src_u_a, int stride_u_a,
6241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                const uint8* src_v_a, int stride_v_a,
6341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                const uint8* src_y_b, int stride_y_b,
6441294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                const uint8* src_u_b, int stride_u_b,
6541294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                const uint8* src_v_b, int stride_v_b,
6641294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org                int width, int height);
6741294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
6841294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#ifdef __cplusplus
6941294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org}  // extern "C"
7041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org}  // namespace libyuv
7141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#endif
7241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org
7341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org#endif  // INCLUDE_LIBYUV_COMPARE_H_  NOLINT
74