media/libvpx/vp9/encoder/vp9_variance.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /*
     2  *  Copyright (c) 2010 The WebM project authors. All Rights Reserved.
     3  *
     4  *  Use of this source code is governed by a BSD-style license
     5  *  that can be found in the LICENSE file in the root of the source
     6  *  tree. An additional intellectual property rights grant can be found
     7  *  in the file PATENTS.  All contributing project authors may
     8  *  be found in the AUTHORS file in the root of the source tree.
     9  */
    11 #ifndef VP9_ENCODER_VP9_VARIANCE_H_
    12 #define VP9_ENCODER_VP9_VARIANCE_H_
    14 #include "vpx/vpx_integer.h"
    15 // #include "./vpx_config.h"
    17 void variance(const uint8_t *src_ptr,
    18               int  source_stride,
    19               const uint8_t *ref_ptr,
    20               int  recon_stride,
    21               int  w,
    22               int  h,
    23               unsigned int *sse,
    24               int *sum);
    26 typedef unsigned int(*vp9_sad_fn_t)(const uint8_t *src_ptr,
    27                                     int source_stride,
    28                                     const uint8_t *ref_ptr,
    29                                     int ref_stride,
    30                                     unsigned int max_sad);
    32 typedef unsigned int(*vp9_sad_avg_fn_t)(const uint8_t *src_ptr,
    33                                         int source_stride,
    34                                         const uint8_t *ref_ptr,
    35                                         int ref_stride,
    36                                         const uint8_t *second_pred,
    37                                         unsigned int max_sad);
    39 typedef void (*vp9_sad_multi_fn_t)(const uint8_t *src_ptr,
    40                                    int source_stride,
    41                                    const uint8_t *ref_ptr,
    42                                    int  ref_stride,
    43                                    unsigned int *sad_array);
    45 typedef void (*vp9_sad_multi1_fn_t)(const uint8_t *src_ptr,
    46                                     int source_stride,
    47                                     const uint8_t *ref_ptr,
    48                                     int  ref_stride,
    49                                     unsigned int *sad_array);
    51 typedef void (*vp9_sad_multi_d_fn_t)(const uint8_t *src_ptr,
    52                                      int source_stride,
    53                                      const uint8_t* const ref_ptr[],
    54                                      int  ref_stride, unsigned int *sad_array);
    56 typedef unsigned int (*vp9_variance_fn_t)(const uint8_t *src_ptr,
    57                                           int source_stride,
    58                                           const uint8_t *ref_ptr,
    59                                           int ref_stride,
    60                                           unsigned int *sse);
    62 typedef unsigned int (*vp9_subpixvariance_fn_t)(const uint8_t *src_ptr,
    63                                                 int source_stride,
    64                                                 int xoffset,
    65                                                 int yoffset,
    66                                                 const uint8_t *ref_ptr,
    67                                                 int Refstride,
    68                                                 unsigned int *sse);
    70 typedef unsigned int (*vp9_subp_avg_variance_fn_t)(const uint8_t *src_ptr,
    71                                                    int source_stride,
    72                                                    int xoffset,
    73                                                    int yoffset,
    74                                                    const uint8_t *ref_ptr,
    75                                                    int Refstride,
    76                                                    unsigned int *sse,
    77                                                    const uint8_t *second_pred);
    79 typedef unsigned int (*vp9_getmbss_fn_t)(const short *);
    81 typedef unsigned int (*vp9_get16x16prederror_fn_t)(const uint8_t *src_ptr,
    82                                                    int source_stride,
    83                                                    const uint8_t *ref_ptr,
    84                                                    int  ref_stride);
    86 typedef struct vp9_variance_vtable {
    87   vp9_sad_fn_t               sdf;
    88   vp9_sad_avg_fn_t           sdaf;
    89   vp9_variance_fn_t          vf;
    90   vp9_subpixvariance_fn_t    svf;
    91   vp9_subp_avg_variance_fn_t svaf;
    92   vp9_variance_fn_t          svf_halfpix_h;
    93   vp9_variance_fn_t          svf_halfpix_v;
    94   vp9_variance_fn_t          svf_halfpix_hv;
    95   vp9_sad_multi_fn_t         sdx3f;
    96   vp9_sad_multi1_fn_t        sdx8f;
    97   vp9_sad_multi_d_fn_t       sdx4df;
    98 } vp9_variance_fn_ptr_t;
   100 static void comp_avg_pred(uint8_t *comp_pred, const uint8_t *pred, int width,
   101                           int height, const uint8_t *ref, int ref_stride) {
   102   int i, j;
   104   for (i = 0; i < height; i++) {
   105     for (j = 0; j < width; j++) {
   106       int tmp;
   107       tmp = pred[j] + ref[j];
   108       comp_pred[j] = (tmp + 1) >> 1;
   109     }
   110     comp_pred += width;
   111     pred += width;
   112     ref += ref_stride;
   113   }
   114 }
   115 #endif  // VP9_ENCODER_VP9_VARIANCE_H_

mercurial