| 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,
|
|
|