Coverage Report

Created: 2026-01-18 06:45

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libavif/ext/aom/aom_dsp/intrapred.c
Line
Count
Source
1
/*
2
 * Copyright (c) 2016, Alliance for Open Media. All rights reserved.
3
 *
4
 * This source code is subject to the terms of the BSD 2 Clause License and
5
 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
6
 * was not distributed with this source code in the LICENSE file, you can
7
 * obtain it at www.aomedia.org/license/software. If the Alliance for Open
8
 * Media Patent License 1.0 was not distributed with this source code in the
9
 * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
10
 */
11
12
#include <assert.h>
13
#include <math.h>
14
15
#include "config/aom_config.h"
16
#include "config/aom_dsp_rtcd.h"
17
18
#include "aom_dsp/aom_dsp_common.h"
19
#include "aom_dsp/intrapred_common.h"
20
#include "aom_mem/aom_mem.h"
21
#include "aom_ports/bitops.h"
22
23
static inline void v_predictor(uint8_t *dst, ptrdiff_t stride, int bw, int bh,
24
0
                               const uint8_t *above, const uint8_t *left) {
25
0
  int r;
26
0
  (void)left;
27
28
0
  for (r = 0; r < bh; r++) {
29
0
    memcpy(dst, above, bw);
30
0
    dst += stride;
31
0
  }
32
0
}
33
34
static inline void h_predictor(uint8_t *dst, ptrdiff_t stride, int bw, int bh,
35
0
                               const uint8_t *above, const uint8_t *left) {
36
0
  int r;
37
0
  (void)above;
38
39
0
  for (r = 0; r < bh; r++) {
40
0
    memset(dst, left[r], bw);
41
0
    dst += stride;
42
0
  }
43
0
}
44
45
1.01G
static inline int abs_diff(int a, int b) { return (a > b) ? a - b : b - a; }
46
47
static inline uint16_t paeth_predictor_single(uint16_t left, uint16_t top,
48
337M
                                              uint16_t top_left) {
49
337M
  const int base = top + left - top_left;
50
337M
  const int p_left = abs_diff(base, left);
51
337M
  const int p_top = abs_diff(base, top);
52
337M
  const int p_top_left = abs_diff(base, top_left);
53
54
  // Return nearest to base of left, top and top_left.
55
337M
  return (p_left <= p_top && p_left <= p_top_left) ? left
56
337M
         : (p_top <= p_top_left)                   ? top
57
137M
                                                   : top_left;
58
337M
}
59
60
static inline void paeth_predictor(uint8_t *dst, ptrdiff_t stride, int bw,
61
                                   int bh, const uint8_t *above,
62
0
                                   const uint8_t *left) {
63
0
  int r, c;
64
0
  const uint8_t ytop_left = above[-1];
65
66
0
  for (r = 0; r < bh; r++) {
67
0
    for (c = 0; c < bw; c++)
68
0
      dst[c] = (uint8_t)paeth_predictor_single(left[r], above[c], ytop_left);
69
0
    dst += stride;
70
0
  }
71
0
}
72
73
// Some basic checks on weights for smooth predictor.
74
#define sm_weights_sanity_checks(weights_w, weights_h, weights_scale, \
75
                                 pred_scale)                          \
76
8.66M
  assert(weights_w[0] < weights_scale);                               \
77
8.66M
  assert(weights_h[0] < weights_scale);                               \
78
8.66M
  assert(weights_scale - weights_w[bw - 1] < weights_scale);          \
79
8.66M
  assert(weights_scale - weights_h[bh - 1] < weights_scale);          \
80
8.66M
  assert(pred_scale < 31)  // ensures no overflow when calculating predictor.
81
82
556M
#define divide_round(value, bits) (((value) + (1 << ((bits) - 1))) >> (bits))
83
84
static inline void smooth_predictor(uint8_t *dst, ptrdiff_t stride, int bw,
85
                                    int bh, const uint8_t *above,
86
0
                                    const uint8_t *left) {
87
0
  const uint8_t below_pred = left[bh - 1];   // estimated by bottom-left pixel
88
0
  const uint8_t right_pred = above[bw - 1];  // estimated by top-right pixel
89
0
  const uint8_t *const sm_weights_w = smooth_weights + bw - 4;
90
0
  const uint8_t *const sm_weights_h = smooth_weights + bh - 4;
91
  // scale = 2 * 2^SMOOTH_WEIGHT_LOG2_SCALE
92
0
  const int log2_scale = 1 + SMOOTH_WEIGHT_LOG2_SCALE;
93
0
  const uint16_t scale = (1 << SMOOTH_WEIGHT_LOG2_SCALE);
94
0
  sm_weights_sanity_checks(sm_weights_w, sm_weights_h, scale,
95
0
                           log2_scale + sizeof(*dst));
96
0
  int r;
97
0
  for (r = 0; r < bh; ++r) {
98
0
    int c;
99
0
    for (c = 0; c < bw; ++c) {
100
0
      const uint8_t pixels[] = { above[c], below_pred, left[r], right_pred };
101
0
      const uint8_t weights[] = { sm_weights_h[r], scale - sm_weights_h[r],
102
0
                                  sm_weights_w[c], scale - sm_weights_w[c] };
103
0
      uint32_t this_pred = 0;
104
0
      int i;
105
0
      assert(scale >= sm_weights_h[r] && scale >= sm_weights_w[c]);
106
0
      for (i = 0; i < 4; ++i) {
107
0
        this_pred += weights[i] * pixels[i];
108
0
      }
109
0
      dst[c] = divide_round(this_pred, log2_scale);
110
0
    }
111
0
    dst += stride;
112
0
  }
113
0
}
114
115
static inline void smooth_v_predictor(uint8_t *dst, ptrdiff_t stride, int bw,
116
                                      int bh, const uint8_t *above,
117
0
                                      const uint8_t *left) {
118
0
  const uint8_t below_pred = left[bh - 1];  // estimated by bottom-left pixel
119
0
  const uint8_t *const sm_weights = smooth_weights + bh - 4;
120
  // scale = 2^SMOOTH_WEIGHT_LOG2_SCALE
121
0
  const int log2_scale = SMOOTH_WEIGHT_LOG2_SCALE;
122
0
  const uint16_t scale = (1 << SMOOTH_WEIGHT_LOG2_SCALE);
123
0
  sm_weights_sanity_checks(sm_weights, sm_weights, scale,
124
0
                           log2_scale + sizeof(*dst));
125
126
0
  int r;
127
0
  for (r = 0; r < bh; r++) {
128
0
    int c;
129
0
    for (c = 0; c < bw; ++c) {
130
0
      const uint8_t pixels[] = { above[c], below_pred };
131
0
      const uint8_t weights[] = { sm_weights[r], scale - sm_weights[r] };
132
0
      uint32_t this_pred = 0;
133
0
      assert(scale >= sm_weights[r]);
134
0
      int i;
135
0
      for (i = 0; i < 2; ++i) {
136
0
        this_pred += weights[i] * pixels[i];
137
0
      }
138
0
      dst[c] = divide_round(this_pred, log2_scale);
139
0
    }
140
0
    dst += stride;
141
0
  }
142
0
}
143
144
static inline void smooth_h_predictor(uint8_t *dst, ptrdiff_t stride, int bw,
145
                                      int bh, const uint8_t *above,
146
0
                                      const uint8_t *left) {
147
0
  const uint8_t right_pred = above[bw - 1];  // estimated by top-right pixel
148
0
  const uint8_t *const sm_weights = smooth_weights + bw - 4;
149
  // scale = 2^SMOOTH_WEIGHT_LOG2_SCALE
150
0
  const int log2_scale = SMOOTH_WEIGHT_LOG2_SCALE;
151
0
  const uint16_t scale = (1 << SMOOTH_WEIGHT_LOG2_SCALE);
152
0
  sm_weights_sanity_checks(sm_weights, sm_weights, scale,
153
0
                           log2_scale + sizeof(*dst));
154
155
0
  int r;
156
0
  for (r = 0; r < bh; r++) {
157
0
    int c;
158
0
    for (c = 0; c < bw; ++c) {
159
0
      const uint8_t pixels[] = { left[r], right_pred };
160
0
      const uint8_t weights[] = { sm_weights[c], scale - sm_weights[c] };
161
0
      uint32_t this_pred = 0;
162
0
      assert(scale >= sm_weights[c]);
163
0
      int i;
164
0
      for (i = 0; i < 2; ++i) {
165
0
        this_pred += weights[i] * pixels[i];
166
0
      }
167
0
      dst[c] = divide_round(this_pred, log2_scale);
168
0
    }
169
0
    dst += stride;
170
0
  }
171
0
}
172
173
static inline void dc_128_predictor(uint8_t *dst, ptrdiff_t stride, int bw,
174
                                    int bh, const uint8_t *above,
175
0
                                    const uint8_t *left) {
176
0
  int r;
177
0
  (void)above;
178
0
  (void)left;
179
180
0
  for (r = 0; r < bh; r++) {
181
0
    memset(dst, 128, bw);
182
0
    dst += stride;
183
0
  }
184
0
}
185
186
static inline void dc_left_predictor(uint8_t *dst, ptrdiff_t stride, int bw,
187
                                     int bh, const uint8_t *above,
188
0
                                     const uint8_t *left) {
189
0
  int i, r, expected_dc, sum = 0;
190
0
  (void)above;
191
192
0
  for (i = 0; i < bh; i++) sum += left[i];
193
0
  expected_dc = (sum + (bh >> 1)) / bh;
194
195
0
  for (r = 0; r < bh; r++) {
196
0
    memset(dst, expected_dc, bw);
197
0
    dst += stride;
198
0
  }
199
0
}
200
201
static inline void dc_top_predictor(uint8_t *dst, ptrdiff_t stride, int bw,
202
                                    int bh, const uint8_t *above,
203
0
                                    const uint8_t *left) {
204
0
  int i, r, expected_dc, sum = 0;
205
0
  (void)left;
206
207
0
  for (i = 0; i < bw; i++) sum += above[i];
208
0
  expected_dc = (sum + (bw >> 1)) / bw;
209
210
0
  for (r = 0; r < bh; r++) {
211
0
    memset(dst, expected_dc, bw);
212
0
    dst += stride;
213
0
  }
214
0
}
215
216
static inline void dc_predictor(uint8_t *dst, ptrdiff_t stride, int bw, int bh,
217
0
                                const uint8_t *above, const uint8_t *left) {
218
0
  int i, r, expected_dc, sum = 0;
219
0
  const int count = bw + bh;
220
221
0
  for (i = 0; i < bw; i++) {
222
0
    sum += above[i];
223
0
  }
224
0
  for (i = 0; i < bh; i++) {
225
0
    sum += left[i];
226
0
  }
227
228
0
  expected_dc = (sum + (count >> 1)) / count;
229
230
0
  for (r = 0; r < bh; r++) {
231
0
    memset(dst, expected_dc, bw);
232
0
    dst += stride;
233
0
  }
234
0
}
235
236
static inline int divide_using_multiply_shift(int num, int shift1,
237
122k
                                              int multiplier, int shift2) {
238
122k
  const int interm = num >> shift1;
239
122k
  return interm * multiplier >> shift2;
240
122k
}
241
242
// The constants (multiplier and shifts) for a given block size are obtained
243
// as follows:
244
// - Let sum_w_h =  block width + block height.
245
// - Shift 'sum_w_h' right until we reach an odd number. Let the number of
246
// shifts for that block size be called 'shift1' (see the parameter in
247
// dc_predictor_rect() function), and let the odd number be 'd'. [d has only 2
248
// possible values: d = 3 for a 1:2 rect block and d = 5 for a 1:4 rect
249
// block].
250
// - Find multipliers for (i) dividing by 3, and (ii) dividing by 5,
251
// using the "Algorithm 1" in:
252
// http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1467632
253
// by ensuring that m + n = 16 (in that algorithm). This ensures that our 2nd
254
// shift will be 16, regardless of the block size.
255
256
// Note: For low bitdepth, assembly code may be optimized by using smaller
257
// constants for smaller block sizes, where the range of the 'sum' is
258
// restricted to fewer bits.
259
260
0
#define DC_MULTIPLIER_1X2 0x5556
261
0
#define DC_MULTIPLIER_1X4 0x3334
262
263
0
#define DC_SHIFT2 16
264
265
static inline void dc_predictor_rect(uint8_t *dst, ptrdiff_t stride, int bw,
266
                                     int bh, const uint8_t *above,
267
                                     const uint8_t *left, int shift1,
268
0
                                     int multiplier) {
269
0
  int sum = 0;
270
271
0
  for (int i = 0; i < bw; i++) {
272
0
    sum += above[i];
273
0
  }
274
0
  for (int i = 0; i < bh; i++) {
275
0
    sum += left[i];
276
0
  }
277
278
0
  const int expected_dc = divide_using_multiply_shift(
279
0
      sum + ((bw + bh) >> 1), shift1, multiplier, DC_SHIFT2);
280
0
  assert(expected_dc < (1 << 8));
281
282
0
  for (int r = 0; r < bh; r++) {
283
0
    memset(dst, expected_dc, bw);
284
0
    dst += stride;
285
0
  }
286
0
}
287
288
#undef DC_SHIFT2
289
290
void aom_dc_predictor_4x8_c(uint8_t *dst, ptrdiff_t stride,
291
0
                            const uint8_t *above, const uint8_t *left) {
292
0
  dc_predictor_rect(dst, stride, 4, 8, above, left, 2, DC_MULTIPLIER_1X2);
293
0
}
294
295
void aom_dc_predictor_8x4_c(uint8_t *dst, ptrdiff_t stride,
296
0
                            const uint8_t *above, const uint8_t *left) {
297
0
  dc_predictor_rect(dst, stride, 8, 4, above, left, 2, DC_MULTIPLIER_1X2);
298
0
}
299
300
#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
301
void aom_dc_predictor_4x16_c(uint8_t *dst, ptrdiff_t stride,
302
0
                             const uint8_t *above, const uint8_t *left) {
303
0
  dc_predictor_rect(dst, stride, 4, 16, above, left, 2, DC_MULTIPLIER_1X4);
304
0
}
305
306
void aom_dc_predictor_16x4_c(uint8_t *dst, ptrdiff_t stride,
307
0
                             const uint8_t *above, const uint8_t *left) {
308
0
  dc_predictor_rect(dst, stride, 16, 4, above, left, 2, DC_MULTIPLIER_1X4);
309
0
}
310
#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
311
312
void aom_dc_predictor_8x16_c(uint8_t *dst, ptrdiff_t stride,
313
0
                             const uint8_t *above, const uint8_t *left) {
314
0
  dc_predictor_rect(dst, stride, 8, 16, above, left, 3, DC_MULTIPLIER_1X2);
315
0
}
316
317
void aom_dc_predictor_16x8_c(uint8_t *dst, ptrdiff_t stride,
318
0
                             const uint8_t *above, const uint8_t *left) {
319
0
  dc_predictor_rect(dst, stride, 16, 8, above, left, 3, DC_MULTIPLIER_1X2);
320
0
}
321
322
#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
323
void aom_dc_predictor_8x32_c(uint8_t *dst, ptrdiff_t stride,
324
0
                             const uint8_t *above, const uint8_t *left) {
325
0
  dc_predictor_rect(dst, stride, 8, 32, above, left, 3, DC_MULTIPLIER_1X4);
326
0
}
327
328
void aom_dc_predictor_32x8_c(uint8_t *dst, ptrdiff_t stride,
329
0
                             const uint8_t *above, const uint8_t *left) {
330
0
  dc_predictor_rect(dst, stride, 32, 8, above, left, 3, DC_MULTIPLIER_1X4);
331
0
}
332
#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
333
334
void aom_dc_predictor_16x32_c(uint8_t *dst, ptrdiff_t stride,
335
0
                              const uint8_t *above, const uint8_t *left) {
336
0
  dc_predictor_rect(dst, stride, 16, 32, above, left, 4, DC_MULTIPLIER_1X2);
337
0
}
338
339
void aom_dc_predictor_32x16_c(uint8_t *dst, ptrdiff_t stride,
340
0
                              const uint8_t *above, const uint8_t *left) {
341
0
  dc_predictor_rect(dst, stride, 32, 16, above, left, 4, DC_MULTIPLIER_1X2);
342
0
}
343
344
#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
345
void aom_dc_predictor_16x64_c(uint8_t *dst, ptrdiff_t stride,
346
0
                              const uint8_t *above, const uint8_t *left) {
347
0
  dc_predictor_rect(dst, stride, 16, 64, above, left, 4, DC_MULTIPLIER_1X4);
348
0
}
349
350
void aom_dc_predictor_64x16_c(uint8_t *dst, ptrdiff_t stride,
351
0
                              const uint8_t *above, const uint8_t *left) {
352
0
  dc_predictor_rect(dst, stride, 64, 16, above, left, 4, DC_MULTIPLIER_1X4);
353
0
}
354
#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
355
356
void aom_dc_predictor_32x64_c(uint8_t *dst, ptrdiff_t stride,
357
0
                              const uint8_t *above, const uint8_t *left) {
358
0
  dc_predictor_rect(dst, stride, 32, 64, above, left, 5, DC_MULTIPLIER_1X2);
359
0
}
360
361
void aom_dc_predictor_64x32_c(uint8_t *dst, ptrdiff_t stride,
362
0
                              const uint8_t *above, const uint8_t *left) {
363
0
  dc_predictor_rect(dst, stride, 64, 32, above, left, 5, DC_MULTIPLIER_1X2);
364
0
}
365
366
#undef DC_MULTIPLIER_1X2
367
#undef DC_MULTIPLIER_1X4
368
369
#if CONFIG_AV1_HIGHBITDEPTH
370
371
static inline void highbd_v_predictor(uint16_t *dst, ptrdiff_t stride, int bw,
372
                                      int bh, const uint16_t *above,
373
8.92k
                                      const uint16_t *left, int bd) {
374
8.92k
  int r;
375
8.92k
  (void)left;
376
8.92k
  (void)bd;
377
152k
  for (r = 0; r < bh; r++) {
378
143k
    memcpy(dst, above, bw * sizeof(uint16_t));
379
143k
    dst += stride;
380
143k
  }
381
8.92k
}
382
383
static inline void highbd_h_predictor(uint16_t *dst, ptrdiff_t stride, int bw,
384
                                      int bh, const uint16_t *above,
385
16.2k
                                      const uint16_t *left, int bd) {
386
16.2k
  int r;
387
16.2k
  (void)above;
388
16.2k
  (void)bd;
389
249k
  for (r = 0; r < bh; r++) {
390
233k
    aom_memset16(dst, left[r], bw);
391
233k
    dst += stride;
392
233k
  }
393
16.2k
}
394
395
static inline void highbd_paeth_predictor(uint16_t *dst, ptrdiff_t stride,
396
                                          int bw, int bh, const uint16_t *above,
397
5.32M
                                          const uint16_t *left, int bd) {
398
5.32M
  int r, c;
399
5.32M
  const uint16_t ytop_left = above[-1];
400
5.32M
  (void)bd;
401
402
41.3M
  for (r = 0; r < bh; r++) {
403
373M
    for (c = 0; c < bw; c++)
404
337M
      dst[c] = paeth_predictor_single(left[r], above[c], ytop_left);
405
35.9M
    dst += stride;
406
35.9M
  }
407
5.32M
}
408
409
static inline void highbd_smooth_predictor(uint16_t *dst, ptrdiff_t stride,
410
                                           int bw, int bh,
411
                                           const uint16_t *above,
412
7.20M
                                           const uint16_t *left, int bd) {
413
7.20M
  (void)bd;
414
7.20M
  const uint16_t below_pred = left[bh - 1];   // estimated by bottom-left pixel
415
7.20M
  const uint16_t right_pred = above[bw - 1];  // estimated by top-right pixel
416
7.20M
  const uint8_t *const sm_weights_w = smooth_weights + bw - 4;
417
7.20M
  const uint8_t *const sm_weights_h = smooth_weights + bh - 4;
418
  // scale = 2 * 2^SMOOTH_WEIGHT_LOG2_SCALE
419
7.20M
  const int log2_scale = 1 + SMOOTH_WEIGHT_LOG2_SCALE;
420
7.20M
  const uint16_t scale = (1 << SMOOTH_WEIGHT_LOG2_SCALE);
421
7.20M
  sm_weights_sanity_checks(sm_weights_w, sm_weights_h, scale,
422
7.20M
                           log2_scale + sizeof(*dst));
423
7.20M
  int r;
424
54.4M
  for (r = 0; r < bh; ++r) {
425
47.2M
    int c;
426
484M
    for (c = 0; c < bw; ++c) {
427
437M
      const uint16_t pixels[] = { above[c], below_pred, left[r], right_pred };
428
437M
      const uint8_t weights[] = { sm_weights_h[r], scale - sm_weights_h[r],
429
437M
                                  sm_weights_w[c], scale - sm_weights_w[c] };
430
437M
      uint32_t this_pred = 0;
431
437M
      int i;
432
437M
      assert(scale >= sm_weights_h[r] && scale >= sm_weights_w[c]);
433
2.18G
      for (i = 0; i < 4; ++i) {
434
1.75G
        this_pred += weights[i] * pixels[i];
435
1.75G
      }
436
437M
      dst[c] = divide_round(this_pred, log2_scale);
437
437M
    }
438
47.2M
    dst += stride;
439
47.2M
  }
440
7.20M
}
441
442
static inline void highbd_smooth_v_predictor(uint16_t *dst, ptrdiff_t stride,
443
                                             int bw, int bh,
444
                                             const uint16_t *above,
445
714k
                                             const uint16_t *left, int bd) {
446
714k
  (void)bd;
447
714k
  const uint16_t below_pred = left[bh - 1];  // estimated by bottom-left pixel
448
714k
  const uint8_t *const sm_weights = smooth_weights + bh - 4;
449
  // scale = 2^SMOOTH_WEIGHT_LOG2_SCALE
450
714k
  const int log2_scale = SMOOTH_WEIGHT_LOG2_SCALE;
451
714k
  const uint16_t scale = (1 << SMOOTH_WEIGHT_LOG2_SCALE);
452
714k
  sm_weights_sanity_checks(sm_weights, sm_weights, scale,
453
714k
                           log2_scale + sizeof(*dst));
454
455
714k
  int r;
456
6.31M
  for (r = 0; r < bh; r++) {
457
5.60M
    int c;
458
62.6M
    for (c = 0; c < bw; ++c) {
459
57.0M
      const uint16_t pixels[] = { above[c], below_pred };
460
57.0M
      const uint8_t weights[] = { sm_weights[r], scale - sm_weights[r] };
461
57.0M
      uint32_t this_pred = 0;
462
57.0M
      assert(scale >= sm_weights[r]);
463
57.0M
      int i;
464
171M
      for (i = 0; i < 2; ++i) {
465
114M
        this_pred += weights[i] * pixels[i];
466
114M
      }
467
57.0M
      dst[c] = divide_round(this_pred, log2_scale);
468
57.0M
    }
469
5.60M
    dst += stride;
470
5.60M
  }
471
714k
}
472
473
static inline void highbd_smooth_h_predictor(uint16_t *dst, ptrdiff_t stride,
474
                                             int bw, int bh,
475
                                             const uint16_t *above,
476
749k
                                             const uint16_t *left, int bd) {
477
749k
  (void)bd;
478
749k
  const uint16_t right_pred = above[bw - 1];  // estimated by top-right pixel
479
749k
  const uint8_t *const sm_weights = smooth_weights + bw - 4;
480
  // scale = 2^SMOOTH_WEIGHT_LOG2_SCALE
481
749k
  const int log2_scale = SMOOTH_WEIGHT_LOG2_SCALE;
482
749k
  const uint16_t scale = (1 << SMOOTH_WEIGHT_LOG2_SCALE);
483
749k
  sm_weights_sanity_checks(sm_weights, sm_weights, scale,
484
749k
                           log2_scale + sizeof(*dst));
485
486
749k
  int r;
487
6.62M
  for (r = 0; r < bh; r++) {
488
5.87M
    int c;
489
67.6M
    for (c = 0; c < bw; ++c) {
490
61.7M
      const uint16_t pixels[] = { left[r], right_pred };
491
61.7M
      const uint8_t weights[] = { sm_weights[c], scale - sm_weights[c] };
492
61.7M
      uint32_t this_pred = 0;
493
61.7M
      assert(scale >= sm_weights[c]);
494
61.7M
      int i;
495
185M
      for (i = 0; i < 2; ++i) {
496
123M
        this_pred += weights[i] * pixels[i];
497
123M
      }
498
61.7M
      dst[c] = divide_round(this_pred, log2_scale);
499
61.7M
    }
500
5.87M
    dst += stride;
501
5.87M
  }
502
749k
}
503
504
static inline void highbd_dc_128_predictor(uint16_t *dst, ptrdiff_t stride,
505
                                           int bw, int bh,
506
                                           const uint16_t *above,
507
13.5k
                                           const uint16_t *left, int bd) {
508
13.5k
  int r;
509
13.5k
  (void)above;
510
13.5k
  (void)left;
511
512
754k
  for (r = 0; r < bh; r++) {
513
740k
    aom_memset16(dst, 128 << (bd - 8), bw);
514
740k
    dst += stride;
515
740k
  }
516
13.5k
}
517
518
static inline void highbd_dc_left_predictor(uint16_t *dst, ptrdiff_t stride,
519
                                            int bw, int bh,
520
                                            const uint16_t *above,
521
12.0k
                                            const uint16_t *left, int bd) {
522
12.0k
  int i, r, expected_dc, sum = 0;
523
12.0k
  (void)above;
524
12.0k
  (void)bd;
525
526
565k
  for (i = 0; i < bh; i++) sum += left[i];
527
12.0k
  expected_dc = (sum + (bh >> 1)) / bh;
528
529
565k
  for (r = 0; r < bh; r++) {
530
553k
    aom_memset16(dst, expected_dc, bw);
531
553k
    dst += stride;
532
553k
  }
533
12.0k
}
534
535
static inline void highbd_dc_top_predictor(uint16_t *dst, ptrdiff_t stride,
536
                                           int bw, int bh,
537
                                           const uint16_t *above,
538
14.8k
                                           const uint16_t *left, int bd) {
539
14.8k
  int i, r, expected_dc, sum = 0;
540
14.8k
  (void)left;
541
14.8k
  (void)bd;
542
543
733k
  for (i = 0; i < bw; i++) sum += above[i];
544
14.8k
  expected_dc = (sum + (bw >> 1)) / bw;
545
546
618k
  for (r = 0; r < bh; r++) {
547
603k
    aom_memset16(dst, expected_dc, bw);
548
603k
    dst += stride;
549
603k
  }
550
14.8k
}
551
552
static inline void highbd_dc_predictor(uint16_t *dst, ptrdiff_t stride, int bw,
553
                                       int bh, const uint16_t *above,
554
5.97k
                                       const uint16_t *left, int bd) {
555
5.97k
  int i, r, expected_dc, sum = 0;
556
5.97k
  const int count = bw + bh;
557
5.97k
  (void)bd;
558
559
388k
  for (i = 0; i < bw; i++) {
560
382k
    sum += above[i];
561
382k
  }
562
388k
  for (i = 0; i < bh; i++) {
563
382k
    sum += left[i];
564
382k
  }
565
566
5.97k
  expected_dc = (sum + (count >> 1)) / count;
567
568
388k
  for (r = 0; r < bh; r++) {
569
382k
    aom_memset16(dst, expected_dc, bw);
570
382k
    dst += stride;
571
382k
  }
572
5.97k
}
573
574
// Obtained similarly as DC_MULTIPLIER_1X2 and DC_MULTIPLIER_1X4 above, but
575
// assume 2nd shift of 17 bits instead of 16.
576
// Note: Strictly speaking, 2nd shift needs to be 17 only when:
577
// - bit depth == 12, and
578
// - bw + bh is divisible by 5 (as opposed to divisible by 3).
579
// All other cases can use half the multipliers with a shift of 16 instead.
580
// This special optimization can be used when writing assembly code.
581
6.04k
#define HIGHBD_DC_MULTIPLIER_1X2 0xAAAB
582
// Note: This constant is odd, but a smaller even constant (0x199a) with the
583
// appropriate shift should work for neon in 8/10-bit.
584
116k
#define HIGHBD_DC_MULTIPLIER_1X4 0x6667
585
586
122k
#define HIGHBD_DC_SHIFT2 17
587
588
static inline void highbd_dc_predictor_rect(uint16_t *dst, ptrdiff_t stride,
589
                                            int bw, int bh,
590
                                            const uint16_t *above,
591
                                            const uint16_t *left, int bd,
592
122k
                                            int shift1, uint32_t multiplier) {
593
122k
  int sum = 0;
594
122k
  (void)bd;
595
596
2.10M
  for (int i = 0; i < bw; i++) {
597
1.98M
    sum += above[i];
598
1.98M
  }
599
1.84M
  for (int i = 0; i < bh; i++) {
600
1.72M
    sum += left[i];
601
1.72M
  }
602
603
122k
  const int expected_dc = divide_using_multiply_shift(
604
122k
      sum + ((bw + bh) >> 1), shift1, multiplier, HIGHBD_DC_SHIFT2);
605
122k
  assert(expected_dc < (1 << bd));
606
607
1.84M
  for (int r = 0; r < bh; r++) {
608
1.72M
    aom_memset16(dst, expected_dc, bw);
609
1.72M
    dst += stride;
610
1.72M
  }
611
122k
}
612
613
#undef HIGHBD_DC_SHIFT2
614
615
void aom_highbd_dc_predictor_4x8_c(uint16_t *dst, ptrdiff_t stride,
616
                                   const uint16_t *above, const uint16_t *left,
617
0
                                   int bd) {
618
0
  highbd_dc_predictor_rect(dst, stride, 4, 8, above, left, bd, 2,
619
0
                           HIGHBD_DC_MULTIPLIER_1X2);
620
0
}
621
622
void aom_highbd_dc_predictor_8x4_c(uint16_t *dst, ptrdiff_t stride,
623
                                   const uint16_t *above, const uint16_t *left,
624
0
                                   int bd) {
625
0
  highbd_dc_predictor_rect(dst, stride, 8, 4, above, left, bd, 2,
626
0
                           HIGHBD_DC_MULTIPLIER_1X2);
627
0
}
628
629
#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
630
void aom_highbd_dc_predictor_4x16_c(uint16_t *dst, ptrdiff_t stride,
631
                                    const uint16_t *above, const uint16_t *left,
632
29.2k
                                    int bd) {
633
29.2k
  highbd_dc_predictor_rect(dst, stride, 4, 16, above, left, bd, 2,
634
29.2k
                           HIGHBD_DC_MULTIPLIER_1X4);
635
29.2k
}
636
637
void aom_highbd_dc_predictor_16x4_c(uint16_t *dst, ptrdiff_t stride,
638
                                    const uint16_t *above, const uint16_t *left,
639
51.8k
                                    int bd) {
640
51.8k
  highbd_dc_predictor_rect(dst, stride, 16, 4, above, left, bd, 2,
641
51.8k
                           HIGHBD_DC_MULTIPLIER_1X4);
642
51.8k
}
643
#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
644
645
void aom_highbd_dc_predictor_8x16_c(uint16_t *dst, ptrdiff_t stride,
646
                                    const uint16_t *above, const uint16_t *left,
647
0
                                    int bd) {
648
0
  highbd_dc_predictor_rect(dst, stride, 8, 16, above, left, bd, 3,
649
0
                           HIGHBD_DC_MULTIPLIER_1X2);
650
0
}
651
652
void aom_highbd_dc_predictor_16x8_c(uint16_t *dst, ptrdiff_t stride,
653
                                    const uint16_t *above, const uint16_t *left,
654
0
                                    int bd) {
655
0
  highbd_dc_predictor_rect(dst, stride, 16, 8, above, left, bd, 3,
656
0
                           HIGHBD_DC_MULTIPLIER_1X2);
657
0
}
658
659
#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
660
void aom_highbd_dc_predictor_8x32_c(uint16_t *dst, ptrdiff_t stride,
661
                                    const uint16_t *above, const uint16_t *left,
662
16.8k
                                    int bd) {
663
16.8k
  highbd_dc_predictor_rect(dst, stride, 8, 32, above, left, bd, 3,
664
16.8k
                           HIGHBD_DC_MULTIPLIER_1X4);
665
16.8k
}
666
667
void aom_highbd_dc_predictor_32x8_c(uint16_t *dst, ptrdiff_t stride,
668
                                    const uint16_t *above, const uint16_t *left,
669
16.4k
                                    int bd) {
670
16.4k
  highbd_dc_predictor_rect(dst, stride, 32, 8, above, left, bd, 3,
671
16.4k
                           HIGHBD_DC_MULTIPLIER_1X4);
672
16.4k
}
673
#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
674
675
void aom_highbd_dc_predictor_16x32_c(uint16_t *dst, ptrdiff_t stride,
676
                                     const uint16_t *above,
677
0
                                     const uint16_t *left, int bd) {
678
0
  highbd_dc_predictor_rect(dst, stride, 16, 32, above, left, bd, 4,
679
0
                           HIGHBD_DC_MULTIPLIER_1X2);
680
0
}
681
682
void aom_highbd_dc_predictor_32x16_c(uint16_t *dst, ptrdiff_t stride,
683
                                     const uint16_t *above,
684
0
                                     const uint16_t *left, int bd) {
685
0
  highbd_dc_predictor_rect(dst, stride, 32, 16, above, left, bd, 4,
686
0
                           HIGHBD_DC_MULTIPLIER_1X2);
687
0
}
688
689
#if !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
690
void aom_highbd_dc_predictor_16x64_c(uint16_t *dst, ptrdiff_t stride,
691
                                     const uint16_t *above,
692
1.20k
                                     const uint16_t *left, int bd) {
693
1.20k
  highbd_dc_predictor_rect(dst, stride, 16, 64, above, left, bd, 4,
694
1.20k
                           HIGHBD_DC_MULTIPLIER_1X4);
695
1.20k
}
696
697
void aom_highbd_dc_predictor_64x16_c(uint16_t *dst, ptrdiff_t stride,
698
                                     const uint16_t *above,
699
922
                                     const uint16_t *left, int bd) {
700
922
  highbd_dc_predictor_rect(dst, stride, 64, 16, above, left, bd, 4,
701
922
                           HIGHBD_DC_MULTIPLIER_1X4);
702
922
}
703
#endif  // !CONFIG_REALTIME_ONLY || CONFIG_AV1_DECODER
704
705
void aom_highbd_dc_predictor_32x64_c(uint16_t *dst, ptrdiff_t stride,
706
                                     const uint16_t *above,
707
2.74k
                                     const uint16_t *left, int bd) {
708
2.74k
  highbd_dc_predictor_rect(dst, stride, 32, 64, above, left, bd, 5,
709
2.74k
                           HIGHBD_DC_MULTIPLIER_1X2);
710
2.74k
}
711
712
void aom_highbd_dc_predictor_64x32_c(uint16_t *dst, ptrdiff_t stride,
713
                                     const uint16_t *above,
714
3.30k
                                     const uint16_t *left, int bd) {
715
3.30k
  highbd_dc_predictor_rect(dst, stride, 64, 32, above, left, bd, 5,
716
3.30k
                           HIGHBD_DC_MULTIPLIER_1X2);
717
3.30k
}
718
719
#undef HIGHBD_DC_MULTIPLIER_1X2
720
#undef HIGHBD_DC_MULTIPLIER_1X4
721
#endif  // CONFIG_AV1_HIGHBITDEPTH
722
723
// This serves as a wrapper function, so that all the prediction functions
724
// can be unified and accessed as a pointer array. Note that the boundary
725
// above and left are not necessarily used all the time.
726
#define intra_pred_sized(type, width, height)                  \
727
  void aom_##type##_predictor_##width##x##height##_c(          \
728
      uint8_t *dst, ptrdiff_t stride, const uint8_t *above,    \
729
0
      const uint8_t *left) {                                   \
730
0
    type##_predictor(dst, stride, width, height, above, left); \
731
0
  }
Unexecuted instantiation: aom_v_predictor_4x4_c
Unexecuted instantiation: aom_v_predictor_8x8_c
Unexecuted instantiation: aom_v_predictor_16x16_c
Unexecuted instantiation: aom_v_predictor_32x32_c
Unexecuted instantiation: aom_v_predictor_64x64_c
Unexecuted instantiation: aom_v_predictor_4x8_c
Unexecuted instantiation: aom_v_predictor_8x4_c
Unexecuted instantiation: aom_v_predictor_8x16_c
Unexecuted instantiation: aom_v_predictor_16x8_c
Unexecuted instantiation: aom_v_predictor_16x32_c
Unexecuted instantiation: aom_v_predictor_32x16_c
Unexecuted instantiation: aom_v_predictor_32x64_c
Unexecuted instantiation: aom_v_predictor_64x32_c
Unexecuted instantiation: aom_v_predictor_4x16_c
Unexecuted instantiation: aom_v_predictor_16x4_c
Unexecuted instantiation: aom_v_predictor_8x32_c
Unexecuted instantiation: aom_v_predictor_32x8_c
Unexecuted instantiation: aom_v_predictor_16x64_c
Unexecuted instantiation: aom_v_predictor_64x16_c
Unexecuted instantiation: aom_h_predictor_4x4_c
Unexecuted instantiation: aom_h_predictor_8x8_c
Unexecuted instantiation: aom_h_predictor_16x16_c
Unexecuted instantiation: aom_h_predictor_32x32_c
Unexecuted instantiation: aom_h_predictor_64x64_c
Unexecuted instantiation: aom_h_predictor_4x8_c
Unexecuted instantiation: aom_h_predictor_8x4_c
Unexecuted instantiation: aom_h_predictor_8x16_c
Unexecuted instantiation: aom_h_predictor_16x8_c
Unexecuted instantiation: aom_h_predictor_16x32_c
Unexecuted instantiation: aom_h_predictor_32x16_c
Unexecuted instantiation: aom_h_predictor_32x64_c
Unexecuted instantiation: aom_h_predictor_64x32_c
Unexecuted instantiation: aom_h_predictor_4x16_c
Unexecuted instantiation: aom_h_predictor_16x4_c
Unexecuted instantiation: aom_h_predictor_8x32_c
Unexecuted instantiation: aom_h_predictor_32x8_c
Unexecuted instantiation: aom_h_predictor_16x64_c
Unexecuted instantiation: aom_h_predictor_64x16_c
Unexecuted instantiation: aom_smooth_predictor_4x4_c
Unexecuted instantiation: aom_smooth_predictor_8x8_c
Unexecuted instantiation: aom_smooth_predictor_16x16_c
Unexecuted instantiation: aom_smooth_predictor_32x32_c
Unexecuted instantiation: aom_smooth_predictor_64x64_c
Unexecuted instantiation: aom_smooth_predictor_4x8_c
Unexecuted instantiation: aom_smooth_predictor_8x4_c
Unexecuted instantiation: aom_smooth_predictor_8x16_c
Unexecuted instantiation: aom_smooth_predictor_16x8_c
Unexecuted instantiation: aom_smooth_predictor_16x32_c
Unexecuted instantiation: aom_smooth_predictor_32x16_c
Unexecuted instantiation: aom_smooth_predictor_32x64_c
Unexecuted instantiation: aom_smooth_predictor_64x32_c
Unexecuted instantiation: aom_smooth_predictor_4x16_c
Unexecuted instantiation: aom_smooth_predictor_16x4_c
Unexecuted instantiation: aom_smooth_predictor_8x32_c
Unexecuted instantiation: aom_smooth_predictor_32x8_c
Unexecuted instantiation: aom_smooth_predictor_16x64_c
Unexecuted instantiation: aom_smooth_predictor_64x16_c
Unexecuted instantiation: aom_smooth_v_predictor_4x4_c
Unexecuted instantiation: aom_smooth_v_predictor_8x8_c
Unexecuted instantiation: aom_smooth_v_predictor_16x16_c
Unexecuted instantiation: aom_smooth_v_predictor_32x32_c
Unexecuted instantiation: aom_smooth_v_predictor_64x64_c
Unexecuted instantiation: aom_smooth_v_predictor_4x8_c
Unexecuted instantiation: aom_smooth_v_predictor_8x4_c
Unexecuted instantiation: aom_smooth_v_predictor_8x16_c
Unexecuted instantiation: aom_smooth_v_predictor_16x8_c
Unexecuted instantiation: aom_smooth_v_predictor_16x32_c
Unexecuted instantiation: aom_smooth_v_predictor_32x16_c
Unexecuted instantiation: aom_smooth_v_predictor_32x64_c
Unexecuted instantiation: aom_smooth_v_predictor_64x32_c
Unexecuted instantiation: aom_smooth_v_predictor_4x16_c
Unexecuted instantiation: aom_smooth_v_predictor_16x4_c
Unexecuted instantiation: aom_smooth_v_predictor_8x32_c
Unexecuted instantiation: aom_smooth_v_predictor_32x8_c
Unexecuted instantiation: aom_smooth_v_predictor_16x64_c
Unexecuted instantiation: aom_smooth_v_predictor_64x16_c
Unexecuted instantiation: aom_smooth_h_predictor_4x4_c
Unexecuted instantiation: aom_smooth_h_predictor_8x8_c
Unexecuted instantiation: aom_smooth_h_predictor_16x16_c
Unexecuted instantiation: aom_smooth_h_predictor_32x32_c
Unexecuted instantiation: aom_smooth_h_predictor_64x64_c
Unexecuted instantiation: aom_smooth_h_predictor_4x8_c
Unexecuted instantiation: aom_smooth_h_predictor_8x4_c
Unexecuted instantiation: aom_smooth_h_predictor_8x16_c
Unexecuted instantiation: aom_smooth_h_predictor_16x8_c
Unexecuted instantiation: aom_smooth_h_predictor_16x32_c
Unexecuted instantiation: aom_smooth_h_predictor_32x16_c
Unexecuted instantiation: aom_smooth_h_predictor_32x64_c
Unexecuted instantiation: aom_smooth_h_predictor_64x32_c
Unexecuted instantiation: aom_smooth_h_predictor_4x16_c
Unexecuted instantiation: aom_smooth_h_predictor_16x4_c
Unexecuted instantiation: aom_smooth_h_predictor_8x32_c
Unexecuted instantiation: aom_smooth_h_predictor_32x8_c
Unexecuted instantiation: aom_smooth_h_predictor_16x64_c
Unexecuted instantiation: aom_smooth_h_predictor_64x16_c
Unexecuted instantiation: aom_paeth_predictor_4x4_c
Unexecuted instantiation: aom_paeth_predictor_8x8_c
Unexecuted instantiation: aom_paeth_predictor_16x16_c
Unexecuted instantiation: aom_paeth_predictor_32x32_c
Unexecuted instantiation: aom_paeth_predictor_64x64_c
Unexecuted instantiation: aom_paeth_predictor_4x8_c
Unexecuted instantiation: aom_paeth_predictor_8x4_c
Unexecuted instantiation: aom_paeth_predictor_8x16_c
Unexecuted instantiation: aom_paeth_predictor_16x8_c
Unexecuted instantiation: aom_paeth_predictor_16x32_c
Unexecuted instantiation: aom_paeth_predictor_32x16_c
Unexecuted instantiation: aom_paeth_predictor_32x64_c
Unexecuted instantiation: aom_paeth_predictor_64x32_c
Unexecuted instantiation: aom_paeth_predictor_4x16_c
Unexecuted instantiation: aom_paeth_predictor_16x4_c
Unexecuted instantiation: aom_paeth_predictor_8x32_c
Unexecuted instantiation: aom_paeth_predictor_32x8_c
Unexecuted instantiation: aom_paeth_predictor_16x64_c
Unexecuted instantiation: aom_paeth_predictor_64x16_c
Unexecuted instantiation: aom_dc_128_predictor_4x4_c
Unexecuted instantiation: aom_dc_128_predictor_8x8_c
Unexecuted instantiation: aom_dc_128_predictor_16x16_c
Unexecuted instantiation: aom_dc_128_predictor_32x32_c
Unexecuted instantiation: aom_dc_128_predictor_64x64_c
Unexecuted instantiation: aom_dc_128_predictor_4x8_c
Unexecuted instantiation: aom_dc_128_predictor_8x4_c
Unexecuted instantiation: aom_dc_128_predictor_8x16_c
Unexecuted instantiation: aom_dc_128_predictor_16x8_c
Unexecuted instantiation: aom_dc_128_predictor_16x32_c
Unexecuted instantiation: aom_dc_128_predictor_32x16_c
Unexecuted instantiation: aom_dc_128_predictor_32x64_c
Unexecuted instantiation: aom_dc_128_predictor_64x32_c
Unexecuted instantiation: aom_dc_128_predictor_4x16_c
Unexecuted instantiation: aom_dc_128_predictor_16x4_c
Unexecuted instantiation: aom_dc_128_predictor_8x32_c
Unexecuted instantiation: aom_dc_128_predictor_32x8_c
Unexecuted instantiation: aom_dc_128_predictor_16x64_c
Unexecuted instantiation: aom_dc_128_predictor_64x16_c
Unexecuted instantiation: aom_dc_left_predictor_4x4_c
Unexecuted instantiation: aom_dc_left_predictor_8x8_c
Unexecuted instantiation: aom_dc_left_predictor_16x16_c
Unexecuted instantiation: aom_dc_left_predictor_32x32_c
Unexecuted instantiation: aom_dc_left_predictor_64x64_c
Unexecuted instantiation: aom_dc_left_predictor_4x8_c
Unexecuted instantiation: aom_dc_left_predictor_8x4_c
Unexecuted instantiation: aom_dc_left_predictor_8x16_c
Unexecuted instantiation: aom_dc_left_predictor_16x8_c
Unexecuted instantiation: aom_dc_left_predictor_16x32_c
Unexecuted instantiation: aom_dc_left_predictor_32x16_c
Unexecuted instantiation: aom_dc_left_predictor_32x64_c
Unexecuted instantiation: aom_dc_left_predictor_64x32_c
Unexecuted instantiation: aom_dc_left_predictor_4x16_c
Unexecuted instantiation: aom_dc_left_predictor_16x4_c
Unexecuted instantiation: aom_dc_left_predictor_8x32_c
Unexecuted instantiation: aom_dc_left_predictor_32x8_c
Unexecuted instantiation: aom_dc_left_predictor_16x64_c
Unexecuted instantiation: aom_dc_left_predictor_64x16_c
Unexecuted instantiation: aom_dc_top_predictor_4x4_c
Unexecuted instantiation: aom_dc_top_predictor_8x8_c
Unexecuted instantiation: aom_dc_top_predictor_16x16_c
Unexecuted instantiation: aom_dc_top_predictor_32x32_c
Unexecuted instantiation: aom_dc_top_predictor_64x64_c
Unexecuted instantiation: aom_dc_top_predictor_4x8_c
Unexecuted instantiation: aom_dc_top_predictor_8x4_c
Unexecuted instantiation: aom_dc_top_predictor_8x16_c
Unexecuted instantiation: aom_dc_top_predictor_16x8_c
Unexecuted instantiation: aom_dc_top_predictor_16x32_c
Unexecuted instantiation: aom_dc_top_predictor_32x16_c
Unexecuted instantiation: aom_dc_top_predictor_32x64_c
Unexecuted instantiation: aom_dc_top_predictor_64x32_c
Unexecuted instantiation: aom_dc_top_predictor_4x16_c
Unexecuted instantiation: aom_dc_top_predictor_16x4_c
Unexecuted instantiation: aom_dc_top_predictor_8x32_c
Unexecuted instantiation: aom_dc_top_predictor_32x8_c
Unexecuted instantiation: aom_dc_top_predictor_16x64_c
Unexecuted instantiation: aom_dc_top_predictor_64x16_c
Unexecuted instantiation: aom_dc_predictor_4x4_c
Unexecuted instantiation: aom_dc_predictor_8x8_c
Unexecuted instantiation: aom_dc_predictor_16x16_c
Unexecuted instantiation: aom_dc_predictor_32x32_c
Unexecuted instantiation: aom_dc_predictor_64x64_c
732
733
#if CONFIG_AV1_HIGHBITDEPTH
734
#define intra_pred_highbd_sized(type, width, height)                        \
735
  void aom_highbd_##type##_predictor_##width##x##height##_c(                \
736
      uint16_t *dst, ptrdiff_t stride, const uint16_t *above,               \
737
14.0M
      const uint16_t *left, int bd) {                                       \
738
14.0M
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
14.0M
  }
Unexecuted instantiation: aom_highbd_v_predictor_4x4_c
Unexecuted instantiation: aom_highbd_v_predictor_8x8_c
Unexecuted instantiation: aom_highbd_v_predictor_16x16_c
Unexecuted instantiation: aom_highbd_v_predictor_32x32_c
aom_highbd_v_predictor_64x64_c
Line
Count
Source
737
665
      const uint16_t *left, int bd) {                                       \
738
665
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
665
  }
Unexecuted instantiation: aom_highbd_v_predictor_4x8_c
Unexecuted instantiation: aom_highbd_v_predictor_8x4_c
Unexecuted instantiation: aom_highbd_v_predictor_8x16_c
Unexecuted instantiation: aom_highbd_v_predictor_16x8_c
Unexecuted instantiation: aom_highbd_v_predictor_16x32_c
Unexecuted instantiation: aom_highbd_v_predictor_32x16_c
aom_highbd_v_predictor_32x64_c
Line
Count
Source
737
75
      const uint16_t *left, int bd) {                                       \
738
75
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
75
  }
aom_highbd_v_predictor_64x32_c
Line
Count
Source
737
50
      const uint16_t *left, int bd) {                                       \
738
50
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
50
  }
aom_highbd_v_predictor_4x16_c
Line
Count
Source
737
1.83k
      const uint16_t *left, int bd) {                                       \
738
1.83k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
1.83k
  }
aom_highbd_v_predictor_16x4_c
Line
Count
Source
737
4.00k
      const uint16_t *left, int bd) {                                       \
738
4.00k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
4.00k
  }
aom_highbd_v_predictor_8x32_c
Line
Count
Source
737
914
      const uint16_t *left, int bd) {                                       \
738
914
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
914
  }
aom_highbd_v_predictor_32x8_c
Line
Count
Source
737
1.13k
      const uint16_t *left, int bd) {                                       \
738
1.13k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
1.13k
  }
aom_highbd_v_predictor_16x64_c
Line
Count
Source
737
148
      const uint16_t *left, int bd) {                                       \
738
148
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
148
  }
aom_highbd_v_predictor_64x16_c
Line
Count
Source
737
104
      const uint16_t *left, int bd) {                                       \
738
104
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
104
  }
Unexecuted instantiation: aom_highbd_h_predictor_4x4_c
Unexecuted instantiation: aom_highbd_h_predictor_8x8_c
Unexecuted instantiation: aom_highbd_h_predictor_16x16_c
Unexecuted instantiation: aom_highbd_h_predictor_32x32_c
aom_highbd_h_predictor_64x64_c
Line
Count
Source
737
460
      const uint16_t *left, int bd) {                                       \
738
460
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
460
  }
Unexecuted instantiation: aom_highbd_h_predictor_4x8_c
Unexecuted instantiation: aom_highbd_h_predictor_8x4_c
Unexecuted instantiation: aom_highbd_h_predictor_8x16_c
Unexecuted instantiation: aom_highbd_h_predictor_16x8_c
Unexecuted instantiation: aom_highbd_h_predictor_16x32_c
Unexecuted instantiation: aom_highbd_h_predictor_32x16_c
aom_highbd_h_predictor_32x64_c
Line
Count
Source
737
162
      const uint16_t *left, int bd) {                                       \
738
162
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
162
  }
aom_highbd_h_predictor_64x32_c
Line
Count
Source
737
90
      const uint16_t *left, int bd) {                                       \
738
90
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
90
  }
aom_highbd_h_predictor_4x16_c
Line
Count
Source
737
3.75k
      const uint16_t *left, int bd) {                                       \
738
3.75k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
3.75k
  }
aom_highbd_h_predictor_16x4_c
Line
Count
Source
737
6.64k
      const uint16_t *left, int bd) {                                       \
738
6.64k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
6.64k
  }
aom_highbd_h_predictor_8x32_c
Line
Count
Source
737
2.06k
      const uint16_t *left, int bd) {                                       \
738
2.06k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
2.06k
  }
aom_highbd_h_predictor_32x8_c
Line
Count
Source
737
2.71k
      const uint16_t *left, int bd) {                                       \
738
2.71k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
2.71k
  }
aom_highbd_h_predictor_16x64_c
Line
Count
Source
737
213
      const uint16_t *left, int bd) {                                       \
738
213
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
213
  }
aom_highbd_h_predictor_64x16_c
Line
Count
Source
737
178
      const uint16_t *left, int bd) {                                       \
738
178
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
178
  }
aom_highbd_smooth_predictor_4x4_c
Line
Count
Source
737
4.14M
      const uint16_t *left, int bd) {                                       \
738
4.14M
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
4.14M
  }
aom_highbd_smooth_predictor_8x8_c
Line
Count
Source
737
1.89M
      const uint16_t *left, int bd) {                                       \
738
1.89M
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
1.89M
  }
aom_highbd_smooth_predictor_16x16_c
Line
Count
Source
737
324k
      const uint16_t *left, int bd) {                                       \
738
324k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
324k
  }
aom_highbd_smooth_predictor_32x32_c
Line
Count
Source
737
78.7k
      const uint16_t *left, int bd) {                                       \
738
78.7k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
78.7k
  }
aom_highbd_smooth_predictor_64x64_c
Line
Count
Source
737
2.80k
      const uint16_t *left, int bd) {                                       \
738
2.80k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
2.80k
  }
aom_highbd_smooth_predictor_4x8_c
Line
Count
Source
737
362k
      const uint16_t *left, int bd) {                                       \
738
362k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
362k
  }
aom_highbd_smooth_predictor_8x4_c
Line
Count
Source
737
111k
      const uint16_t *left, int bd) {                                       \
738
111k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
111k
  }
aom_highbd_smooth_predictor_8x16_c
Line
Count
Source
737
107k
      const uint16_t *left, int bd) {                                       \
738
107k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
107k
  }
aom_highbd_smooth_predictor_16x8_c
Line
Count
Source
737
88.3k
      const uint16_t *left, int bd) {                                       \
738
88.3k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
88.3k
  }
aom_highbd_smooth_predictor_16x32_c
Line
Count
Source
737
34.5k
      const uint16_t *left, int bd) {                                       \
738
34.5k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
34.5k
  }
aom_highbd_smooth_predictor_32x16_c
Line
Count
Source
737
23.4k
      const uint16_t *left, int bd) {                                       \
738
23.4k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
23.4k
  }
aom_highbd_smooth_predictor_32x64_c
Line
Count
Source
737
408
      const uint16_t *left, int bd) {                                       \
738
408
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
408
  }
aom_highbd_smooth_predictor_64x32_c
Line
Count
Source
737
183
      const uint16_t *left, int bd) {                                       \
738
183
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
183
  }
aom_highbd_smooth_predictor_4x16_c
Line
Count
Source
737
6.78k
      const uint16_t *left, int bd) {                                       \
738
6.78k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
6.78k
  }
aom_highbd_smooth_predictor_16x4_c
Line
Count
Source
737
15.2k
      const uint16_t *left, int bd) {                                       \
738
15.2k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
15.2k
  }
aom_highbd_smooth_predictor_8x32_c
Line
Count
Source
737
4.29k
      const uint16_t *left, int bd) {                                       \
738
4.29k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
4.29k
  }
aom_highbd_smooth_predictor_32x8_c
Line
Count
Source
737
4.66k
      const uint16_t *left, int bd) {                                       \
738
4.66k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
4.66k
  }
aom_highbd_smooth_predictor_16x64_c
Line
Count
Source
737
507
      const uint16_t *left, int bd) {                                       \
738
507
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
507
  }
aom_highbd_smooth_predictor_64x16_c
Line
Count
Source
737
472
      const uint16_t *left, int bd) {                                       \
738
472
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
472
  }
aom_highbd_smooth_v_predictor_4x4_c
Line
Count
Source
737
220k
      const uint16_t *left, int bd) {                                       \
738
220k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
220k
  }
aom_highbd_smooth_v_predictor_8x8_c
Line
Count
Source
737
292k
      const uint16_t *left, int bd) {                                       \
738
292k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
292k
  }
aom_highbd_smooth_v_predictor_16x16_c
Line
Count
Source
737
53.3k
      const uint16_t *left, int bd) {                                       \
738
53.3k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
53.3k
  }
aom_highbd_smooth_v_predictor_32x32_c
Line
Count
Source
737
6.95k
      const uint16_t *left, int bd) {                                       \
738
6.95k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
6.95k
  }
aom_highbd_smooth_v_predictor_64x64_c
Line
Count
Source
737
643
      const uint16_t *left, int bd) {                                       \
738
643
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
643
  }
aom_highbd_smooth_v_predictor_4x8_c
Line
Count
Source
737
76.6k
      const uint16_t *left, int bd) {                                       \
738
76.6k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
76.6k
  }
aom_highbd_smooth_v_predictor_8x4_c
Line
Count
Source
737
23.4k
      const uint16_t *left, int bd) {                                       \
738
23.4k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
23.4k
  }
aom_highbd_smooth_v_predictor_8x16_c
Line
Count
Source
737
10.2k
      const uint16_t *left, int bd) {                                       \
738
10.2k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
10.2k
  }
aom_highbd_smooth_v_predictor_16x8_c
Line
Count
Source
737
12.8k
      const uint16_t *left, int bd) {                                       \
738
12.8k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
12.8k
  }
aom_highbd_smooth_v_predictor_16x32_c
Line
Count
Source
737
3.28k
      const uint16_t *left, int bd) {                                       \
738
3.28k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
3.28k
  }
aom_highbd_smooth_v_predictor_32x16_c
Line
Count
Source
737
3.12k
      const uint16_t *left, int bd) {                                       \
738
3.12k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
3.12k
  }
aom_highbd_smooth_v_predictor_32x64_c
Line
Count
Source
737
140
      const uint16_t *left, int bd) {                                       \
738
140
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
140
  }
aom_highbd_smooth_v_predictor_64x32_c
Line
Count
Source
737
66
      const uint16_t *left, int bd) {                                       \
738
66
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
66
  }
aom_highbd_smooth_v_predictor_4x16_c
Line
Count
Source
737
2.16k
      const uint16_t *left, int bd) {                                       \
738
2.16k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
2.16k
  }
aom_highbd_smooth_v_predictor_16x4_c
Line
Count
Source
737
5.28k
      const uint16_t *left, int bd) {                                       \
738
5.28k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
5.28k
  }
aom_highbd_smooth_v_predictor_8x32_c
Line
Count
Source
737
1.26k
      const uint16_t *left, int bd) {                                       \
738
1.26k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
1.26k
  }
aom_highbd_smooth_v_predictor_32x8_c
Line
Count
Source
737
1.32k
      const uint16_t *left, int bd) {                                       \
738
1.32k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
1.32k
  }
aom_highbd_smooth_v_predictor_16x64_c
Line
Count
Source
737
199
      const uint16_t *left, int bd) {                                       \
738
199
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
199
  }
aom_highbd_smooth_v_predictor_64x16_c
Line
Count
Source
737
184
      const uint16_t *left, int bd) {                                       \
738
184
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
184
  }
aom_highbd_smooth_h_predictor_4x4_c
Line
Count
Source
737
230k
      const uint16_t *left, int bd) {                                       \
738
230k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
230k
  }
aom_highbd_smooth_h_predictor_8x8_c
Line
Count
Source
737
307k
      const uint16_t *left, int bd) {                                       \
738
307k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
307k
  }
aom_highbd_smooth_h_predictor_16x16_c
Line
Count
Source
737
44.2k
      const uint16_t *left, int bd) {                                       \
738
44.2k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
44.2k
  }
aom_highbd_smooth_h_predictor_32x32_c
Line
Count
Source
737
9.25k
      const uint16_t *left, int bd) {                                       \
738
9.25k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
9.25k
  }
aom_highbd_smooth_h_predictor_64x64_c
Line
Count
Source
737
877
      const uint16_t *left, int bd) {                                       \
738
877
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
877
  }
aom_highbd_smooth_h_predictor_4x8_c
Line
Count
Source
737
77.9k
      const uint16_t *left, int bd) {                                       \
738
77.9k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
77.9k
  }
aom_highbd_smooth_h_predictor_8x4_c
Line
Count
Source
737
28.2k
      const uint16_t *left, int bd) {                                       \
738
28.2k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
28.2k
  }
aom_highbd_smooth_h_predictor_8x16_c
Line
Count
Source
737
11.1k
      const uint16_t *left, int bd) {                                       \
738
11.1k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
11.1k
  }
aom_highbd_smooth_h_predictor_16x8_c
Line
Count
Source
737
17.1k
      const uint16_t *left, int bd) {                                       \
738
17.1k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
17.1k
  }
aom_highbd_smooth_h_predictor_16x32_c
Line
Count
Source
737
3.59k
      const uint16_t *left, int bd) {                                       \
738
3.59k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
3.59k
  }
aom_highbd_smooth_h_predictor_32x16_c
Line
Count
Source
737
5.44k
      const uint16_t *left, int bd) {                                       \
738
5.44k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
5.44k
  }
aom_highbd_smooth_h_predictor_32x64_c
Line
Count
Source
737
181
      const uint16_t *left, int bd) {                                       \
738
181
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
181
  }
aom_highbd_smooth_h_predictor_64x32_c
Line
Count
Source
737
87
      const uint16_t *left, int bd) {                                       \
738
87
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
87
  }
aom_highbd_smooth_h_predictor_4x16_c
Line
Count
Source
737
3.19k
      const uint16_t *left, int bd) {                                       \
738
3.19k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
3.19k
  }
aom_highbd_smooth_h_predictor_16x4_c
Line
Count
Source
737
6.08k
      const uint16_t *left, int bd) {                                       \
738
6.08k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
6.08k
  }
aom_highbd_smooth_h_predictor_8x32_c
Line
Count
Source
737
1.96k
      const uint16_t *left, int bd) {                                       \
738
1.96k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
1.96k
  }
aom_highbd_smooth_h_predictor_32x8_c
Line
Count
Source
737
1.87k
      const uint16_t *left, int bd) {                                       \
738
1.87k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
1.87k
  }
aom_highbd_smooth_h_predictor_16x64_c
Line
Count
Source
737
218
      const uint16_t *left, int bd) {                                       \
738
218
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
218
  }
aom_highbd_smooth_h_predictor_64x16_c
Line
Count
Source
737
93
      const uint16_t *left, int bd) {                                       \
738
93
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
93
  }
aom_highbd_paeth_predictor_4x4_c
Line
Count
Source
737
2.86M
      const uint16_t *left, int bd) {                                       \
738
2.86M
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
2.86M
  }
aom_highbd_paeth_predictor_8x8_c
Line
Count
Source
737
1.76M
      const uint16_t *left, int bd) {                                       \
738
1.76M
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
1.76M
  }
aom_highbd_paeth_predictor_16x16_c
Line
Count
Source
737
269k
      const uint16_t *left, int bd) {                                       \
738
269k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
269k
  }
aom_highbd_paeth_predictor_32x32_c
Line
Count
Source
737
52.9k
      const uint16_t *left, int bd) {                                       \
738
52.9k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
52.9k
  }
aom_highbd_paeth_predictor_64x64_c
Line
Count
Source
737
612
      const uint16_t *left, int bd) {                                       \
738
612
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
612
  }
aom_highbd_paeth_predictor_4x8_c
Line
Count
Source
737
105k
      const uint16_t *left, int bd) {                                       \
738
105k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
105k
  }
aom_highbd_paeth_predictor_8x4_c
Line
Count
Source
737
84.6k
      const uint16_t *left, int bd) {                                       \
738
84.6k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
84.6k
  }
aom_highbd_paeth_predictor_8x16_c
Line
Count
Source
737
47.7k
      const uint16_t *left, int bd) {                                       \
738
47.7k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
47.7k
  }
aom_highbd_paeth_predictor_16x8_c
Line
Count
Source
737
55.3k
      const uint16_t *left, int bd) {                                       \
738
55.3k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
55.3k
  }
aom_highbd_paeth_predictor_16x32_c
Line
Count
Source
737
40.2k
      const uint16_t *left, int bd) {                                       \
738
40.2k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
40.2k
  }
aom_highbd_paeth_predictor_32x16_c
Line
Count
Source
737
20.7k
      const uint16_t *left, int bd) {                                       \
738
20.7k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
20.7k
  }
aom_highbd_paeth_predictor_32x64_c
Line
Count
Source
737
133
      const uint16_t *left, int bd) {                                       \
738
133
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
133
  }
aom_highbd_paeth_predictor_64x32_c
Line
Count
Source
737
110
      const uint16_t *left, int bd) {                                       \
738
110
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
110
  }
aom_highbd_paeth_predictor_4x16_c
Line
Count
Source
737
6.48k
      const uint16_t *left, int bd) {                                       \
738
6.48k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
6.48k
  }
aom_highbd_paeth_predictor_16x4_c
Line
Count
Source
737
9.18k
      const uint16_t *left, int bd) {                                       \
738
9.18k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
9.18k
  }
aom_highbd_paeth_predictor_8x32_c
Line
Count
Source
737
3.39k
      const uint16_t *left, int bd) {                                       \
738
3.39k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
3.39k
  }
aom_highbd_paeth_predictor_32x8_c
Line
Count
Source
737
2.90k
      const uint16_t *left, int bd) {                                       \
738
2.90k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
2.90k
  }
aom_highbd_paeth_predictor_16x64_c
Line
Count
Source
737
2.03k
      const uint16_t *left, int bd) {                                       \
738
2.03k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
2.03k
  }
aom_highbd_paeth_predictor_64x16_c
Line
Count
Source
737
269
      const uint16_t *left, int bd) {                                       \
738
269
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
269
  }
Unexecuted instantiation: aom_highbd_dc_128_predictor_4x4_c
Unexecuted instantiation: aom_highbd_dc_128_predictor_8x8_c
Unexecuted instantiation: aom_highbd_dc_128_predictor_16x16_c
Unexecuted instantiation: aom_highbd_dc_128_predictor_32x32_c
aom_highbd_dc_128_predictor_64x64_c
Line
Count
Source
737
7.15k
      const uint16_t *left, int bd) {                                       \
738
7.15k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
7.15k
  }
Unexecuted instantiation: aom_highbd_dc_128_predictor_4x8_c
Unexecuted instantiation: aom_highbd_dc_128_predictor_8x4_c
Unexecuted instantiation: aom_highbd_dc_128_predictor_8x16_c
Unexecuted instantiation: aom_highbd_dc_128_predictor_16x8_c
Unexecuted instantiation: aom_highbd_dc_128_predictor_16x32_c
Unexecuted instantiation: aom_highbd_dc_128_predictor_32x16_c
aom_highbd_dc_128_predictor_32x64_c
Line
Count
Source
737
2.60k
      const uint16_t *left, int bd) {                                       \
738
2.60k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
2.60k
  }
aom_highbd_dc_128_predictor_64x32_c
Line
Count
Source
737
3.49k
      const uint16_t *left, int bd) {                                       \
738
3.49k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
3.49k
  }
aom_highbd_dc_128_predictor_4x16_c
Line
Count
Source
737
63
      const uint16_t *left, int bd) {                                       \
738
63
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
63
  }
aom_highbd_dc_128_predictor_16x4_c
Line
Count
Source
737
93
      const uint16_t *left, int bd) {                                       \
738
93
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
93
  }
aom_highbd_dc_128_predictor_8x32_c
Line
Count
Source
737
38
      const uint16_t *left, int bd) {                                       \
738
38
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
38
  }
aom_highbd_dc_128_predictor_32x8_c
Line
Count
Source
737
60
      const uint16_t *left, int bd) {                                       \
738
60
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
60
  }
aom_highbd_dc_128_predictor_16x64_c
Line
Count
Source
737
21
      const uint16_t *left, int bd) {                                       \
738
21
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
21
  }
aom_highbd_dc_128_predictor_64x16_c
Line
Count
Source
737
36
      const uint16_t *left, int bd) {                                       \
738
36
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
36
  }
Unexecuted instantiation: aom_highbd_dc_left_predictor_4x4_c
Unexecuted instantiation: aom_highbd_dc_left_predictor_8x8_c
Unexecuted instantiation: aom_highbd_dc_left_predictor_16x16_c
Unexecuted instantiation: aom_highbd_dc_left_predictor_32x32_c
aom_highbd_dc_left_predictor_64x64_c
Line
Count
Source
737
4.53k
      const uint16_t *left, int bd) {                                       \
738
4.53k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
4.53k
  }
Unexecuted instantiation: aom_highbd_dc_left_predictor_4x8_c
Unexecuted instantiation: aom_highbd_dc_left_predictor_8x4_c
Unexecuted instantiation: aom_highbd_dc_left_predictor_8x16_c
Unexecuted instantiation: aom_highbd_dc_left_predictor_16x8_c
Unexecuted instantiation: aom_highbd_dc_left_predictor_16x32_c
Unexecuted instantiation: aom_highbd_dc_left_predictor_32x16_c
aom_highbd_dc_left_predictor_32x64_c
Line
Count
Source
737
2.62k
      const uint16_t *left, int bd) {                                       \
738
2.62k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
2.62k
  }
aom_highbd_dc_left_predictor_64x32_c
Line
Count
Source
737
635
      const uint16_t *left, int bd) {                                       \
738
635
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
635
  }
aom_highbd_dc_left_predictor_4x16_c
Line
Count
Source
737
2.03k
      const uint16_t *left, int bd) {                                       \
738
2.03k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
2.03k
  }
aom_highbd_dc_left_predictor_16x4_c
Line
Count
Source
737
462
      const uint16_t *left, int bd) {                                       \
738
462
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
462
  }
aom_highbd_dc_left_predictor_8x32_c
Line
Count
Source
737
536
      const uint16_t *left, int bd) {                                       \
738
536
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
536
  }
aom_highbd_dc_left_predictor_32x8_c
Line
Count
Source
737
834
      const uint16_t *left, int bd) {                                       \
738
834
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
834
  }
aom_highbd_dc_left_predictor_16x64_c
Line
Count
Source
737
231
      const uint16_t *left, int bd) {                                       \
738
231
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
231
  }
aom_highbd_dc_left_predictor_64x16_c
Line
Count
Source
737
173
      const uint16_t *left, int bd) {                                       \
738
173
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
173
  }
Unexecuted instantiation: aom_highbd_dc_top_predictor_4x4_c
Unexecuted instantiation: aom_highbd_dc_top_predictor_8x8_c
Unexecuted instantiation: aom_highbd_dc_top_predictor_16x16_c
Unexecuted instantiation: aom_highbd_dc_top_predictor_32x32_c
aom_highbd_dc_top_predictor_64x64_c
Line
Count
Source
737
5.95k
      const uint16_t *left, int bd) {                                       \
738
5.95k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
5.95k
  }
Unexecuted instantiation: aom_highbd_dc_top_predictor_4x8_c
Unexecuted instantiation: aom_highbd_dc_top_predictor_8x4_c
Unexecuted instantiation: aom_highbd_dc_top_predictor_8x16_c
Unexecuted instantiation: aom_highbd_dc_top_predictor_16x8_c
Unexecuted instantiation: aom_highbd_dc_top_predictor_16x32_c
Unexecuted instantiation: aom_highbd_dc_top_predictor_32x16_c
aom_highbd_dc_top_predictor_32x64_c
Line
Count
Source
737
698
      const uint16_t *left, int bd) {                                       \
738
698
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
698
  }
aom_highbd_dc_top_predictor_64x32_c
Line
Count
Source
737
3.41k
      const uint16_t *left, int bd) {                                       \
738
3.41k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
3.41k
  }
aom_highbd_dc_top_predictor_4x16_c
Line
Count
Source
737
537
      const uint16_t *left, int bd) {                                       \
738
537
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
537
  }
aom_highbd_dc_top_predictor_16x4_c
Line
Count
Source
737
1.53k
      const uint16_t *left, int bd) {                                       \
738
1.53k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
1.53k
  }
aom_highbd_dc_top_predictor_8x32_c
Line
Count
Source
737
850
      const uint16_t *left, int bd) {                                       \
738
850
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
850
  }
aom_highbd_dc_top_predictor_32x8_c
Line
Count
Source
737
1.39k
      const uint16_t *left, int bd) {                                       \
738
1.39k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
1.39k
  }
aom_highbd_dc_top_predictor_16x64_c
Line
Count
Source
737
186
      const uint16_t *left, int bd) {                                       \
738
186
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
186
  }
aom_highbd_dc_top_predictor_64x16_c
Line
Count
Source
737
244
      const uint16_t *left, int bd) {                                       \
738
244
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
244
  }
Unexecuted instantiation: aom_highbd_dc_predictor_4x4_c
Unexecuted instantiation: aom_highbd_dc_predictor_8x8_c
Unexecuted instantiation: aom_highbd_dc_predictor_16x16_c
Unexecuted instantiation: aom_highbd_dc_predictor_32x32_c
aom_highbd_dc_predictor_64x64_c
Line
Count
Source
737
5.97k
      const uint16_t *left, int bd) {                                       \
738
5.97k
    highbd_##type##_predictor(dst, stride, width, height, above, left, bd); \
739
5.97k
  }
740
#else  // !CONFIG_AV1_HIGHBITDEPTH
741
#define intra_pred_highbd_sized(type, width, height)
742
#endif  // CONFIG_AV1_HIGHBITDEPTH
743
744
/* clang-format off */
745
#if CONFIG_REALTIME_ONLY && !CONFIG_AV1_DECODER
746
#define intra_pred_rectangular(type) \
747
  intra_pred_sized(type, 4, 8) \
748
  intra_pred_sized(type, 8, 4) \
749
  intra_pred_sized(type, 8, 16) \
750
  intra_pred_sized(type, 16, 8) \
751
  intra_pred_sized(type, 16, 32) \
752
  intra_pred_sized(type, 32, 16) \
753
  intra_pred_sized(type, 32, 64) \
754
  intra_pred_sized(type, 64, 32) \
755
  intra_pred_highbd_sized(type, 4, 8) \
756
  intra_pred_highbd_sized(type, 8, 4) \
757
  intra_pred_highbd_sized(type, 8, 16) \
758
  intra_pred_highbd_sized(type, 16, 8) \
759
  intra_pred_highbd_sized(type, 16, 32) \
760
  intra_pred_highbd_sized(type, 32, 16) \
761
  intra_pred_highbd_sized(type, 32, 64) \
762
  intra_pred_highbd_sized(type, 64, 32)
763
#else
764
#define intra_pred_rectangular(type) \
765
  intra_pred_sized(type, 4, 8) \
766
  intra_pred_sized(type, 8, 4) \
767
  intra_pred_sized(type, 8, 16) \
768
  intra_pred_sized(type, 16, 8) \
769
  intra_pred_sized(type, 16, 32) \
770
  intra_pred_sized(type, 32, 16) \
771
  intra_pred_sized(type, 32, 64) \
772
  intra_pred_sized(type, 64, 32) \
773
  intra_pred_sized(type, 4, 16) \
774
  intra_pred_sized(type, 16, 4) \
775
  intra_pred_sized(type, 8, 32) \
776
  intra_pred_sized(type, 32, 8) \
777
  intra_pred_sized(type, 16, 64) \
778
  intra_pred_sized(type, 64, 16) \
779
  intra_pred_highbd_sized(type, 4, 8) \
780
  intra_pred_highbd_sized(type, 8, 4) \
781
  intra_pred_highbd_sized(type, 8, 16) \
782
  intra_pred_highbd_sized(type, 16, 8) \
783
  intra_pred_highbd_sized(type, 16, 32) \
784
  intra_pred_highbd_sized(type, 32, 16) \
785
  intra_pred_highbd_sized(type, 32, 64) \
786
  intra_pred_highbd_sized(type, 64, 32) \
787
  intra_pred_highbd_sized(type, 4, 16) \
788
  intra_pred_highbd_sized(type, 16, 4) \
789
  intra_pred_highbd_sized(type, 8, 32) \
790
  intra_pred_highbd_sized(type, 32, 8) \
791
  intra_pred_highbd_sized(type, 16, 64) \
792
  intra_pred_highbd_sized(type, 64, 16)
793
#endif // CONFIG_REALTIME_ONLY && !CONFIG_AV1_DECODER
794
795
#define intra_pred_above_4x4(type) \
796
  intra_pred_sized(type, 8, 8) \
797
  intra_pred_sized(type, 16, 16) \
798
  intra_pred_sized(type, 32, 32) \
799
  intra_pred_sized(type, 64, 64) \
800
  intra_pred_highbd_sized(type, 4, 4) \
801
  intra_pred_highbd_sized(type, 8, 8) \
802
  intra_pred_highbd_sized(type, 16, 16) \
803
  intra_pred_highbd_sized(type, 32, 32) \
804
  intra_pred_highbd_sized(type, 64, 64) \
805
  intra_pred_rectangular(type)
806
#define intra_pred_allsizes(type) \
807
  intra_pred_sized(type, 4, 4) \
808
  intra_pred_above_4x4(type)
809
#define intra_pred_square(type) \
810
  intra_pred_sized(type, 4, 4) \
811
  intra_pred_sized(type, 8, 8) \
812
  intra_pred_sized(type, 16, 16) \
813
  intra_pred_sized(type, 32, 32) \
814
  intra_pred_sized(type, 64, 64) \
815
  intra_pred_highbd_sized(type, 4, 4) \
816
  intra_pred_highbd_sized(type, 8, 8) \
817
  intra_pred_highbd_sized(type, 16, 16) \
818
  intra_pred_highbd_sized(type, 32, 32) \
819
  intra_pred_highbd_sized(type, 64, 64)
820
821
intra_pred_allsizes(v)
822
intra_pred_allsizes(h)
823
intra_pred_allsizes(smooth)
824
intra_pred_allsizes(smooth_v)
825
intra_pred_allsizes(smooth_h)
826
intra_pred_allsizes(paeth)
827
intra_pred_allsizes(dc_128)
828
intra_pred_allsizes(dc_left)
829
intra_pred_allsizes(dc_top)
830
intra_pred_square(dc)
831
/* clang-format on */
832
#undef intra_pred_allsizes