LCOV - code coverage report
Current view: top level - C_DEFAULT - EbComputeVariance_C.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 44 0.0 %
Date: 2019-11-25 17:38:06 Functions: 0 24 0.0 %

          Line data    Source code
       1             : /*
       2             : * Copyright(c) 2019 Intel Corporation
       3             : * SPDX - License - Identifier: BSD - 2 - Clause - Patent
       4             : */
       5             : 
       6             : #include <stdint.h>
       7             : 
       8           0 : static void variance_c(const uint8_t *a, int a_stride, const uint8_t *b,
       9             :     int b_stride, int w, int h, uint32_t *sse, int *sum) {
      10             :     int i, j;
      11             : 
      12           0 :     *sum = 0;
      13           0 :     *sse = 0;
      14             : 
      15           0 :     for (i = 0; i < h; ++i) {
      16           0 :         for (j = 0; j < w; ++j) {
      17           0 :             const int diff = a[j] - b[j];
      18           0 :             *sum += diff;
      19           0 :             *sse += diff * diff;
      20             :         }
      21             : 
      22           0 :         a += a_stride;
      23           0 :         b += b_stride;
      24             :     }
      25           0 : }
      26             : 
      27             : // TODO: use or implement a simd version of this
      28           0 : uint32_t variance_highbd_c(const uint16_t *a,
      29             :                            int a_stride,
      30             :                            const uint16_t *b,
      31             :                            int b_stride,
      32             :                            int w,
      33             :                            int h,
      34             :                            uint32_t *sse) {
      35             :     int i, j;
      36             : 
      37           0 :     int sad = 0;
      38           0 :     *sse = 0;
      39             : 
      40           0 :     for (i = 0; i < h; ++i) {
      41           0 :         for (j = 0; j < w; ++j) {
      42           0 :             const int diff = a[j] - b[j];
      43           0 :             sad += diff;
      44           0 :             *sse += diff * diff;
      45             :         }
      46             : 
      47           0 :         a += a_stride;
      48           0 :         b += b_stride;
      49             :     }
      50             : 
      51           0 :     return *sse - (sad * sad)/(w*h);
      52             : }
      53             : 
      54             : #define VAR(W, H)                                                    \
      55             :   uint32_t eb_aom_variance##W##x##H##_c(const uint8_t *a, int a_stride, \
      56             :                                      const uint8_t *b, int b_stride, \
      57             :                                      uint32_t *sse) {                \
      58             :     int sum;                                                         \
      59             :     variance_c(a, a_stride, b, b_stride, W, H, sse, &sum);           \
      60             :     return *sse - (uint32_t)(((int64_t)sum * sum) / (W * H));        \
      61             :   }
      62             : 
      63           0 : VAR(4, 4)
      64           0 : VAR(4, 8)
      65           0 : VAR(4, 16)
      66           0 : VAR(8, 4)
      67           0 : VAR(8, 8)
      68           0 : VAR(8, 16)
      69           0 : VAR(8, 32)
      70           0 : VAR(16, 4)
      71           0 : VAR(16, 8)
      72           0 : VAR(16, 16)
      73           0 : VAR(16, 32)
      74           0 : VAR(16, 64)
      75           0 : VAR(32, 8)
      76           0 : VAR(32, 16)
      77           0 : VAR(32, 32)
      78           0 : VAR(32, 64)
      79           0 : VAR(64, 16)
      80           0 : VAR(64, 32)
      81           0 : VAR(64, 64)
      82           0 : VAR(64, 128)
      83           0 : VAR(128, 64)
      84           0 : VAR(128, 128)

Generated by: LCOV version 1.14