Index: source/libvpx/vp9/encoder/vp9_ssim.h |
diff --git a/source/libvpx/vp9/encoder/vp9_ssim.h b/source/libvpx/vp9/encoder/vp9_ssim.h |
index e75623b2545a57f7bebe48976783dd192bcc44ed..10f14c4d26821f21fcfbb4add18f3df3084503d2 100644 |
--- a/source/libvpx/vp9/encoder/vp9_ssim.h |
+++ b/source/libvpx/vp9/encoder/vp9_ssim.h |
@@ -17,12 +17,64 @@ extern "C" { |
#include "vpx_scale/yv12config.h" |
+// metrics used for calculating ssim, ssim2, dssim, and ssimc |
+typedef struct { |
+ // source sum ( over 8x8 region ) |
+ uint64_t sum_s; |
+ |
+ // reference sum (over 8x8 region ) |
+ uint64_t sum_r; |
+ |
+ // source sum squared ( over 8x8 region ) |
+ uint64_t sum_sq_s; |
+ |
+ // reference sum squared (over 8x8 region ) |
+ uint64_t sum_sq_r; |
+ |
+ // sum of source times reference (over 8x8 region) |
+ uint64_t sum_sxr; |
+ |
+ // calculated ssim score between source and reference |
+ double ssim; |
+} Ssimv; |
+ |
+// metrics collected on a frame basis |
+typedef struct { |
+ // ssim consistency error metric ( see code for explanation ) |
+ double ssimc; |
+ |
+ // standard ssim |
+ double ssim; |
+ |
+ // revised ssim ( see code for explanation) |
+ double ssim2; |
+ |
+ // ssim restated as an error metric like sse |
+ double dssim; |
+ |
+ // dssim converted to decibels |
+ double dssimd; |
+ |
+ // ssimc converted to decibels |
+ double ssimcd; |
+} Metrics; |
+ |
+double vp9_get_ssim_metrics(uint8_t *img1, int img1_pitch, uint8_t *img2, |
+ int img2_pitch, int width, int height, Ssimv *sv2, |
+ Metrics *m, int do_inconsistency); |
+ |
double vp9_calc_ssim(YV12_BUFFER_CONFIG *source, YV12_BUFFER_CONFIG *dest, |
double *weight); |
double vp9_calc_ssimg(YV12_BUFFER_CONFIG *source, YV12_BUFFER_CONFIG *dest, |
double *ssim_y, double *ssim_u, double *ssim_v); |
+double vp9_calc_fastssim(YV12_BUFFER_CONFIG *source, YV12_BUFFER_CONFIG *dest, |
+ double *ssim_y, double *ssim_u, double *ssim_v); |
+ |
+double vp9_psnrhvs(YV12_BUFFER_CONFIG *source, YV12_BUFFER_CONFIG *dest, |
+ double *ssim_y, double *ssim_u, double *ssim_v); |
+ |
#if CONFIG_VP9_HIGHBITDEPTH |
double vp9_highbd_calc_ssim(YV12_BUFFER_CONFIG *source, |
YV12_BUFFER_CONFIG *dest, |