Coverage Report

Created: 2026-04-12 07:24

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/libavif/ext/aom/av1/common/mvref_common.h
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
#ifndef AOM_AV1_COMMON_MVREF_COMMON_H_
12
#define AOM_AV1_COMMON_MVREF_COMMON_H_
13
14
#include "av1/common/av1_common_int.h"
15
#include "av1/common/blockd.h"
16
17
#ifdef __cplusplus
18
extern "C" {
19
#endif
20
21
15.6M
#define MVREF_ROW_COLS 3
22
23
// Set the upper limit of the motion vector component magnitude.
24
// This would make a motion vector fit in 26 bits. Plus 3 bits for the
25
// reference frame index. A tuple of motion vector can hence be stored within
26
// 32 bit range for efficient load/store operations.
27
2.37M
#define REFMVS_LIMIT ((1 << 12) - 1)
28
29
typedef struct position {
30
  int row;
31
  int col;
32
} POSITION;
33
34
// clamp_mv_ref
35
12.7M
#define MV_BORDER (16 << 3)  // Allow 16 pels in 1/8th pel units
36
37
2.07M
static inline int get_relative_dist(const OrderHintInfo *oh, int a, int b) {
38
2.07M
  if (!oh->enable_order_hint) return 0;
39
40
2.07M
  const int bits = oh->order_hint_bits_minus_1 + 1;
41
42
2.07M
  assert(bits >= 1);
43
2.07M
  assert(a >= 0 && a < (1 << bits));
44
2.07M
  assert(b >= 0 && b < (1 << bits));
45
46
2.07M
  int diff = a - b;
47
2.07M
  const int m = 1 << (bits - 1);
48
2.07M
  diff = (diff & (m - 1)) - (diff & m);
49
2.07M
  return diff;
50
2.07M
}
Unexecuted instantiation: decodeframe.c:get_relative_dist
decodemv.c:get_relative_dist
Line
Count
Source
37
5.28k
static inline int get_relative_dist(const OrderHintInfo *oh, int a, int b) {
38
5.28k
  if (!oh->enable_order_hint) return 0;
39
40
5.28k
  const int bits = oh->order_hint_bits_minus_1 + 1;
41
42
5.28k
  assert(bits >= 1);
43
5.28k
  assert(a >= 0 && a < (1 << bits));
44
5.28k
  assert(b >= 0 && b < (1 << bits));
45
46
5.28k
  int diff = a - b;
47
5.28k
  const int m = 1 << (bits - 1);
48
5.28k
  diff = (diff & (m - 1)) - (diff & m);
49
5.28k
  return diff;
50
5.28k
}
Unexecuted instantiation: av1_cx_iface.c:get_relative_dist
Unexecuted instantiation: allintra_vis.c:get_relative_dist
Unexecuted instantiation: av1_quantize.c:get_relative_dist
Unexecuted instantiation: bitstream.c:get_relative_dist
Unexecuted instantiation: context_tree.c:get_relative_dist
encodeframe.c:get_relative_dist
Line
Count
Source
37
20.9k
static inline int get_relative_dist(const OrderHintInfo *oh, int a, int b) {
38
20.9k
  if (!oh->enable_order_hint) return 0;
39
40
20.9k
  const int bits = oh->order_hint_bits_minus_1 + 1;
41
42
20.9k
  assert(bits >= 1);
43
20.9k
  assert(a >= 0 && a < (1 << bits));
44
20.9k
  assert(b >= 0 && b < (1 << bits));
45
46
20.9k
  int diff = a - b;
47
20.9k
  const int m = 1 << (bits - 1);
48
20.9k
  diff = (diff & (m - 1)) - (diff & m);
49
20.9k
  return diff;
50
20.9k
}
Unexecuted instantiation: encodeframe_utils.c:get_relative_dist
Unexecuted instantiation: encodemb.c:get_relative_dist
Unexecuted instantiation: encodemv.c:get_relative_dist
Unexecuted instantiation: encoder.c:get_relative_dist
Unexecuted instantiation: encoder_utils.c:get_relative_dist
Unexecuted instantiation: encodetxb.c:get_relative_dist
Unexecuted instantiation: ethread.c:get_relative_dist
Unexecuted instantiation: firstpass.c:get_relative_dist
Unexecuted instantiation: global_motion_facade.c:get_relative_dist
Unexecuted instantiation: hash_motion.c:get_relative_dist
Unexecuted instantiation: level.c:get_relative_dist
Unexecuted instantiation: lookahead.c:get_relative_dist
Unexecuted instantiation: mcomp.c:get_relative_dist
Unexecuted instantiation: mv_prec.c:get_relative_dist
Unexecuted instantiation: palette.c:get_relative_dist
partition_search.c:get_relative_dist
Line
Count
Source
37
8
static inline int get_relative_dist(const OrderHintInfo *oh, int a, int b) {
38
8
  if (!oh->enable_order_hint) return 0;
39
40
8
  const int bits = oh->order_hint_bits_minus_1 + 1;
41
42
8
  assert(bits >= 1);
43
8
  assert(a >= 0 && a < (1 << bits));
44
8
  assert(b >= 0 && b < (1 << bits));
45
46
8
  int diff = a - b;
47
8
  const int m = 1 << (bits - 1);
48
8
  diff = (diff & (m - 1)) - (diff & m);
49
8
  return diff;
50
8
}
Unexecuted instantiation: partition_strategy.c:get_relative_dist
Unexecuted instantiation: pass2_strategy.c:get_relative_dist
Unexecuted instantiation: pickcdef.c:get_relative_dist
Unexecuted instantiation: picklpf.c:get_relative_dist
Unexecuted instantiation: pickrst.c:get_relative_dist
Unexecuted instantiation: ratectrl.c:get_relative_dist
Unexecuted instantiation: rd.c:get_relative_dist
Unexecuted instantiation: rdopt.c:get_relative_dist
Unexecuted instantiation: nonrd_pickmode.c:get_relative_dist
Unexecuted instantiation: nonrd_opt.c:get_relative_dist
Unexecuted instantiation: reconinter_enc.c:get_relative_dist
Unexecuted instantiation: segmentation.c:get_relative_dist
Unexecuted instantiation: speed_features.c:get_relative_dist
Unexecuted instantiation: superres_scale.c:get_relative_dist
Unexecuted instantiation: svc_layercontext.c:get_relative_dist
Unexecuted instantiation: temporal_filter.c:get_relative_dist
Unexecuted instantiation: tokenize.c:get_relative_dist
Unexecuted instantiation: tpl_model.c:get_relative_dist
Unexecuted instantiation: tx_search.c:get_relative_dist
Unexecuted instantiation: txb_rdopt.c:get_relative_dist
Unexecuted instantiation: intra_mode_search.c:get_relative_dist
Unexecuted instantiation: var_based_part.c:get_relative_dist
Unexecuted instantiation: av1_noise_estimate.c:get_relative_dist
Unexecuted instantiation: reconinter_enc_sse2.c:get_relative_dist
mvref_common.c:get_relative_dist
Line
Count
Source
37
2.04M
static inline int get_relative_dist(const OrderHintInfo *oh, int a, int b) {
38
2.04M
  if (!oh->enable_order_hint) return 0;
39
40
2.04M
  const int bits = oh->order_hint_bits_minus_1 + 1;
41
42
2.04M
  assert(bits >= 1);
43
2.04M
  assert(a >= 0 && a < (1 << bits));
44
2.04M
  assert(b >= 0 && b < (1 << bits));
45
46
2.04M
  int diff = a - b;
47
2.04M
  const int m = 1 << (bits - 1);
48
2.04M
  diff = (diff & (m - 1)) - (diff & m);
49
2.04M
  return diff;
50
2.04M
}
Unexecuted instantiation: pred_common.c:get_relative_dist
reconinter.c:get_relative_dist
Line
Count
Source
37
5.78k
static inline int get_relative_dist(const OrderHintInfo *oh, int a, int b) {
38
5.78k
  if (!oh->enable_order_hint) return 0;
39
40
5.78k
  const int bits = oh->order_hint_bits_minus_1 + 1;
41
42
5.78k
  assert(bits >= 1);
43
5.78k
  assert(a >= 0 && a < (1 << bits));
44
5.78k
  assert(b >= 0 && b < (1 << bits));
45
46
5.78k
  int diff = a - b;
47
5.78k
  const int m = 1 << (bits - 1);
48
5.78k
  diff = (diff & (m - 1)) - (diff & m);
49
5.78k
  return diff;
50
5.78k
}
Unexecuted instantiation: aq_complexity.c:get_relative_dist
Unexecuted instantiation: aq_cyclicrefresh.c:get_relative_dist
Unexecuted instantiation: aq_variance.c:get_relative_dist
Unexecuted instantiation: compound_type.c:get_relative_dist
Unexecuted instantiation: encode_strategy.c:get_relative_dist
Unexecuted instantiation: global_motion.c:get_relative_dist
Unexecuted instantiation: gop_structure.c:get_relative_dist
Unexecuted instantiation: interp_search.c:get_relative_dist
Unexecuted instantiation: motion_search_facade.c:get_relative_dist
Unexecuted instantiation: temporal_filter_sse2.c:get_relative_dist
Unexecuted instantiation: highbd_temporal_filter_sse2.c:get_relative_dist
Unexecuted instantiation: rdopt_sse4.c:get_relative_dist
Unexecuted instantiation: pickrst_sse4.c:get_relative_dist
Unexecuted instantiation: rdopt_avx2.c:get_relative_dist
Unexecuted instantiation: temporal_filter_avx2.c:get_relative_dist
Unexecuted instantiation: pickrst_avx2.c:get_relative_dist
Unexecuted instantiation: highbd_temporal_filter_avx2.c:get_relative_dist
51
52
3.18M
static inline void clamp_mv_ref(MV *mv, int bw, int bh, const MACROBLOCKD *xd) {
53
3.18M
  const SubpelMvLimits mv_limits = {
54
3.18M
    xd->mb_to_left_edge - GET_MV_SUBPEL(bw) - MV_BORDER,
55
3.18M
    xd->mb_to_right_edge + GET_MV_SUBPEL(bw) + MV_BORDER,
56
3.18M
    xd->mb_to_top_edge - GET_MV_SUBPEL(bh) - MV_BORDER,
57
3.18M
    xd->mb_to_bottom_edge + GET_MV_SUBPEL(bh) + MV_BORDER
58
3.18M
  };
59
3.18M
  clamp_mv(mv, &mv_limits);
60
3.18M
}
Unexecuted instantiation: decodeframe.c:clamp_mv_ref
Unexecuted instantiation: decodemv.c:clamp_mv_ref
Unexecuted instantiation: av1_cx_iface.c:clamp_mv_ref
Unexecuted instantiation: allintra_vis.c:clamp_mv_ref
Unexecuted instantiation: av1_quantize.c:clamp_mv_ref
Unexecuted instantiation: bitstream.c:clamp_mv_ref
Unexecuted instantiation: context_tree.c:clamp_mv_ref
Unexecuted instantiation: encodeframe.c:clamp_mv_ref
Unexecuted instantiation: encodeframe_utils.c:clamp_mv_ref
Unexecuted instantiation: encodemb.c:clamp_mv_ref
Unexecuted instantiation: encodemv.c:clamp_mv_ref
Unexecuted instantiation: encoder.c:clamp_mv_ref
Unexecuted instantiation: encoder_utils.c:clamp_mv_ref
Unexecuted instantiation: encodetxb.c:clamp_mv_ref
Unexecuted instantiation: ethread.c:clamp_mv_ref
Unexecuted instantiation: firstpass.c:clamp_mv_ref
Unexecuted instantiation: global_motion_facade.c:clamp_mv_ref
Unexecuted instantiation: hash_motion.c:clamp_mv_ref
Unexecuted instantiation: level.c:clamp_mv_ref
Unexecuted instantiation: lookahead.c:clamp_mv_ref
Unexecuted instantiation: mcomp.c:clamp_mv_ref
Unexecuted instantiation: mv_prec.c:clamp_mv_ref
Unexecuted instantiation: palette.c:clamp_mv_ref
Unexecuted instantiation: partition_search.c:clamp_mv_ref
Unexecuted instantiation: partition_strategy.c:clamp_mv_ref
Unexecuted instantiation: pass2_strategy.c:clamp_mv_ref
Unexecuted instantiation: pickcdef.c:clamp_mv_ref
Unexecuted instantiation: picklpf.c:clamp_mv_ref
Unexecuted instantiation: pickrst.c:clamp_mv_ref
Unexecuted instantiation: ratectrl.c:clamp_mv_ref
Unexecuted instantiation: rd.c:clamp_mv_ref
Unexecuted instantiation: rdopt.c:clamp_mv_ref
Unexecuted instantiation: nonrd_pickmode.c:clamp_mv_ref
Unexecuted instantiation: nonrd_opt.c:clamp_mv_ref
Unexecuted instantiation: reconinter_enc.c:clamp_mv_ref
Unexecuted instantiation: segmentation.c:clamp_mv_ref
Unexecuted instantiation: speed_features.c:clamp_mv_ref
Unexecuted instantiation: superres_scale.c:clamp_mv_ref
Unexecuted instantiation: svc_layercontext.c:clamp_mv_ref
Unexecuted instantiation: temporal_filter.c:clamp_mv_ref
Unexecuted instantiation: tokenize.c:clamp_mv_ref
Unexecuted instantiation: tpl_model.c:clamp_mv_ref
Unexecuted instantiation: tx_search.c:clamp_mv_ref
Unexecuted instantiation: txb_rdopt.c:clamp_mv_ref
Unexecuted instantiation: intra_mode_search.c:clamp_mv_ref
Unexecuted instantiation: var_based_part.c:clamp_mv_ref
Unexecuted instantiation: av1_noise_estimate.c:clamp_mv_ref
Unexecuted instantiation: reconinter_enc_sse2.c:clamp_mv_ref
mvref_common.c:clamp_mv_ref
Line
Count
Source
52
3.18M
static inline void clamp_mv_ref(MV *mv, int bw, int bh, const MACROBLOCKD *xd) {
53
3.18M
  const SubpelMvLimits mv_limits = {
54
3.18M
    xd->mb_to_left_edge - GET_MV_SUBPEL(bw) - MV_BORDER,
55
3.18M
    xd->mb_to_right_edge + GET_MV_SUBPEL(bw) + MV_BORDER,
56
3.18M
    xd->mb_to_top_edge - GET_MV_SUBPEL(bh) - MV_BORDER,
57
3.18M
    xd->mb_to_bottom_edge + GET_MV_SUBPEL(bh) + MV_BORDER
58
3.18M
  };
59
3.18M
  clamp_mv(mv, &mv_limits);
60
3.18M
}
Unexecuted instantiation: pred_common.c:clamp_mv_ref
Unexecuted instantiation: reconinter.c:clamp_mv_ref
Unexecuted instantiation: aq_complexity.c:clamp_mv_ref
Unexecuted instantiation: aq_cyclicrefresh.c:clamp_mv_ref
Unexecuted instantiation: aq_variance.c:clamp_mv_ref
Unexecuted instantiation: compound_type.c:clamp_mv_ref
Unexecuted instantiation: encode_strategy.c:clamp_mv_ref
Unexecuted instantiation: global_motion.c:clamp_mv_ref
Unexecuted instantiation: gop_structure.c:clamp_mv_ref
Unexecuted instantiation: interp_search.c:clamp_mv_ref
Unexecuted instantiation: motion_search_facade.c:clamp_mv_ref
Unexecuted instantiation: temporal_filter_sse2.c:clamp_mv_ref
Unexecuted instantiation: highbd_temporal_filter_sse2.c:clamp_mv_ref
Unexecuted instantiation: rdopt_sse4.c:clamp_mv_ref
Unexecuted instantiation: pickrst_sse4.c:clamp_mv_ref
Unexecuted instantiation: rdopt_avx2.c:clamp_mv_ref
Unexecuted instantiation: temporal_filter_avx2.c:clamp_mv_ref
Unexecuted instantiation: pickrst_avx2.c:clamp_mv_ref
Unexecuted instantiation: highbd_temporal_filter_avx2.c:clamp_mv_ref
61
62
3.50M
static inline int_mv get_block_mv(const MB_MODE_INFO *candidate, int which_mv) {
63
3.50M
  return candidate->mv[which_mv];
64
3.50M
}
Unexecuted instantiation: decodeframe.c:get_block_mv
Unexecuted instantiation: decodemv.c:get_block_mv
Unexecuted instantiation: av1_cx_iface.c:get_block_mv
Unexecuted instantiation: allintra_vis.c:get_block_mv
Unexecuted instantiation: av1_quantize.c:get_block_mv
Unexecuted instantiation: bitstream.c:get_block_mv
Unexecuted instantiation: context_tree.c:get_block_mv
Unexecuted instantiation: encodeframe.c:get_block_mv
Unexecuted instantiation: encodeframe_utils.c:get_block_mv
Unexecuted instantiation: encodemb.c:get_block_mv
Unexecuted instantiation: encodemv.c:get_block_mv
Unexecuted instantiation: encoder.c:get_block_mv
Unexecuted instantiation: encoder_utils.c:get_block_mv
Unexecuted instantiation: encodetxb.c:get_block_mv
Unexecuted instantiation: ethread.c:get_block_mv
Unexecuted instantiation: firstpass.c:get_block_mv
Unexecuted instantiation: global_motion_facade.c:get_block_mv
Unexecuted instantiation: hash_motion.c:get_block_mv
Unexecuted instantiation: level.c:get_block_mv
Unexecuted instantiation: lookahead.c:get_block_mv
Unexecuted instantiation: mcomp.c:get_block_mv
Unexecuted instantiation: mv_prec.c:get_block_mv
Unexecuted instantiation: palette.c:get_block_mv
Unexecuted instantiation: partition_search.c:get_block_mv
Unexecuted instantiation: partition_strategy.c:get_block_mv
Unexecuted instantiation: pass2_strategy.c:get_block_mv
Unexecuted instantiation: pickcdef.c:get_block_mv
Unexecuted instantiation: picklpf.c:get_block_mv
Unexecuted instantiation: pickrst.c:get_block_mv
Unexecuted instantiation: ratectrl.c:get_block_mv
Unexecuted instantiation: rd.c:get_block_mv
Unexecuted instantiation: rdopt.c:get_block_mv
Unexecuted instantiation: nonrd_pickmode.c:get_block_mv
Unexecuted instantiation: nonrd_opt.c:get_block_mv
Unexecuted instantiation: reconinter_enc.c:get_block_mv
Unexecuted instantiation: segmentation.c:get_block_mv
Unexecuted instantiation: speed_features.c:get_block_mv
Unexecuted instantiation: superres_scale.c:get_block_mv
Unexecuted instantiation: svc_layercontext.c:get_block_mv
Unexecuted instantiation: temporal_filter.c:get_block_mv
Unexecuted instantiation: tokenize.c:get_block_mv
Unexecuted instantiation: tpl_model.c:get_block_mv
Unexecuted instantiation: tx_search.c:get_block_mv
Unexecuted instantiation: txb_rdopt.c:get_block_mv
Unexecuted instantiation: intra_mode_search.c:get_block_mv
Unexecuted instantiation: var_based_part.c:get_block_mv
Unexecuted instantiation: av1_noise_estimate.c:get_block_mv
Unexecuted instantiation: reconinter_enc_sse2.c:get_block_mv
mvref_common.c:get_block_mv
Line
Count
Source
62
3.50M
static inline int_mv get_block_mv(const MB_MODE_INFO *candidate, int which_mv) {
63
3.50M
  return candidate->mv[which_mv];
64
3.50M
}
Unexecuted instantiation: pred_common.c:get_block_mv
Unexecuted instantiation: reconinter.c:get_block_mv
Unexecuted instantiation: aq_complexity.c:get_block_mv
Unexecuted instantiation: aq_cyclicrefresh.c:get_block_mv
Unexecuted instantiation: aq_variance.c:get_block_mv
Unexecuted instantiation: compound_type.c:get_block_mv
Unexecuted instantiation: encode_strategy.c:get_block_mv
Unexecuted instantiation: global_motion.c:get_block_mv
Unexecuted instantiation: gop_structure.c:get_block_mv
Unexecuted instantiation: interp_search.c:get_block_mv
Unexecuted instantiation: motion_search_facade.c:get_block_mv
Unexecuted instantiation: temporal_filter_sse2.c:get_block_mv
Unexecuted instantiation: highbd_temporal_filter_sse2.c:get_block_mv
Unexecuted instantiation: rdopt_sse4.c:get_block_mv
Unexecuted instantiation: pickrst_sse4.c:get_block_mv
Unexecuted instantiation: rdopt_avx2.c:get_block_mv
Unexecuted instantiation: temporal_filter_avx2.c:get_block_mv
Unexecuted instantiation: pickrst_avx2.c:get_block_mv
Unexecuted instantiation: highbd_temporal_filter_avx2.c:get_block_mv
65
66
// Checks that the given mi_row, mi_col and search point
67
// are inside the borders of the tile.
68
static inline int is_inside(const TileInfo *const tile, int mi_col, int mi_row,
69
17.1M
                            const POSITION *mi_pos) {
70
17.1M
  return !(mi_row + mi_pos->row < tile->mi_row_start ||
71
15.5M
           mi_col + mi_pos->col < tile->mi_col_start ||
72
15.0M
           mi_row + mi_pos->row >= tile->mi_row_end ||
73
14.2M
           mi_col + mi_pos->col >= tile->mi_col_end);
74
17.1M
}
Unexecuted instantiation: decodeframe.c:is_inside
Unexecuted instantiation: decodemv.c:is_inside
Unexecuted instantiation: av1_cx_iface.c:is_inside
Unexecuted instantiation: allintra_vis.c:is_inside
Unexecuted instantiation: av1_quantize.c:is_inside
Unexecuted instantiation: bitstream.c:is_inside
Unexecuted instantiation: context_tree.c:is_inside
Unexecuted instantiation: encodeframe.c:is_inside
Unexecuted instantiation: encodeframe_utils.c:is_inside
Unexecuted instantiation: encodemb.c:is_inside
Unexecuted instantiation: encodemv.c:is_inside
Unexecuted instantiation: encoder.c:is_inside
Unexecuted instantiation: encoder_utils.c:is_inside
Unexecuted instantiation: encodetxb.c:is_inside
Unexecuted instantiation: ethread.c:is_inside
Unexecuted instantiation: firstpass.c:is_inside
Unexecuted instantiation: global_motion_facade.c:is_inside
Unexecuted instantiation: hash_motion.c:is_inside
Unexecuted instantiation: level.c:is_inside
Unexecuted instantiation: lookahead.c:is_inside
Unexecuted instantiation: mcomp.c:is_inside
Unexecuted instantiation: mv_prec.c:is_inside
Unexecuted instantiation: palette.c:is_inside
Unexecuted instantiation: partition_search.c:is_inside
Unexecuted instantiation: partition_strategy.c:is_inside
Unexecuted instantiation: pass2_strategy.c:is_inside
Unexecuted instantiation: pickcdef.c:is_inside
Unexecuted instantiation: picklpf.c:is_inside
Unexecuted instantiation: pickrst.c:is_inside
Unexecuted instantiation: ratectrl.c:is_inside
Unexecuted instantiation: rd.c:is_inside
Unexecuted instantiation: rdopt.c:is_inside
Unexecuted instantiation: nonrd_pickmode.c:is_inside
Unexecuted instantiation: nonrd_opt.c:is_inside
Unexecuted instantiation: reconinter_enc.c:is_inside
Unexecuted instantiation: segmentation.c:is_inside
Unexecuted instantiation: speed_features.c:is_inside
Unexecuted instantiation: superres_scale.c:is_inside
Unexecuted instantiation: svc_layercontext.c:is_inside
Unexecuted instantiation: temporal_filter.c:is_inside
Unexecuted instantiation: tokenize.c:is_inside
Unexecuted instantiation: tpl_model.c:is_inside
Unexecuted instantiation: tx_search.c:is_inside
Unexecuted instantiation: txb_rdopt.c:is_inside
Unexecuted instantiation: intra_mode_search.c:is_inside
Unexecuted instantiation: var_based_part.c:is_inside
Unexecuted instantiation: av1_noise_estimate.c:is_inside
Unexecuted instantiation: reconinter_enc_sse2.c:is_inside
mvref_common.c:is_inside
Line
Count
Source
69
17.1M
                            const POSITION *mi_pos) {
70
17.1M
  return !(mi_row + mi_pos->row < tile->mi_row_start ||
71
15.5M
           mi_col + mi_pos->col < tile->mi_col_start ||
72
15.0M
           mi_row + mi_pos->row >= tile->mi_row_end ||
73
14.2M
           mi_col + mi_pos->col >= tile->mi_col_end);
74
17.1M
}
Unexecuted instantiation: pred_common.c:is_inside
Unexecuted instantiation: reconinter.c:is_inside
Unexecuted instantiation: aq_complexity.c:is_inside
Unexecuted instantiation: aq_cyclicrefresh.c:is_inside
Unexecuted instantiation: aq_variance.c:is_inside
Unexecuted instantiation: compound_type.c:is_inside
Unexecuted instantiation: encode_strategy.c:is_inside
Unexecuted instantiation: global_motion.c:is_inside
Unexecuted instantiation: gop_structure.c:is_inside
Unexecuted instantiation: interp_search.c:is_inside
Unexecuted instantiation: motion_search_facade.c:is_inside
Unexecuted instantiation: temporal_filter_sse2.c:is_inside
Unexecuted instantiation: highbd_temporal_filter_sse2.c:is_inside
Unexecuted instantiation: rdopt_sse4.c:is_inside
Unexecuted instantiation: pickrst_sse4.c:is_inside
Unexecuted instantiation: rdopt_avx2.c:is_inside
Unexecuted instantiation: temporal_filter_avx2.c:is_inside
Unexecuted instantiation: pickrst_avx2.c:is_inside
Unexecuted instantiation: highbd_temporal_filter_avx2.c:is_inside
75
76
static inline int find_valid_row_offset(const TileInfo *const tile, int mi_row,
77
2.72M
                                        int row_offset) {
78
2.72M
  return clamp(row_offset, tile->mi_row_start - mi_row,
79
2.72M
               tile->mi_row_end - mi_row - 1);
80
2.72M
}
Unexecuted instantiation: decodeframe.c:find_valid_row_offset
Unexecuted instantiation: decodemv.c:find_valid_row_offset
Unexecuted instantiation: av1_cx_iface.c:find_valid_row_offset
Unexecuted instantiation: allintra_vis.c:find_valid_row_offset
Unexecuted instantiation: av1_quantize.c:find_valid_row_offset
Unexecuted instantiation: bitstream.c:find_valid_row_offset
Unexecuted instantiation: context_tree.c:find_valid_row_offset
Unexecuted instantiation: encodeframe.c:find_valid_row_offset
Unexecuted instantiation: encodeframe_utils.c:find_valid_row_offset
Unexecuted instantiation: encodemb.c:find_valid_row_offset
Unexecuted instantiation: encodemv.c:find_valid_row_offset
Unexecuted instantiation: encoder.c:find_valid_row_offset
Unexecuted instantiation: encoder_utils.c:find_valid_row_offset
Unexecuted instantiation: encodetxb.c:find_valid_row_offset
Unexecuted instantiation: ethread.c:find_valid_row_offset
Unexecuted instantiation: firstpass.c:find_valid_row_offset
Unexecuted instantiation: global_motion_facade.c:find_valid_row_offset
Unexecuted instantiation: hash_motion.c:find_valid_row_offset
Unexecuted instantiation: level.c:find_valid_row_offset
Unexecuted instantiation: lookahead.c:find_valid_row_offset
Unexecuted instantiation: mcomp.c:find_valid_row_offset
Unexecuted instantiation: mv_prec.c:find_valid_row_offset
Unexecuted instantiation: palette.c:find_valid_row_offset
Unexecuted instantiation: partition_search.c:find_valid_row_offset
Unexecuted instantiation: partition_strategy.c:find_valid_row_offset
Unexecuted instantiation: pass2_strategy.c:find_valid_row_offset
Unexecuted instantiation: pickcdef.c:find_valid_row_offset
Unexecuted instantiation: picklpf.c:find_valid_row_offset
Unexecuted instantiation: pickrst.c:find_valid_row_offset
Unexecuted instantiation: ratectrl.c:find_valid_row_offset
Unexecuted instantiation: rd.c:find_valid_row_offset
Unexecuted instantiation: rdopt.c:find_valid_row_offset
Unexecuted instantiation: nonrd_pickmode.c:find_valid_row_offset
Unexecuted instantiation: nonrd_opt.c:find_valid_row_offset
Unexecuted instantiation: reconinter_enc.c:find_valid_row_offset
Unexecuted instantiation: segmentation.c:find_valid_row_offset
Unexecuted instantiation: speed_features.c:find_valid_row_offset
Unexecuted instantiation: superres_scale.c:find_valid_row_offset
Unexecuted instantiation: svc_layercontext.c:find_valid_row_offset
Unexecuted instantiation: temporal_filter.c:find_valid_row_offset
Unexecuted instantiation: tokenize.c:find_valid_row_offset
Unexecuted instantiation: tpl_model.c:find_valid_row_offset
Unexecuted instantiation: tx_search.c:find_valid_row_offset
Unexecuted instantiation: txb_rdopt.c:find_valid_row_offset
Unexecuted instantiation: intra_mode_search.c:find_valid_row_offset
Unexecuted instantiation: var_based_part.c:find_valid_row_offset
Unexecuted instantiation: av1_noise_estimate.c:find_valid_row_offset
Unexecuted instantiation: reconinter_enc_sse2.c:find_valid_row_offset
mvref_common.c:find_valid_row_offset
Line
Count
Source
77
2.72M
                                        int row_offset) {
78
2.72M
  return clamp(row_offset, tile->mi_row_start - mi_row,
79
2.72M
               tile->mi_row_end - mi_row - 1);
80
2.72M
}
Unexecuted instantiation: pred_common.c:find_valid_row_offset
Unexecuted instantiation: reconinter.c:find_valid_row_offset
Unexecuted instantiation: aq_complexity.c:find_valid_row_offset
Unexecuted instantiation: aq_cyclicrefresh.c:find_valid_row_offset
Unexecuted instantiation: aq_variance.c:find_valid_row_offset
Unexecuted instantiation: compound_type.c:find_valid_row_offset
Unexecuted instantiation: encode_strategy.c:find_valid_row_offset
Unexecuted instantiation: global_motion.c:find_valid_row_offset
Unexecuted instantiation: gop_structure.c:find_valid_row_offset
Unexecuted instantiation: interp_search.c:find_valid_row_offset
Unexecuted instantiation: motion_search_facade.c:find_valid_row_offset
Unexecuted instantiation: temporal_filter_sse2.c:find_valid_row_offset
Unexecuted instantiation: highbd_temporal_filter_sse2.c:find_valid_row_offset
Unexecuted instantiation: rdopt_sse4.c:find_valid_row_offset
Unexecuted instantiation: pickrst_sse4.c:find_valid_row_offset
Unexecuted instantiation: rdopt_avx2.c:find_valid_row_offset
Unexecuted instantiation: temporal_filter_avx2.c:find_valid_row_offset
Unexecuted instantiation: pickrst_avx2.c:find_valid_row_offset
Unexecuted instantiation: highbd_temporal_filter_avx2.c:find_valid_row_offset
81
82
static inline int find_valid_col_offset(const TileInfo *const tile, int mi_col,
83
2.72M
                                        int col_offset) {
84
2.72M
  return clamp(col_offset, tile->mi_col_start - mi_col,
85
2.72M
               tile->mi_col_end - mi_col - 1);
86
2.72M
}
Unexecuted instantiation: decodeframe.c:find_valid_col_offset
Unexecuted instantiation: decodemv.c:find_valid_col_offset
Unexecuted instantiation: av1_cx_iface.c:find_valid_col_offset
Unexecuted instantiation: allintra_vis.c:find_valid_col_offset
Unexecuted instantiation: av1_quantize.c:find_valid_col_offset
Unexecuted instantiation: bitstream.c:find_valid_col_offset
Unexecuted instantiation: context_tree.c:find_valid_col_offset
Unexecuted instantiation: encodeframe.c:find_valid_col_offset
Unexecuted instantiation: encodeframe_utils.c:find_valid_col_offset
Unexecuted instantiation: encodemb.c:find_valid_col_offset
Unexecuted instantiation: encodemv.c:find_valid_col_offset
Unexecuted instantiation: encoder.c:find_valid_col_offset
Unexecuted instantiation: encoder_utils.c:find_valid_col_offset
Unexecuted instantiation: encodetxb.c:find_valid_col_offset
Unexecuted instantiation: ethread.c:find_valid_col_offset
Unexecuted instantiation: firstpass.c:find_valid_col_offset
Unexecuted instantiation: global_motion_facade.c:find_valid_col_offset
Unexecuted instantiation: hash_motion.c:find_valid_col_offset
Unexecuted instantiation: level.c:find_valid_col_offset
Unexecuted instantiation: lookahead.c:find_valid_col_offset
Unexecuted instantiation: mcomp.c:find_valid_col_offset
Unexecuted instantiation: mv_prec.c:find_valid_col_offset
Unexecuted instantiation: palette.c:find_valid_col_offset
Unexecuted instantiation: partition_search.c:find_valid_col_offset
Unexecuted instantiation: partition_strategy.c:find_valid_col_offset
Unexecuted instantiation: pass2_strategy.c:find_valid_col_offset
Unexecuted instantiation: pickcdef.c:find_valid_col_offset
Unexecuted instantiation: picklpf.c:find_valid_col_offset
Unexecuted instantiation: pickrst.c:find_valid_col_offset
Unexecuted instantiation: ratectrl.c:find_valid_col_offset
Unexecuted instantiation: rd.c:find_valid_col_offset
Unexecuted instantiation: rdopt.c:find_valid_col_offset
Unexecuted instantiation: nonrd_pickmode.c:find_valid_col_offset
Unexecuted instantiation: nonrd_opt.c:find_valid_col_offset
Unexecuted instantiation: reconinter_enc.c:find_valid_col_offset
Unexecuted instantiation: segmentation.c:find_valid_col_offset
Unexecuted instantiation: speed_features.c:find_valid_col_offset
Unexecuted instantiation: superres_scale.c:find_valid_col_offset
Unexecuted instantiation: svc_layercontext.c:find_valid_col_offset
Unexecuted instantiation: temporal_filter.c:find_valid_col_offset
Unexecuted instantiation: tokenize.c:find_valid_col_offset
Unexecuted instantiation: tpl_model.c:find_valid_col_offset
Unexecuted instantiation: tx_search.c:find_valid_col_offset
Unexecuted instantiation: txb_rdopt.c:find_valid_col_offset
Unexecuted instantiation: intra_mode_search.c:find_valid_col_offset
Unexecuted instantiation: var_based_part.c:find_valid_col_offset
Unexecuted instantiation: av1_noise_estimate.c:find_valid_col_offset
Unexecuted instantiation: reconinter_enc_sse2.c:find_valid_col_offset
mvref_common.c:find_valid_col_offset
Line
Count
Source
83
2.72M
                                        int col_offset) {
84
2.72M
  return clamp(col_offset, tile->mi_col_start - mi_col,
85
2.72M
               tile->mi_col_end - mi_col - 1);
86
2.72M
}
Unexecuted instantiation: pred_common.c:find_valid_col_offset
Unexecuted instantiation: reconinter.c:find_valid_col_offset
Unexecuted instantiation: aq_complexity.c:find_valid_col_offset
Unexecuted instantiation: aq_cyclicrefresh.c:find_valid_col_offset
Unexecuted instantiation: aq_variance.c:find_valid_col_offset
Unexecuted instantiation: compound_type.c:find_valid_col_offset
Unexecuted instantiation: encode_strategy.c:find_valid_col_offset
Unexecuted instantiation: global_motion.c:find_valid_col_offset
Unexecuted instantiation: gop_structure.c:find_valid_col_offset
Unexecuted instantiation: interp_search.c:find_valid_col_offset
Unexecuted instantiation: motion_search_facade.c:find_valid_col_offset
Unexecuted instantiation: temporal_filter_sse2.c:find_valid_col_offset
Unexecuted instantiation: highbd_temporal_filter_sse2.c:find_valid_col_offset
Unexecuted instantiation: rdopt_sse4.c:find_valid_col_offset
Unexecuted instantiation: pickrst_sse4.c:find_valid_col_offset
Unexecuted instantiation: rdopt_avx2.c:find_valid_col_offset
Unexecuted instantiation: temporal_filter_avx2.c:find_valid_col_offset
Unexecuted instantiation: pickrst_avx2.c:find_valid_col_offset
Unexecuted instantiation: highbd_temporal_filter_avx2.c:find_valid_col_offset
87
88
6.82M
static inline void lower_mv_precision(MV *mv, int allow_hp, int is_integer) {
89
6.82M
  if (is_integer) {
90
10.1k
    integer_mv_precision(mv);
91
6.81M
  } else {
92
6.81M
    if (!allow_hp) {
93
4.32M
      if (mv->row & 1) mv->row += (mv->row > 0 ? -1 : 1);
94
4.32M
      if (mv->col & 1) mv->col += (mv->col > 0 ? -1 : 1);
95
4.32M
    }
96
6.81M
  }
97
6.82M
}
Unexecuted instantiation: decodeframe.c:lower_mv_precision
decodemv.c:lower_mv_precision
Line
Count
Source
88
26.7k
static inline void lower_mv_precision(MV *mv, int allow_hp, int is_integer) {
89
26.7k
  if (is_integer) {
90
1.94k
    integer_mv_precision(mv);
91
24.8k
  } else {
92
24.8k
    if (!allow_hp) {
93
4.08k
      if (mv->row & 1) mv->row += (mv->row > 0 ? -1 : 1);
94
4.08k
      if (mv->col & 1) mv->col += (mv->col > 0 ? -1 : 1);
95
4.08k
    }
96
24.8k
  }
97
26.7k
}
Unexecuted instantiation: av1_cx_iface.c:lower_mv_precision
Unexecuted instantiation: allintra_vis.c:lower_mv_precision
Unexecuted instantiation: av1_quantize.c:lower_mv_precision
Unexecuted instantiation: bitstream.c:lower_mv_precision
Unexecuted instantiation: context_tree.c:lower_mv_precision
Unexecuted instantiation: encodeframe.c:lower_mv_precision
Unexecuted instantiation: encodeframe_utils.c:lower_mv_precision
Unexecuted instantiation: encodemb.c:lower_mv_precision
encodemv.c:lower_mv_precision
Line
Count
Source
88
3.17M
static inline void lower_mv_precision(MV *mv, int allow_hp, int is_integer) {
89
3.17M
  if (is_integer) {
90
0
    integer_mv_precision(mv);
91
3.17M
  } else {
92
3.17M
    if (!allow_hp) {
93
2.50M
      if (mv->row & 1) mv->row += (mv->row > 0 ? -1 : 1);
94
2.50M
      if (mv->col & 1) mv->col += (mv->col > 0 ? -1 : 1);
95
2.50M
    }
96
3.17M
  }
97
3.17M
}
Unexecuted instantiation: encoder.c:lower_mv_precision
Unexecuted instantiation: encoder_utils.c:lower_mv_precision
Unexecuted instantiation: encodetxb.c:lower_mv_precision
Unexecuted instantiation: ethread.c:lower_mv_precision
Unexecuted instantiation: firstpass.c:lower_mv_precision
Unexecuted instantiation: global_motion_facade.c:lower_mv_precision
Unexecuted instantiation: hash_motion.c:lower_mv_precision
Unexecuted instantiation: level.c:lower_mv_precision
Unexecuted instantiation: lookahead.c:lower_mv_precision
Unexecuted instantiation: mcomp.c:lower_mv_precision
Unexecuted instantiation: mv_prec.c:lower_mv_precision
Unexecuted instantiation: palette.c:lower_mv_precision
Unexecuted instantiation: partition_search.c:lower_mv_precision
Unexecuted instantiation: partition_strategy.c:lower_mv_precision
Unexecuted instantiation: pass2_strategy.c:lower_mv_precision
Unexecuted instantiation: pickcdef.c:lower_mv_precision
Unexecuted instantiation: picklpf.c:lower_mv_precision
Unexecuted instantiation: pickrst.c:lower_mv_precision
Unexecuted instantiation: ratectrl.c:lower_mv_precision
Unexecuted instantiation: rd.c:lower_mv_precision
rdopt.c:lower_mv_precision
Line
Count
Source
88
2.96M
static inline void lower_mv_precision(MV *mv, int allow_hp, int is_integer) {
89
2.96M
  if (is_integer) {
90
0
    integer_mv_precision(mv);
91
2.96M
  } else {
92
2.96M
    if (!allow_hp) {
93
1.47M
      if (mv->row & 1) mv->row += (mv->row > 0 ? -1 : 1);
94
1.47M
      if (mv->col & 1) mv->col += (mv->col > 0 ? -1 : 1);
95
1.47M
    }
96
2.96M
  }
97
2.96M
}
Unexecuted instantiation: nonrd_pickmode.c:lower_mv_precision
Unexecuted instantiation: nonrd_opt.c:lower_mv_precision
Unexecuted instantiation: reconinter_enc.c:lower_mv_precision
Unexecuted instantiation: segmentation.c:lower_mv_precision
Unexecuted instantiation: speed_features.c:lower_mv_precision
Unexecuted instantiation: superres_scale.c:lower_mv_precision
Unexecuted instantiation: svc_layercontext.c:lower_mv_precision
Unexecuted instantiation: temporal_filter.c:lower_mv_precision
Unexecuted instantiation: tokenize.c:lower_mv_precision
Unexecuted instantiation: tpl_model.c:lower_mv_precision
Unexecuted instantiation: tx_search.c:lower_mv_precision
Unexecuted instantiation: txb_rdopt.c:lower_mv_precision
Unexecuted instantiation: intra_mode_search.c:lower_mv_precision
Unexecuted instantiation: var_based_part.c:lower_mv_precision
Unexecuted instantiation: av1_noise_estimate.c:lower_mv_precision
Unexecuted instantiation: reconinter_enc_sse2.c:lower_mv_precision
mvref_common.c:lower_mv_precision
Line
Count
Source
88
655k
static inline void lower_mv_precision(MV *mv, int allow_hp, int is_integer) {
89
655k
  if (is_integer) {
90
8.22k
    integer_mv_precision(mv);
91
647k
  } else {
92
647k
    if (!allow_hp) {
93
337k
      if (mv->row & 1) mv->row += (mv->row > 0 ? -1 : 1);
94
337k
      if (mv->col & 1) mv->col += (mv->col > 0 ? -1 : 1);
95
337k
    }
96
647k
  }
97
655k
}
Unexecuted instantiation: pred_common.c:lower_mv_precision
Unexecuted instantiation: reconinter.c:lower_mv_precision
Unexecuted instantiation: aq_complexity.c:lower_mv_precision
Unexecuted instantiation: aq_cyclicrefresh.c:lower_mv_precision
Unexecuted instantiation: aq_variance.c:lower_mv_precision
Unexecuted instantiation: compound_type.c:lower_mv_precision
Unexecuted instantiation: encode_strategy.c:lower_mv_precision
Unexecuted instantiation: global_motion.c:lower_mv_precision
Unexecuted instantiation: gop_structure.c:lower_mv_precision
Unexecuted instantiation: interp_search.c:lower_mv_precision
Unexecuted instantiation: motion_search_facade.c:lower_mv_precision
Unexecuted instantiation: temporal_filter_sse2.c:lower_mv_precision
Unexecuted instantiation: highbd_temporal_filter_sse2.c:lower_mv_precision
Unexecuted instantiation: rdopt_sse4.c:lower_mv_precision
Unexecuted instantiation: pickrst_sse4.c:lower_mv_precision
Unexecuted instantiation: rdopt_avx2.c:lower_mv_precision
Unexecuted instantiation: temporal_filter_avx2.c:lower_mv_precision
Unexecuted instantiation: pickrst_avx2.c:lower_mv_precision
Unexecuted instantiation: highbd_temporal_filter_avx2.c:lower_mv_precision
98
99
6.07M
static inline int8_t get_uni_comp_ref_idx(const MV_REFERENCE_FRAME *const rf) {
100
  // Single ref pred
101
6.07M
  if (rf[1] <= INTRA_FRAME) return -1;
102
103
  // Bi-directional comp ref pred
104
6.07M
  if ((rf[0] < BWDREF_FRAME) && (rf[1] >= BWDREF_FRAME)) return -1;
105
106
8.23M
  for (int8_t ref_idx = 0; ref_idx < TOTAL_UNIDIR_COMP_REFS; ++ref_idx) {
107
8.23M
    if (rf[0] == comp_ref0(ref_idx) && rf[1] == comp_ref1(ref_idx))
108
2.74M
      return ref_idx;
109
8.23M
  }
110
18.4E
  return -1;
111
2.74M
}
Unexecuted instantiation: decodeframe.c:get_uni_comp_ref_idx
decodemv.c:get_uni_comp_ref_idx
Line
Count
Source
99
18.1k
static inline int8_t get_uni_comp_ref_idx(const MV_REFERENCE_FRAME *const rf) {
100
  // Single ref pred
101
18.1k
  if (rf[1] <= INTRA_FRAME) return -1;
102
103
  // Bi-directional comp ref pred
104
18.1k
  if ((rf[0] < BWDREF_FRAME) && (rf[1] >= BWDREF_FRAME)) return -1;
105
106
13.1k
  for (int8_t ref_idx = 0; ref_idx < TOTAL_UNIDIR_COMP_REFS; ++ref_idx) {
107
13.1k
    if (rf[0] == comp_ref0(ref_idx) && rf[1] == comp_ref1(ref_idx))
108
4.83k
      return ref_idx;
109
13.1k
  }
110
18.4E
  return -1;
111
4.83k
}
Unexecuted instantiation: av1_cx_iface.c:get_uni_comp_ref_idx
Unexecuted instantiation: allintra_vis.c:get_uni_comp_ref_idx
Unexecuted instantiation: av1_quantize.c:get_uni_comp_ref_idx
Unexecuted instantiation: bitstream.c:get_uni_comp_ref_idx
Unexecuted instantiation: context_tree.c:get_uni_comp_ref_idx
Unexecuted instantiation: encodeframe.c:get_uni_comp_ref_idx
encodeframe_utils.c:get_uni_comp_ref_idx
Line
Count
Source
99
4
static inline int8_t get_uni_comp_ref_idx(const MV_REFERENCE_FRAME *const rf) {
100
  // Single ref pred
101
4
  if (rf[1] <= INTRA_FRAME) return -1;
102
103
  // Bi-directional comp ref pred
104
4
  if ((rf[0] < BWDREF_FRAME) && (rf[1] >= BWDREF_FRAME)) return -1;
105
106
0
  for (int8_t ref_idx = 0; ref_idx < TOTAL_UNIDIR_COMP_REFS; ++ref_idx) {
107
0
    if (rf[0] == comp_ref0(ref_idx) && rf[1] == comp_ref1(ref_idx))
108
0
      return ref_idx;
109
0
  }
110
0
  return -1;
111
0
}
Unexecuted instantiation: encodemb.c:get_uni_comp_ref_idx
Unexecuted instantiation: encodemv.c:get_uni_comp_ref_idx
Unexecuted instantiation: encoder.c:get_uni_comp_ref_idx
Unexecuted instantiation: encoder_utils.c:get_uni_comp_ref_idx
Unexecuted instantiation: encodetxb.c:get_uni_comp_ref_idx
Unexecuted instantiation: ethread.c:get_uni_comp_ref_idx
Unexecuted instantiation: firstpass.c:get_uni_comp_ref_idx
Unexecuted instantiation: global_motion_facade.c:get_uni_comp_ref_idx
Unexecuted instantiation: hash_motion.c:get_uni_comp_ref_idx
Unexecuted instantiation: level.c:get_uni_comp_ref_idx
Unexecuted instantiation: lookahead.c:get_uni_comp_ref_idx
Unexecuted instantiation: mcomp.c:get_uni_comp_ref_idx
Unexecuted instantiation: mv_prec.c:get_uni_comp_ref_idx
Unexecuted instantiation: palette.c:get_uni_comp_ref_idx
partition_search.c:get_uni_comp_ref_idx
Line
Count
Source
99
8
static inline int8_t get_uni_comp_ref_idx(const MV_REFERENCE_FRAME *const rf) {
100
  // Single ref pred
101
8
  if (rf[1] <= INTRA_FRAME) return -1;
102
103
  // Bi-directional comp ref pred
104
8
  if ((rf[0] < BWDREF_FRAME) && (rf[1] >= BWDREF_FRAME)) return -1;
105
106
0
  for (int8_t ref_idx = 0; ref_idx < TOTAL_UNIDIR_COMP_REFS; ++ref_idx) {
107
0
    if (rf[0] == comp_ref0(ref_idx) && rf[1] == comp_ref1(ref_idx))
108
0
      return ref_idx;
109
0
  }
110
0
  return -1;
111
0
}
Unexecuted instantiation: partition_strategy.c:get_uni_comp_ref_idx
Unexecuted instantiation: pass2_strategy.c:get_uni_comp_ref_idx
Unexecuted instantiation: pickcdef.c:get_uni_comp_ref_idx
Unexecuted instantiation: picklpf.c:get_uni_comp_ref_idx
Unexecuted instantiation: pickrst.c:get_uni_comp_ref_idx
Unexecuted instantiation: ratectrl.c:get_uni_comp_ref_idx
Unexecuted instantiation: rd.c:get_uni_comp_ref_idx
rdopt.c:get_uni_comp_ref_idx
Line
Count
Source
99
6.04M
static inline int8_t get_uni_comp_ref_idx(const MV_REFERENCE_FRAME *const rf) {
100
  // Single ref pred
101
6.04M
  if (rf[1] <= INTRA_FRAME) return -1;
102
103
  // Bi-directional comp ref pred
104
6.04M
  if ((rf[0] < BWDREF_FRAME) && (rf[1] >= BWDREF_FRAME)) return -1;
105
106
8.22M
  for (int8_t ref_idx = 0; ref_idx < TOTAL_UNIDIR_COMP_REFS; ++ref_idx) {
107
8.22M
    if (rf[0] == comp_ref0(ref_idx) && rf[1] == comp_ref1(ref_idx))
108
2.74M
      return ref_idx;
109
8.22M
  }
110
18.4E
  return -1;
111
2.73M
}
nonrd_pickmode.c:get_uni_comp_ref_idx
Line
Count
Source
99
7.88k
static inline int8_t get_uni_comp_ref_idx(const MV_REFERENCE_FRAME *const rf) {
100
  // Single ref pred
101
7.88k
  if (rf[1] <= INTRA_FRAME) return -1;
102
103
  // Bi-directional comp ref pred
104
7.88k
  if ((rf[0] < BWDREF_FRAME) && (rf[1] >= BWDREF_FRAME)) return -1;
105
106
1
  for (int8_t ref_idx = 0; ref_idx < TOTAL_UNIDIR_COMP_REFS; ++ref_idx) {
107
0
    if (rf[0] == comp_ref0(ref_idx) && rf[1] == comp_ref1(ref_idx))
108
0
      return ref_idx;
109
0
  }
110
1
  return -1;
111
1
}
Unexecuted instantiation: nonrd_opt.c:get_uni_comp_ref_idx
Unexecuted instantiation: reconinter_enc.c:get_uni_comp_ref_idx
Unexecuted instantiation: segmentation.c:get_uni_comp_ref_idx
Unexecuted instantiation: speed_features.c:get_uni_comp_ref_idx
Unexecuted instantiation: superres_scale.c:get_uni_comp_ref_idx
Unexecuted instantiation: svc_layercontext.c:get_uni_comp_ref_idx
Unexecuted instantiation: temporal_filter.c:get_uni_comp_ref_idx
Unexecuted instantiation: tokenize.c:get_uni_comp_ref_idx
Unexecuted instantiation: tpl_model.c:get_uni_comp_ref_idx
Unexecuted instantiation: tx_search.c:get_uni_comp_ref_idx
Unexecuted instantiation: txb_rdopt.c:get_uni_comp_ref_idx
Unexecuted instantiation: intra_mode_search.c:get_uni_comp_ref_idx
Unexecuted instantiation: var_based_part.c:get_uni_comp_ref_idx
Unexecuted instantiation: av1_noise_estimate.c:get_uni_comp_ref_idx
Unexecuted instantiation: reconinter_enc_sse2.c:get_uni_comp_ref_idx
Unexecuted instantiation: mvref_common.c:get_uni_comp_ref_idx
Unexecuted instantiation: pred_common.c:get_uni_comp_ref_idx
Unexecuted instantiation: reconinter.c:get_uni_comp_ref_idx
Unexecuted instantiation: aq_complexity.c:get_uni_comp_ref_idx
Unexecuted instantiation: aq_cyclicrefresh.c:get_uni_comp_ref_idx
Unexecuted instantiation: aq_variance.c:get_uni_comp_ref_idx
Unexecuted instantiation: compound_type.c:get_uni_comp_ref_idx
Unexecuted instantiation: encode_strategy.c:get_uni_comp_ref_idx
Unexecuted instantiation: global_motion.c:get_uni_comp_ref_idx
Unexecuted instantiation: gop_structure.c:get_uni_comp_ref_idx
Unexecuted instantiation: interp_search.c:get_uni_comp_ref_idx
Unexecuted instantiation: motion_search_facade.c:get_uni_comp_ref_idx
Unexecuted instantiation: temporal_filter_sse2.c:get_uni_comp_ref_idx
Unexecuted instantiation: highbd_temporal_filter_sse2.c:get_uni_comp_ref_idx
Unexecuted instantiation: rdopt_sse4.c:get_uni_comp_ref_idx
Unexecuted instantiation: pickrst_sse4.c:get_uni_comp_ref_idx
Unexecuted instantiation: rdopt_avx2.c:get_uni_comp_ref_idx
Unexecuted instantiation: temporal_filter_avx2.c:get_uni_comp_ref_idx
Unexecuted instantiation: pickrst_avx2.c:get_uni_comp_ref_idx
Unexecuted instantiation: highbd_temporal_filter_avx2.c:get_uni_comp_ref_idx
112
113
151M
static inline int8_t av1_ref_frame_type(const MV_REFERENCE_FRAME *const rf) {
114
151M
  if (rf[1] > INTRA_FRAME) {
115
6.07M
    const int8_t uni_comp_ref_idx = get_uni_comp_ref_idx(rf);
116
6.07M
    if (uni_comp_ref_idx >= 0) {
117
2.74M
      assert((REF_FRAMES + FWD_REFS * BWD_REFS + uni_comp_ref_idx) <
118
2.74M
             MODE_CTX_REF_FRAMES);
119
2.74M
      return REF_FRAMES + FWD_REFS * BWD_REFS + uni_comp_ref_idx;
120
3.32M
    } else {
121
3.32M
      return REF_FRAMES + FWD_RF_OFFSET(rf[0]) +
122
3.32M
             BWD_RF_OFFSET(rf[1]) * FWD_REFS;
123
3.32M
    }
124
6.07M
  }
125
126
145M
  return rf[0];
127
151M
}
Unexecuted instantiation: decodeframe.c:av1_ref_frame_type
decodemv.c:av1_ref_frame_type
Line
Count
Source
113
514k
static inline int8_t av1_ref_frame_type(const MV_REFERENCE_FRAME *const rf) {
114
514k
  if (rf[1] > INTRA_FRAME) {
115
18.1k
    const int8_t uni_comp_ref_idx = get_uni_comp_ref_idx(rf);
116
18.1k
    if (uni_comp_ref_idx >= 0) {
117
4.83k
      assert((REF_FRAMES + FWD_REFS * BWD_REFS + uni_comp_ref_idx) <
118
4.83k
             MODE_CTX_REF_FRAMES);
119
4.83k
      return REF_FRAMES + FWD_REFS * BWD_REFS + uni_comp_ref_idx;
120
13.2k
    } else {
121
13.2k
      return REF_FRAMES + FWD_RF_OFFSET(rf[0]) +
122
13.2k
             BWD_RF_OFFSET(rf[1]) * FWD_REFS;
123
13.2k
    }
124
18.1k
  }
125
126
496k
  return rf[0];
127
514k
}
Unexecuted instantiation: av1_cx_iface.c:av1_ref_frame_type
Unexecuted instantiation: allintra_vis.c:av1_ref_frame_type
Unexecuted instantiation: av1_quantize.c:av1_ref_frame_type
bitstream.c:av1_ref_frame_type
Line
Count
Source
113
286k
static inline int8_t av1_ref_frame_type(const MV_REFERENCE_FRAME *const rf) {
114
286k
  if (rf[1] > INTRA_FRAME) {
115
0
    const int8_t uni_comp_ref_idx = get_uni_comp_ref_idx(rf);
116
0
    if (uni_comp_ref_idx >= 0) {
117
0
      assert((REF_FRAMES + FWD_REFS * BWD_REFS + uni_comp_ref_idx) <
118
0
             MODE_CTX_REF_FRAMES);
119
0
      return REF_FRAMES + FWD_REFS * BWD_REFS + uni_comp_ref_idx;
120
0
    } else {
121
0
      return REF_FRAMES + FWD_RF_OFFSET(rf[0]) +
122
0
             BWD_RF_OFFSET(rf[1]) * FWD_REFS;
123
0
    }
124
0
  }
125
126
286k
  return rf[0];
127
286k
}
Unexecuted instantiation: context_tree.c:av1_ref_frame_type
Unexecuted instantiation: encodeframe.c:av1_ref_frame_type
encodeframe_utils.c:av1_ref_frame_type
Line
Count
Source
113
36.5M
static inline int8_t av1_ref_frame_type(const MV_REFERENCE_FRAME *const rf) {
114
36.5M
  if (rf[1] > INTRA_FRAME) {
115
4
    const int8_t uni_comp_ref_idx = get_uni_comp_ref_idx(rf);
116
4
    if (uni_comp_ref_idx >= 0) {
117
0
      assert((REF_FRAMES + FWD_REFS * BWD_REFS + uni_comp_ref_idx) <
118
0
             MODE_CTX_REF_FRAMES);
119
0
      return REF_FRAMES + FWD_REFS * BWD_REFS + uni_comp_ref_idx;
120
4
    } else {
121
4
      return REF_FRAMES + FWD_RF_OFFSET(rf[0]) +
122
4
             BWD_RF_OFFSET(rf[1]) * FWD_REFS;
123
4
    }
124
4
  }
125
126
36.5M
  return rf[0];
127
36.5M
}
Unexecuted instantiation: encodemb.c:av1_ref_frame_type
encodemv.c:av1_ref_frame_type
Line
Count
Source
113
14.3M
static inline int8_t av1_ref_frame_type(const MV_REFERENCE_FRAME *const rf) {
114
14.3M
  if (rf[1] > INTRA_FRAME) {
115
0
    const int8_t uni_comp_ref_idx = get_uni_comp_ref_idx(rf);
116
0
    if (uni_comp_ref_idx >= 0) {
117
0
      assert((REF_FRAMES + FWD_REFS * BWD_REFS + uni_comp_ref_idx) <
118
0
             MODE_CTX_REF_FRAMES);
119
0
      return REF_FRAMES + FWD_REFS * BWD_REFS + uni_comp_ref_idx;
120
0
    } else {
121
0
      return REF_FRAMES + FWD_RF_OFFSET(rf[0]) +
122
0
             BWD_RF_OFFSET(rf[1]) * FWD_REFS;
123
0
    }
124
0
  }
125
126
14.3M
  return rf[0];
127
14.3M
}
Unexecuted instantiation: encoder.c:av1_ref_frame_type
Unexecuted instantiation: encoder_utils.c:av1_ref_frame_type
Unexecuted instantiation: encodetxb.c:av1_ref_frame_type
Unexecuted instantiation: ethread.c:av1_ref_frame_type
Unexecuted instantiation: firstpass.c:av1_ref_frame_type
Unexecuted instantiation: global_motion_facade.c:av1_ref_frame_type
Unexecuted instantiation: hash_motion.c:av1_ref_frame_type
Unexecuted instantiation: level.c:av1_ref_frame_type
Unexecuted instantiation: lookahead.c:av1_ref_frame_type
Unexecuted instantiation: mcomp.c:av1_ref_frame_type
Unexecuted instantiation: mv_prec.c:av1_ref_frame_type
Unexecuted instantiation: palette.c:av1_ref_frame_type
partition_search.c:av1_ref_frame_type
Line
Count
Source
113
37.9M
static inline int8_t av1_ref_frame_type(const MV_REFERENCE_FRAME *const rf) {
114
37.9M
  if (rf[1] > INTRA_FRAME) {
115
8
    const int8_t uni_comp_ref_idx = get_uni_comp_ref_idx(rf);
116
8
    if (uni_comp_ref_idx >= 0) {
117
0
      assert((REF_FRAMES + FWD_REFS * BWD_REFS + uni_comp_ref_idx) <
118
0
             MODE_CTX_REF_FRAMES);
119
0
      return REF_FRAMES + FWD_REFS * BWD_REFS + uni_comp_ref_idx;
120
8
    } else {
121
8
      return REF_FRAMES + FWD_RF_OFFSET(rf[0]) +
122
8
             BWD_RF_OFFSET(rf[1]) * FWD_REFS;
123
8
    }
124
8
  }
125
126
37.9M
  return rf[0];
127
37.9M
}
Unexecuted instantiation: partition_strategy.c:av1_ref_frame_type
Unexecuted instantiation: pass2_strategy.c:av1_ref_frame_type
Unexecuted instantiation: pickcdef.c:av1_ref_frame_type
Unexecuted instantiation: picklpf.c:av1_ref_frame_type
Unexecuted instantiation: pickrst.c:av1_ref_frame_type
Unexecuted instantiation: ratectrl.c:av1_ref_frame_type
Unexecuted instantiation: rd.c:av1_ref_frame_type
rdopt.c:av1_ref_frame_type
Line
Count
Source
113
58.6M
static inline int8_t av1_ref_frame_type(const MV_REFERENCE_FRAME *const rf) {
114
58.6M
  if (rf[1] > INTRA_FRAME) {
115
6.04M
    const int8_t uni_comp_ref_idx = get_uni_comp_ref_idx(rf);
116
6.04M
    if (uni_comp_ref_idx >= 0) {
117
2.74M
      assert((REF_FRAMES + FWD_REFS * BWD_REFS + uni_comp_ref_idx) <
118
2.74M
             MODE_CTX_REF_FRAMES);
119
2.74M
      return REF_FRAMES + FWD_REFS * BWD_REFS + uni_comp_ref_idx;
120
3.30M
    } else {
121
3.30M
      return REF_FRAMES + FWD_RF_OFFSET(rf[0]) +
122
3.30M
             BWD_RF_OFFSET(rf[1]) * FWD_REFS;
123
3.30M
    }
124
6.04M
  }
125
126
52.5M
  return rf[0];
127
58.6M
}
nonrd_pickmode.c:av1_ref_frame_type
Line
Count
Source
113
3.48M
static inline int8_t av1_ref_frame_type(const MV_REFERENCE_FRAME *const rf) {
114
3.48M
  if (rf[1] > INTRA_FRAME) {
115
7.88k
    const int8_t uni_comp_ref_idx = get_uni_comp_ref_idx(rf);
116
7.88k
    if (uni_comp_ref_idx >= 0) {
117
0
      assert((REF_FRAMES + FWD_REFS * BWD_REFS + uni_comp_ref_idx) <
118
0
             MODE_CTX_REF_FRAMES);
119
0
      return REF_FRAMES + FWD_REFS * BWD_REFS + uni_comp_ref_idx;
120
7.88k
    } else {
121
7.88k
      return REF_FRAMES + FWD_RF_OFFSET(rf[0]) +
122
7.88k
             BWD_RF_OFFSET(rf[1]) * FWD_REFS;
123
7.88k
    }
124
7.88k
  }
125
126
3.47M
  return rf[0];
127
3.48M
}
Unexecuted instantiation: nonrd_opt.c:av1_ref_frame_type
Unexecuted instantiation: reconinter_enc.c:av1_ref_frame_type
Unexecuted instantiation: segmentation.c:av1_ref_frame_type
Unexecuted instantiation: speed_features.c:av1_ref_frame_type
Unexecuted instantiation: superres_scale.c:av1_ref_frame_type
Unexecuted instantiation: svc_layercontext.c:av1_ref_frame_type
Unexecuted instantiation: temporal_filter.c:av1_ref_frame_type
Unexecuted instantiation: tokenize.c:av1_ref_frame_type
Unexecuted instantiation: tpl_model.c:av1_ref_frame_type
Unexecuted instantiation: tx_search.c:av1_ref_frame_type
Unexecuted instantiation: txb_rdopt.c:av1_ref_frame_type
Unexecuted instantiation: intra_mode_search.c:av1_ref_frame_type
Unexecuted instantiation: var_based_part.c:av1_ref_frame_type
Unexecuted instantiation: av1_noise_estimate.c:av1_ref_frame_type
Unexecuted instantiation: reconinter_enc_sse2.c:av1_ref_frame_type
Unexecuted instantiation: mvref_common.c:av1_ref_frame_type
Unexecuted instantiation: pred_common.c:av1_ref_frame_type
Unexecuted instantiation: reconinter.c:av1_ref_frame_type
Unexecuted instantiation: aq_complexity.c:av1_ref_frame_type
Unexecuted instantiation: aq_cyclicrefresh.c:av1_ref_frame_type
Unexecuted instantiation: aq_variance.c:av1_ref_frame_type
Unexecuted instantiation: compound_type.c:av1_ref_frame_type
Unexecuted instantiation: encode_strategy.c:av1_ref_frame_type
Unexecuted instantiation: global_motion.c:av1_ref_frame_type
Unexecuted instantiation: gop_structure.c:av1_ref_frame_type
Unexecuted instantiation: interp_search.c:av1_ref_frame_type
Unexecuted instantiation: motion_search_facade.c:av1_ref_frame_type
Unexecuted instantiation: temporal_filter_sse2.c:av1_ref_frame_type
Unexecuted instantiation: highbd_temporal_filter_sse2.c:av1_ref_frame_type
Unexecuted instantiation: rdopt_sse4.c:av1_ref_frame_type
Unexecuted instantiation: pickrst_sse4.c:av1_ref_frame_type
Unexecuted instantiation: rdopt_avx2.c:av1_ref_frame_type
Unexecuted instantiation: temporal_filter_avx2.c:av1_ref_frame_type
Unexecuted instantiation: pickrst_avx2.c:av1_ref_frame_type
Unexecuted instantiation: highbd_temporal_filter_avx2.c:av1_ref_frame_type
128
129
// clang-format off
130
static MV_REFERENCE_FRAME ref_frame_map[TOTAL_COMP_REFS][2] = {
131
  { LAST_FRAME, BWDREF_FRAME },  { LAST2_FRAME, BWDREF_FRAME },
132
  { LAST3_FRAME, BWDREF_FRAME }, { GOLDEN_FRAME, BWDREF_FRAME },
133
134
  { LAST_FRAME, ALTREF2_FRAME },  { LAST2_FRAME, ALTREF2_FRAME },
135
  { LAST3_FRAME, ALTREF2_FRAME }, { GOLDEN_FRAME, ALTREF2_FRAME },
136
137
  { LAST_FRAME, ALTREF_FRAME },  { LAST2_FRAME, ALTREF_FRAME },
138
  { LAST3_FRAME, ALTREF_FRAME }, { GOLDEN_FRAME, ALTREF_FRAME },
139
140
  { LAST_FRAME, LAST2_FRAME }, { LAST_FRAME, LAST3_FRAME },
141
  { LAST_FRAME, GOLDEN_FRAME }, { BWDREF_FRAME, ALTREF_FRAME },
142
143
  // NOTE: Following reference frame pairs are not supported to be explicitly
144
  //       signalled, but they are possibly chosen by the use of skip_mode,
145
  //       which may use the most recent one-sided reference frame pair.
146
  { LAST2_FRAME, LAST3_FRAME }, { LAST2_FRAME, GOLDEN_FRAME },
147
  { LAST3_FRAME, GOLDEN_FRAME }, {BWDREF_FRAME, ALTREF2_FRAME},
148
  { ALTREF2_FRAME, ALTREF_FRAME }
149
};
150
// clang-format on
151
152
static inline void av1_set_ref_frame(MV_REFERENCE_FRAME *rf,
153
16.8M
                                     MV_REFERENCE_FRAME ref_frame_type) {
154
16.8M
  if (ref_frame_type >= REF_FRAMES) {
155
7.35M
    rf[0] = ref_frame_map[ref_frame_type - REF_FRAMES][0];
156
7.35M
    rf[1] = ref_frame_map[ref_frame_type - REF_FRAMES][1];
157
9.52M
  } else {
158
9.52M
    assert(ref_frame_type > NONE_FRAME);
159
9.52M
    rf[0] = ref_frame_type;
160
9.52M
    rf[1] = NONE_FRAME;
161
9.52M
  }
162
16.8M
}
Unexecuted instantiation: decodeframe.c:av1_set_ref_frame
Unexecuted instantiation: decodemv.c:av1_set_ref_frame
Unexecuted instantiation: av1_cx_iface.c:av1_set_ref_frame
Unexecuted instantiation: allintra_vis.c:av1_set_ref_frame
Unexecuted instantiation: av1_quantize.c:av1_set_ref_frame
Unexecuted instantiation: bitstream.c:av1_set_ref_frame
Unexecuted instantiation: context_tree.c:av1_set_ref_frame
encodeframe.c:av1_set_ref_frame
Line
Count
Source
153
531k
                                     MV_REFERENCE_FRAME ref_frame_type) {
154
531k
  if (ref_frame_type >= REF_FRAMES) {
155
531k
    rf[0] = ref_frame_map[ref_frame_type - REF_FRAMES][0];
156
531k
    rf[1] = ref_frame_map[ref_frame_type - REF_FRAMES][1];
157
531k
  } else {
158
    assert(ref_frame_type > NONE_FRAME);
159
0
    rf[0] = ref_frame_type;
160
0
    rf[1] = NONE_FRAME;
161
0
  }
162
531k
}
Unexecuted instantiation: encodeframe_utils.c:av1_set_ref_frame
Unexecuted instantiation: encodemb.c:av1_set_ref_frame
Unexecuted instantiation: encodemv.c:av1_set_ref_frame
Unexecuted instantiation: encoder.c:av1_set_ref_frame
Unexecuted instantiation: encoder_utils.c:av1_set_ref_frame
Unexecuted instantiation: encodetxb.c:av1_set_ref_frame
Unexecuted instantiation: ethread.c:av1_set_ref_frame
Unexecuted instantiation: firstpass.c:av1_set_ref_frame
Unexecuted instantiation: global_motion_facade.c:av1_set_ref_frame
Unexecuted instantiation: hash_motion.c:av1_set_ref_frame
Unexecuted instantiation: level.c:av1_set_ref_frame
Unexecuted instantiation: lookahead.c:av1_set_ref_frame
Unexecuted instantiation: mcomp.c:av1_set_ref_frame
Unexecuted instantiation: mv_prec.c:av1_set_ref_frame
Unexecuted instantiation: palette.c:av1_set_ref_frame
Unexecuted instantiation: partition_search.c:av1_set_ref_frame
Unexecuted instantiation: partition_strategy.c:av1_set_ref_frame
Unexecuted instantiation: pass2_strategy.c:av1_set_ref_frame
Unexecuted instantiation: pickcdef.c:av1_set_ref_frame
Unexecuted instantiation: picklpf.c:av1_set_ref_frame
Unexecuted instantiation: pickrst.c:av1_set_ref_frame
Unexecuted instantiation: ratectrl.c:av1_set_ref_frame
Unexecuted instantiation: rd.c:av1_set_ref_frame
rdopt.c:av1_set_ref_frame
Line
Count
Source
153
12.6M
                                     MV_REFERENCE_FRAME ref_frame_type) {
154
12.6M
  if (ref_frame_type >= REF_FRAMES) {
155
6.80M
    rf[0] = ref_frame_map[ref_frame_type - REF_FRAMES][0];
156
6.80M
    rf[1] = ref_frame_map[ref_frame_type - REF_FRAMES][1];
157
6.80M
  } else {
158
    assert(ref_frame_type > NONE_FRAME);
159
5.86M
    rf[0] = ref_frame_type;
160
5.86M
    rf[1] = NONE_FRAME;
161
5.86M
  }
162
12.6M
}
Unexecuted instantiation: nonrd_pickmode.c:av1_set_ref_frame
Unexecuted instantiation: nonrd_opt.c:av1_set_ref_frame
Unexecuted instantiation: reconinter_enc.c:av1_set_ref_frame
Unexecuted instantiation: segmentation.c:av1_set_ref_frame
Unexecuted instantiation: speed_features.c:av1_set_ref_frame
Unexecuted instantiation: superres_scale.c:av1_set_ref_frame
Unexecuted instantiation: svc_layercontext.c:av1_set_ref_frame
Unexecuted instantiation: temporal_filter.c:av1_set_ref_frame
Unexecuted instantiation: tokenize.c:av1_set_ref_frame
Unexecuted instantiation: tpl_model.c:av1_set_ref_frame
Unexecuted instantiation: tx_search.c:av1_set_ref_frame
Unexecuted instantiation: txb_rdopt.c:av1_set_ref_frame
Unexecuted instantiation: intra_mode_search.c:av1_set_ref_frame
Unexecuted instantiation: var_based_part.c:av1_set_ref_frame
Unexecuted instantiation: av1_noise_estimate.c:av1_set_ref_frame
Unexecuted instantiation: reconinter_enc_sse2.c:av1_set_ref_frame
mvref_common.c:av1_set_ref_frame
Line
Count
Source
153
3.67M
                                     MV_REFERENCE_FRAME ref_frame_type) {
154
3.67M
  if (ref_frame_type >= REF_FRAMES) {
155
21.7k
    rf[0] = ref_frame_map[ref_frame_type - REF_FRAMES][0];
156
21.7k
    rf[1] = ref_frame_map[ref_frame_type - REF_FRAMES][1];
157
3.65M
  } else {
158
    assert(ref_frame_type > NONE_FRAME);
159
3.65M
    rf[0] = ref_frame_type;
160
3.65M
    rf[1] = NONE_FRAME;
161
3.65M
  }
162
3.67M
}
Unexecuted instantiation: pred_common.c:av1_set_ref_frame
Unexecuted instantiation: reconinter.c:av1_set_ref_frame
Unexecuted instantiation: aq_complexity.c:av1_set_ref_frame
Unexecuted instantiation: aq_cyclicrefresh.c:av1_set_ref_frame
Unexecuted instantiation: aq_variance.c:av1_set_ref_frame
Unexecuted instantiation: compound_type.c:av1_set_ref_frame
Unexecuted instantiation: encode_strategy.c:av1_set_ref_frame
Unexecuted instantiation: global_motion.c:av1_set_ref_frame
Unexecuted instantiation: gop_structure.c:av1_set_ref_frame
Unexecuted instantiation: interp_search.c:av1_set_ref_frame
Unexecuted instantiation: motion_search_facade.c:av1_set_ref_frame
Unexecuted instantiation: temporal_filter_sse2.c:av1_set_ref_frame
Unexecuted instantiation: highbd_temporal_filter_sse2.c:av1_set_ref_frame
Unexecuted instantiation: rdopt_sse4.c:av1_set_ref_frame
Unexecuted instantiation: pickrst_sse4.c:av1_set_ref_frame
Unexecuted instantiation: rdopt_avx2.c:av1_set_ref_frame
Unexecuted instantiation: temporal_filter_avx2.c:av1_set_ref_frame
Unexecuted instantiation: pickrst_avx2.c:av1_set_ref_frame
Unexecuted instantiation: highbd_temporal_filter_avx2.c:av1_set_ref_frame
163
164
static uint16_t compound_mode_ctx_map[3][COMP_NEWMV_CTXS] = {
165
  { 0, 1, 1, 1, 1 },
166
  { 1, 2, 3, 4, 4 },
167
  { 4, 4, 5, 6, 7 },
168
};
169
170
static inline int16_t av1_mode_context_analyzer(
171
7.57M
    const int16_t *const mode_context, const MV_REFERENCE_FRAME *const rf) {
172
7.57M
  const int8_t ref_frame = av1_ref_frame_type(rf);
173
174
7.57M
  if (rf[1] <= INTRA_FRAME) return mode_context[ref_frame];
175
176
10.4k
  const int16_t newmv_ctx = mode_context[ref_frame] & NEWMV_CTX_MASK;
177
10.4k
  const int16_t refmv_ctx =
178
10.4k
      (mode_context[ref_frame] >> REFMV_OFFSET) & REFMV_CTX_MASK;
179
180
10.4k
  const int16_t comp_ctx = compound_mode_ctx_map[refmv_ctx >> 1][AOMMIN(
181
10.4k
      newmv_ctx, COMP_NEWMV_CTXS - 1)];
182
10.4k
  return comp_ctx;
183
7.57M
}
Unexecuted instantiation: decodeframe.c:av1_mode_context_analyzer
decodemv.c:av1_mode_context_analyzer
Line
Count
Source
171
197k
    const int16_t *const mode_context, const MV_REFERENCE_FRAME *const rf) {
172
197k
  const int8_t ref_frame = av1_ref_frame_type(rf);
173
174
197k
  if (rf[1] <= INTRA_FRAME) return mode_context[ref_frame];
175
176
7.42k
  const int16_t newmv_ctx = mode_context[ref_frame] & NEWMV_CTX_MASK;
177
7.42k
  const int16_t refmv_ctx =
178
7.42k
      (mode_context[ref_frame] >> REFMV_OFFSET) & REFMV_CTX_MASK;
179
180
7.42k
  const int16_t comp_ctx = compound_mode_ctx_map[refmv_ctx >> 1][AOMMIN(
181
7.42k
      newmv_ctx, COMP_NEWMV_CTXS - 1)];
182
7.42k
  return comp_ctx;
183
197k
}
Unexecuted instantiation: av1_cx_iface.c:av1_mode_context_analyzer
Unexecuted instantiation: allintra_vis.c:av1_mode_context_analyzer
Unexecuted instantiation: av1_quantize.c:av1_mode_context_analyzer
Unexecuted instantiation: bitstream.c:av1_mode_context_analyzer
Unexecuted instantiation: context_tree.c:av1_mode_context_analyzer
Unexecuted instantiation: encodeframe.c:av1_mode_context_analyzer
Unexecuted instantiation: encodeframe_utils.c:av1_mode_context_analyzer
Unexecuted instantiation: encodemb.c:av1_mode_context_analyzer
Unexecuted instantiation: encodemv.c:av1_mode_context_analyzer
Unexecuted instantiation: encoder.c:av1_mode_context_analyzer
Unexecuted instantiation: encoder_utils.c:av1_mode_context_analyzer
Unexecuted instantiation: encodetxb.c:av1_mode_context_analyzer
Unexecuted instantiation: ethread.c:av1_mode_context_analyzer
Unexecuted instantiation: firstpass.c:av1_mode_context_analyzer
Unexecuted instantiation: global_motion_facade.c:av1_mode_context_analyzer
Unexecuted instantiation: hash_motion.c:av1_mode_context_analyzer
Unexecuted instantiation: level.c:av1_mode_context_analyzer
Unexecuted instantiation: lookahead.c:av1_mode_context_analyzer
Unexecuted instantiation: mcomp.c:av1_mode_context_analyzer
Unexecuted instantiation: mv_prec.c:av1_mode_context_analyzer
Unexecuted instantiation: palette.c:av1_mode_context_analyzer
partition_search.c:av1_mode_context_analyzer
Line
Count
Source
171
519k
    const int16_t *const mode_context, const MV_REFERENCE_FRAME *const rf) {
172
519k
  const int8_t ref_frame = av1_ref_frame_type(rf);
173
174
519k
  if (rf[1] <= INTRA_FRAME) return mode_context[ref_frame];
175
176
31
  const int16_t newmv_ctx = mode_context[ref_frame] & NEWMV_CTX_MASK;
177
31
  const int16_t refmv_ctx =
178
31
      (mode_context[ref_frame] >> REFMV_OFFSET) & REFMV_CTX_MASK;
179
180
31
  const int16_t comp_ctx = compound_mode_ctx_map[refmv_ctx >> 1][AOMMIN(
181
31
      newmv_ctx, COMP_NEWMV_CTXS - 1)];
182
31
  return comp_ctx;
183
519k
}
Unexecuted instantiation: partition_strategy.c:av1_mode_context_analyzer
Unexecuted instantiation: pass2_strategy.c:av1_mode_context_analyzer
Unexecuted instantiation: pickcdef.c:av1_mode_context_analyzer
Unexecuted instantiation: picklpf.c:av1_mode_context_analyzer
Unexecuted instantiation: pickrst.c:av1_mode_context_analyzer
Unexecuted instantiation: ratectrl.c:av1_mode_context_analyzer
Unexecuted instantiation: rd.c:av1_mode_context_analyzer
rdopt.c:av1_mode_context_analyzer
Line
Count
Source
171
5.40M
    const int16_t *const mode_context, const MV_REFERENCE_FRAME *const rf) {
172
5.40M
  const int8_t ref_frame = av1_ref_frame_type(rf);
173
174
5.40M
  if (rf[1] <= INTRA_FRAME) return mode_context[ref_frame];
175
176
1.46k
  const int16_t newmv_ctx = mode_context[ref_frame] & NEWMV_CTX_MASK;
177
1.46k
  const int16_t refmv_ctx =
178
1.46k
      (mode_context[ref_frame] >> REFMV_OFFSET) & REFMV_CTX_MASK;
179
180
1.46k
  const int16_t comp_ctx = compound_mode_ctx_map[refmv_ctx >> 1][AOMMIN(
181
1.46k
      newmv_ctx, COMP_NEWMV_CTXS - 1)];
182
1.46k
  return comp_ctx;
183
5.40M
}
nonrd_pickmode.c:av1_mode_context_analyzer
Line
Count
Source
171
1.45M
    const int16_t *const mode_context, const MV_REFERENCE_FRAME *const rf) {
172
1.45M
  const int8_t ref_frame = av1_ref_frame_type(rf);
173
174
1.45M
  if (rf[1] <= INTRA_FRAME) return mode_context[ref_frame];
175
176
1.54k
  const int16_t newmv_ctx = mode_context[ref_frame] & NEWMV_CTX_MASK;
177
1.54k
  const int16_t refmv_ctx =
178
1.54k
      (mode_context[ref_frame] >> REFMV_OFFSET) & REFMV_CTX_MASK;
179
180
1.54k
  const int16_t comp_ctx = compound_mode_ctx_map[refmv_ctx >> 1][AOMMIN(
181
1.54k
      newmv_ctx, COMP_NEWMV_CTXS - 1)];
182
1.54k
  return comp_ctx;
183
1.45M
}
Unexecuted instantiation: nonrd_opt.c:av1_mode_context_analyzer
Unexecuted instantiation: reconinter_enc.c:av1_mode_context_analyzer
Unexecuted instantiation: segmentation.c:av1_mode_context_analyzer
Unexecuted instantiation: speed_features.c:av1_mode_context_analyzer
Unexecuted instantiation: superres_scale.c:av1_mode_context_analyzer
Unexecuted instantiation: svc_layercontext.c:av1_mode_context_analyzer
Unexecuted instantiation: temporal_filter.c:av1_mode_context_analyzer
Unexecuted instantiation: tokenize.c:av1_mode_context_analyzer
Unexecuted instantiation: tpl_model.c:av1_mode_context_analyzer
Unexecuted instantiation: tx_search.c:av1_mode_context_analyzer
Unexecuted instantiation: txb_rdopt.c:av1_mode_context_analyzer
Unexecuted instantiation: intra_mode_search.c:av1_mode_context_analyzer
Unexecuted instantiation: var_based_part.c:av1_mode_context_analyzer
Unexecuted instantiation: av1_noise_estimate.c:av1_mode_context_analyzer
Unexecuted instantiation: reconinter_enc_sse2.c:av1_mode_context_analyzer
Unexecuted instantiation: mvref_common.c:av1_mode_context_analyzer
Unexecuted instantiation: pred_common.c:av1_mode_context_analyzer
Unexecuted instantiation: reconinter.c:av1_mode_context_analyzer
Unexecuted instantiation: aq_complexity.c:av1_mode_context_analyzer
Unexecuted instantiation: aq_cyclicrefresh.c:av1_mode_context_analyzer
Unexecuted instantiation: aq_variance.c:av1_mode_context_analyzer
Unexecuted instantiation: compound_type.c:av1_mode_context_analyzer
Unexecuted instantiation: encode_strategy.c:av1_mode_context_analyzer
Unexecuted instantiation: global_motion.c:av1_mode_context_analyzer
Unexecuted instantiation: gop_structure.c:av1_mode_context_analyzer
Unexecuted instantiation: interp_search.c:av1_mode_context_analyzer
Unexecuted instantiation: motion_search_facade.c:av1_mode_context_analyzer
Unexecuted instantiation: temporal_filter_sse2.c:av1_mode_context_analyzer
Unexecuted instantiation: highbd_temporal_filter_sse2.c:av1_mode_context_analyzer
Unexecuted instantiation: rdopt_sse4.c:av1_mode_context_analyzer
Unexecuted instantiation: pickrst_sse4.c:av1_mode_context_analyzer
Unexecuted instantiation: rdopt_avx2.c:av1_mode_context_analyzer
Unexecuted instantiation: temporal_filter_avx2.c:av1_mode_context_analyzer
Unexecuted instantiation: pickrst_avx2.c:av1_mode_context_analyzer
Unexecuted instantiation: highbd_temporal_filter_avx2.c:av1_mode_context_analyzer
184
185
3.15M
static inline uint8_t av1_drl_ctx(const uint16_t *ref_mv_weight, int ref_idx) {
186
3.15M
  if (ref_mv_weight[ref_idx] >= REF_CAT_LEVEL &&
187
2.08M
      ref_mv_weight[ref_idx + 1] >= REF_CAT_LEVEL)
188
723k
    return 0;
189
190
2.42M
  if (ref_mv_weight[ref_idx] >= REF_CAT_LEVEL &&
191
1.36M
      ref_mv_weight[ref_idx + 1] < REF_CAT_LEVEL)
192
1.36M
    return 1;
193
194
1.06M
  if (ref_mv_weight[ref_idx] < REF_CAT_LEVEL &&
195
1.07M
      ref_mv_weight[ref_idx + 1] < REF_CAT_LEVEL)
196
1.07M
    return 2;
197
198
18.4E
  return 0;
199
1.06M
}
Unexecuted instantiation: decodeframe.c:av1_drl_ctx
decodemv.c:av1_drl_ctx
Line
Count
Source
185
71.9k
static inline uint8_t av1_drl_ctx(const uint16_t *ref_mv_weight, int ref_idx) {
186
71.9k
  if (ref_mv_weight[ref_idx] >= REF_CAT_LEVEL &&
187
58.4k
      ref_mv_weight[ref_idx + 1] >= REF_CAT_LEVEL)
188
22.7k
    return 0;
189
190
49.1k
  if (ref_mv_weight[ref_idx] >= REF_CAT_LEVEL &&
191
35.9k
      ref_mv_weight[ref_idx + 1] < REF_CAT_LEVEL)
192
35.9k
    return 1;
193
194
13.1k
  if (ref_mv_weight[ref_idx] < REF_CAT_LEVEL &&
195
13.6k
      ref_mv_weight[ref_idx + 1] < REF_CAT_LEVEL)
196
13.6k
    return 2;
197
198
18.4E
  return 0;
199
13.1k
}
Unexecuted instantiation: av1_cx_iface.c:av1_drl_ctx
Unexecuted instantiation: allintra_vis.c:av1_drl_ctx
Unexecuted instantiation: av1_quantize.c:av1_drl_ctx
bitstream.c:av1_drl_ctx
Line
Count
Source
185
196k
static inline uint8_t av1_drl_ctx(const uint16_t *ref_mv_weight, int ref_idx) {
186
196k
  if (ref_mv_weight[ref_idx] >= REF_CAT_LEVEL &&
187
159k
      ref_mv_weight[ref_idx + 1] >= REF_CAT_LEVEL)
188
60.6k
    return 0;
189
190
136k
  if (ref_mv_weight[ref_idx] >= REF_CAT_LEVEL &&
191
100k
      ref_mv_weight[ref_idx + 1] < REF_CAT_LEVEL)
192
100k
    return 1;
193
194
35.9k
  if (ref_mv_weight[ref_idx] < REF_CAT_LEVEL &&
195
37.1k
      ref_mv_weight[ref_idx + 1] < REF_CAT_LEVEL)
196
37.1k
    return 2;
197
198
18.4E
  return 0;
199
35.9k
}
Unexecuted instantiation: context_tree.c:av1_drl_ctx
Unexecuted instantiation: encodeframe.c:av1_drl_ctx
Unexecuted instantiation: encodeframe_utils.c:av1_drl_ctx
Unexecuted instantiation: encodemb.c:av1_drl_ctx
Unexecuted instantiation: encodemv.c:av1_drl_ctx
Unexecuted instantiation: encoder.c:av1_drl_ctx
Unexecuted instantiation: encoder_utils.c:av1_drl_ctx
Unexecuted instantiation: encodetxb.c:av1_drl_ctx
Unexecuted instantiation: ethread.c:av1_drl_ctx
Unexecuted instantiation: firstpass.c:av1_drl_ctx
Unexecuted instantiation: global_motion_facade.c:av1_drl_ctx
Unexecuted instantiation: hash_motion.c:av1_drl_ctx
Unexecuted instantiation: level.c:av1_drl_ctx
Unexecuted instantiation: lookahead.c:av1_drl_ctx
Unexecuted instantiation: mcomp.c:av1_drl_ctx
Unexecuted instantiation: mv_prec.c:av1_drl_ctx
Unexecuted instantiation: palette.c:av1_drl_ctx
partition_search.c:av1_drl_ctx
Line
Count
Source
185
198k
static inline uint8_t av1_drl_ctx(const uint16_t *ref_mv_weight, int ref_idx) {
186
198k
  if (ref_mv_weight[ref_idx] >= REF_CAT_LEVEL &&
187
161k
      ref_mv_weight[ref_idx + 1] >= REF_CAT_LEVEL)
188
61.2k
    return 0;
189
190
137k
  if (ref_mv_weight[ref_idx] >= REF_CAT_LEVEL &&
191
100k
      ref_mv_weight[ref_idx + 1] < REF_CAT_LEVEL)
192
100k
    return 1;
193
194
36.8k
  if (ref_mv_weight[ref_idx] < REF_CAT_LEVEL &&
195
37.1k
      ref_mv_weight[ref_idx + 1] < REF_CAT_LEVEL)
196
37.1k
    return 2;
197
198
18.4E
  return 0;
199
36.8k
}
Unexecuted instantiation: partition_strategy.c:av1_drl_ctx
Unexecuted instantiation: pass2_strategy.c:av1_drl_ctx
Unexecuted instantiation: pickcdef.c:av1_drl_ctx
Unexecuted instantiation: picklpf.c:av1_drl_ctx
Unexecuted instantiation: pickrst.c:av1_drl_ctx
Unexecuted instantiation: ratectrl.c:av1_drl_ctx
Unexecuted instantiation: rd.c:av1_drl_ctx
rdopt.c:av1_drl_ctx
Line
Count
Source
185
2.68M
static inline uint8_t av1_drl_ctx(const uint16_t *ref_mv_weight, int ref_idx) {
186
2.68M
  if (ref_mv_weight[ref_idx] >= REF_CAT_LEVEL &&
187
1.69M
      ref_mv_weight[ref_idx + 1] >= REF_CAT_LEVEL)
188
577k
    return 0;
189
190
2.10M
  if (ref_mv_weight[ref_idx] >= REF_CAT_LEVEL &&
191
1.12M
      ref_mv_weight[ref_idx + 1] < REF_CAT_LEVEL)
192
1.12M
    return 1;
193
194
982k
  if (ref_mv_weight[ref_idx] < REF_CAT_LEVEL &&
195
985k
      ref_mv_weight[ref_idx + 1] < REF_CAT_LEVEL)
196
985k
    return 2;
197
198
18.4E
  return 0;
199
982k
}
nonrd_pickmode.c:av1_drl_ctx
Line
Count
Source
185
2.86k
static inline uint8_t av1_drl_ctx(const uint16_t *ref_mv_weight, int ref_idx) {
186
2.86k
  if (ref_mv_weight[ref_idx] >= REF_CAT_LEVEL &&
187
2.36k
      ref_mv_weight[ref_idx + 1] >= REF_CAT_LEVEL)
188
609
    return 0;
189
190
2.26k
  if (ref_mv_weight[ref_idx] >= REF_CAT_LEVEL &&
191
1.75k
      ref_mv_weight[ref_idx + 1] < REF_CAT_LEVEL)
192
1.75k
    return 1;
193
194
509
  if (ref_mv_weight[ref_idx] < REF_CAT_LEVEL &&
195
509
      ref_mv_weight[ref_idx + 1] < REF_CAT_LEVEL)
196
509
    return 2;
197
198
0
  return 0;
199
509
}
Unexecuted instantiation: nonrd_opt.c:av1_drl_ctx
Unexecuted instantiation: reconinter_enc.c:av1_drl_ctx
Unexecuted instantiation: segmentation.c:av1_drl_ctx
Unexecuted instantiation: speed_features.c:av1_drl_ctx
Unexecuted instantiation: superres_scale.c:av1_drl_ctx
Unexecuted instantiation: svc_layercontext.c:av1_drl_ctx
Unexecuted instantiation: temporal_filter.c:av1_drl_ctx
Unexecuted instantiation: tokenize.c:av1_drl_ctx
Unexecuted instantiation: tpl_model.c:av1_drl_ctx
Unexecuted instantiation: tx_search.c:av1_drl_ctx
Unexecuted instantiation: txb_rdopt.c:av1_drl_ctx
Unexecuted instantiation: intra_mode_search.c:av1_drl_ctx
Unexecuted instantiation: var_based_part.c:av1_drl_ctx
Unexecuted instantiation: av1_noise_estimate.c:av1_drl_ctx
Unexecuted instantiation: reconinter_enc_sse2.c:av1_drl_ctx
Unexecuted instantiation: mvref_common.c:av1_drl_ctx
Unexecuted instantiation: pred_common.c:av1_drl_ctx
Unexecuted instantiation: reconinter.c:av1_drl_ctx
Unexecuted instantiation: aq_complexity.c:av1_drl_ctx
Unexecuted instantiation: aq_cyclicrefresh.c:av1_drl_ctx
Unexecuted instantiation: aq_variance.c:av1_drl_ctx
Unexecuted instantiation: compound_type.c:av1_drl_ctx
Unexecuted instantiation: encode_strategy.c:av1_drl_ctx
Unexecuted instantiation: global_motion.c:av1_drl_ctx
Unexecuted instantiation: gop_structure.c:av1_drl_ctx
Unexecuted instantiation: interp_search.c:av1_drl_ctx
Unexecuted instantiation: motion_search_facade.c:av1_drl_ctx
Unexecuted instantiation: temporal_filter_sse2.c:av1_drl_ctx
Unexecuted instantiation: highbd_temporal_filter_sse2.c:av1_drl_ctx
Unexecuted instantiation: rdopt_sse4.c:av1_drl_ctx
Unexecuted instantiation: pickrst_sse4.c:av1_drl_ctx
Unexecuted instantiation: rdopt_avx2.c:av1_drl_ctx
Unexecuted instantiation: temporal_filter_avx2.c:av1_drl_ctx
Unexecuted instantiation: pickrst_avx2.c:av1_drl_ctx
Unexecuted instantiation: highbd_temporal_filter_avx2.c:av1_drl_ctx
200
201
void av1_setup_frame_buf_refs(AV1_COMMON *cm);
202
void av1_setup_frame_sign_bias(AV1_COMMON *cm);
203
void av1_setup_skip_mode_allowed(AV1_COMMON *cm);
204
void av1_calculate_ref_frame_side(AV1_COMMON *cm);
205
void av1_setup_motion_field(AV1_COMMON *cm);
206
void av1_set_frame_refs(AV1_COMMON *const cm, int *remapped_ref_idx,
207
                        int lst_map_idx, int gld_map_idx);
208
209
2.19M
static inline void av1_collect_neighbors_ref_counts(MACROBLOCKD *const xd) {
210
2.19M
  av1_zero(xd->neighbors_ref_counts);
211
212
2.19M
  uint8_t *const ref_counts = xd->neighbors_ref_counts;
213
214
2.19M
  const MB_MODE_INFO *const above_mbmi = xd->above_mbmi;
215
2.19M
  const MB_MODE_INFO *const left_mbmi = xd->left_mbmi;
216
2.19M
  const int above_in_image = xd->up_available;
217
2.19M
  const int left_in_image = xd->left_available;
218
219
  // Above neighbor
220
2.19M
  if (above_in_image && is_inter_block(above_mbmi)) {
221
893k
    ref_counts[above_mbmi->ref_frame[0]]++;
222
893k
    if (has_second_ref(above_mbmi)) {
223
6.00k
      ref_counts[above_mbmi->ref_frame[1]]++;
224
6.00k
    }
225
893k
  }
226
227
  // Left neighbor
228
2.19M
  if (left_in_image && is_inter_block(left_mbmi)) {
229
872k
    ref_counts[left_mbmi->ref_frame[0]]++;
230
872k
    if (has_second_ref(left_mbmi)) {
231
6.71k
      ref_counts[left_mbmi->ref_frame[1]]++;
232
6.71k
    }
233
872k
  }
234
2.19M
}
Unexecuted instantiation: decodeframe.c:av1_collect_neighbors_ref_counts
decodemv.c:av1_collect_neighbors_ref_counts
Line
Count
Source
209
197k
static inline void av1_collect_neighbors_ref_counts(MACROBLOCKD *const xd) {
210
197k
  av1_zero(xd->neighbors_ref_counts);
211
212
197k
  uint8_t *const ref_counts = xd->neighbors_ref_counts;
213
214
197k
  const MB_MODE_INFO *const above_mbmi = xd->above_mbmi;
215
197k
  const MB_MODE_INFO *const left_mbmi = xd->left_mbmi;
216
197k
  const int above_in_image = xd->up_available;
217
197k
  const int left_in_image = xd->left_available;
218
219
  // Above neighbor
220
197k
  if (above_in_image && is_inter_block(above_mbmi)) {
221
114k
    ref_counts[above_mbmi->ref_frame[0]]++;
222
114k
    if (has_second_ref(above_mbmi)) {
223
6.00k
      ref_counts[above_mbmi->ref_frame[1]]++;
224
6.00k
    }
225
114k
  }
226
227
  // Left neighbor
228
197k
  if (left_in_image && is_inter_block(left_mbmi)) {
229
115k
    ref_counts[left_mbmi->ref_frame[0]]++;
230
115k
    if (has_second_ref(left_mbmi)) {
231
6.71k
      ref_counts[left_mbmi->ref_frame[1]]++;
232
6.71k
    }
233
115k
  }
234
197k
}
Unexecuted instantiation: av1_cx_iface.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: allintra_vis.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: av1_quantize.c:av1_collect_neighbors_ref_counts
bitstream.c:av1_collect_neighbors_ref_counts
Line
Count
Source
209
516k
static inline void av1_collect_neighbors_ref_counts(MACROBLOCKD *const xd) {
210
516k
  av1_zero(xd->neighbors_ref_counts);
211
212
516k
  uint8_t *const ref_counts = xd->neighbors_ref_counts;
213
214
516k
  const MB_MODE_INFO *const above_mbmi = xd->above_mbmi;
215
516k
  const MB_MODE_INFO *const left_mbmi = xd->left_mbmi;
216
516k
  const int above_in_image = xd->up_available;
217
516k
  const int left_in_image = xd->left_available;
218
219
  // Above neighbor
220
516k
  if (above_in_image && is_inter_block(above_mbmi)) {
221
260k
    ref_counts[above_mbmi->ref_frame[0]]++;
222
260k
    if (has_second_ref(above_mbmi)) {
223
1
      ref_counts[above_mbmi->ref_frame[1]]++;
224
1
    }
225
260k
  }
226
227
  // Left neighbor
228
516k
  if (left_in_image && is_inter_block(left_mbmi)) {
229
254k
    ref_counts[left_mbmi->ref_frame[0]]++;
230
254k
    if (has_second_ref(left_mbmi)) {
231
2
      ref_counts[left_mbmi->ref_frame[1]]++;
232
2
    }
233
254k
  }
234
516k
}
Unexecuted instantiation: context_tree.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: encodeframe.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: encodeframe_utils.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: encodemb.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: encodemv.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: encoder.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: encoder_utils.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: encodetxb.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: ethread.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: firstpass.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: global_motion_facade.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: hash_motion.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: level.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: lookahead.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: mcomp.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: mv_prec.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: palette.c:av1_collect_neighbors_ref_counts
partition_search.c:av1_collect_neighbors_ref_counts
Line
Count
Source
209
520k
static inline void av1_collect_neighbors_ref_counts(MACROBLOCKD *const xd) {
210
520k
  av1_zero(xd->neighbors_ref_counts);
211
212
520k
  uint8_t *const ref_counts = xd->neighbors_ref_counts;
213
214
520k
  const MB_MODE_INFO *const above_mbmi = xd->above_mbmi;
215
520k
  const MB_MODE_INFO *const left_mbmi = xd->left_mbmi;
216
520k
  const int above_in_image = xd->up_available;
217
520k
  const int left_in_image = xd->left_available;
218
219
  // Above neighbor
220
520k
  if (above_in_image && is_inter_block(above_mbmi)) {
221
263k
    ref_counts[above_mbmi->ref_frame[0]]++;
222
263k
    if (has_second_ref(above_mbmi)) {
223
1
      ref_counts[above_mbmi->ref_frame[1]]++;
224
1
    }
225
263k
  }
226
227
  // Left neighbor
228
520k
  if (left_in_image && is_inter_block(left_mbmi)) {
229
256k
    ref_counts[left_mbmi->ref_frame[0]]++;
230
256k
    if (has_second_ref(left_mbmi)) {
231
2
      ref_counts[left_mbmi->ref_frame[1]]++;
232
2
    }
233
256k
  }
234
520k
}
Unexecuted instantiation: partition_strategy.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: pass2_strategy.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: pickcdef.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: picklpf.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: pickrst.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: ratectrl.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: rd.c:av1_collect_neighbors_ref_counts
rdopt.c:av1_collect_neighbors_ref_counts
Line
Count
Source
209
958k
static inline void av1_collect_neighbors_ref_counts(MACROBLOCKD *const xd) {
210
958k
  av1_zero(xd->neighbors_ref_counts);
211
212
958k
  uint8_t *const ref_counts = xd->neighbors_ref_counts;
213
214
958k
  const MB_MODE_INFO *const above_mbmi = xd->above_mbmi;
215
958k
  const MB_MODE_INFO *const left_mbmi = xd->left_mbmi;
216
958k
  const int above_in_image = xd->up_available;
217
958k
  const int left_in_image = xd->left_available;
218
219
  // Above neighbor
220
958k
  if (above_in_image && is_inter_block(above_mbmi)) {
221
255k
    ref_counts[above_mbmi->ref_frame[0]]++;
222
255k
    if (has_second_ref(above_mbmi)) {
223
0
      ref_counts[above_mbmi->ref_frame[1]]++;
224
0
    }
225
255k
  }
226
227
  // Left neighbor
228
958k
  if (left_in_image && is_inter_block(left_mbmi)) {
229
245k
    ref_counts[left_mbmi->ref_frame[0]]++;
230
245k
    if (has_second_ref(left_mbmi)) {
231
0
      ref_counts[left_mbmi->ref_frame[1]]++;
232
0
    }
233
245k
  }
234
958k
}
Unexecuted instantiation: nonrd_pickmode.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: nonrd_opt.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: reconinter_enc.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: segmentation.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: speed_features.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: superres_scale.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: svc_layercontext.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: temporal_filter.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: tokenize.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: tpl_model.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: tx_search.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: txb_rdopt.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: intra_mode_search.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: var_based_part.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: av1_noise_estimate.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: reconinter_enc_sse2.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: mvref_common.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: pred_common.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: reconinter.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: aq_complexity.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: aq_cyclicrefresh.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: aq_variance.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: compound_type.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: encode_strategy.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: global_motion.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: gop_structure.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: interp_search.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: motion_search_facade.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: temporal_filter_sse2.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: highbd_temporal_filter_sse2.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: rdopt_sse4.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: pickrst_sse4.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: rdopt_avx2.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: temporal_filter_avx2.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: pickrst_avx2.c:av1_collect_neighbors_ref_counts
Unexecuted instantiation: highbd_temporal_filter_avx2.c:av1_collect_neighbors_ref_counts
235
236
void av1_get_mv_projection(MV *output, MV ref, int num, int den);
237
238
void av1_copy_frame_mvs(const AV1_COMMON *const cm,
239
                        const MB_MODE_INFO *const mi, int mi_row, int mi_col,
240
                        int x_mis, int y_mis);
241
242
// The global_mvs output parameter points to an array of REF_FRAMES elements.
243
// The caller may pass a null global_mvs if it does not need the global_mvs
244
// output.
245
void av1_find_mv_refs(const AV1_COMMON *cm, const MACROBLOCKD *xd,
246
                      MB_MODE_INFO *mi, MV_REFERENCE_FRAME ref_frame,
247
                      uint8_t ref_mv_count[MODE_CTX_REF_FRAMES],
248
                      CANDIDATE_MV ref_mv_stack[][MAX_REF_MV_STACK_SIZE],
249
                      uint16_t ref_mv_weight[][MAX_REF_MV_STACK_SIZE],
250
                      int_mv mv_ref_list[][MAX_MV_REF_CANDIDATES],
251
                      int_mv *global_mvs, int16_t *mode_context);
252
253
// check a list of motion vectors by sad score using a number rows of pixels
254
// above and a number cols of pixels in the left to select the one with best
255
// score to use as ref motion vector
256
void av1_find_best_ref_mvs(int allow_hp, int_mv *mvlist, int_mv *nearest_mv,
257
                           int_mv *near_mv, int is_integer);
258
259
uint8_t av1_selectSamples(MV *mv, int *pts, int *pts_inref, int len,
260
                          BLOCK_SIZE bsize);
261
uint8_t av1_findSamples(const AV1_COMMON *cm, MACROBLOCKD *xd, int *pts,
262
                        int *pts_inref);
263
264
1.70M
#define INTRABC_DELAY_PIXELS 256  //  Delay of 256 pixels
265
1.02M
#define INTRABC_DELAY_SB64 (INTRABC_DELAY_PIXELS / 64)
266
267
static inline void av1_find_ref_dv(int_mv *ref_dv, const TileInfo *const tile,
268
837k
                                   int mib_size, int mi_row) {
269
837k
  if (mi_row - mib_size < tile->mi_row_start) {
270
673k
    ref_dv->as_fullmv.row = 0;
271
673k
    ref_dv->as_fullmv.col = -MI_SIZE * mib_size - INTRABC_DELAY_PIXELS;
272
673k
  } else {
273
163k
    ref_dv->as_fullmv.row = -MI_SIZE * mib_size;
274
163k
    ref_dv->as_fullmv.col = 0;
275
163k
  }
276
837k
  convert_fullmv_to_mv(ref_dv);
277
837k
}
Unexecuted instantiation: decodeframe.c:av1_find_ref_dv
decodemv.c:av1_find_ref_dv
Line
Count
Source
268
2.74k
                                   int mib_size, int mi_row) {
269
2.74k
  if (mi_row - mib_size < tile->mi_row_start) {
270
555
    ref_dv->as_fullmv.row = 0;
271
555
    ref_dv->as_fullmv.col = -MI_SIZE * mib_size - INTRABC_DELAY_PIXELS;
272
2.18k
  } else {
273
2.18k
    ref_dv->as_fullmv.row = -MI_SIZE * mib_size;
274
2.18k
    ref_dv->as_fullmv.col = 0;
275
2.18k
  }
276
2.74k
  convert_fullmv_to_mv(ref_dv);
277
2.74k
}
Unexecuted instantiation: av1_cx_iface.c:av1_find_ref_dv
Unexecuted instantiation: allintra_vis.c:av1_find_ref_dv
Unexecuted instantiation: av1_quantize.c:av1_find_ref_dv
Unexecuted instantiation: bitstream.c:av1_find_ref_dv
Unexecuted instantiation: context_tree.c:av1_find_ref_dv
Unexecuted instantiation: encodeframe.c:av1_find_ref_dv
Unexecuted instantiation: encodeframe_utils.c:av1_find_ref_dv
Unexecuted instantiation: encodemb.c:av1_find_ref_dv
Unexecuted instantiation: encodemv.c:av1_find_ref_dv
Unexecuted instantiation: encoder.c:av1_find_ref_dv
Unexecuted instantiation: encoder_utils.c:av1_find_ref_dv
Unexecuted instantiation: encodetxb.c:av1_find_ref_dv
Unexecuted instantiation: ethread.c:av1_find_ref_dv
Unexecuted instantiation: firstpass.c:av1_find_ref_dv
Unexecuted instantiation: global_motion_facade.c:av1_find_ref_dv
Unexecuted instantiation: hash_motion.c:av1_find_ref_dv
Unexecuted instantiation: level.c:av1_find_ref_dv
Unexecuted instantiation: lookahead.c:av1_find_ref_dv
Unexecuted instantiation: mcomp.c:av1_find_ref_dv
Unexecuted instantiation: mv_prec.c:av1_find_ref_dv
Unexecuted instantiation: palette.c:av1_find_ref_dv
Unexecuted instantiation: partition_search.c:av1_find_ref_dv
Unexecuted instantiation: partition_strategy.c:av1_find_ref_dv
Unexecuted instantiation: pass2_strategy.c:av1_find_ref_dv
Unexecuted instantiation: pickcdef.c:av1_find_ref_dv
Unexecuted instantiation: picklpf.c:av1_find_ref_dv
Unexecuted instantiation: pickrst.c:av1_find_ref_dv
Unexecuted instantiation: ratectrl.c:av1_find_ref_dv
Unexecuted instantiation: rd.c:av1_find_ref_dv
rdopt.c:av1_find_ref_dv
Line
Count
Source
268
834k
                                   int mib_size, int mi_row) {
269
834k
  if (mi_row - mib_size < tile->mi_row_start) {
270
673k
    ref_dv->as_fullmv.row = 0;
271
673k
    ref_dv->as_fullmv.col = -MI_SIZE * mib_size - INTRABC_DELAY_PIXELS;
272
673k
  } else {
273
161k
    ref_dv->as_fullmv.row = -MI_SIZE * mib_size;
274
161k
    ref_dv->as_fullmv.col = 0;
275
161k
  }
276
834k
  convert_fullmv_to_mv(ref_dv);
277
834k
}
Unexecuted instantiation: nonrd_pickmode.c:av1_find_ref_dv
Unexecuted instantiation: nonrd_opt.c:av1_find_ref_dv
Unexecuted instantiation: reconinter_enc.c:av1_find_ref_dv
Unexecuted instantiation: segmentation.c:av1_find_ref_dv
Unexecuted instantiation: speed_features.c:av1_find_ref_dv
Unexecuted instantiation: superres_scale.c:av1_find_ref_dv
Unexecuted instantiation: svc_layercontext.c:av1_find_ref_dv
Unexecuted instantiation: temporal_filter.c:av1_find_ref_dv
Unexecuted instantiation: tokenize.c:av1_find_ref_dv
Unexecuted instantiation: tpl_model.c:av1_find_ref_dv
Unexecuted instantiation: tx_search.c:av1_find_ref_dv
Unexecuted instantiation: txb_rdopt.c:av1_find_ref_dv
Unexecuted instantiation: intra_mode_search.c:av1_find_ref_dv
Unexecuted instantiation: var_based_part.c:av1_find_ref_dv
Unexecuted instantiation: av1_noise_estimate.c:av1_find_ref_dv
Unexecuted instantiation: reconinter_enc_sse2.c:av1_find_ref_dv
Unexecuted instantiation: mvref_common.c:av1_find_ref_dv
Unexecuted instantiation: pred_common.c:av1_find_ref_dv
Unexecuted instantiation: reconinter.c:av1_find_ref_dv
Unexecuted instantiation: aq_complexity.c:av1_find_ref_dv
Unexecuted instantiation: aq_cyclicrefresh.c:av1_find_ref_dv
Unexecuted instantiation: aq_variance.c:av1_find_ref_dv
Unexecuted instantiation: compound_type.c:av1_find_ref_dv
Unexecuted instantiation: encode_strategy.c:av1_find_ref_dv
Unexecuted instantiation: global_motion.c:av1_find_ref_dv
Unexecuted instantiation: gop_structure.c:av1_find_ref_dv
Unexecuted instantiation: interp_search.c:av1_find_ref_dv
Unexecuted instantiation: motion_search_facade.c:av1_find_ref_dv
Unexecuted instantiation: temporal_filter_sse2.c:av1_find_ref_dv
Unexecuted instantiation: highbd_temporal_filter_sse2.c:av1_find_ref_dv
Unexecuted instantiation: rdopt_sse4.c:av1_find_ref_dv
Unexecuted instantiation: pickrst_sse4.c:av1_find_ref_dv
Unexecuted instantiation: rdopt_avx2.c:av1_find_ref_dv
Unexecuted instantiation: temporal_filter_avx2.c:av1_find_ref_dv
Unexecuted instantiation: pickrst_avx2.c:av1_find_ref_dv
Unexecuted instantiation: highbd_temporal_filter_avx2.c:av1_find_ref_dv
278
279
static inline int av1_is_dv_valid(const MV dv, const AV1_COMMON *cm,
280
                                  const MACROBLOCKD *xd, int mi_row, int mi_col,
281
959k
                                  BLOCK_SIZE bsize, int mib_size_log2) {
282
959k
  const int bw = block_size_wide[bsize];
283
959k
  const int bh = block_size_high[bsize];
284
959k
  const int SCALE_PX_TO_MV = 8;
285
  // Disallow subpixel for now
286
  // SUBPEL_MASK is not the correct scale
287
959k
  if (((dv.row & (SCALE_PX_TO_MV - 1)) || (dv.col & (SCALE_PX_TO_MV - 1))))
288
0
    return 0;
289
290
959k
  const TileInfo *const tile = &xd->tile;
291
  // Is the source top-left inside the current tile?
292
959k
  const int src_top_edge = mi_row * MI_SIZE * SCALE_PX_TO_MV + dv.row;
293
959k
  const int tile_top_edge = tile->mi_row_start * MI_SIZE * SCALE_PX_TO_MV;
294
959k
  if (src_top_edge < tile_top_edge) return 0;
295
958k
  const int src_left_edge = mi_col * MI_SIZE * SCALE_PX_TO_MV + dv.col;
296
958k
  const int tile_left_edge = tile->mi_col_start * MI_SIZE * SCALE_PX_TO_MV;
297
958k
  if (src_left_edge < tile_left_edge) return 0;
298
  // Is the bottom right inside the current tile?
299
958k
  const int src_bottom_edge = (mi_row * MI_SIZE + bh) * SCALE_PX_TO_MV + dv.row;
300
958k
  const int tile_bottom_edge = tile->mi_row_end * MI_SIZE * SCALE_PX_TO_MV;
301
958k
  if (src_bottom_edge > tile_bottom_edge) return 0;
302
958k
  const int src_right_edge = (mi_col * MI_SIZE + bw) * SCALE_PX_TO_MV + dv.col;
303
958k
  const int tile_right_edge = tile->mi_col_end * MI_SIZE * SCALE_PX_TO_MV;
304
958k
  if (src_right_edge > tile_right_edge) return 0;
305
306
  // Special case for sub 8x8 chroma cases, to prevent referring to chroma
307
  // pixels outside current tile.
308
958k
  if (xd->is_chroma_ref && av1_num_planes(cm) > 1) {
309
483k
    const struct macroblockd_plane *const pd = &xd->plane[1];
310
483k
    if (bw < 8 && pd->subsampling_x)
311
93.9k
      if (src_left_edge < tile_left_edge + 4 * SCALE_PX_TO_MV) return 0;
312
460k
    if (bh < 8 && pd->subsampling_y)
313
33.0k
      if (src_top_edge < tile_top_edge + 4 * SCALE_PX_TO_MV) return 0;
314
460k
  }
315
316
  // Is the bottom right within an already coded SB? Also consider additional
317
  // constraints to facilitate HW decoder.
318
913k
  const int max_mib_size = 1 << mib_size_log2;
319
913k
  const int active_sb_row = mi_row >> mib_size_log2;
320
913k
  const int active_sb64_col = (mi_col * MI_SIZE) >> 6;
321
913k
  const int sb_size = max_mib_size * MI_SIZE;
322
913k
  const int src_sb_row = ((src_bottom_edge >> 3) - 1) / sb_size;
323
913k
  const int src_sb64_col = ((src_right_edge >> 3) - 1) >> 6;
324
913k
  const int total_sb64_per_row =
325
913k
      ((tile->mi_col_end - tile->mi_col_start - 1) >> 4) + 1;
326
913k
  const int active_sb64 = active_sb_row * total_sb64_per_row + active_sb64_col;
327
913k
  const int src_sb64 = src_sb_row * total_sb64_per_row + src_sb64_col;
328
913k
  if (src_sb64 >= active_sb64 - INTRABC_DELAY_SB64) return 0;
329
330
  // Wavefront constraint: use only top left area of frame for reference.
331
56.7k
  const int gradient = 1 + INTRABC_DELAY_SB64 + (sb_size > 64);
332
56.7k
  const int wf_offset = gradient * (active_sb_row - src_sb_row);
333
56.7k
  if (src_sb_row > active_sb_row ||
334
56.7k
      src_sb64_col >= active_sb64_col - INTRABC_DELAY_SB64 + wf_offset)
335
739
    return 0;
336
337
55.9k
  return 1;
338
56.7k
}
Unexecuted instantiation: decodeframe.c:av1_is_dv_valid
decodemv.c:av1_is_dv_valid
Line
Count
Source
281
5.54k
                                  BLOCK_SIZE bsize, int mib_size_log2) {
282
5.54k
  const int bw = block_size_wide[bsize];
283
5.54k
  const int bh = block_size_high[bsize];
284
5.54k
  const int SCALE_PX_TO_MV = 8;
285
  // Disallow subpixel for now
286
  // SUBPEL_MASK is not the correct scale
287
5.54k
  if (((dv.row & (SCALE_PX_TO_MV - 1)) || (dv.col & (SCALE_PX_TO_MV - 1))))
288
0
    return 0;
289
290
5.54k
  const TileInfo *const tile = &xd->tile;
291
  // Is the source top-left inside the current tile?
292
5.54k
  const int src_top_edge = mi_row * MI_SIZE * SCALE_PX_TO_MV + dv.row;
293
5.54k
  const int tile_top_edge = tile->mi_row_start * MI_SIZE * SCALE_PX_TO_MV;
294
5.54k
  if (src_top_edge < tile_top_edge) return 0;
295
5.49k
  const int src_left_edge = mi_col * MI_SIZE * SCALE_PX_TO_MV + dv.col;
296
5.49k
  const int tile_left_edge = tile->mi_col_start * MI_SIZE * SCALE_PX_TO_MV;
297
5.49k
  if (src_left_edge < tile_left_edge) return 0;
298
  // Is the bottom right inside the current tile?
299
5.19k
  const int src_bottom_edge = (mi_row * MI_SIZE + bh) * SCALE_PX_TO_MV + dv.row;
300
5.19k
  const int tile_bottom_edge = tile->mi_row_end * MI_SIZE * SCALE_PX_TO_MV;
301
5.19k
  if (src_bottom_edge > tile_bottom_edge) return 0;
302
5.19k
  const int src_right_edge = (mi_col * MI_SIZE + bw) * SCALE_PX_TO_MV + dv.col;
303
5.19k
  const int tile_right_edge = tile->mi_col_end * MI_SIZE * SCALE_PX_TO_MV;
304
5.19k
  if (src_right_edge > tile_right_edge) return 0;
305
306
  // Special case for sub 8x8 chroma cases, to prevent referring to chroma
307
  // pixels outside current tile.
308
5.16k
  if (xd->is_chroma_ref && av1_num_planes(cm) > 1) {
309
5.10k
    const struct macroblockd_plane *const pd = &xd->plane[1];
310
5.10k
    if (bw < 8 && pd->subsampling_x)
311
4
      if (src_left_edge < tile_left_edge + 4 * SCALE_PX_TO_MV) return 0;
312
5.10k
    if (bh < 8 && pd->subsampling_y)
313
2
      if (src_top_edge < tile_top_edge + 4 * SCALE_PX_TO_MV) return 0;
314
5.10k
  }
315
316
  // Is the bottom right within an already coded SB? Also consider additional
317
  // constraints to facilitate HW decoder.
318
5.16k
  const int max_mib_size = 1 << mib_size_log2;
319
5.16k
  const int active_sb_row = mi_row >> mib_size_log2;
320
5.16k
  const int active_sb64_col = (mi_col * MI_SIZE) >> 6;
321
5.16k
  const int sb_size = max_mib_size * MI_SIZE;
322
5.16k
  const int src_sb_row = ((src_bottom_edge >> 3) - 1) / sb_size;
323
5.16k
  const int src_sb64_col = ((src_right_edge >> 3) - 1) >> 6;
324
5.16k
  const int total_sb64_per_row =
325
5.16k
      ((tile->mi_col_end - tile->mi_col_start - 1) >> 4) + 1;
326
5.16k
  const int active_sb64 = active_sb_row * total_sb64_per_row + active_sb64_col;
327
5.16k
  const int src_sb64 = src_sb_row * total_sb64_per_row + src_sb64_col;
328
5.16k
  if (src_sb64 >= active_sb64 - INTRABC_DELAY_SB64) return 0;
329
330
  // Wavefront constraint: use only top left area of frame for reference.
331
5.10k
  const int gradient = 1 + INTRABC_DELAY_SB64 + (sb_size > 64);
332
5.10k
  const int wf_offset = gradient * (active_sb_row - src_sb_row);
333
5.10k
  if (src_sb_row > active_sb_row ||
334
5.10k
      src_sb64_col >= active_sb64_col - INTRABC_DELAY_SB64 + wf_offset)
335
28
    return 0;
336
337
5.08k
  return 1;
338
5.10k
}
Unexecuted instantiation: av1_cx_iface.c:av1_is_dv_valid
Unexecuted instantiation: allintra_vis.c:av1_is_dv_valid
Unexecuted instantiation: av1_quantize.c:av1_is_dv_valid
Unexecuted instantiation: bitstream.c:av1_is_dv_valid
Unexecuted instantiation: context_tree.c:av1_is_dv_valid
Unexecuted instantiation: encodeframe.c:av1_is_dv_valid
Unexecuted instantiation: encodeframe_utils.c:av1_is_dv_valid
Unexecuted instantiation: encodemb.c:av1_is_dv_valid
Unexecuted instantiation: encodemv.c:av1_is_dv_valid
Unexecuted instantiation: encoder.c:av1_is_dv_valid
Unexecuted instantiation: encoder_utils.c:av1_is_dv_valid
Unexecuted instantiation: encodetxb.c:av1_is_dv_valid
Unexecuted instantiation: ethread.c:av1_is_dv_valid
Unexecuted instantiation: firstpass.c:av1_is_dv_valid
Unexecuted instantiation: global_motion_facade.c:av1_is_dv_valid
Unexecuted instantiation: hash_motion.c:av1_is_dv_valid
Unexecuted instantiation: level.c:av1_is_dv_valid
Unexecuted instantiation: lookahead.c:av1_is_dv_valid
mcomp.c:av1_is_dv_valid
Line
Count
Source
281
101k
                                  BLOCK_SIZE bsize, int mib_size_log2) {
282
101k
  const int bw = block_size_wide[bsize];
283
101k
  const int bh = block_size_high[bsize];
284
101k
  const int SCALE_PX_TO_MV = 8;
285
  // Disallow subpixel for now
286
  // SUBPEL_MASK is not the correct scale
287
101k
  if (((dv.row & (SCALE_PX_TO_MV - 1)) || (dv.col & (SCALE_PX_TO_MV - 1))))
288
0
    return 0;
289
290
101k
  const TileInfo *const tile = &xd->tile;
291
  // Is the source top-left inside the current tile?
292
101k
  const int src_top_edge = mi_row * MI_SIZE * SCALE_PX_TO_MV + dv.row;
293
101k
  const int tile_top_edge = tile->mi_row_start * MI_SIZE * SCALE_PX_TO_MV;
294
101k
  if (src_top_edge < tile_top_edge) return 0;
295
101k
  const int src_left_edge = mi_col * MI_SIZE * SCALE_PX_TO_MV + dv.col;
296
101k
  const int tile_left_edge = tile->mi_col_start * MI_SIZE * SCALE_PX_TO_MV;
297
101k
  if (src_left_edge < tile_left_edge) return 0;
298
  // Is the bottom right inside the current tile?
299
101k
  const int src_bottom_edge = (mi_row * MI_SIZE + bh) * SCALE_PX_TO_MV + dv.row;
300
101k
  const int tile_bottom_edge = tile->mi_row_end * MI_SIZE * SCALE_PX_TO_MV;
301
101k
  if (src_bottom_edge > tile_bottom_edge) return 0;
302
101k
  const int src_right_edge = (mi_col * MI_SIZE + bw) * SCALE_PX_TO_MV + dv.col;
303
101k
  const int tile_right_edge = tile->mi_col_end * MI_SIZE * SCALE_PX_TO_MV;
304
101k
  if (src_right_edge > tile_right_edge) return 0;
305
306
  // Special case for sub 8x8 chroma cases, to prevent referring to chroma
307
  // pixels outside current tile.
308
101k
  if (xd->is_chroma_ref && av1_num_planes(cm) > 1) {
309
49.9k
    const struct macroblockd_plane *const pd = &xd->plane[1];
310
49.9k
    if (bw < 8 && pd->subsampling_x)
311
10.6k
      if (src_left_edge < tile_left_edge + 4 * SCALE_PX_TO_MV) return 0;
312
49.8k
    if (bh < 8 && pd->subsampling_y)
313
4.93k
      if (src_top_edge < tile_top_edge + 4 * SCALE_PX_TO_MV) return 0;
314
49.8k
  }
315
316
  // Is the bottom right within an already coded SB? Also consider additional
317
  // constraints to facilitate HW decoder.
318
101k
  const int max_mib_size = 1 << mib_size_log2;
319
101k
  const int active_sb_row = mi_row >> mib_size_log2;
320
101k
  const int active_sb64_col = (mi_col * MI_SIZE) >> 6;
321
101k
  const int sb_size = max_mib_size * MI_SIZE;
322
101k
  const int src_sb_row = ((src_bottom_edge >> 3) - 1) / sb_size;
323
101k
  const int src_sb64_col = ((src_right_edge >> 3) - 1) >> 6;
324
101k
  const int total_sb64_per_row =
325
101k
      ((tile->mi_col_end - tile->mi_col_start - 1) >> 4) + 1;
326
101k
  const int active_sb64 = active_sb_row * total_sb64_per_row + active_sb64_col;
327
101k
  const int src_sb64 = src_sb_row * total_sb64_per_row + src_sb64_col;
328
101k
  if (src_sb64 >= active_sb64 - INTRABC_DELAY_SB64) return 0;
329
330
  // Wavefront constraint: use only top left area of frame for reference.
331
0
  const int gradient = 1 + INTRABC_DELAY_SB64 + (sb_size > 64);
332
0
  const int wf_offset = gradient * (active_sb_row - src_sb_row);
333
0
  if (src_sb_row > active_sb_row ||
334
0
      src_sb64_col >= active_sb64_col - INTRABC_DELAY_SB64 + wf_offset)
335
0
    return 0;
336
337
0
  return 1;
338
0
}
Unexecuted instantiation: mv_prec.c:av1_is_dv_valid
Unexecuted instantiation: palette.c:av1_is_dv_valid
Unexecuted instantiation: partition_search.c:av1_is_dv_valid
Unexecuted instantiation: partition_strategy.c:av1_is_dv_valid
Unexecuted instantiation: pass2_strategy.c:av1_is_dv_valid
Unexecuted instantiation: pickcdef.c:av1_is_dv_valid
Unexecuted instantiation: picklpf.c:av1_is_dv_valid
Unexecuted instantiation: pickrst.c:av1_is_dv_valid
Unexecuted instantiation: ratectrl.c:av1_is_dv_valid
Unexecuted instantiation: rd.c:av1_is_dv_valid
rdopt.c:av1_is_dv_valid
Line
Count
Source
281
852k
                                  BLOCK_SIZE bsize, int mib_size_log2) {
282
852k
  const int bw = block_size_wide[bsize];
283
852k
  const int bh = block_size_high[bsize];
284
852k
  const int SCALE_PX_TO_MV = 8;
285
  // Disallow subpixel for now
286
  // SUBPEL_MASK is not the correct scale
287
852k
  if (((dv.row & (SCALE_PX_TO_MV - 1)) || (dv.col & (SCALE_PX_TO_MV - 1))))
288
0
    return 0;
289
290
852k
  const TileInfo *const tile = &xd->tile;
291
  // Is the source top-left inside the current tile?
292
852k
  const int src_top_edge = mi_row * MI_SIZE * SCALE_PX_TO_MV + dv.row;
293
852k
  const int tile_top_edge = tile->mi_row_start * MI_SIZE * SCALE_PX_TO_MV;
294
852k
  if (src_top_edge < tile_top_edge) return 0;
295
852k
  const int src_left_edge = mi_col * MI_SIZE * SCALE_PX_TO_MV + dv.col;
296
852k
  const int tile_left_edge = tile->mi_col_start * MI_SIZE * SCALE_PX_TO_MV;
297
852k
  if (src_left_edge < tile_left_edge) return 0;
298
  // Is the bottom right inside the current tile?
299
852k
  const int src_bottom_edge = (mi_row * MI_SIZE + bh) * SCALE_PX_TO_MV + dv.row;
300
852k
  const int tile_bottom_edge = tile->mi_row_end * MI_SIZE * SCALE_PX_TO_MV;
301
852k
  if (src_bottom_edge > tile_bottom_edge) return 0;
302
852k
  const int src_right_edge = (mi_col * MI_SIZE + bw) * SCALE_PX_TO_MV + dv.col;
303
852k
  const int tile_right_edge = tile->mi_col_end * MI_SIZE * SCALE_PX_TO_MV;
304
852k
  if (src_right_edge > tile_right_edge) return 0;
305
306
  // Special case for sub 8x8 chroma cases, to prevent referring to chroma
307
  // pixels outside current tile.
308
852k
  if (xd->is_chroma_ref && av1_num_planes(cm) > 1) {
309
428k
    const struct macroblockd_plane *const pd = &xd->plane[1];
310
428k
    if (bw < 8 && pd->subsampling_x)
311
83.2k
      if (src_left_edge < tile_left_edge + 4 * SCALE_PX_TO_MV) return 0;
312
405k
    if (bh < 8 && pd->subsampling_y)
313
28.0k
      if (src_top_edge < tile_top_edge + 4 * SCALE_PX_TO_MV) return 0;
314
405k
  }
315
316
  // Is the bottom right within an already coded SB? Also consider additional
317
  // constraints to facilitate HW decoder.
318
807k
  const int max_mib_size = 1 << mib_size_log2;
319
807k
  const int active_sb_row = mi_row >> mib_size_log2;
320
807k
  const int active_sb64_col = (mi_col * MI_SIZE) >> 6;
321
807k
  const int sb_size = max_mib_size * MI_SIZE;
322
807k
  const int src_sb_row = ((src_bottom_edge >> 3) - 1) / sb_size;
323
807k
  const int src_sb64_col = ((src_right_edge >> 3) - 1) >> 6;
324
807k
  const int total_sb64_per_row =
325
807k
      ((tile->mi_col_end - tile->mi_col_start - 1) >> 4) + 1;
326
807k
  const int active_sb64 = active_sb_row * total_sb64_per_row + active_sb64_col;
327
807k
  const int src_sb64 = src_sb_row * total_sb64_per_row + src_sb64_col;
328
807k
  if (src_sb64 >= active_sb64 - INTRABC_DELAY_SB64) return 0;
329
330
  // Wavefront constraint: use only top left area of frame for reference.
331
51.5k
  const int gradient = 1 + INTRABC_DELAY_SB64 + (sb_size > 64);
332
51.5k
  const int wf_offset = gradient * (active_sb_row - src_sb_row);
333
51.5k
  if (src_sb_row > active_sb_row ||
334
51.6k
      src_sb64_col >= active_sb64_col - INTRABC_DELAY_SB64 + wf_offset)
335
711
    return 0;
336
337
50.8k
  return 1;
338
51.5k
}
Unexecuted instantiation: nonrd_pickmode.c:av1_is_dv_valid
Unexecuted instantiation: nonrd_opt.c:av1_is_dv_valid
Unexecuted instantiation: reconinter_enc.c:av1_is_dv_valid
Unexecuted instantiation: segmentation.c:av1_is_dv_valid
Unexecuted instantiation: speed_features.c:av1_is_dv_valid
Unexecuted instantiation: superres_scale.c:av1_is_dv_valid
Unexecuted instantiation: svc_layercontext.c:av1_is_dv_valid
Unexecuted instantiation: temporal_filter.c:av1_is_dv_valid
Unexecuted instantiation: tokenize.c:av1_is_dv_valid
Unexecuted instantiation: tpl_model.c:av1_is_dv_valid
Unexecuted instantiation: tx_search.c:av1_is_dv_valid
Unexecuted instantiation: txb_rdopt.c:av1_is_dv_valid
Unexecuted instantiation: intra_mode_search.c:av1_is_dv_valid
Unexecuted instantiation: var_based_part.c:av1_is_dv_valid
Unexecuted instantiation: av1_noise_estimate.c:av1_is_dv_valid
Unexecuted instantiation: reconinter_enc_sse2.c:av1_is_dv_valid
Unexecuted instantiation: mvref_common.c:av1_is_dv_valid
Unexecuted instantiation: pred_common.c:av1_is_dv_valid
Unexecuted instantiation: reconinter.c:av1_is_dv_valid
Unexecuted instantiation: aq_complexity.c:av1_is_dv_valid
Unexecuted instantiation: aq_cyclicrefresh.c:av1_is_dv_valid
Unexecuted instantiation: aq_variance.c:av1_is_dv_valid
Unexecuted instantiation: compound_type.c:av1_is_dv_valid
Unexecuted instantiation: encode_strategy.c:av1_is_dv_valid
Unexecuted instantiation: global_motion.c:av1_is_dv_valid
Unexecuted instantiation: gop_structure.c:av1_is_dv_valid
Unexecuted instantiation: interp_search.c:av1_is_dv_valid
Unexecuted instantiation: motion_search_facade.c:av1_is_dv_valid
Unexecuted instantiation: temporal_filter_sse2.c:av1_is_dv_valid
Unexecuted instantiation: highbd_temporal_filter_sse2.c:av1_is_dv_valid
Unexecuted instantiation: rdopt_sse4.c:av1_is_dv_valid
Unexecuted instantiation: pickrst_sse4.c:av1_is_dv_valid
Unexecuted instantiation: rdopt_avx2.c:av1_is_dv_valid
Unexecuted instantiation: temporal_filter_avx2.c:av1_is_dv_valid
Unexecuted instantiation: pickrst_avx2.c:av1_is_dv_valid
Unexecuted instantiation: highbd_temporal_filter_avx2.c:av1_is_dv_valid
339
340
#ifdef __cplusplus
341
}  // extern "C"
342
#endif
343
344
#endif  // AOM_AV1_COMMON_MVREF_COMMON_H_