Coverage Report

Created: 2022-08-24 06:17

/src/aom/av1/encoder/mcomp.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright (c) 2016, Alliance for Open Media. All rights reserved
3
 *
4
 * This source code is subject to the terms of the BSD 2 Clause License and
5
 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
6
 * was not distributed with this source code in the LICENSE file, you can
7
 * obtain it at www.aomedia.org/license/software. If the Alliance for Open
8
 * Media Patent License 1.0 was not distributed with this source code in the
9
 * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
10
 */
11
12
#ifndef AOM_AV1_ENCODER_MCOMP_H_
13
#define AOM_AV1_ENCODER_MCOMP_H_
14
15
#include "av1/common/mv.h"
16
#include "av1/encoder/block.h"
17
#include "av1/encoder/rd.h"
18
19
#include "aom_dsp/variance.h"
20
21
#ifdef __cplusplus
22
extern "C" {
23
#endif
24
25
// The maximum number of steps in a step search given the largest
26
// allowed initial step
27
23.0k
#define MAX_MVSEARCH_STEPS 11
28
// Max full pel mv specified in the unit of full pixel
29
// Enable the use of motion vector in range [-1023, 1023].
30
10.3k
#define MAX_FULL_PEL_VAL ((1 << (MAX_MVSEARCH_STEPS - 1)) - 1)
31
// Maximum size of the first step in full pel units
32
6.31k
#define MAX_FIRST_STEP (1 << (MAX_MVSEARCH_STEPS - 1))
33
34
0
#define SEARCH_RANGE_8P 3
35
0
#define SEARCH_GRID_STRIDE_8P (2 * SEARCH_RANGE_8P + 1)
36
#define SEARCH_GRID_CENTER_8P \
37
0
  (SEARCH_RANGE_8P * SEARCH_GRID_STRIDE_8P + SEARCH_RANGE_8P)
38
39
// motion search site
40
typedef struct search_site {
41
  FULLPEL_MV mv;
42
  int offset;
43
} search_site;
44
45
typedef struct search_site_config {
46
  search_site site[MAX_MVSEARCH_STEPS * 2][16 + 1];
47
  // Number of search steps.
48
  int num_search_steps;
49
  int searches_per_step[MAX_MVSEARCH_STEPS * 2];
50
  int radius[MAX_MVSEARCH_STEPS * 2];
51
  int stride;
52
} search_site_config;
53
54
typedef struct {
55
  FULLPEL_MV coord;
56
  int coord_offset;
57
} search_neighbors;
58
59
struct AV1_COMP;
60
struct SPEED_FEATURES;
61
62
// =============================================================================
63
//  Cost functions
64
// =============================================================================
65
66
enum {
67
  MV_COST_ENTROPY,    // Use the entropy rate of the mv as the cost
68
  MV_COST_L1_LOWRES,  // Use the l1 norm of the mv as the cost (<480p)
69
  MV_COST_L1_MIDRES,  // Use the l1 norm of the mv as the cost (>=480p)
70
  MV_COST_L1_HDRES,   // Use the l1 norm of the mv as the cost (>=720p)
71
  MV_COST_NONE        // Use 0 as as cost irrespective of the current mv
72
} UENUM1BYTE(MV_COST_TYPE);
73
74
typedef struct {
75
  // The reference mv used to compute the mv cost
76
  const MV *ref_mv;
77
  FULLPEL_MV full_ref_mv;
78
  MV_COST_TYPE mv_cost_type;
79
  const int *mvjcost;
80
  const int *mvcost[2];
81
  int error_per_bit;
82
  // A multiplier used to convert rate to sad cost
83
  int sad_per_bit;
84
} MV_COST_PARAMS;
85
86
int av1_mv_bit_cost(const MV *mv, const MV *ref_mv, const int *mvjcost,
87
                    int *const mvcost[2], int weight);
88
89
int av1_get_mvpred_sse(const MV_COST_PARAMS *mv_cost_params,
90
                       const FULLPEL_MV best_mv,
91
                       const aom_variance_fn_ptr_t *vfp,
92
                       const struct buf_2d *src, const struct buf_2d *pre);
93
int av1_get_mvpred_compound_var(const MV_COST_PARAMS *ms_params,
94
                                const FULLPEL_MV best_mv,
95
                                const uint8_t *second_pred, const uint8_t *mask,
96
                                int mask_stride, int invert_mask,
97
                                const aom_variance_fn_ptr_t *vfp,
98
                                const struct buf_2d *src,
99
                                const struct buf_2d *pre);
100
101
// =============================================================================
102
//  Motion Search
103
// =============================================================================
104
typedef struct {
105
  // The reference buffer
106
  const struct buf_2d *ref;
107
108
  // The source and predictors/mask used by translational search
109
  const struct buf_2d *src;
110
  const uint8_t *second_pred;
111
  const uint8_t *mask;
112
  int mask_stride;
113
  int inv_mask;
114
115
  // The weighted source and mask used by OBMC
116
  const int32_t *wsrc;
117
  const int32_t *obmc_mask;
118
} MSBuffers;
119
120
static INLINE void av1_set_ms_compound_refs(MSBuffers *ms_buffers,
121
                                            const uint8_t *second_pred,
122
                                            const uint8_t *mask,
123
0
                                            int mask_stride, int invert_mask) {
124
0
  ms_buffers->second_pred = second_pred;
125
0
  ms_buffers->mask = mask;
126
0
  ms_buffers->mask_stride = mask_stride;
127
0
  ms_buffers->inv_mask = invert_mask;
128
0
}
Unexecuted instantiation: av1_cx_iface.c:av1_set_ms_compound_refs
Unexecuted instantiation: av1_quantize.c:av1_set_ms_compound_refs
Unexecuted instantiation: bitstream.c:av1_set_ms_compound_refs
Unexecuted instantiation: encodemv.c:av1_set_ms_compound_refs
Unexecuted instantiation: encoder.c:av1_set_ms_compound_refs
Unexecuted instantiation: encoder_utils.c:av1_set_ms_compound_refs
Unexecuted instantiation: encodetxb.c:av1_set_ms_compound_refs
Unexecuted instantiation: ethread.c:av1_set_ms_compound_refs
Unexecuted instantiation: firstpass.c:av1_set_ms_compound_refs
Unexecuted instantiation: global_motion_facade.c:av1_set_ms_compound_refs
Unexecuted instantiation: level.c:av1_set_ms_compound_refs
Unexecuted instantiation: lookahead.c:av1_set_ms_compound_refs
Unexecuted instantiation: mcomp.c:av1_set_ms_compound_refs
Unexecuted instantiation: mv_prec.c:av1_set_ms_compound_refs
Unexecuted instantiation: palette.c:av1_set_ms_compound_refs
Unexecuted instantiation: pass2_strategy.c:av1_set_ms_compound_refs
Unexecuted instantiation: pickcdef.c:av1_set_ms_compound_refs
Unexecuted instantiation: picklpf.c:av1_set_ms_compound_refs
Unexecuted instantiation: pickrst.c:av1_set_ms_compound_refs
Unexecuted instantiation: ratectrl.c:av1_set_ms_compound_refs
Unexecuted instantiation: rd.c:av1_set_ms_compound_refs
Unexecuted instantiation: rdopt.c:av1_set_ms_compound_refs
Unexecuted instantiation: segmentation.c:av1_set_ms_compound_refs
Unexecuted instantiation: speed_features.c:av1_set_ms_compound_refs
Unexecuted instantiation: superres_scale.c:av1_set_ms_compound_refs
Unexecuted instantiation: svc_layercontext.c:av1_set_ms_compound_refs
Unexecuted instantiation: temporal_filter.c:av1_set_ms_compound_refs
Unexecuted instantiation: thirdpass.c:av1_set_ms_compound_refs
Unexecuted instantiation: tokenize.c:av1_set_ms_compound_refs
Unexecuted instantiation: tpl_model.c:av1_set_ms_compound_refs
Unexecuted instantiation: tx_search.c:av1_set_ms_compound_refs
Unexecuted instantiation: txb_rdopt.c:av1_set_ms_compound_refs
Unexecuted instantiation: intra_mode_search.c:av1_set_ms_compound_refs
Unexecuted instantiation: var_based_part.c:av1_set_ms_compound_refs
Unexecuted instantiation: av1_noise_estimate.c:av1_set_ms_compound_refs
Unexecuted instantiation: aq_complexity.c:av1_set_ms_compound_refs
Unexecuted instantiation: aq_cyclicrefresh.c:av1_set_ms_compound_refs
Unexecuted instantiation: aq_variance.c:av1_set_ms_compound_refs
Unexecuted instantiation: allintra_vis.c:av1_set_ms_compound_refs
Unexecuted instantiation: compound_type.c:av1_set_ms_compound_refs
Unexecuted instantiation: context_tree.c:av1_set_ms_compound_refs
Unexecuted instantiation: encodeframe.c:av1_set_ms_compound_refs
Unexecuted instantiation: encodeframe_utils.c:av1_set_ms_compound_refs
Unexecuted instantiation: encodemb.c:av1_set_ms_compound_refs
Unexecuted instantiation: encode_strategy.c:av1_set_ms_compound_refs
Unexecuted instantiation: global_motion.c:av1_set_ms_compound_refs
Unexecuted instantiation: gop_structure.c:av1_set_ms_compound_refs
Unexecuted instantiation: interp_search.c:av1_set_ms_compound_refs
Unexecuted instantiation: motion_search_facade.c:av1_set_ms_compound_refs
Unexecuted instantiation: partition_search.c:av1_set_ms_compound_refs
Unexecuted instantiation: partition_strategy.c:av1_set_ms_compound_refs
Unexecuted instantiation: nonrd_pickmode.c:av1_set_ms_compound_refs
129
130
// =============================================================================
131
//  Fullpixel Motion Search
132
// =============================================================================
133
enum {
134
  // Search 8-points in the radius grid around center, up to 11 search stages.
135
  DIAMOND = 0,
136
  // Search 12-points in the radius/tan_radius grid around center,
137
  // up to 15 search stages.
138
  NSTEP = 1,
139
  // Search 8-points in the radius grid around center, up to 16 search stages.
140
  NSTEP_8PT = 2,
141
  // Search 8-points in the radius grid around center, upto 11 search stages
142
  // with clamping of search radius.
143
  CLAMPED_DIAMOND = 3,
144
  // Search maximum 8-points in the radius grid around center,
145
  // up to 11 search stages. First stage consists of 8 search points
146
  // and the rest with 6 search points each in hex shape.
147
  HEX = 4,
148
  // Search maximum 8-points in the radius grid around center,
149
  // up to 11 search stages. First stage consists of 4 search
150
  // points and the rest with 8 search points each.
151
  BIGDIA = 5,
152
  // Search 8-points in the square grid around center, up to 11 search stages.
153
  SQUARE = 6,
154
  // HEX search with up to 2 stages.
155
  FAST_HEX = 7,
156
  // BIGDIA search with up to 2 stages.
157
  FAST_DIAMOND = 8,
158
  // BIGDIA search with up to 3 stages.
159
  FAST_BIGDIA = 9,
160
  // Total number of search methods.
161
  NUM_SEARCH_METHODS,
162
  // Number of distinct search methods.
163
  NUM_DISTINCT_SEARCH_METHODS = SQUARE + 1,
164
} UENUM1BYTE(SEARCH_METHODS);
165
166
// This struct holds fullpixel motion search parameters that should be constant
167
// during the search
168
typedef struct {
169
  BLOCK_SIZE bsize;
170
  // A function pointer to the simd function for fast computation
171
  const aom_variance_fn_ptr_t *vfp;
172
173
  MSBuffers ms_buffers;
174
175
  // WARNING: search_method should be regarded as a private variable and should
176
  // not be modified directly so it is in sync with search_sites. To modify it,
177
  // use av1_set_mv_search_method.
178
  SEARCH_METHODS search_method;
179
  const search_site_config *search_sites;
180
  FullMvLimits mv_limits;
181
182
  int run_mesh_search;    // Sets mesh search unless it got pruned by
183
                          // prune_mesh_search.
184
  int prune_mesh_search;  // Disables mesh search if the best_mv after a normal
185
                          // search if close to the start_mv.
186
  int mesh_search_mv_diff_threshold;  // mv diff threshold to enable
187
                                      // prune_mesh_search
188
  int force_mesh_thresh;  // Forces mesh search if the residue variance is
189
                          // higher than the threshold.
190
  const struct MESH_PATTERN *mesh_patterns[2];
191
192
  // Use maximum search interval of 4 if true. This helps motion search to find
193
  // the best motion vector for screen content types.
194
  int fine_search_interval;
195
196
  int is_intra_mode;
197
198
  int fast_obmc_search;
199
200
  // For calculating mv cost
201
  MV_COST_PARAMS mv_cost_params;
202
203
  // Stores the function used to compute the sad. This can be different from the
204
  // sdf in vfp (e.g. downsampled sad and not sad) to allow speed up.
205
  aom_sad_fn_t sdf;
206
  aom_sad_multi_d_fn_t sdx4df;
207
} FULLPEL_MOTION_SEARCH_PARAMS;
208
209
void av1_init_obmc_buffer(OBMCBuffer *obmc_buffer);
210
211
void av1_make_default_fullpel_ms_params(
212
    FULLPEL_MOTION_SEARCH_PARAMS *ms_params, const struct AV1_COMP *cpi,
213
    const MACROBLOCK *x, BLOCK_SIZE bsize, const MV *ref_mv,
214
    const search_site_config search_sites[NUM_DISTINCT_SEARCH_METHODS],
215
    int fine_search_interval);
216
217
/*! Sets the \ref FULLPEL_MOTION_SEARCH_PARAMS to intra mode. */
218
void av1_set_ms_to_intra_mode(FULLPEL_MOTION_SEARCH_PARAMS *ms_params,
219
                              const IntraBCMVCosts *dv_costs);
220
221
// Sets up configs for fullpixel DIAMOND / CLAMPED_DIAMOND search method.
222
void av1_init_dsmotion_compensation(search_site_config *cfg, int stride,
223
                                    int level);
224
// Sets up configs for firstpass motion search.
225
void av1_init_motion_fpf(search_site_config *cfg, int stride);
226
// Sets up configs for NSTEP / NSTEP_8PT motion search method.
227
void av1_init_motion_compensation_nstep(search_site_config *cfg, int stride,
228
                                        int level);
229
// Sets up configs for BIGDIA / FAST_DIAMOND / FAST_BIGDIA
230
// motion search method.
231
void av1_init_motion_compensation_bigdia(search_site_config *cfg, int stride,
232
                                         int level);
233
// Sets up configs for HEX or FAST_HEX motion search method.
234
void av1_init_motion_compensation_hex(search_site_config *cfg, int stride,
235
                                      int level);
236
// Sets up configs for SQUARE motion search method.
237
void av1_init_motion_compensation_square(search_site_config *cfg, int stride,
238
                                         int level);
239
240
// Mv beyond the range do not produce new/different prediction block.
241
static INLINE void av1_set_mv_search_method(
242
    FULLPEL_MOTION_SEARCH_PARAMS *ms_params,
243
    const search_site_config search_sites[NUM_DISTINCT_SEARCH_METHODS],
244
0
    SEARCH_METHODS search_method) {
245
  // Array to inform which all search methods are having
246
  // same candidates and different in number of search steps.
247
0
  static const SEARCH_METHODS search_method_lookup[NUM_SEARCH_METHODS] = {
248
0
    DIAMOND,          // DIAMOND
249
0
    NSTEP,            // NSTEP
250
0
    NSTEP_8PT,        // NSTEP_8PT
251
0
    CLAMPED_DIAMOND,  // CLAMPED_DIAMOND
252
0
    HEX,              // HEX
253
0
    BIGDIA,           // BIGDIA
254
0
    SQUARE,           // SQUARE
255
0
    HEX,              // FAST_HEX
256
0
    BIGDIA,           // FAST_DIAMOND
257
0
    BIGDIA            // FAST_BIGDIA
258
0
  };
259
260
0
  ms_params->search_method = search_method;
261
0
  ms_params->search_sites =
262
0
      &search_sites[search_method_lookup[ms_params->search_method]];
263
0
}
Unexecuted instantiation: av1_cx_iface.c:av1_set_mv_search_method
Unexecuted instantiation: av1_quantize.c:av1_set_mv_search_method
Unexecuted instantiation: bitstream.c:av1_set_mv_search_method
Unexecuted instantiation: encodemv.c:av1_set_mv_search_method
Unexecuted instantiation: encoder.c:av1_set_mv_search_method
Unexecuted instantiation: encoder_utils.c:av1_set_mv_search_method
Unexecuted instantiation: encodetxb.c:av1_set_mv_search_method
Unexecuted instantiation: ethread.c:av1_set_mv_search_method
Unexecuted instantiation: firstpass.c:av1_set_mv_search_method
Unexecuted instantiation: global_motion_facade.c:av1_set_mv_search_method
Unexecuted instantiation: level.c:av1_set_mv_search_method
Unexecuted instantiation: lookahead.c:av1_set_mv_search_method
Unexecuted instantiation: mcomp.c:av1_set_mv_search_method
Unexecuted instantiation: mv_prec.c:av1_set_mv_search_method
Unexecuted instantiation: palette.c:av1_set_mv_search_method
Unexecuted instantiation: pass2_strategy.c:av1_set_mv_search_method
Unexecuted instantiation: pickcdef.c:av1_set_mv_search_method
Unexecuted instantiation: picklpf.c:av1_set_mv_search_method
Unexecuted instantiation: pickrst.c:av1_set_mv_search_method
Unexecuted instantiation: ratectrl.c:av1_set_mv_search_method
Unexecuted instantiation: rd.c:av1_set_mv_search_method
Unexecuted instantiation: rdopt.c:av1_set_mv_search_method
Unexecuted instantiation: segmentation.c:av1_set_mv_search_method
Unexecuted instantiation: speed_features.c:av1_set_mv_search_method
Unexecuted instantiation: superres_scale.c:av1_set_mv_search_method
Unexecuted instantiation: svc_layercontext.c:av1_set_mv_search_method
Unexecuted instantiation: temporal_filter.c:av1_set_mv_search_method
Unexecuted instantiation: thirdpass.c:av1_set_mv_search_method
Unexecuted instantiation: tokenize.c:av1_set_mv_search_method
Unexecuted instantiation: tpl_model.c:av1_set_mv_search_method
Unexecuted instantiation: tx_search.c:av1_set_mv_search_method
Unexecuted instantiation: txb_rdopt.c:av1_set_mv_search_method
Unexecuted instantiation: intra_mode_search.c:av1_set_mv_search_method
Unexecuted instantiation: var_based_part.c:av1_set_mv_search_method
Unexecuted instantiation: av1_noise_estimate.c:av1_set_mv_search_method
Unexecuted instantiation: aq_complexity.c:av1_set_mv_search_method
Unexecuted instantiation: aq_cyclicrefresh.c:av1_set_mv_search_method
Unexecuted instantiation: aq_variance.c:av1_set_mv_search_method
Unexecuted instantiation: allintra_vis.c:av1_set_mv_search_method
Unexecuted instantiation: compound_type.c:av1_set_mv_search_method
Unexecuted instantiation: context_tree.c:av1_set_mv_search_method
Unexecuted instantiation: encodeframe.c:av1_set_mv_search_method
Unexecuted instantiation: encodeframe_utils.c:av1_set_mv_search_method
Unexecuted instantiation: encodemb.c:av1_set_mv_search_method
Unexecuted instantiation: encode_strategy.c:av1_set_mv_search_method
Unexecuted instantiation: global_motion.c:av1_set_mv_search_method
Unexecuted instantiation: gop_structure.c:av1_set_mv_search_method
Unexecuted instantiation: interp_search.c:av1_set_mv_search_method
Unexecuted instantiation: motion_search_facade.c:av1_set_mv_search_method
Unexecuted instantiation: partition_search.c:av1_set_mv_search_method
Unexecuted instantiation: partition_strategy.c:av1_set_mv_search_method
Unexecuted instantiation: nonrd_pickmode.c:av1_set_mv_search_method
264
265
// Set up limit values for MV components.
266
// Mv beyond the range do not produce new/different prediction block.
267
static INLINE void av1_set_mv_row_limits(
268
    const CommonModeInfoParams *const mi_params, FullMvLimits *mv_limits,
269
255k
    int mi_row, int mi_height, int border) {
270
255k
  const int min1 = -(mi_row * MI_SIZE + border - 2 * AOM_INTERP_EXTEND);
271
255k
  const int min2 = -(((mi_row + mi_height) * MI_SIZE) + 2 * AOM_INTERP_EXTEND);
272
255k
  mv_limits->row_min = AOMMAX(min1, min2);
273
255k
  const int max1 = (mi_params->mi_rows - mi_row - mi_height) * MI_SIZE +
274
255k
                   border - 2 * AOM_INTERP_EXTEND;
275
255k
  const int max2 =
276
255k
      (mi_params->mi_rows - mi_row) * MI_SIZE + 2 * AOM_INTERP_EXTEND;
277
255k
  mv_limits->row_max = AOMMIN(max1, max2);
278
255k
}
Unexecuted instantiation: av1_cx_iface.c:av1_set_mv_row_limits
Unexecuted instantiation: av1_quantize.c:av1_set_mv_row_limits
Unexecuted instantiation: bitstream.c:av1_set_mv_row_limits
Unexecuted instantiation: encodemv.c:av1_set_mv_row_limits
Unexecuted instantiation: encoder.c:av1_set_mv_row_limits
Unexecuted instantiation: encoder_utils.c:av1_set_mv_row_limits
Unexecuted instantiation: encodetxb.c:av1_set_mv_row_limits
Unexecuted instantiation: ethread.c:av1_set_mv_row_limits
Unexecuted instantiation: firstpass.c:av1_set_mv_row_limits
Unexecuted instantiation: global_motion_facade.c:av1_set_mv_row_limits
Unexecuted instantiation: level.c:av1_set_mv_row_limits
Unexecuted instantiation: lookahead.c:av1_set_mv_row_limits
Unexecuted instantiation: mcomp.c:av1_set_mv_row_limits
Unexecuted instantiation: mv_prec.c:av1_set_mv_row_limits
Unexecuted instantiation: palette.c:av1_set_mv_row_limits
Unexecuted instantiation: pass2_strategy.c:av1_set_mv_row_limits
Unexecuted instantiation: pickcdef.c:av1_set_mv_row_limits
Unexecuted instantiation: picklpf.c:av1_set_mv_row_limits
Unexecuted instantiation: pickrst.c:av1_set_mv_row_limits
Unexecuted instantiation: ratectrl.c:av1_set_mv_row_limits
Unexecuted instantiation: rd.c:av1_set_mv_row_limits
Unexecuted instantiation: rdopt.c:av1_set_mv_row_limits
Unexecuted instantiation: segmentation.c:av1_set_mv_row_limits
Unexecuted instantiation: speed_features.c:av1_set_mv_row_limits
Unexecuted instantiation: superres_scale.c:av1_set_mv_row_limits
Unexecuted instantiation: svc_layercontext.c:av1_set_mv_row_limits
Unexecuted instantiation: temporal_filter.c:av1_set_mv_row_limits
Unexecuted instantiation: thirdpass.c:av1_set_mv_row_limits
Unexecuted instantiation: tokenize.c:av1_set_mv_row_limits
Unexecuted instantiation: tpl_model.c:av1_set_mv_row_limits
Unexecuted instantiation: tx_search.c:av1_set_mv_row_limits
Unexecuted instantiation: txb_rdopt.c:av1_set_mv_row_limits
Unexecuted instantiation: intra_mode_search.c:av1_set_mv_row_limits
Unexecuted instantiation: var_based_part.c:av1_set_mv_row_limits
Unexecuted instantiation: av1_noise_estimate.c:av1_set_mv_row_limits
Unexecuted instantiation: aq_complexity.c:av1_set_mv_row_limits
Unexecuted instantiation: aq_cyclicrefresh.c:av1_set_mv_row_limits
Unexecuted instantiation: aq_variance.c:av1_set_mv_row_limits
Unexecuted instantiation: allintra_vis.c:av1_set_mv_row_limits
Unexecuted instantiation: compound_type.c:av1_set_mv_row_limits
Unexecuted instantiation: context_tree.c:av1_set_mv_row_limits
Unexecuted instantiation: encodeframe.c:av1_set_mv_row_limits
Unexecuted instantiation: encodeframe_utils.c:av1_set_mv_row_limits
Unexecuted instantiation: encodemb.c:av1_set_mv_row_limits
Unexecuted instantiation: encode_strategy.c:av1_set_mv_row_limits
Unexecuted instantiation: global_motion.c:av1_set_mv_row_limits
Unexecuted instantiation: gop_structure.c:av1_set_mv_row_limits
Unexecuted instantiation: interp_search.c:av1_set_mv_row_limits
Unexecuted instantiation: motion_search_facade.c:av1_set_mv_row_limits
partition_search.c:av1_set_mv_row_limits
Line
Count
Source
269
255k
    int mi_row, int mi_height, int border) {
270
255k
  const int min1 = -(mi_row * MI_SIZE + border - 2 * AOM_INTERP_EXTEND);
271
255k
  const int min2 = -(((mi_row + mi_height) * MI_SIZE) + 2 * AOM_INTERP_EXTEND);
272
255k
  mv_limits->row_min = AOMMAX(min1, min2);
273
255k
  const int max1 = (mi_params->mi_rows - mi_row - mi_height) * MI_SIZE +
274
255k
                   border - 2 * AOM_INTERP_EXTEND;
275
255k
  const int max2 =
276
255k
      (mi_params->mi_rows - mi_row) * MI_SIZE + 2 * AOM_INTERP_EXTEND;
277
255k
  mv_limits->row_max = AOMMIN(max1, max2);
278
255k
}
Unexecuted instantiation: partition_strategy.c:av1_set_mv_row_limits
Unexecuted instantiation: nonrd_pickmode.c:av1_set_mv_row_limits
279
280
static INLINE void av1_set_mv_col_limits(
281
    const CommonModeInfoParams *const mi_params, FullMvLimits *mv_limits,
282
255k
    int mi_col, int mi_width, int border) {
283
255k
  const int min1 = -(mi_col * MI_SIZE + border - 2 * AOM_INTERP_EXTEND);
284
255k
  const int min2 = -(((mi_col + mi_width) * MI_SIZE) + 2 * AOM_INTERP_EXTEND);
285
255k
  mv_limits->col_min = AOMMAX(min1, min2);
286
255k
  const int max1 = (mi_params->mi_cols - mi_col - mi_width) * MI_SIZE + border -
287
255k
                   2 * AOM_INTERP_EXTEND;
288
255k
  const int max2 =
289
255k
      (mi_params->mi_cols - mi_col) * MI_SIZE + 2 * AOM_INTERP_EXTEND;
290
255k
  mv_limits->col_max = AOMMIN(max1, max2);
291
255k
}
Unexecuted instantiation: av1_cx_iface.c:av1_set_mv_col_limits
Unexecuted instantiation: av1_quantize.c:av1_set_mv_col_limits
Unexecuted instantiation: bitstream.c:av1_set_mv_col_limits
Unexecuted instantiation: encodemv.c:av1_set_mv_col_limits
Unexecuted instantiation: encoder.c:av1_set_mv_col_limits
Unexecuted instantiation: encoder_utils.c:av1_set_mv_col_limits
Unexecuted instantiation: encodetxb.c:av1_set_mv_col_limits
Unexecuted instantiation: ethread.c:av1_set_mv_col_limits
Unexecuted instantiation: firstpass.c:av1_set_mv_col_limits
Unexecuted instantiation: global_motion_facade.c:av1_set_mv_col_limits
Unexecuted instantiation: level.c:av1_set_mv_col_limits
Unexecuted instantiation: lookahead.c:av1_set_mv_col_limits
Unexecuted instantiation: mcomp.c:av1_set_mv_col_limits
Unexecuted instantiation: mv_prec.c:av1_set_mv_col_limits
Unexecuted instantiation: palette.c:av1_set_mv_col_limits
Unexecuted instantiation: pass2_strategy.c:av1_set_mv_col_limits
Unexecuted instantiation: pickcdef.c:av1_set_mv_col_limits
Unexecuted instantiation: picklpf.c:av1_set_mv_col_limits
Unexecuted instantiation: pickrst.c:av1_set_mv_col_limits
Unexecuted instantiation: ratectrl.c:av1_set_mv_col_limits
Unexecuted instantiation: rd.c:av1_set_mv_col_limits
Unexecuted instantiation: rdopt.c:av1_set_mv_col_limits
Unexecuted instantiation: segmentation.c:av1_set_mv_col_limits
Unexecuted instantiation: speed_features.c:av1_set_mv_col_limits
Unexecuted instantiation: superres_scale.c:av1_set_mv_col_limits
Unexecuted instantiation: svc_layercontext.c:av1_set_mv_col_limits
Unexecuted instantiation: temporal_filter.c:av1_set_mv_col_limits
Unexecuted instantiation: thirdpass.c:av1_set_mv_col_limits
Unexecuted instantiation: tokenize.c:av1_set_mv_col_limits
Unexecuted instantiation: tpl_model.c:av1_set_mv_col_limits
Unexecuted instantiation: tx_search.c:av1_set_mv_col_limits
Unexecuted instantiation: txb_rdopt.c:av1_set_mv_col_limits
Unexecuted instantiation: intra_mode_search.c:av1_set_mv_col_limits
Unexecuted instantiation: var_based_part.c:av1_set_mv_col_limits
Unexecuted instantiation: av1_noise_estimate.c:av1_set_mv_col_limits
Unexecuted instantiation: aq_complexity.c:av1_set_mv_col_limits
Unexecuted instantiation: aq_cyclicrefresh.c:av1_set_mv_col_limits
Unexecuted instantiation: aq_variance.c:av1_set_mv_col_limits
Unexecuted instantiation: allintra_vis.c:av1_set_mv_col_limits
Unexecuted instantiation: compound_type.c:av1_set_mv_col_limits
Unexecuted instantiation: context_tree.c:av1_set_mv_col_limits
Unexecuted instantiation: encodeframe.c:av1_set_mv_col_limits
Unexecuted instantiation: encodeframe_utils.c:av1_set_mv_col_limits
Unexecuted instantiation: encodemb.c:av1_set_mv_col_limits
Unexecuted instantiation: encode_strategy.c:av1_set_mv_col_limits
Unexecuted instantiation: global_motion.c:av1_set_mv_col_limits
Unexecuted instantiation: gop_structure.c:av1_set_mv_col_limits
Unexecuted instantiation: interp_search.c:av1_set_mv_col_limits
Unexecuted instantiation: motion_search_facade.c:av1_set_mv_col_limits
partition_search.c:av1_set_mv_col_limits
Line
Count
Source
282
255k
    int mi_col, int mi_width, int border) {
283
255k
  const int min1 = -(mi_col * MI_SIZE + border - 2 * AOM_INTERP_EXTEND);
284
255k
  const int min2 = -(((mi_col + mi_width) * MI_SIZE) + 2 * AOM_INTERP_EXTEND);
285
255k
  mv_limits->col_min = AOMMAX(min1, min2);
286
255k
  const int max1 = (mi_params->mi_cols - mi_col - mi_width) * MI_SIZE + border -
287
255k
                   2 * AOM_INTERP_EXTEND;
288
255k
  const int max2 =
289
255k
      (mi_params->mi_cols - mi_col) * MI_SIZE + 2 * AOM_INTERP_EXTEND;
290
255k
  mv_limits->col_max = AOMMIN(max1, max2);
291
255k
}
Unexecuted instantiation: partition_strategy.c:av1_set_mv_col_limits
Unexecuted instantiation: nonrd_pickmode.c:av1_set_mv_col_limits
292
293
static INLINE void av1_set_mv_limits(
294
    const CommonModeInfoParams *const mi_params, FullMvLimits *mv_limits,
295
255k
    int mi_row, int mi_col, int mi_height, int mi_width, int border) {
296
255k
  av1_set_mv_row_limits(mi_params, mv_limits, mi_row, mi_height, border);
297
255k
  av1_set_mv_col_limits(mi_params, mv_limits, mi_col, mi_width, border);
298
255k
}
Unexecuted instantiation: av1_cx_iface.c:av1_set_mv_limits
Unexecuted instantiation: av1_quantize.c:av1_set_mv_limits
Unexecuted instantiation: bitstream.c:av1_set_mv_limits
Unexecuted instantiation: encodemv.c:av1_set_mv_limits
Unexecuted instantiation: encoder.c:av1_set_mv_limits
Unexecuted instantiation: encoder_utils.c:av1_set_mv_limits
Unexecuted instantiation: encodetxb.c:av1_set_mv_limits
Unexecuted instantiation: ethread.c:av1_set_mv_limits
Unexecuted instantiation: firstpass.c:av1_set_mv_limits
Unexecuted instantiation: global_motion_facade.c:av1_set_mv_limits
Unexecuted instantiation: level.c:av1_set_mv_limits
Unexecuted instantiation: lookahead.c:av1_set_mv_limits
Unexecuted instantiation: mcomp.c:av1_set_mv_limits
Unexecuted instantiation: mv_prec.c:av1_set_mv_limits
Unexecuted instantiation: palette.c:av1_set_mv_limits
Unexecuted instantiation: pass2_strategy.c:av1_set_mv_limits
Unexecuted instantiation: pickcdef.c:av1_set_mv_limits
Unexecuted instantiation: picklpf.c:av1_set_mv_limits
Unexecuted instantiation: pickrst.c:av1_set_mv_limits
Unexecuted instantiation: ratectrl.c:av1_set_mv_limits
Unexecuted instantiation: rd.c:av1_set_mv_limits
Unexecuted instantiation: rdopt.c:av1_set_mv_limits
Unexecuted instantiation: segmentation.c:av1_set_mv_limits
Unexecuted instantiation: speed_features.c:av1_set_mv_limits
Unexecuted instantiation: superres_scale.c:av1_set_mv_limits
Unexecuted instantiation: svc_layercontext.c:av1_set_mv_limits
Unexecuted instantiation: temporal_filter.c:av1_set_mv_limits
Unexecuted instantiation: thirdpass.c:av1_set_mv_limits
Unexecuted instantiation: tokenize.c:av1_set_mv_limits
Unexecuted instantiation: tpl_model.c:av1_set_mv_limits
Unexecuted instantiation: tx_search.c:av1_set_mv_limits
Unexecuted instantiation: txb_rdopt.c:av1_set_mv_limits
Unexecuted instantiation: intra_mode_search.c:av1_set_mv_limits
Unexecuted instantiation: var_based_part.c:av1_set_mv_limits
Unexecuted instantiation: av1_noise_estimate.c:av1_set_mv_limits
Unexecuted instantiation: aq_complexity.c:av1_set_mv_limits
Unexecuted instantiation: aq_cyclicrefresh.c:av1_set_mv_limits
Unexecuted instantiation: aq_variance.c:av1_set_mv_limits
Unexecuted instantiation: allintra_vis.c:av1_set_mv_limits
Unexecuted instantiation: compound_type.c:av1_set_mv_limits
Unexecuted instantiation: context_tree.c:av1_set_mv_limits
Unexecuted instantiation: encodeframe.c:av1_set_mv_limits
Unexecuted instantiation: encodeframe_utils.c:av1_set_mv_limits
Unexecuted instantiation: encodemb.c:av1_set_mv_limits
Unexecuted instantiation: encode_strategy.c:av1_set_mv_limits
Unexecuted instantiation: global_motion.c:av1_set_mv_limits
Unexecuted instantiation: gop_structure.c:av1_set_mv_limits
Unexecuted instantiation: interp_search.c:av1_set_mv_limits
Unexecuted instantiation: motion_search_facade.c:av1_set_mv_limits
partition_search.c:av1_set_mv_limits
Line
Count
Source
295
255k
    int mi_row, int mi_col, int mi_height, int mi_width, int border) {
296
255k
  av1_set_mv_row_limits(mi_params, mv_limits, mi_row, mi_height, border);
297
255k
  av1_set_mv_col_limits(mi_params, mv_limits, mi_col, mi_width, border);
298
255k
}
Unexecuted instantiation: partition_strategy.c:av1_set_mv_limits
Unexecuted instantiation: nonrd_pickmode.c:av1_set_mv_limits
299
300
void av1_set_mv_search_range(FullMvLimits *mv_limits, const MV *mv);
301
302
int av1_init_search_range(int size);
303
304
unsigned int av1_int_pro_motion_estimation(const struct AV1_COMP *cpi,
305
                                           MACROBLOCK *x, BLOCK_SIZE bsize,
306
                                           int mi_row, int mi_col,
307
                                           const MV *ref_mv);
308
309
int av1_refining_search_8p_c(const FULLPEL_MOTION_SEARCH_PARAMS *ms_params,
310
                             const FULLPEL_MV start_mv, FULLPEL_MV *best_mv);
311
312
int av1_full_pixel_search(const FULLPEL_MV start_mv,
313
                          const FULLPEL_MOTION_SEARCH_PARAMS *ms_params,
314
                          const int step_param, int *cost_list,
315
                          FULLPEL_MV *best_mv, FULLPEL_MV *second_best_mv);
316
317
int av1_intrabc_hash_search(const struct AV1_COMP *cpi, const MACROBLOCKD *xd,
318
                            const FULLPEL_MOTION_SEARCH_PARAMS *ms_params,
319
                            IntraBCHashInfo *intrabc_hash_info,
320
                            FULLPEL_MV *best_mv);
321
322
int av1_obmc_full_pixel_search(const FULLPEL_MV start_mv,
323
                               const FULLPEL_MOTION_SEARCH_PARAMS *ms_params,
324
                               const int step_param, FULLPEL_MV *best_mv);
325
326
static INLINE int av1_is_fullmv_in_range(const FullMvLimits *mv_limits,
327
0
                                         FULLPEL_MV mv) {
328
0
  return (mv.col >= mv_limits->col_min) && (mv.col <= mv_limits->col_max) &&
329
0
         (mv.row >= mv_limits->row_min) && (mv.row <= mv_limits->row_max);
330
0
}
Unexecuted instantiation: av1_cx_iface.c:av1_is_fullmv_in_range
Unexecuted instantiation: av1_quantize.c:av1_is_fullmv_in_range
Unexecuted instantiation: bitstream.c:av1_is_fullmv_in_range
Unexecuted instantiation: encodemv.c:av1_is_fullmv_in_range
Unexecuted instantiation: encoder.c:av1_is_fullmv_in_range
Unexecuted instantiation: encoder_utils.c:av1_is_fullmv_in_range
Unexecuted instantiation: encodetxb.c:av1_is_fullmv_in_range
Unexecuted instantiation: ethread.c:av1_is_fullmv_in_range
Unexecuted instantiation: firstpass.c:av1_is_fullmv_in_range
Unexecuted instantiation: global_motion_facade.c:av1_is_fullmv_in_range
Unexecuted instantiation: level.c:av1_is_fullmv_in_range
Unexecuted instantiation: lookahead.c:av1_is_fullmv_in_range
Unexecuted instantiation: mcomp.c:av1_is_fullmv_in_range
Unexecuted instantiation: mv_prec.c:av1_is_fullmv_in_range
Unexecuted instantiation: palette.c:av1_is_fullmv_in_range
Unexecuted instantiation: pass2_strategy.c:av1_is_fullmv_in_range
Unexecuted instantiation: pickcdef.c:av1_is_fullmv_in_range
Unexecuted instantiation: picklpf.c:av1_is_fullmv_in_range
Unexecuted instantiation: pickrst.c:av1_is_fullmv_in_range
Unexecuted instantiation: ratectrl.c:av1_is_fullmv_in_range
Unexecuted instantiation: rd.c:av1_is_fullmv_in_range
Unexecuted instantiation: rdopt.c:av1_is_fullmv_in_range
Unexecuted instantiation: segmentation.c:av1_is_fullmv_in_range
Unexecuted instantiation: speed_features.c:av1_is_fullmv_in_range
Unexecuted instantiation: superres_scale.c:av1_is_fullmv_in_range
Unexecuted instantiation: svc_layercontext.c:av1_is_fullmv_in_range
Unexecuted instantiation: temporal_filter.c:av1_is_fullmv_in_range
Unexecuted instantiation: thirdpass.c:av1_is_fullmv_in_range
Unexecuted instantiation: tokenize.c:av1_is_fullmv_in_range
Unexecuted instantiation: tpl_model.c:av1_is_fullmv_in_range
Unexecuted instantiation: tx_search.c:av1_is_fullmv_in_range
Unexecuted instantiation: txb_rdopt.c:av1_is_fullmv_in_range
Unexecuted instantiation: intra_mode_search.c:av1_is_fullmv_in_range
Unexecuted instantiation: var_based_part.c:av1_is_fullmv_in_range
Unexecuted instantiation: av1_noise_estimate.c:av1_is_fullmv_in_range
Unexecuted instantiation: aq_complexity.c:av1_is_fullmv_in_range
Unexecuted instantiation: aq_cyclicrefresh.c:av1_is_fullmv_in_range
Unexecuted instantiation: aq_variance.c:av1_is_fullmv_in_range
Unexecuted instantiation: allintra_vis.c:av1_is_fullmv_in_range
Unexecuted instantiation: compound_type.c:av1_is_fullmv_in_range
Unexecuted instantiation: context_tree.c:av1_is_fullmv_in_range
Unexecuted instantiation: encodeframe.c:av1_is_fullmv_in_range
Unexecuted instantiation: encodeframe_utils.c:av1_is_fullmv_in_range
Unexecuted instantiation: encodemb.c:av1_is_fullmv_in_range
Unexecuted instantiation: encode_strategy.c:av1_is_fullmv_in_range
Unexecuted instantiation: global_motion.c:av1_is_fullmv_in_range
Unexecuted instantiation: gop_structure.c:av1_is_fullmv_in_range
Unexecuted instantiation: interp_search.c:av1_is_fullmv_in_range
Unexecuted instantiation: motion_search_facade.c:av1_is_fullmv_in_range
Unexecuted instantiation: partition_search.c:av1_is_fullmv_in_range
Unexecuted instantiation: partition_strategy.c:av1_is_fullmv_in_range
Unexecuted instantiation: nonrd_pickmode.c:av1_is_fullmv_in_range
331
// =============================================================================
332
//  Subpixel Motion Search
333
// =============================================================================
334
enum {
335
  EIGHTH_PEL,
336
  QUARTER_PEL,
337
  HALF_PEL,
338
  FULL_PEL
339
} UENUM1BYTE(SUBPEL_FORCE_STOP);
340
341
typedef struct {
342
  const aom_variance_fn_ptr_t *vfp;
343
  SUBPEL_SEARCH_TYPE subpel_search_type;
344
  // Source and reference buffers
345
  MSBuffers ms_buffers;
346
  int w, h;
347
} SUBPEL_SEARCH_VAR_PARAMS;
348
349
// This struct holds subpixel motion search parameters that should be constant
350
// during the search
351
typedef struct {
352
  // High level motion search settings
353
  int allow_hp;
354
  const int *cost_list;
355
  SUBPEL_FORCE_STOP forced_stop;
356
  int iters_per_step;
357
  SubpelMvLimits mv_limits;
358
359
  // For calculating mv cost
360
  MV_COST_PARAMS mv_cost_params;
361
362
  // Distortion calculation params
363
  SUBPEL_SEARCH_VAR_PARAMS var_params;
364
} SUBPEL_MOTION_SEARCH_PARAMS;
365
366
void av1_make_default_subpel_ms_params(SUBPEL_MOTION_SEARCH_PARAMS *ms_params,
367
                                       const struct AV1_COMP *cpi,
368
                                       const MACROBLOCK *x, BLOCK_SIZE bsize,
369
                                       const MV *ref_mv, const int *cost_list);
370
371
typedef int(fractional_mv_step_fp)(MACROBLOCKD *xd, const AV1_COMMON *const cm,
372
                                   const SUBPEL_MOTION_SEARCH_PARAMS *ms_params,
373
                                   MV start_mv, MV *bestmv, int *distortion,
374
                                   unsigned int *sse1,
375
                                   int_mv *last_mv_search_list);
376
377
extern fractional_mv_step_fp av1_find_best_sub_pixel_tree;
378
extern fractional_mv_step_fp av1_find_best_sub_pixel_tree_pruned;
379
extern fractional_mv_step_fp av1_find_best_sub_pixel_tree_pruned_more;
380
extern fractional_mv_step_fp av1_return_max_sub_pixel_mv;
381
extern fractional_mv_step_fp av1_return_min_sub_pixel_mv;
382
extern fractional_mv_step_fp av1_find_best_obmc_sub_pixel_tree_up;
383
384
unsigned int av1_refine_warped_mv(MACROBLOCKD *xd, const AV1_COMMON *const cm,
385
                                  const SUBPEL_MOTION_SEARCH_PARAMS *ms_params,
386
                                  BLOCK_SIZE bsize, const int *pts0,
387
                                  const int *pts_inref0, int total_samples);
388
389
0
static INLINE void av1_set_fractional_mv(int_mv *fractional_best_mv) {
390
0
  for (int z = 0; z < 3; z++) {
391
0
    fractional_best_mv[z].as_int = INVALID_MV;
392
0
  }
393
0
}
Unexecuted instantiation: av1_cx_iface.c:av1_set_fractional_mv
Unexecuted instantiation: av1_quantize.c:av1_set_fractional_mv
Unexecuted instantiation: bitstream.c:av1_set_fractional_mv
Unexecuted instantiation: encodemv.c:av1_set_fractional_mv
Unexecuted instantiation: encoder.c:av1_set_fractional_mv
Unexecuted instantiation: encoder_utils.c:av1_set_fractional_mv
Unexecuted instantiation: encodetxb.c:av1_set_fractional_mv
Unexecuted instantiation: ethread.c:av1_set_fractional_mv
Unexecuted instantiation: firstpass.c:av1_set_fractional_mv
Unexecuted instantiation: global_motion_facade.c:av1_set_fractional_mv
Unexecuted instantiation: level.c:av1_set_fractional_mv
Unexecuted instantiation: lookahead.c:av1_set_fractional_mv
Unexecuted instantiation: mcomp.c:av1_set_fractional_mv
Unexecuted instantiation: mv_prec.c:av1_set_fractional_mv
Unexecuted instantiation: palette.c:av1_set_fractional_mv
Unexecuted instantiation: pass2_strategy.c:av1_set_fractional_mv
Unexecuted instantiation: pickcdef.c:av1_set_fractional_mv
Unexecuted instantiation: picklpf.c:av1_set_fractional_mv
Unexecuted instantiation: pickrst.c:av1_set_fractional_mv
Unexecuted instantiation: ratectrl.c:av1_set_fractional_mv
Unexecuted instantiation: rd.c:av1_set_fractional_mv
Unexecuted instantiation: rdopt.c:av1_set_fractional_mv
Unexecuted instantiation: segmentation.c:av1_set_fractional_mv
Unexecuted instantiation: speed_features.c:av1_set_fractional_mv
Unexecuted instantiation: superres_scale.c:av1_set_fractional_mv
Unexecuted instantiation: svc_layercontext.c:av1_set_fractional_mv
Unexecuted instantiation: temporal_filter.c:av1_set_fractional_mv
Unexecuted instantiation: thirdpass.c:av1_set_fractional_mv
Unexecuted instantiation: tokenize.c:av1_set_fractional_mv
Unexecuted instantiation: tpl_model.c:av1_set_fractional_mv
Unexecuted instantiation: tx_search.c:av1_set_fractional_mv
Unexecuted instantiation: txb_rdopt.c:av1_set_fractional_mv
Unexecuted instantiation: intra_mode_search.c:av1_set_fractional_mv
Unexecuted instantiation: var_based_part.c:av1_set_fractional_mv
Unexecuted instantiation: av1_noise_estimate.c:av1_set_fractional_mv
Unexecuted instantiation: aq_complexity.c:av1_set_fractional_mv
Unexecuted instantiation: aq_cyclicrefresh.c:av1_set_fractional_mv
Unexecuted instantiation: aq_variance.c:av1_set_fractional_mv
Unexecuted instantiation: allintra_vis.c:av1_set_fractional_mv
Unexecuted instantiation: compound_type.c:av1_set_fractional_mv
Unexecuted instantiation: context_tree.c:av1_set_fractional_mv
Unexecuted instantiation: encodeframe.c:av1_set_fractional_mv
Unexecuted instantiation: encodeframe_utils.c:av1_set_fractional_mv
Unexecuted instantiation: encodemb.c:av1_set_fractional_mv
Unexecuted instantiation: encode_strategy.c:av1_set_fractional_mv
Unexecuted instantiation: global_motion.c:av1_set_fractional_mv
Unexecuted instantiation: gop_structure.c:av1_set_fractional_mv
Unexecuted instantiation: interp_search.c:av1_set_fractional_mv
Unexecuted instantiation: motion_search_facade.c:av1_set_fractional_mv
Unexecuted instantiation: partition_search.c:av1_set_fractional_mv
Unexecuted instantiation: partition_strategy.c:av1_set_fractional_mv
Unexecuted instantiation: nonrd_pickmode.c:av1_set_fractional_mv
394
395
static INLINE void av1_set_subpel_mv_search_range(SubpelMvLimits *subpel_limits,
396
                                                  const FullMvLimits *mv_limits,
397
0
                                                  const MV *ref_mv) {
398
0
  const int max_mv = GET_MV_SUBPEL(MAX_FULL_PEL_VAL);
399
0
  const int minc =
400
0
      AOMMAX(GET_MV_SUBPEL(mv_limits->col_min), ref_mv->col - max_mv);
401
0
  const int maxc =
402
0
      AOMMIN(GET_MV_SUBPEL(mv_limits->col_max), ref_mv->col + max_mv);
403
0
  const int minr =
404
0
      AOMMAX(GET_MV_SUBPEL(mv_limits->row_min), ref_mv->row - max_mv);
405
0
  const int maxr =
406
0
      AOMMIN(GET_MV_SUBPEL(mv_limits->row_max), ref_mv->row + max_mv);
407
408
0
  subpel_limits->col_min = AOMMAX(MV_LOW + 1, minc);
409
0
  subpel_limits->col_max = AOMMIN(MV_UPP - 1, maxc);
410
0
  subpel_limits->row_min = AOMMAX(MV_LOW + 1, minr);
411
0
  subpel_limits->row_max = AOMMIN(MV_UPP - 1, maxr);
412
0
}
Unexecuted instantiation: av1_cx_iface.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: av1_quantize.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: bitstream.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: encodemv.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: encoder.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: encoder_utils.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: encodetxb.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: ethread.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: firstpass.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: global_motion_facade.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: level.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: lookahead.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: mcomp.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: mv_prec.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: palette.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: pass2_strategy.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: pickcdef.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: picklpf.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: pickrst.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: ratectrl.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: rd.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: rdopt.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: segmentation.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: speed_features.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: superres_scale.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: svc_layercontext.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: temporal_filter.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: thirdpass.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: tokenize.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: tpl_model.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: tx_search.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: txb_rdopt.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: intra_mode_search.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: var_based_part.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: av1_noise_estimate.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: aq_complexity.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: aq_cyclicrefresh.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: aq_variance.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: allintra_vis.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: compound_type.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: context_tree.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: encodeframe.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: encodeframe_utils.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: encodemb.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: encode_strategy.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: global_motion.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: gop_structure.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: interp_search.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: motion_search_facade.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: partition_search.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: partition_strategy.c:av1_set_subpel_mv_search_range
Unexecuted instantiation: nonrd_pickmode.c:av1_set_subpel_mv_search_range
413
414
static INLINE int av1_is_subpelmv_in_range(const SubpelMvLimits *mv_limits,
415
0
                                           MV mv) {
416
0
  return (mv.col >= mv_limits->col_min) && (mv.col <= mv_limits->col_max) &&
417
0
         (mv.row >= mv_limits->row_min) && (mv.row <= mv_limits->row_max);
418
0
}
Unexecuted instantiation: av1_cx_iface.c:av1_is_subpelmv_in_range
Unexecuted instantiation: av1_quantize.c:av1_is_subpelmv_in_range
Unexecuted instantiation: bitstream.c:av1_is_subpelmv_in_range
Unexecuted instantiation: encodemv.c:av1_is_subpelmv_in_range
Unexecuted instantiation: encoder.c:av1_is_subpelmv_in_range
Unexecuted instantiation: encoder_utils.c:av1_is_subpelmv_in_range
Unexecuted instantiation: encodetxb.c:av1_is_subpelmv_in_range
Unexecuted instantiation: ethread.c:av1_is_subpelmv_in_range
Unexecuted instantiation: firstpass.c:av1_is_subpelmv_in_range
Unexecuted instantiation: global_motion_facade.c:av1_is_subpelmv_in_range
Unexecuted instantiation: level.c:av1_is_subpelmv_in_range
Unexecuted instantiation: lookahead.c:av1_is_subpelmv_in_range
Unexecuted instantiation: mcomp.c:av1_is_subpelmv_in_range
Unexecuted instantiation: mv_prec.c:av1_is_subpelmv_in_range
Unexecuted instantiation: palette.c:av1_is_subpelmv_in_range
Unexecuted instantiation: pass2_strategy.c:av1_is_subpelmv_in_range
Unexecuted instantiation: pickcdef.c:av1_is_subpelmv_in_range
Unexecuted instantiation: picklpf.c:av1_is_subpelmv_in_range
Unexecuted instantiation: pickrst.c:av1_is_subpelmv_in_range
Unexecuted instantiation: ratectrl.c:av1_is_subpelmv_in_range
Unexecuted instantiation: rd.c:av1_is_subpelmv_in_range
Unexecuted instantiation: rdopt.c:av1_is_subpelmv_in_range
Unexecuted instantiation: segmentation.c:av1_is_subpelmv_in_range
Unexecuted instantiation: speed_features.c:av1_is_subpelmv_in_range
Unexecuted instantiation: superres_scale.c:av1_is_subpelmv_in_range
Unexecuted instantiation: svc_layercontext.c:av1_is_subpelmv_in_range
Unexecuted instantiation: temporal_filter.c:av1_is_subpelmv_in_range
Unexecuted instantiation: thirdpass.c:av1_is_subpelmv_in_range
Unexecuted instantiation: tokenize.c:av1_is_subpelmv_in_range
Unexecuted instantiation: tpl_model.c:av1_is_subpelmv_in_range
Unexecuted instantiation: tx_search.c:av1_is_subpelmv_in_range
Unexecuted instantiation: txb_rdopt.c:av1_is_subpelmv_in_range
Unexecuted instantiation: intra_mode_search.c:av1_is_subpelmv_in_range
Unexecuted instantiation: var_based_part.c:av1_is_subpelmv_in_range
Unexecuted instantiation: av1_noise_estimate.c:av1_is_subpelmv_in_range
Unexecuted instantiation: aq_complexity.c:av1_is_subpelmv_in_range
Unexecuted instantiation: aq_cyclicrefresh.c:av1_is_subpelmv_in_range
Unexecuted instantiation: aq_variance.c:av1_is_subpelmv_in_range
Unexecuted instantiation: allintra_vis.c:av1_is_subpelmv_in_range
Unexecuted instantiation: compound_type.c:av1_is_subpelmv_in_range
Unexecuted instantiation: context_tree.c:av1_is_subpelmv_in_range
Unexecuted instantiation: encodeframe.c:av1_is_subpelmv_in_range
Unexecuted instantiation: encodeframe_utils.c:av1_is_subpelmv_in_range
Unexecuted instantiation: encodemb.c:av1_is_subpelmv_in_range
Unexecuted instantiation: encode_strategy.c:av1_is_subpelmv_in_range
Unexecuted instantiation: global_motion.c:av1_is_subpelmv_in_range
Unexecuted instantiation: gop_structure.c:av1_is_subpelmv_in_range
Unexecuted instantiation: interp_search.c:av1_is_subpelmv_in_range
Unexecuted instantiation: motion_search_facade.c:av1_is_subpelmv_in_range
Unexecuted instantiation: partition_search.c:av1_is_subpelmv_in_range
Unexecuted instantiation: partition_strategy.c:av1_is_subpelmv_in_range
Unexecuted instantiation: nonrd_pickmode.c:av1_is_subpelmv_in_range
419
420
#ifdef __cplusplus
421
}  // extern "C"
422
#endif
423
424
#endif  // AOM_AV1_ENCODER_MCOMP_H_