author Randell Jesup <>
Thu, 30 Jan 2014 19:55:04 -0500
changeset 166823 f9315e1a38447e5f62ed9ff64470397252fcbc1f
parent 166128 media/webrtc/trunk/third_party/libyuv/util/psnr.h@be17fb052374387c6a27d797180e2517f112cf9a
child 304758 92c15211f59b03279452759986e8b896a2a1a42f
permissions -rw-r--r--
Bug 813645 - Move libyuv to media/libyuv r=glandium

 *  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_

#ifdef __cplusplus
extern "C" {

#if !defined(INT_TYPES_DEFINED) && !defined(UINT8_TYPE_DEFINED)
typedef unsigned char uint8;

static const double kMaxPSNR = 128.0;

// 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);

// Computer Sum of Squared Error (SSE).
// Pass this to ComputePSNR for final result.
double ComputeSumSquareError(const uint8* org, const uint8* rec, int size);

#ifdef __cplusplus
}  // extern "C"

#endif  // UTIL_PSNR_H_  // NOLINT