diff options
author | Sadaf Ebrahimi <sadafebrahimi@google.com> | 2023-08-25 16:27:50 +0000 |
---|---|---|
committer | Sadaf Ebrahimi <sadafebrahimi@google.com> | 2023-08-25 16:27:50 +0000 |
commit | 678702573531f19ae36847a6a07257aaae623fbe (patch) | |
tree | 5d9b28c2e73f9d5e76d9556181a6cf73ac4bd182 /util/psnr.h | |
parent | 8ef2efc6534659701bc7114e57133207547f60e7 (diff) | |
download | libyuv-678702573531f19ae36847a6a07257aaae623fbe.tar.gz |
Move libyuv/files/ directly under libyuv
Test: TreeHugger
Merged-In: I773d1ae01539cc5d200768b526f10b2922567f72
Change-Id: I4ba1f1e781d7fd3ad96639dfdc08f654e45ae3d3
Diffstat (limited to 'util/psnr.h')
-rw-r--r-- | util/psnr.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/util/psnr.h b/util/psnr.h new file mode 100644 index 00000000..aac128cb --- /dev/null +++ b/util/psnr.h @@ -0,0 +1,47 @@ +/* + * Copyright 2013 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. + */ + +// Get PSNR for video sequence. Assuming RAW 4:2:0 Y:Cb:Cr format + +#ifndef UTIL_PSNR_H_ // NOLINT +#define UTIL_PSNR_H_ + +#include <math.h> // For log10() + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(INT_TYPES_DEFINED) && !defined(UINT8_TYPE_DEFINED) +typedef unsigned char uint8_t; +#define UINT8_TYPE_DEFINED +#endif + +static const double kMaxPSNR = 128.0; + +// libyuv provides this function when linking library for jpeg support. +// TODO(fbarchard): make psnr lib compatible subset of libyuv. +#if !defined(HAVE_JPEG) +// Computer Sum of Squared Error (SSE). +// Pass this to ComputePSNR for final result. +double ComputeSumSquareError(const uint8_t* src_a, + const uint8_t* src_b, + int count); +#endif + +// PSNR formula: psnr = 10 * log10 (Peak Signal^2 * size / sse) +// Returns 128.0 (kMaxPSNR) if sse is 0 (perfect match). +double ComputePSNR(double sse, double size); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif // UTIL_PSNR_H_ // NOLINT |