Coverage Report

Created: 2026-06-10 06:56

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/brunsli/c/common/predict.cc
Line
Count
Source
1
// Copyright (c) Google LLC 2019
2
//
3
// Use of this source code is governed by an MIT-style
4
// license that can be found in the LICENSE file or at
5
// https://opensource.org/licenses/MIT.
6
7
#include "./predict.h"
8
9
#include <brunsli/jpeg_data.h>
10
11
namespace brunsli {
12
13
namespace {
14
15
63.2M
int AdaptiveMedian(int w, int n, int nw) {
16
63.2M
  const int mx = (w > n) ? w : n;
17
63.2M
  const int mn = w + n - mx;
18
63.2M
  if (nw > mx) {
19
1.15M
    return mn;
20
62.1M
  } else if (nw < mn) {
21
1.49M
    return mx;
22
60.6M
  } else {
23
60.6M
    return n + w - nw;
24
60.6M
  }
25
63.2M
}
26
27
}  // namespace
28
29
65.9M
int PredictWithAdaptiveMedian(const coeff_t* coeffs, int x, int y, int stride) {
30
65.9M
  const int offset1 = -kDCTBlockSize;
31
65.9M
  const int offset2 = -stride;
32
65.9M
  const int offset3 = offset2 + offset1;
33
65.9M
  if (y != 0) {
34
64.0M
    if (x != 0) {
35
63.2M
      return AdaptiveMedian(coeffs[offset1], coeffs[offset2], coeffs[offset3]);
36
63.2M
    } else {
37
792k
      return coeffs[offset2];
38
792k
    }
39
64.0M
  } else {
40
1.81M
    return x ? coeffs[offset1] : 0;
41
1.81M
  }
42
65.9M
}
43
44
}  // namespace brunsli