xref: /aosp_15_r20/external/libvpx/vpx_dsp/psnr.h (revision fb1b10ab9aebc7c7068eedab379b749d7e3900be)
1*fb1b10abSAndroid Build Coastguard Worker /*
2*fb1b10abSAndroid Build Coastguard Worker  *  Copyright (c) 2016 The WebM project authors. All Rights Reserved.
3*fb1b10abSAndroid Build Coastguard Worker  *
4*fb1b10abSAndroid Build Coastguard Worker  *  Use of this source code is governed by a BSD-style license
5*fb1b10abSAndroid Build Coastguard Worker  *  that can be found in the LICENSE file in the root of the source
6*fb1b10abSAndroid Build Coastguard Worker  *  tree. An additional intellectual property rights grant can be found
7*fb1b10abSAndroid Build Coastguard Worker  *  in the file PATENTS.  All contributing project authors may
8*fb1b10abSAndroid Build Coastguard Worker  *  be found in the AUTHORS file in the root of the source tree.
9*fb1b10abSAndroid Build Coastguard Worker  */
10*fb1b10abSAndroid Build Coastguard Worker 
11*fb1b10abSAndroid Build Coastguard Worker #ifndef VPX_VPX_DSP_PSNR_H_
12*fb1b10abSAndroid Build Coastguard Worker #define VPX_VPX_DSP_PSNR_H_
13*fb1b10abSAndroid Build Coastguard Worker 
14*fb1b10abSAndroid Build Coastguard Worker #include "vpx_scale/yv12config.h"
15*fb1b10abSAndroid Build Coastguard Worker #include "vpx/vpx_encoder.h"
16*fb1b10abSAndroid Build Coastguard Worker 
17*fb1b10abSAndroid Build Coastguard Worker #define MAX_PSNR 100.0
18*fb1b10abSAndroid Build Coastguard Worker 
19*fb1b10abSAndroid Build Coastguard Worker #ifdef __cplusplus
20*fb1b10abSAndroid Build Coastguard Worker extern "C" {
21*fb1b10abSAndroid Build Coastguard Worker #endif
22*fb1b10abSAndroid Build Coastguard Worker 
23*fb1b10abSAndroid Build Coastguard Worker typedef struct vpx_psnr_pkt PSNR_STATS;
24*fb1b10abSAndroid Build Coastguard Worker 
25*fb1b10abSAndroid Build Coastguard Worker // TODO(dkovalev) change vpx_sse_to_psnr signature: double -> int64_t
26*fb1b10abSAndroid Build Coastguard Worker 
27*fb1b10abSAndroid Build Coastguard Worker /*!\brief Converts SSE to PSNR
28*fb1b10abSAndroid Build Coastguard Worker  *
29*fb1b10abSAndroid Build Coastguard Worker  * Converts sum of squared errros (SSE) to peak signal-to-noise ratio (PSNR).
30*fb1b10abSAndroid Build Coastguard Worker  *
31*fb1b10abSAndroid Build Coastguard Worker  * \param[in]    samples       Number of samples
32*fb1b10abSAndroid Build Coastguard Worker  * \param[in]    peak          Max sample value
33*fb1b10abSAndroid Build Coastguard Worker  * \param[in]    sse           Sum of squared errors
34*fb1b10abSAndroid Build Coastguard Worker  */
35*fb1b10abSAndroid Build Coastguard Worker double vpx_sse_to_psnr(double samples, double peak, double sse);
36*fb1b10abSAndroid Build Coastguard Worker int64_t vpx_get_y_sse(const YV12_BUFFER_CONFIG *a, const YV12_BUFFER_CONFIG *b);
37*fb1b10abSAndroid Build Coastguard Worker #if CONFIG_VP9_HIGHBITDEPTH
38*fb1b10abSAndroid Build Coastguard Worker int64_t vpx_highbd_get_y_sse(const YV12_BUFFER_CONFIG *a,
39*fb1b10abSAndroid Build Coastguard Worker                              const YV12_BUFFER_CONFIG *b);
40*fb1b10abSAndroid Build Coastguard Worker void vpx_calc_highbd_psnr(const YV12_BUFFER_CONFIG *a,
41*fb1b10abSAndroid Build Coastguard Worker                           const YV12_BUFFER_CONFIG *b, PSNR_STATS *psnr,
42*fb1b10abSAndroid Build Coastguard Worker                           unsigned int bit_depth, unsigned int in_bit_depth);
43*fb1b10abSAndroid Build Coastguard Worker #endif
44*fb1b10abSAndroid Build Coastguard Worker void vpx_calc_psnr(const YV12_BUFFER_CONFIG *a, const YV12_BUFFER_CONFIG *b,
45*fb1b10abSAndroid Build Coastguard Worker                    PSNR_STATS *psnr);
46*fb1b10abSAndroid Build Coastguard Worker 
47*fb1b10abSAndroid Build Coastguard Worker double vpx_psnrhvs(const YV12_BUFFER_CONFIG *source,
48*fb1b10abSAndroid Build Coastguard Worker                    const YV12_BUFFER_CONFIG *dest, double *phvs_y,
49*fb1b10abSAndroid Build Coastguard Worker                    double *phvs_u, double *phvs_v, uint32_t bd, uint32_t in_bd);
50*fb1b10abSAndroid Build Coastguard Worker 
51*fb1b10abSAndroid Build Coastguard Worker #ifdef __cplusplus
52*fb1b10abSAndroid Build Coastguard Worker }  // extern "C"
53*fb1b10abSAndroid Build Coastguard Worker #endif
54*fb1b10abSAndroid Build Coastguard Worker #endif  // VPX_VPX_DSP_PSNR_H_
55