Coverage Report

Created: 2026-04-01 07:49

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/aom/av1/encoder/encoder.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
12
/*!\file
13
 * \brief Declares top-level encoder structures and functions.
14
 */
15
#ifndef AOM_AV1_ENCODER_ENCODER_H_
16
#define AOM_AV1_ENCODER_ENCODER_H_
17
18
#include <stdbool.h>
19
#include <stdio.h>
20
21
#include "config/aom_config.h"
22
23
#include "aom/aomcx.h"
24
#include "aom_util/aom_pthread.h"
25
26
#include "av1/common/alloccommon.h"
27
#include "av1/common/av1_common_int.h"
28
#include "av1/common/blockd.h"
29
#include "av1/common/entropymode.h"
30
#include "av1/common/enums.h"
31
#include "av1/common/reconintra.h"
32
#include "av1/common/resize.h"
33
#include "av1/common/thread_common.h"
34
#include "av1/common/timing.h"
35
36
#include "av1/encoder/aq_cyclicrefresh.h"
37
#include "av1/encoder/av1_ext_ratectrl.h"
38
#include "av1/encoder/av1_quantize.h"
39
#include "av1/encoder/block.h"
40
#include "av1/encoder/context_tree.h"
41
#include "av1/encoder/enc_enums.h"
42
#include "av1/encoder/encodemb.h"
43
#include "av1/encoder/external_partition.h"
44
#include "av1/encoder/firstpass.h"
45
#include "av1/encoder/global_motion.h"
46
#include "av1/encoder/level.h"
47
#include "av1/encoder/lookahead.h"
48
#include "av1/encoder/mcomp.h"
49
#include "av1/encoder/pickcdef.h"
50
#include "av1/encoder/ratectrl.h"
51
#include "av1/encoder/rd.h"
52
#include "av1/encoder/speed_features.h"
53
#include "av1/encoder/svc_layercontext.h"
54
#include "av1/encoder/temporal_filter.h"
55
#if CONFIG_THREE_PASS
56
#include "av1/encoder/thirdpass.h"
57
#endif
58
#include "av1/encoder/tokenize.h"
59
#include "av1/encoder/tpl_model.h"
60
#include "av1/encoder/av1_noise_estimate.h"
61
#include "av1/encoder/bitstream.h"
62
63
#if CONFIG_INTERNAL_STATS
64
#include "aom_dsp/ssim.h"
65
#endif
66
#include "aom_dsp/variance.h"
67
#if CONFIG_DENOISE
68
#include "aom_dsp/noise_model.h"
69
#endif
70
#if CONFIG_TUNE_VMAF
71
#include "av1/encoder/tune_vmaf.h"
72
#endif
73
#if CONFIG_AV1_TEMPORAL_DENOISING
74
#include "av1/encoder/av1_temporal_denoiser.h"
75
#endif
76
#if CONFIG_TUNE_BUTTERAUGLI
77
#include "av1/encoder/tune_butteraugli.h"
78
#endif
79
80
#include "aom/internal/aom_codec_internal.h"
81
82
#ifdef __cplusplus
83
extern "C" {
84
#endif
85
86
// TODO(yunqing, any): Added suppression tag to quiet Doxygen warnings. Need to
87
// adjust it while we work on documentation.
88
/*!\cond */
89
// Number of frames required to test for scene cut detection
90
0
#define SCENE_CUT_KEY_TEST_INTERVAL 16
91
92
// Lookahead index threshold to enable temporal filtering for second arf.
93
0
#define TF_LOOKAHEAD_IDX_THR 7
94
95
#define HDR_QP_LEVELS 10
96
0
#define CHROMA_CB_QP_SCALE 1.04
97
0
#define CHROMA_CR_QP_SCALE 1.04
98
0
#define CHROMA_QP_SCALE -0.46
99
0
#define CHROMA_QP_OFFSET 9.26
100
0
#define QP_SCALE_FACTOR 2.0
101
#define DISABLE_HDR_LUMA_DELTAQ 1
102
103
// Rational number with an int64 numerator
104
// This structure holds a fractional value
105
typedef struct aom_rational64 {
106
  int64_t num;       // fraction numerator
107
  int den;           // fraction denominator
108
} aom_rational64_t;  // alias for struct aom_rational
109
110
enum {
111
  FRAMEFLAGS_KEY = 1 << 0,
112
  FRAMEFLAGS_GOLDEN = 1 << 1,
113
  FRAMEFLAGS_BWDREF = 1 << 2,
114
  // TODO(zoeliu): To determine whether a frame flag is needed for ALTREF2_FRAME
115
  FRAMEFLAGS_ALTREF = 1 << 3,
116
  FRAMEFLAGS_INTRAONLY = 1 << 4,
117
  FRAMEFLAGS_SWITCH = 1 << 5,
118
  FRAMEFLAGS_ERROR_RESILIENT = 1 << 6,
119
} UENUM1BYTE(FRAMETYPE_FLAGS);
120
121
#if CONFIG_FPMT_TEST
122
enum {
123
  PARALLEL_ENCODE = 0,
124
  PARALLEL_SIMULATION_ENCODE,
125
  NUM_FPMT_TEST_ENCODES
126
} UENUM1BYTE(FPMT_TEST_ENC_CFG);
127
#endif  // CONFIG_FPMT_TEST
128
// 0 level frames are sometimes used for rate control purposes, but for
129
// reference mapping purposes, the minimum level should be 1.
130
0
#define MIN_PYR_LEVEL 1
131
static inline int get_true_pyr_level(int frame_level, int frame_order,
132
0
                                     int max_layer_depth) {
133
0
  if (frame_order == 0) {
134
    // Keyframe case
135
0
    return MIN_PYR_LEVEL;
136
0
  } else if (frame_level == MAX_ARF_LAYERS) {
137
    // Leaves
138
0
    return max_layer_depth;
139
0
  } else if (frame_level == (MAX_ARF_LAYERS + 1)) {
140
    // Altrefs
141
0
    return MIN_PYR_LEVEL;
142
0
  }
143
0
  return AOMMAX(MIN_PYR_LEVEL, frame_level);
144
0
}
Unexecuted instantiation: av1_cx_iface.c:get_true_pyr_level
Unexecuted instantiation: allintra_vis.c:get_true_pyr_level
Unexecuted instantiation: av1_quantize.c:get_true_pyr_level
Unexecuted instantiation: bitstream.c:get_true_pyr_level
Unexecuted instantiation: context_tree.c:get_true_pyr_level
Unexecuted instantiation: encodeframe.c:get_true_pyr_level
Unexecuted instantiation: encodeframe_utils.c:get_true_pyr_level
Unexecuted instantiation: encodemb.c:get_true_pyr_level
Unexecuted instantiation: encodemv.c:get_true_pyr_level
Unexecuted instantiation: encoder.c:get_true_pyr_level
Unexecuted instantiation: encoder_utils.c:get_true_pyr_level
Unexecuted instantiation: encodetxb.c:get_true_pyr_level
Unexecuted instantiation: ethread.c:get_true_pyr_level
Unexecuted instantiation: firstpass.c:get_true_pyr_level
Unexecuted instantiation: global_motion_facade.c:get_true_pyr_level
Unexecuted instantiation: level.c:get_true_pyr_level
Unexecuted instantiation: lookahead.c:get_true_pyr_level
Unexecuted instantiation: mcomp.c:get_true_pyr_level
Unexecuted instantiation: mv_prec.c:get_true_pyr_level
Unexecuted instantiation: palette.c:get_true_pyr_level
Unexecuted instantiation: partition_search.c:get_true_pyr_level
Unexecuted instantiation: partition_strategy.c:get_true_pyr_level
Unexecuted instantiation: pass2_strategy.c:get_true_pyr_level
Unexecuted instantiation: pickcdef.c:get_true_pyr_level
Unexecuted instantiation: picklpf.c:get_true_pyr_level
Unexecuted instantiation: pickrst.c:get_true_pyr_level
Unexecuted instantiation: ratectrl.c:get_true_pyr_level
Unexecuted instantiation: rd.c:get_true_pyr_level
Unexecuted instantiation: rdopt.c:get_true_pyr_level
Unexecuted instantiation: nonrd_pickmode.c:get_true_pyr_level
Unexecuted instantiation: nonrd_opt.c:get_true_pyr_level
Unexecuted instantiation: segmentation.c:get_true_pyr_level
Unexecuted instantiation: speed_features.c:get_true_pyr_level
Unexecuted instantiation: superres_scale.c:get_true_pyr_level
Unexecuted instantiation: svc_layercontext.c:get_true_pyr_level
Unexecuted instantiation: temporal_filter.c:get_true_pyr_level
Unexecuted instantiation: tokenize.c:get_true_pyr_level
Unexecuted instantiation: tpl_model.c:get_true_pyr_level
Unexecuted instantiation: tx_search.c:get_true_pyr_level
Unexecuted instantiation: txb_rdopt.c:get_true_pyr_level
Unexecuted instantiation: intra_mode_search.c:get_true_pyr_level
Unexecuted instantiation: var_based_part.c:get_true_pyr_level
Unexecuted instantiation: av1_noise_estimate.c:get_true_pyr_level
Unexecuted instantiation: aq_complexity.c:get_true_pyr_level
Unexecuted instantiation: aq_cyclicrefresh.c:get_true_pyr_level
Unexecuted instantiation: aq_variance.c:get_true_pyr_level
Unexecuted instantiation: compound_type.c:get_true_pyr_level
Unexecuted instantiation: encode_strategy.c:get_true_pyr_level
Unexecuted instantiation: global_motion.c:get_true_pyr_level
Unexecuted instantiation: gop_structure.c:get_true_pyr_level
Unexecuted instantiation: interp_search.c:get_true_pyr_level
Unexecuted instantiation: motion_search_facade.c:get_true_pyr_level
145
146
enum {
147
  NO_AQ = 0,
148
  VARIANCE_AQ = 1,
149
  COMPLEXITY_AQ = 2,
150
  CYCLIC_REFRESH_AQ = 3,
151
  AQ_MODE_COUNT  // This should always be the last member of the enum
152
} UENUM1BYTE(AQ_MODE);
153
enum {
154
  NO_DELTA_Q = 0,
155
  DELTA_Q_OBJECTIVE = 1,      // Modulation to improve objective quality
156
  DELTA_Q_PERCEPTUAL = 2,     // Modulation to improve video perceptual quality
157
  DELTA_Q_PERCEPTUAL_AI = 3,  // Perceptual quality opt for all intra mode
158
  DELTA_Q_USER_RATING_BASED = 4,  // User rating based delta q mode
159
  DELTA_Q_HDR = 5,             // QP adjustment based on HDR block pixel average
160
  DELTA_Q_VARIANCE_BOOST = 6,  // Variance Boost style modulation
161
  DELTA_Q_MODE_COUNT  // This should always be the last member of the enum
162
} UENUM1BYTE(DELTAQ_MODE);
163
164
enum {
165
  RESIZE_NONE = 0,     // No frame resizing allowed.
166
  RESIZE_FIXED = 1,    // All frames are coded at the specified scale.
167
  RESIZE_RANDOM = 2,   // All frames are coded at a random scale.
168
  RESIZE_DYNAMIC = 3,  // Frames coded at lower scale based on rate control.
169
  RESIZE_MODES
170
} UENUM1BYTE(RESIZE_MODE);
171
172
enum {
173
  SS_CFG_SRC = 0,
174
  SS_CFG_LOOKAHEAD = 1,
175
  SS_CFG_FPF = 2,
176
  SS_CFG_TOTAL = 3
177
} UENUM1BYTE(SS_CFG_OFFSET);
178
179
enum {
180
  DISABLE_SCENECUT,        // For LAP, lag_in_frames < 19
181
  ENABLE_SCENECUT_MODE_1,  // For LAP, lag_in_frames >=19 and < 33
182
  ENABLE_SCENECUT_MODE_2   // For twopass and LAP - lag_in_frames >=33
183
} UENUM1BYTE(SCENECUT_MODE);
184
185
#define MAX_VBR_CORPUS_COMPLEXITY 10000
186
187
typedef enum {
188
  MOD_FP,           // First pass
189
  MOD_TF,           // Temporal filtering
190
  MOD_TPL,          // TPL
191
  MOD_GME,          // Global motion estimation
192
  MOD_ENC,          // Encode stage
193
  MOD_LPF,          // Deblocking loop filter
194
  MOD_CDEF_SEARCH,  // CDEF search
195
  MOD_CDEF,         // CDEF frame
196
  MOD_LR,           // Loop restoration filtering
197
  MOD_PACK_BS,      // Pack bitstream
198
  MOD_FRAME_ENC,    // Frame Parallel encode
199
  MOD_AI,           // All intra
200
  NUM_MT_MODULES
201
} MULTI_THREADED_MODULES;
202
203
/*!\endcond */
204
205
/*!\enum COST_UPDATE_TYPE
206
 * \brief    This enum controls how often the entropy costs should be updated.
207
 * \warning  In case of any modifications/additions done to the enum
208
 * COST_UPDATE_TYPE, the enum INTERNAL_COST_UPDATE_TYPE needs to be updated as
209
 * well.
210
 */
211
typedef enum {
212
  COST_UPD_SB,           /*!< Update every sb. */
213
  COST_UPD_SBROW,        /*!< Update every sb rows inside a tile. */
214
  COST_UPD_TILE,         /*!< Update every tile. */
215
  COST_UPD_OFF,          /*!< Turn off cost updates. */
216
  NUM_COST_UPDATE_TYPES, /*!< Number of cost update types. */
217
} COST_UPDATE_TYPE;
218
219
/*!\enum LOOPFILTER_CONTROL
220
 * \brief This enum controls to which frames loopfilter is applied.
221
 */
222
typedef enum {
223
  LOOPFILTER_NONE = 0,      /*!< Disable loopfilter on all frames. */
224
  LOOPFILTER_ALL = 1,       /*!< Enable loopfilter for all frames. */
225
  LOOPFILTER_REFERENCE = 2, /*!< Disable loopfilter on non reference frames. */
226
  LOOPFILTER_SELECTIVELY =
227
      3, /*!< Disable loopfilter on frames with low motion. */
228
} LOOPFILTER_CONTROL;
229
230
/*!\enum SKIP_APPLY_POSTPROC_FILTER
231
 * \brief This enum controls the application of post-processing filters on a
232
 * reconstructed frame.
233
 */
234
typedef enum {
235
  SKIP_APPLY_RESTORATION = 1 << 0,
236
  SKIP_APPLY_SUPERRES = 1 << 1,
237
  SKIP_APPLY_CDEF = 1 << 2,
238
  SKIP_APPLY_LOOPFILTER = 1 << 3,
239
} SKIP_APPLY_POSTPROC_FILTER;
240
241
/*!
242
 * \brief Encoder config related to resize.
243
 */
244
typedef struct {
245
  /*!
246
   * Indicates the frame resize mode to be used by the encoder.
247
   */
248
  RESIZE_MODE resize_mode;
249
  /*!
250
   * Indicates the denominator for resize of inter frames, assuming 8 as the
251
   *  numerator. Its value ranges between 8-16.
252
   */
253
  uint8_t resize_scale_denominator;
254
  /*!
255
   * Indicates the denominator for resize of key frames, assuming 8 as the
256
   * numerator. Its value ranges between 8-16.
257
   */
258
  uint8_t resize_kf_scale_denominator;
259
} ResizeCfg;
260
261
/*!
262
 * \brief Encoder config for coding block partitioning.
263
 */
264
typedef struct {
265
  /*!
266
   * Flag to indicate if rectanguar partitions should be enabled.
267
   */
268
  bool enable_rect_partitions;
269
  /*!
270
   * Flag to indicate if AB partitions should be enabled.
271
   */
272
  bool enable_ab_partitions;
273
  /*!
274
   * Flag to indicate if 1:4 / 4:1 partitions should be enabled.
275
   */
276
  bool enable_1to4_partitions;
277
  /*!
278
   * Indicates the minimum partition size that should be allowed. Both width and
279
   * height of a partition cannot be smaller than the min_partition_size.
280
   */
281
  BLOCK_SIZE min_partition_size;
282
  /*!
283
   * Indicates the maximum partition size that should be allowed. Both width and
284
   * height of a partition cannot be larger than the max_partition_size.
285
   */
286
  BLOCK_SIZE max_partition_size;
287
} PartitionCfg;
288
289
/*!
290
 * \brief Encoder flags for intra prediction.
291
 */
292
typedef struct {
293
  /*!
294
   * Flag to indicate if intra edge filtering process should be enabled.
295
   */
296
  bool enable_intra_edge_filter;
297
  /*!
298
   * Flag to indicate if recursive filtering based intra prediction should be
299
   * enabled.
300
   */
301
  bool enable_filter_intra;
302
  /*!
303
   * Flag to indicate if smooth intra prediction modes should be enabled.
304
   */
305
  bool enable_smooth_intra;
306
  /*!
307
   * Flag to indicate if PAETH intra prediction mode should be enabled.
308
   */
309
  bool enable_paeth_intra;
310
  /*!
311
   * Flag to indicate if CFL uv intra mode should be enabled.
312
   */
313
  bool enable_cfl_intra;
314
  /*!
315
   * Flag to indicate if directional modes should be enabled.
316
   */
317
  bool enable_directional_intra;
318
  /*!
319
   * Flag to indicate if the subset of directional modes from D45 to D203 intra
320
   * should be enabled. Has no effect if directional modes are disabled.
321
   */
322
  bool enable_diagonal_intra;
323
  /*!
324
   * Flag to indicate if delta angles for directional intra prediction should be
325
   * enabled.
326
   */
327
  bool enable_angle_delta;
328
  /*!
329
   * Flag to indicate whether to automatically turn off several intral coding
330
   * tools.
331
   * This flag is only used when "--deltaq-mode=3" is true.
332
   * When set to 1, the encoder will analyze the reconstruction quality
333
   * as compared to the source image in the preprocessing pass.
334
   * If the recontruction quality is considered high enough, we disable
335
   * the following intra coding tools, for better encoding speed:
336
   * "--enable_smooth_intra",
337
   * "--enable_paeth_intra",
338
   * "--enable_cfl_intra",
339
   * "--enable_diagonal_intra".
340
   */
341
  bool auto_intra_tools_off;
342
} IntraModeCfg;
343
344
/*!
345
 * \brief Encoder flags for transform sizes and types.
346
 */
347
typedef struct {
348
  /*!
349
   * Flag to indicate if 64-pt transform should be enabled.
350
   */
351
  bool enable_tx64;
352
  /*!
353
   * Flag to indicate if flip and identity transform types should be enabled.
354
   */
355
  bool enable_flip_idtx;
356
  /*!
357
   * Flag to indicate if rectangular transform should be enabled.
358
   */
359
  bool enable_rect_tx;
360
  /*!
361
   * Flag to indicate whether or not to use a default reduced set for ext-tx
362
   * rather than the potential full set of 16 transforms.
363
   */
364
  bool reduced_tx_type_set;
365
  /*!
366
   * Flag to indicate if transform type for intra blocks should be limited to
367
   * DCT_DCT.
368
   */
369
  bool use_intra_dct_only;
370
  /*!
371
   * Flag to indicate if transform type for inter blocks should be limited to
372
   * DCT_DCT.
373
   */
374
  bool use_inter_dct_only;
375
  /*!
376
   * Flag to indicate if intra blocks should use default transform type
377
   * (mode-dependent) only.
378
   */
379
  bool use_intra_default_tx_only;
380
  /*!
381
   * Flag to indicate if transform size search should be enabled.
382
   */
383
  bool enable_tx_size_search;
384
} TxfmSizeTypeCfg;
385
386
/*!
387
 * \brief Encoder flags for compound prediction modes.
388
 */
389
typedef struct {
390
  /*!
391
   * Flag to indicate if distance-weighted compound type should be enabled.
392
   */
393
  bool enable_dist_wtd_comp;
394
  /*!
395
   * Flag to indicate if masked (wedge/diff-wtd) compound type should be
396
   * enabled.
397
   */
398
  bool enable_masked_comp;
399
  /*!
400
   * Flag to indicate if smooth interintra mode should be enabled.
401
   */
402
  bool enable_smooth_interintra;
403
  /*!
404
   * Flag to indicate if difference-weighted compound type should be enabled.
405
   */
406
  bool enable_diff_wtd_comp;
407
  /*!
408
   * Flag to indicate if inter-inter wedge compound type should be enabled.
409
   */
410
  bool enable_interinter_wedge;
411
  /*!
412
   * Flag to indicate if inter-intra wedge compound type should be enabled.
413
   */
414
  bool enable_interintra_wedge;
415
} CompoundTypeCfg;
416
417
/*!
418
 * \brief Encoder config related to frame super-resolution.
419
 */
420
typedef struct {
421
  /*!
422
   * Indicates the qindex based threshold to be used when AOM_SUPERRES_QTHRESH
423
   * mode is used for inter frames.
424
   */
425
  int superres_qthresh;
426
  /*!
427
   * Indicates the qindex based threshold to be used when AOM_SUPERRES_QTHRESH
428
   * mode is used for key frames.
429
   */
430
  int superres_kf_qthresh;
431
  /*!
432
   * Indicates the denominator of the fraction that specifies the ratio between
433
   * the superblock width before and after upscaling for inter frames. The
434
   * numerator of this fraction is equal to the constant SCALE_NUMERATOR.
435
   */
436
  uint8_t superres_scale_denominator;
437
  /*!
438
   * Indicates the denominator of the fraction that specifies the ratio between
439
   * the superblock width before and after upscaling for key frames. The
440
   * numerator of this fraction is equal to the constant SCALE_NUMERATOR.
441
   */
442
  uint8_t superres_kf_scale_denominator;
443
  /*!
444
   * Indicates the Super-resolution mode to be used by the encoder.
445
   */
446
  aom_superres_mode superres_mode;
447
  /*!
448
   * Flag to indicate if super-resolution should be enabled for the sequence.
449
   */
450
  bool enable_superres;
451
} SuperResCfg;
452
453
/*!
454
 * \brief Encoder config related to the coding of key frames.
455
 */
456
typedef struct {
457
  /*!
458
   * Indicates the minimum distance to a key frame.
459
   */
460
  int key_freq_min;
461
462
  /*!
463
   * Indicates the maximum distance to a key frame.
464
   */
465
  int key_freq_max;
466
467
  /*!
468
   * Indicates if temporal filtering should be applied on keyframe.
469
   */
470
  int enable_keyframe_filtering;
471
472
  /*!
473
   * Indicates the number of frames after which a frame may be coded as an
474
   * S-Frame.
475
   */
476
  int sframe_dist;
477
478
  /*!
479
   * Indicates how an S-Frame should be inserted.
480
   * 1: the considered frame will be made into an S-Frame only if it is an
481
   * altref frame. 2: the next altref frame will be made into an S-Frame.
482
   */
483
  int sframe_mode;
484
485
  /*!
486
   * Indicates if encoder should autodetect cut scenes and set the keyframes.
487
   */
488
  bool auto_key;
489
490
  /*!
491
   * Indicates the forward key frame distance.
492
   */
493
  int fwd_kf_dist;
494
495
  /*!
496
   * Indicates if forward keyframe reference should be enabled.
497
   */
498
  bool fwd_kf_enabled;
499
500
  /*!
501
   * Indicates if S-Frames should be enabled for the sequence.
502
   */
503
  bool enable_sframe;
504
505
  /*!
506
   * Indicates if intra block copy prediction mode should be enabled or not.
507
   */
508
  bool enable_intrabc;
509
} KeyFrameCfg;
510
511
/*!
512
 * \brief Encoder rate control configuration parameters
513
 */
514
typedef struct {
515
  /*!\cond */
516
  // BUFFERING PARAMETERS
517
  /*!\endcond */
518
  /*!
519
   * Indicates the amount of data that will be buffered by the decoding
520
   * application prior to beginning playback, and is expressed in units of
521
   * time(milliseconds).
522
   */
523
  int64_t starting_buffer_level_ms;
524
  /*!
525
   * Indicates the amount of data that the encoder should try to maintain in the
526
   * decoder's buffer, and is expressed in units of time(milliseconds).
527
   */
528
  int64_t optimal_buffer_level_ms;
529
  /*!
530
   * Indicates the maximum amount of data that may be buffered by the decoding
531
   * application, and is expressed in units of time(milliseconds).
532
   */
533
  int64_t maximum_buffer_size_ms;
534
535
  /*!
536
   * Indicates the bandwidth to be used in bits per second.
537
   */
538
  int64_t target_bandwidth;
539
540
  /*!
541
   * Indicates average complexity of the corpus in single pass vbr based on
542
   * LAP. 0 indicates that corpus complexity vbr mode is disabled.
543
   */
544
  unsigned int vbr_corpus_complexity_lap;
545
  /*!
546
   * Indicates the maximum allowed bitrate for any intra frame as % of bitrate
547
   * target.
548
   */
549
  unsigned int max_intra_bitrate_pct;
550
  /*!
551
   * Indicates the maximum allowed bitrate for any inter frame as % of bitrate
552
   * target.
553
   */
554
  unsigned int max_inter_bitrate_pct;
555
  /*!
556
   * Indicates the percentage of rate boost for golden frame in CBR mode.
557
   */
558
  unsigned int gf_cbr_boost_pct;
559
  /*!
560
   * min_cr / 100 indicates the target minimum compression ratio for each
561
   * frame.
562
   */
563
  unsigned int min_cr;
564
  /*!
565
   * Indicates the frame drop threshold.
566
   */
567
  int drop_frames_water_mark;
568
  /*!
569
   * under_shoot_pct indicates the tolerance of the VBR algorithm to
570
   * undershoot and is used as a trigger threshold for more aggressive
571
   * adaptation of Q. It's value can range from 0-100.
572
   */
573
  int under_shoot_pct;
574
  /*!
575
   * over_shoot_pct indicates the tolerance of the VBR algorithm to overshoot
576
   * and is used as a trigger threshold for more aggressive adaptation of Q.
577
   * It's value can range from 0-1000.
578
   */
579
  int over_shoot_pct;
580
  /*!
581
   * Indicates the maximum qindex that can be used by the quantizer i.e. the
582
   * worst quality qindex.
583
   */
584
  int worst_allowed_q;
585
  /*!
586
   * Indicates the minimum qindex that can be used by the quantizer i.e. the
587
   * best quality qindex.
588
   */
589
  int best_allowed_q;
590
  /*!
591
   * Indicates the Constant/Constrained Quality level.
592
   */
593
  int cq_level;
594
  /*!
595
   * Indicates if the encoding mode is vbr, cbr, constrained quality or
596
   * constant quality.
597
   */
598
  enum aom_rc_mode mode;
599
  /*!
600
   * Indicates the bias (expressed on a scale of 0 to 100) for determining
601
   * target size for the current frame. The value 0 indicates the optimal CBR
602
   * mode value should be used, and 100 indicates the optimal VBR mode value
603
   * should be used.
604
   */
605
  int vbrbias;
606
  /*!
607
   * Indicates the minimum bitrate to be used for a single frame as a percentage
608
   * of the target bitrate.
609
   */
610
  int vbrmin_section;
611
  /*!
612
   * Indicates the maximum bitrate to be used for a single frame as a percentage
613
   * of the target bitrate.
614
   */
615
  int vbrmax_section;
616
617
  /*!
618
   * Indicates the maximum consecutive amount of frame drops, in units of time
619
   * (milliseconds). This is converted to frame units internally. Only used in
620
   * CBR mode.
621
   */
622
  int max_consec_drop_ms;
623
} RateControlCfg;
624
625
/*!\cond */
626
typedef struct {
627
  // Indicates the number of frames lag before encoding is started.
628
  int lag_in_frames;
629
  // Indicates the minimum gf/arf interval to be used.
630
  int min_gf_interval;
631
  // Indicates the maximum gf/arf interval to be used.
632
  int max_gf_interval;
633
  // Indicates the minimum height for GF group pyramid structure to be used.
634
  int gf_min_pyr_height;
635
  // Indicates the maximum height for GF group pyramid structure to be used.
636
  int gf_max_pyr_height;
637
  // Indicates if automatic set and use of altref frames should be enabled.
638
  bool enable_auto_arf;
639
  // Indicates if automatic set and use of (b)ackward (r)ef (f)rames should be
640
  // enabled.
641
  bool enable_auto_brf;
642
} GFConfig;
643
644
typedef struct {
645
  // Indicates the number of tile groups.
646
  unsigned int num_tile_groups;
647
  // Indicates the MTU size for a tile group. If mtu is non-zero,
648
  // num_tile_groups is set to DEFAULT_MAX_NUM_TG.
649
  unsigned int mtu;
650
  // Indicates the number of tile columns in log2.
651
  int tile_columns;
652
  // Indicates the number of tile rows in log2.
653
  int tile_rows;
654
  // Indicates the number of widths in the tile_widths[] array.
655
  int tile_width_count;
656
  // Indicates the number of heights in the tile_heights[] array.
657
  int tile_height_count;
658
  // Indicates the tile widths, and may be empty.
659
  int tile_widths[MAX_TILE_COLS];
660
  // Indicates the tile heights, and may be empty.
661
  int tile_heights[MAX_TILE_ROWS];
662
  // Indicates if large scale tile coding should be used.
663
  bool enable_large_scale_tile;
664
  // Indicates if single tile decoding mode should be enabled.
665
  bool enable_single_tile_decoding;
666
  // Indicates if EXT_TILE_DEBUG should be enabled.
667
  bool enable_ext_tile_debug;
668
} TileConfig;
669
670
typedef struct {
671
  // Indicates the width of the input frame.
672
  int width;
673
  // Indicates the height of the input frame.
674
  int height;
675
  // If forced_max_frame_width is non-zero then it is used to force the maximum
676
  // frame width written in write_sequence_header().
677
  int forced_max_frame_width;
678
  // If forced_max_frame_width is non-zero then it is used to force the maximum
679
  // frame height written in write_sequence_header().
680
  int forced_max_frame_height;
681
  // Indicates the frame width after applying both super-resolution and resize
682
  // to the coded frame.
683
  int render_width;
684
  // Indicates the frame height after applying both super-resolution and resize
685
  // to the coded frame.
686
  int render_height;
687
} FrameDimensionCfg;
688
689
typedef struct {
690
  // Indicates if warped motion should be enabled.
691
  bool enable_warped_motion;
692
  // Indicates if warped motion should be evaluated or not.
693
  bool allow_warped_motion;
694
  // Indicates if OBMC motion should be enabled.
695
  bool enable_obmc;
696
} MotionModeCfg;
697
698
typedef struct {
699
  // Timing info for each frame.
700
  aom_timing_info_t timing_info;
701
  // Indicates the number of time units of a decoding clock.
702
  uint32_t num_units_in_decoding_tick;
703
  // Indicates if decoder model information is present in the coded sequence
704
  // header.
705
  bool decoder_model_info_present_flag;
706
  // Indicates if display model information is present in the coded sequence
707
  // header.
708
  bool display_model_info_present_flag;
709
  // Indicates if timing info for each frame is present.
710
  bool timing_info_present;
711
} DecoderModelCfg;
712
713
typedef struct {
714
  // Indicates the update frequency for coeff costs.
715
  COST_UPDATE_TYPE coeff;
716
  // Indicates the update frequency for mode costs.
717
  COST_UPDATE_TYPE mode;
718
  // Indicates the update frequency for mv costs.
719
  COST_UPDATE_TYPE mv;
720
  // Indicates the update frequency for dv costs.
721
  COST_UPDATE_TYPE dv;
722
} CostUpdateFreq;
723
724
typedef struct {
725
  // Indicates the maximum number of reference frames allowed per frame.
726
  unsigned int max_reference_frames;
727
  // Indicates if the reduced set of references should be enabled.
728
  bool enable_reduced_reference_set;
729
  // Indicates if one-sided compound should be enabled.
730
  bool enable_onesided_comp;
731
} RefFrameCfg;
732
733
typedef struct {
734
  // Indicates the color space that should be used.
735
  aom_color_primaries_t color_primaries;
736
  // Indicates the characteristics of transfer function to be used.
737
  aom_transfer_characteristics_t transfer_characteristics;
738
  // Indicates the matrix coefficients to be used for the transfer function.
739
  aom_matrix_coefficients_t matrix_coefficients;
740
  // Indicates the chroma 4:2:0 sample position info.
741
  aom_chroma_sample_position_t chroma_sample_position;
742
  // Indicates if a limited color range or full color range should be used.
743
  aom_color_range_t color_range;
744
} ColorCfg;
745
746
typedef struct {
747
  // Indicates if extreme motion vector unit test should be enabled or not.
748
  unsigned int motion_vector_unit_test;
749
  // Indicates if superblock multipass unit test should be enabled or not.
750
  unsigned int sb_multipass_unit_test;
751
} UnitTestCfg;
752
753
typedef struct {
754
  // Indicates the file path to the VMAF model.
755
  const char *vmaf_model_path;
756
  // Indicates the path to the film grain parameters.
757
  const char *film_grain_table_filename;
758
  // Indicates the visual tuning metric.
759
  aom_tune_metric tuning;
760
  // Indicates if the current content is screen or default type.
761
  aom_tune_content content;
762
  // Indicates the film grain parameters.
763
  int film_grain_test_vector;
764
  // Indicates the in-block distortion metric to use.
765
  aom_dist_metric dist_metric;
766
} TuneCfg;
767
768
typedef struct {
769
  // Indicates the framerate of the input video.
770
  double init_framerate;
771
  // Indicates the bit-depth of the input video.
772
  unsigned int input_bit_depth;
773
  // Indicates the maximum number of frames to be encoded.
774
  unsigned int limit;
775
  // Indicates the chrome subsampling x value.
776
  unsigned int chroma_subsampling_x;
777
  // Indicates the chrome subsampling y value.
778
  unsigned int chroma_subsampling_y;
779
} InputCfg;
780
781
typedef struct {
782
  // Controls how the encoder applies fixed QP offsets.
783
  // If the value is 0, QP offsets are chosen adaptively.
784
  // If the value is 1, fixed QP offsets are picked automatically from cq_level.
785
  // If the value is 2, no QP offsets will be applied.
786
  int use_fixed_qp_offsets;
787
  // Indicates the minimum flatness of the quantization matrix.
788
  int qm_minlevel;
789
  // Indicates the maximum flatness of the quantization matrix.
790
  int qm_maxlevel;
791
  // Indicates if adaptive quantize_b should be enabled.
792
  int quant_b_adapt;
793
  // Indicates the Adaptive Quantization mode to be used.
794
  AQ_MODE aq_mode;
795
  // Indicates the delta q mode to be used.
796
  DELTAQ_MODE deltaq_mode;
797
  // Indicates the delta q mode strength.
798
  unsigned int deltaq_strength;
799
  // Indicates if delta quantization should be enabled in chroma planes.
800
  bool enable_chroma_deltaq;
801
  // Indicates if delta quantization should be enabled for hdr video
802
  bool enable_hdr_deltaq;
803
  // Indicates if encoding with quantization matrices should be enabled.
804
  bool using_qm;
805
} QuantizationCfg;
806
807
/*!\endcond */
808
/*!
809
 * \brief Algorithm configuration parameters.
810
 */
811
typedef struct {
812
  /*!
813
   * Controls the level at which rate-distortion optimization of transform
814
   * coefficients favors sharpness in the block. Has no impact on RD when set
815
   * to zero (default).
816
   *
817
   * For values 1-7, eob and skip block optimization are
818
   * avoided and rdmult is adjusted in favor of block sharpness.
819
   *
820
   * In all-intra mode or tune IQ or SSIMULACRA2: it also sets the
821
   * `loop_filter_sharpness` syntax element in the bitstream. Larger values
822
   * increasingly reduce how much the filtering can change the sample values on
823
   * block edges to favor perceived sharpness.
824
   */
825
  int sharpness;
826
827
  /*!
828
   * Indicates if sharpness is adapted based on frame QP
829
   */
830
  bool enable_adaptive_sharpness;
831
832
  /*!
833
   * Indicates the trellis optimization mode of quantized coefficients.
834
   * 0: disabled
835
   * 1: enabled
836
   * 2: enabled for rd search
837
   * 3: true for estimate yrd search
838
   */
839
  int disable_trellis_quant;
840
841
  /*!
842
   * The maximum number of frames used to create an arf.
843
   */
844
  int arnr_max_frames;
845
846
  /*!
847
   * The temporal filter strength for arf used when creating ARFs.
848
   */
849
  int arnr_strength;
850
851
  /*!
852
   * Indicates the CDF update mode
853
   * 0: no update
854
   * 1: update on every frame(default)
855
   * 2: selectively update
856
   */
857
  uint8_t cdf_update_mode;
858
859
  /*!
860
   * Indicates if RDO based on frame temporal dependency should be enabled.
861
   */
862
  bool enable_tpl_model;
863
864
  /*!
865
   * Indicates if coding of overlay frames for filtered ALTREF frames is
866
   * enabled.
867
   */
868
  bool enable_overlay;
869
870
  /*!
871
   * Controls loop filtering
872
   * 0: Loop filter is disabled for all frames
873
   * 1: Loop filter is enabled for all frames
874
   * 2: Loop filter is disabled for non-reference frames
875
   * 3: Loop filter is disables for the frames with low motion
876
   */
877
  LOOPFILTER_CONTROL loopfilter_control;
878
879
  /*!
880
   * Indicates if the application of post-processing filters should be skipped
881
   * on reconstructed frame.
882
   */
883
  bool skip_postproc_filtering;
884
885
  /*!
886
   * Controls screen content detection mode
887
   */
888
  aom_screen_detection_mode screen_detection_mode;
889
} AlgoCfg;
890
/*!\cond */
891
892
typedef struct {
893
  // Indicates the codec bit-depth.
894
  aom_bit_depth_t bit_depth;
895
  // Indicates the superblock size that should be used by the encoder.
896
  aom_superblock_size_t superblock_size;
897
  // Indicates if loopfilter modulation should be enabled.
898
  bool enable_deltalf_mode;
899
  // Indicates how CDEF should be applied.
900
  CDEF_CONTROL cdef_control;
901
  // Indicates if loop restoration filter should be enabled.
902
  bool enable_restoration;
903
  // When enabled, video mode should be used even for single frame input.
904
  bool force_video_mode;
905
  // Indicates if the error resiliency features should be enabled.
906
  bool error_resilient_mode;
907
  // Indicates if frame parallel decoding feature should be enabled.
908
  bool frame_parallel_decoding_mode;
909
  // Indicates if the input should be encoded as monochrome.
910
  bool enable_monochrome;
911
  // When enabled, the encoder will use a full header even for still pictures.
912
  // When disabled, a reduced header is used for still pictures.
913
  bool full_still_picture_hdr;
914
  // Indicates if dual interpolation filters should be enabled.
915
  bool enable_dual_filter;
916
  // Indicates if frame order hint should be enabled or not.
917
  bool enable_order_hint;
918
  // Indicates if ref_frame_mvs should be enabled at the sequence level.
919
  bool ref_frame_mvs_present;
920
  // Indicates if ref_frame_mvs should be enabled at the frame level.
921
  bool enable_ref_frame_mvs;
922
  // Indicates if interintra compound mode is enabled.
923
  bool enable_interintra_comp;
924
  // Indicates if global motion should be enabled.
925
  bool enable_global_motion;
926
  // Indicates if palette should be enabled.
927
  bool enable_palette;
928
} ToolCfg;
929
930
/*!\endcond */
931
/*!
932
 * \brief Main encoder configuration data structure.
933
 */
934
typedef struct AV1EncoderConfig {
935
  /*!\cond */
936
  // Configuration related to the input video.
937
  InputCfg input_cfg;
938
939
  // Configuration related to frame-dimensions.
940
  FrameDimensionCfg frm_dim_cfg;
941
942
  /*!\endcond */
943
  /*!
944
   * Encoder algorithm configuration.
945
   */
946
  AlgoCfg algo_cfg;
947
948
  /*!
949
   * Configuration related to key-frames.
950
   */
951
  KeyFrameCfg kf_cfg;
952
953
  /*!
954
   * Rate control configuration
955
   */
956
  RateControlCfg rc_cfg;
957
  /*!\cond */
958
959
  // Configuration related to Quantization.
960
  QuantizationCfg q_cfg;
961
962
  // Internal frame size scaling.
963
  ResizeCfg resize_cfg;
964
965
  // Frame Super-Resolution size scaling.
966
  SuperResCfg superres_cfg;
967
968
  /*!\endcond */
969
  /*!
970
   * stats_in buffer contains all of the stats packets produced in the first
971
   * pass, concatenated.
972
   */
973
  aom_fixed_buf_t twopass_stats_in;
974
  /*!\cond */
975
976
  // Configuration related to encoder toolsets.
977
  ToolCfg tool_cfg;
978
979
  // Configuration related to Group of frames.
980
  GFConfig gf_cfg;
981
982
  // Tile related configuration parameters.
983
  TileConfig tile_cfg;
984
985
  // Configuration related to Tune.
986
  TuneCfg tune_cfg;
987
988
  // Configuration related to color.
989
  ColorCfg color_cfg;
990
991
  // Configuration related to decoder model.
992
  DecoderModelCfg dec_model_cfg;
993
994
  // Configuration related to reference frames.
995
  RefFrameCfg ref_frm_cfg;
996
997
  // Configuration related to unit tests.
998
  UnitTestCfg unit_test_cfg;
999
1000
  // Flags related to motion mode.
1001
  MotionModeCfg motion_mode_cfg;
1002
1003
  // Flags related to intra mode search.
1004
  IntraModeCfg intra_mode_cfg;
1005
1006
  // Flags related to transform size/type.
1007
  TxfmSizeTypeCfg txfm_cfg;
1008
1009
  // Flags related to compound type.
1010
  CompoundTypeCfg comp_type_cfg;
1011
1012
  // Partition related information.
1013
  PartitionCfg part_cfg;
1014
1015
  // Configuration related to frequency of cost update.
1016
  CostUpdateFreq cost_upd_freq;
1017
1018
#if CONFIG_DENOISE
1019
  // Indicates the noise level.
1020
  float noise_level;
1021
  // Indicates the the denoisers block size.
1022
  int noise_block_size;
1023
  // Indicates whether to apply denoising to the frame to be encoded
1024
  int enable_dnl_denoising;
1025
#endif
1026
1027
#if CONFIG_AV1_TEMPORAL_DENOISING
1028
  // Noise sensitivity.
1029
  int noise_sensitivity;
1030
#endif
1031
  // Bit mask to specify which tier each of the 32 possible operating points
1032
  // conforms to.
1033
  unsigned int tier_mask;
1034
1035
  // Indicates the number of pixels off the edge of a reference frame we're
1036
  // allowed to go when forming an inter prediction.
1037
  int border_in_pixels;
1038
1039
  // Indicates the maximum number of threads that may be used by the encoder.
1040
  int max_threads;
1041
1042
  // Indicates the speed preset to be used.
1043
  int speed;
1044
1045
  // Enable the low complexity decode mode.
1046
  unsigned int enable_low_complexity_decode;
1047
1048
  // Indicates the target sequence level index for each operating point(OP).
1049
  AV1_LEVEL target_seq_level_idx[MAX_NUM_OPERATING_POINTS];
1050
1051
  // Indicates the bitstream profile to be used.
1052
  BITSTREAM_PROFILE profile;
1053
1054
  /*!\endcond */
1055
  /*!
1056
   * Indicates the current encoder pass :
1057
   * AOM_RC_ONE_PASS = One pass encode,
1058
   * AOM_RC_FIRST_PASS = First pass of multiple-pass
1059
   * AOM_RC_SECOND_PASS = Second pass of multiple-pass
1060
   * AOM_RC_THIRD_PASS = Third pass of multiple-pass
1061
   */
1062
  enum aom_enc_pass pass;
1063
  /*!\cond */
1064
1065
  // Total number of encoding passes.
1066
  int passes;
1067
1068
  // the name of the second pass output file when passes > 2
1069
  const char *two_pass_output;
1070
1071
  // the name of the second pass log file when passes > 2
1072
  const char *second_pass_log;
1073
1074
  // Indicates if the encoding is GOOD or REALTIME.
1075
  MODE mode;
1076
1077
  // Indicates if row-based multi-threading should be enabled or not.
1078
  bool row_mt;
1079
1080
  // Indicates if frame parallel multi-threading should be enabled or not.
1081
  bool fp_mt;
1082
1083
  // Indicates if 16bit frame buffers are to be used i.e., the content is >
1084
  // 8-bit.
1085
  bool use_highbitdepth;
1086
1087
  // Indicates the bitstream syntax mode. 0 indicates bitstream is saved as
1088
  // Section 5 bitstream, while 1 indicates the bitstream is saved in Annex - B
1089
  // format.
1090
  bool save_as_annexb;
1091
1092
  // The path for partition stats reading and writing, used in the experiment
1093
  // CONFIG_PARTITION_SEARCH_ORDER.
1094
  const char *partition_info_path;
1095
1096
  // The flag that indicates whether we use an external rate distribution to
1097
  // guide adaptive quantization. It requires --deltaq-mode=3. The rate
1098
  // distribution map file name is stored in |rate_distribution_info|.
1099
  unsigned int enable_rate_guide_deltaq;
1100
1101
  // The input file of rate distribution information used in all intra mode
1102
  // to determine delta quantization.
1103
  const char *rate_distribution_info;
1104
1105
  // Exit the encoder when it fails to encode to a given level.
1106
  int strict_level_conformance;
1107
1108
  // Max depth for the GOP after a key frame
1109
  int kf_max_pyr_height;
1110
1111
  // A flag to control if we enable the superblock qp sweep for a given lambda
1112
  int sb_qp_sweep;
1113
  /*!\endcond */
1114
} AV1EncoderConfig;
1115
1116
/*!\cond */
1117
0
static inline int is_lossless_requested(const RateControlCfg *const rc_cfg) {
1118
0
  return rc_cfg->best_allowed_q == 0 && rc_cfg->worst_allowed_q == 0;
1119
0
}
Unexecuted instantiation: av1_cx_iface.c:is_lossless_requested
Unexecuted instantiation: allintra_vis.c:is_lossless_requested
Unexecuted instantiation: av1_quantize.c:is_lossless_requested
Unexecuted instantiation: bitstream.c:is_lossless_requested
Unexecuted instantiation: context_tree.c:is_lossless_requested
Unexecuted instantiation: encodeframe.c:is_lossless_requested
Unexecuted instantiation: encodeframe_utils.c:is_lossless_requested
Unexecuted instantiation: encodemb.c:is_lossless_requested
Unexecuted instantiation: encodemv.c:is_lossless_requested
Unexecuted instantiation: encoder.c:is_lossless_requested
Unexecuted instantiation: encoder_utils.c:is_lossless_requested
Unexecuted instantiation: encodetxb.c:is_lossless_requested
Unexecuted instantiation: ethread.c:is_lossless_requested
Unexecuted instantiation: firstpass.c:is_lossless_requested
Unexecuted instantiation: global_motion_facade.c:is_lossless_requested
Unexecuted instantiation: level.c:is_lossless_requested
Unexecuted instantiation: lookahead.c:is_lossless_requested
Unexecuted instantiation: mcomp.c:is_lossless_requested
Unexecuted instantiation: mv_prec.c:is_lossless_requested
Unexecuted instantiation: palette.c:is_lossless_requested
Unexecuted instantiation: partition_search.c:is_lossless_requested
Unexecuted instantiation: partition_strategy.c:is_lossless_requested
Unexecuted instantiation: pass2_strategy.c:is_lossless_requested
Unexecuted instantiation: pickcdef.c:is_lossless_requested
Unexecuted instantiation: picklpf.c:is_lossless_requested
Unexecuted instantiation: pickrst.c:is_lossless_requested
Unexecuted instantiation: ratectrl.c:is_lossless_requested
Unexecuted instantiation: rd.c:is_lossless_requested
Unexecuted instantiation: rdopt.c:is_lossless_requested
Unexecuted instantiation: nonrd_pickmode.c:is_lossless_requested
Unexecuted instantiation: nonrd_opt.c:is_lossless_requested
Unexecuted instantiation: segmentation.c:is_lossless_requested
Unexecuted instantiation: speed_features.c:is_lossless_requested
Unexecuted instantiation: superres_scale.c:is_lossless_requested
Unexecuted instantiation: svc_layercontext.c:is_lossless_requested
Unexecuted instantiation: temporal_filter.c:is_lossless_requested
Unexecuted instantiation: tokenize.c:is_lossless_requested
Unexecuted instantiation: tpl_model.c:is_lossless_requested
Unexecuted instantiation: tx_search.c:is_lossless_requested
Unexecuted instantiation: txb_rdopt.c:is_lossless_requested
Unexecuted instantiation: intra_mode_search.c:is_lossless_requested
Unexecuted instantiation: var_based_part.c:is_lossless_requested
Unexecuted instantiation: av1_noise_estimate.c:is_lossless_requested
Unexecuted instantiation: aq_complexity.c:is_lossless_requested
Unexecuted instantiation: aq_cyclicrefresh.c:is_lossless_requested
Unexecuted instantiation: aq_variance.c:is_lossless_requested
Unexecuted instantiation: compound_type.c:is_lossless_requested
Unexecuted instantiation: encode_strategy.c:is_lossless_requested
Unexecuted instantiation: global_motion.c:is_lossless_requested
Unexecuted instantiation: gop_structure.c:is_lossless_requested
Unexecuted instantiation: interp_search.c:is_lossless_requested
Unexecuted instantiation: motion_search_facade.c:is_lossless_requested
1120
/*!\endcond */
1121
1122
/*!
1123
 * \brief Encoder-side probabilities for pruning of various AV1 tools
1124
 */
1125
typedef struct {
1126
  /*!
1127
   * obmc_probs[i][j] is the probability of OBMC being the best motion mode for
1128
   * jth block size and ith frame update type, averaged over past frames. If
1129
   * obmc_probs[i][j] < thresh, then OBMC search is pruned.
1130
   */
1131
  int obmc_probs[FRAME_UPDATE_TYPES][BLOCK_SIZES_ALL];
1132
1133
  /*!
1134
   * warped_probs[i] is the probability of warped motion being the best motion
1135
   * mode for ith frame update type, averaged over past frames. If
1136
   * warped_probs[i] < thresh, then warped motion search is pruned.
1137
   */
1138
  int warped_probs[FRAME_UPDATE_TYPES];
1139
1140
  /*!
1141
   * tx_type_probs[i][j][k] is the probability of kth tx_type being the best
1142
   * for jth transform size and ith frame update type, averaged over past
1143
   * frames. If tx_type_probs[i][j][k] < thresh, then transform search for that
1144
   * type is pruned.
1145
   */
1146
  int tx_type_probs[FRAME_UPDATE_TYPES][TX_SIZES_ALL][TX_TYPES];
1147
1148
  /*!
1149
   * switchable_interp_probs[i][j][k] is the probability of kth interpolation
1150
   * filter being the best for jth filter context and ith frame update type,
1151
   * averaged over past frames. If switchable_interp_probs[i][j][k] < thresh,
1152
   * then interpolation filter search is pruned for that case.
1153
   */
1154
  int switchable_interp_probs[FRAME_UPDATE_TYPES][SWITCHABLE_FILTER_CONTEXTS]
1155
                             [SWITCHABLE_FILTERS];
1156
} FrameProbInfo;
1157
1158
/*!\cond */
1159
1160
typedef struct FRAME_COUNTS {
1161
// Note: This structure should only contain 'unsigned int' fields, or
1162
// aggregates built solely from 'unsigned int' fields/elements
1163
#if CONFIG_ENTROPY_STATS
1164
  unsigned int kf_y_mode[KF_MODE_CONTEXTS][KF_MODE_CONTEXTS][INTRA_MODES];
1165
  unsigned int angle_delta[DIRECTIONAL_MODES][2 * MAX_ANGLE_DELTA + 1];
1166
  unsigned int y_mode[BLOCK_SIZE_GROUPS][INTRA_MODES];
1167
  unsigned int uv_mode[CFL_ALLOWED_TYPES][INTRA_MODES][UV_INTRA_MODES];
1168
  unsigned int cfl_sign[CFL_JOINT_SIGNS];
1169
  unsigned int cfl_alpha[CFL_ALPHA_CONTEXTS][CFL_ALPHABET_SIZE];
1170
  unsigned int palette_y_mode[PALATTE_BSIZE_CTXS][PALETTE_Y_MODE_CONTEXTS][2];
1171
  unsigned int palette_uv_mode[PALETTE_UV_MODE_CONTEXTS][2];
1172
  unsigned int palette_y_size[PALATTE_BSIZE_CTXS][PALETTE_SIZES];
1173
  unsigned int palette_uv_size[PALATTE_BSIZE_CTXS][PALETTE_SIZES];
1174
  unsigned int palette_y_color_index[PALETTE_SIZES]
1175
                                    [PALETTE_COLOR_INDEX_CONTEXTS]
1176
                                    [PALETTE_COLORS];
1177
  unsigned int palette_uv_color_index[PALETTE_SIZES]
1178
                                     [PALETTE_COLOR_INDEX_CONTEXTS]
1179
                                     [PALETTE_COLORS];
1180
  unsigned int partition[PARTITION_CONTEXTS][EXT_PARTITION_TYPES];
1181
  unsigned int txb_skip[TOKEN_CDF_Q_CTXS][TX_SIZES][TXB_SKIP_CONTEXTS][2];
1182
  unsigned int eob_extra[TOKEN_CDF_Q_CTXS][TX_SIZES][PLANE_TYPES]
1183
                        [EOB_COEF_CONTEXTS][2];
1184
  unsigned int dc_sign[PLANE_TYPES][DC_SIGN_CONTEXTS][2];
1185
  unsigned int coeff_lps[TX_SIZES][PLANE_TYPES][BR_CDF_SIZE - 1][LEVEL_CONTEXTS]
1186
                        [2];
1187
  unsigned int eob_flag[TX_SIZES][PLANE_TYPES][EOB_COEF_CONTEXTS][2];
1188
  unsigned int eob_multi16[TOKEN_CDF_Q_CTXS][PLANE_TYPES][2][5];
1189
  unsigned int eob_multi32[TOKEN_CDF_Q_CTXS][PLANE_TYPES][2][6];
1190
  unsigned int eob_multi64[TOKEN_CDF_Q_CTXS][PLANE_TYPES][2][7];
1191
  unsigned int eob_multi128[TOKEN_CDF_Q_CTXS][PLANE_TYPES][2][8];
1192
  unsigned int eob_multi256[TOKEN_CDF_Q_CTXS][PLANE_TYPES][2][9];
1193
  unsigned int eob_multi512[TOKEN_CDF_Q_CTXS][PLANE_TYPES][2][10];
1194
  unsigned int eob_multi1024[TOKEN_CDF_Q_CTXS][PLANE_TYPES][2][11];
1195
  unsigned int coeff_lps_multi[TOKEN_CDF_Q_CTXS][TX_SIZES][PLANE_TYPES]
1196
                              [LEVEL_CONTEXTS][BR_CDF_SIZE];
1197
  unsigned int coeff_base_multi[TOKEN_CDF_Q_CTXS][TX_SIZES][PLANE_TYPES]
1198
                               [SIG_COEF_CONTEXTS][NUM_BASE_LEVELS + 2];
1199
  unsigned int coeff_base_eob_multi[TOKEN_CDF_Q_CTXS][TX_SIZES][PLANE_TYPES]
1200
                                   [SIG_COEF_CONTEXTS_EOB][NUM_BASE_LEVELS + 1];
1201
  unsigned int newmv_mode[NEWMV_MODE_CONTEXTS][2];
1202
  unsigned int zeromv_mode[GLOBALMV_MODE_CONTEXTS][2];
1203
  unsigned int refmv_mode[REFMV_MODE_CONTEXTS][2];
1204
  unsigned int drl_mode[DRL_MODE_CONTEXTS][2];
1205
  unsigned int inter_compound_mode[INTER_MODE_CONTEXTS][INTER_COMPOUND_MODES];
1206
  unsigned int wedge_idx[BLOCK_SIZES_ALL][16];
1207
  unsigned int interintra[BLOCK_SIZE_GROUPS][2];
1208
  unsigned int interintra_mode[BLOCK_SIZE_GROUPS][INTERINTRA_MODES];
1209
  unsigned int wedge_interintra[BLOCK_SIZES_ALL][2];
1210
  unsigned int compound_type[BLOCK_SIZES_ALL][MASKED_COMPOUND_TYPES];
1211
  unsigned int motion_mode[BLOCK_SIZES_ALL][MOTION_MODES];
1212
  unsigned int obmc[BLOCK_SIZES_ALL][2];
1213
  unsigned int intra_inter[INTRA_INTER_CONTEXTS][2];
1214
  unsigned int comp_inter[COMP_INTER_CONTEXTS][2];
1215
  unsigned int comp_ref_type[COMP_REF_TYPE_CONTEXTS][2];
1216
  unsigned int uni_comp_ref[UNI_COMP_REF_CONTEXTS][UNIDIR_COMP_REFS - 1][2];
1217
  unsigned int single_ref[REF_CONTEXTS][SINGLE_REFS - 1][2];
1218
  unsigned int comp_ref[REF_CONTEXTS][FWD_REFS - 1][2];
1219
  unsigned int comp_bwdref[REF_CONTEXTS][BWD_REFS - 1][2];
1220
  unsigned int intrabc[2];
1221
1222
  unsigned int txfm_partition[TXFM_PARTITION_CONTEXTS][2];
1223
  unsigned int intra_tx_size[MAX_TX_CATS][TX_SIZE_CONTEXTS][MAX_TX_DEPTH + 1];
1224
  unsigned int skip_mode[SKIP_MODE_CONTEXTS][2];
1225
  unsigned int skip_txfm[SKIP_CONTEXTS][2];
1226
  unsigned int compound_index[COMP_INDEX_CONTEXTS][2];
1227
  unsigned int comp_group_idx[COMP_GROUP_IDX_CONTEXTS][2];
1228
  unsigned int delta_q[DELTA_Q_PROBS][2];
1229
  unsigned int delta_lf_multi[FRAME_LF_COUNT][DELTA_LF_PROBS][2];
1230
  unsigned int delta_lf[DELTA_LF_PROBS][2];
1231
1232
  unsigned int inter_ext_tx[EXT_TX_SETS_INTER][EXT_TX_SIZES][TX_TYPES];
1233
  unsigned int intra_ext_tx[EXT_TX_SETS_INTRA][EXT_TX_SIZES][INTRA_MODES]
1234
                           [TX_TYPES];
1235
  unsigned int filter_intra_mode[FILTER_INTRA_MODES];
1236
  unsigned int filter_intra[BLOCK_SIZES_ALL][2];
1237
  unsigned int switchable_restore[RESTORE_SWITCHABLE_TYPES];
1238
  unsigned int wiener_restore[2];
1239
  unsigned int sgrproj_restore[2];
1240
#endif  // CONFIG_ENTROPY_STATS
1241
1242
  unsigned int switchable_interp[SWITCHABLE_FILTER_CONTEXTS]
1243
                                [SWITCHABLE_FILTERS];
1244
} FRAME_COUNTS;
1245
1246
0
#define INTER_MODE_RD_DATA_OVERALL_SIZE 6400
1247
1248
typedef struct {
1249
  int ready;
1250
  double a;
1251
  double b;
1252
  double dist_mean;
1253
  double ld_mean;
1254
  double sse_mean;
1255
  double sse_sse_mean;
1256
  double sse_ld_mean;
1257
  int num;
1258
  double dist_sum;
1259
  double ld_sum;
1260
  double sse_sum;
1261
  double sse_sse_sum;
1262
  double sse_ld_sum;
1263
} InterModeRdModel;
1264
1265
typedef struct {
1266
  int idx;
1267
  int64_t rd;
1268
} RdIdxPair;
1269
// TODO(angiebird): This is an estimated size. We still need to figure what is
1270
// the maximum number of modes.
1271
#define MAX_INTER_MODES 1024
1272
// TODO(any): rename this struct to something else. There is already another
1273
// struct called inter_mode_info, which makes this terribly confusing.
1274
/*!\endcond */
1275
/*!
1276
 * \brief Struct used to hold inter mode data for fast tx search.
1277
 *
1278
 * This struct is used to perform a full transform search only on winning
1279
 * candidates searched with an estimate for transform coding RD.
1280
 */
1281
typedef struct inter_modes_info {
1282
  /*!
1283
   * The number of inter modes for which data was stored in each of the
1284
   * following arrays.
1285
   */
1286
  int num;
1287
  /*!
1288
   * Mode info struct for each of the candidate modes.
1289
   */
1290
  MB_MODE_INFO mbmi_arr[MAX_INTER_MODES];
1291
  /*!
1292
   * The rate for each of the candidate modes.
1293
   */
1294
  int mode_rate_arr[MAX_INTER_MODES];
1295
  /*!
1296
   * The sse of the predictor for each of the candidate modes.
1297
   */
1298
  int64_t sse_arr[MAX_INTER_MODES];
1299
  /*!
1300
   * The estimated rd of the predictor for each of the candidate modes.
1301
   */
1302
  int64_t est_rd_arr[MAX_INTER_MODES];
1303
  /*!
1304
   * The rate and mode index for each of the candidate modes.
1305
   */
1306
  RdIdxPair rd_idx_pair_arr[MAX_INTER_MODES];
1307
  /*!
1308
   * The full rd stats for each of the candidate modes.
1309
   */
1310
  RD_STATS rd_cost_arr[MAX_INTER_MODES];
1311
  /*!
1312
   * The full rd stats of luma only for each of the candidate modes.
1313
   */
1314
  RD_STATS rd_cost_y_arr[MAX_INTER_MODES];
1315
  /*!
1316
   * The full rd stats of chroma only for each of the candidate modes.
1317
   */
1318
  RD_STATS rd_cost_uv_arr[MAX_INTER_MODES];
1319
} InterModesInfo;
1320
1321
/*!\cond */
1322
typedef struct {
1323
  // TODO(kyslov): consider changing to 64bit
1324
1325
  // This struct is used for computing variance in choose_partitioning(), where
1326
  // the max number of samples within a superblock is 32x32 (with 4x4 avg).
1327
  // With 8bit bitdepth, uint32_t is enough for sum_square_error (2^8 * 2^8 * 32
1328
  // * 32 = 2^26). For high bitdepth we need to consider changing this to 64 bit
1329
  uint32_t sum_square_error;
1330
  int32_t sum_error;
1331
  int log2_count;
1332
  int variance;
1333
} VPartVar;
1334
1335
typedef struct {
1336
  VPartVar none;
1337
  VPartVar horz[2];
1338
  VPartVar vert[2];
1339
} VPVariance;
1340
1341
typedef struct {
1342
  VPVariance part_variances;
1343
  VPartVar split[4];
1344
} VP4x4;
1345
1346
typedef struct {
1347
  VPVariance part_variances;
1348
  VP4x4 split[4];
1349
} VP8x8;
1350
1351
typedef struct {
1352
  VPVariance part_variances;
1353
  VP8x8 split[4];
1354
} VP16x16;
1355
1356
typedef struct {
1357
  VPVariance part_variances;
1358
  VP16x16 split[4];
1359
} VP32x32;
1360
1361
typedef struct {
1362
  VPVariance part_variances;
1363
  VP32x32 split[4];
1364
} VP64x64;
1365
1366
typedef struct {
1367
  VPVariance part_variances;
1368
  VP64x64 *split;
1369
} VP128x128;
1370
1371
/*!\endcond */
1372
1373
/*!
1374
 * \brief Thresholds for variance based partitioning.
1375
 */
1376
typedef struct {
1377
  /*!
1378
   * If block variance > threshold, then that block is forced to split.
1379
   * thresholds[0] - threshold for 128x128;
1380
   * thresholds[1] - threshold for 64x64;
1381
   * thresholds[2] - threshold for 32x32;
1382
   * thresholds[3] - threshold for 16x16;
1383
   * thresholds[4] - threshold for 8x8;
1384
   */
1385
  int64_t thresholds[5];
1386
1387
  /*!
1388
   * MinMax variance threshold for 8x8 sub blocks of a 16x16 block. If actual
1389
   * minmax > threshold_minmax, the 16x16 is forced to split.
1390
   */
1391
  int64_t threshold_minmax;
1392
} VarBasedPartitionInfo;
1393
1394
/*!
1395
 * \brief Encoder parameters for synchronization of row based multi-threading
1396
 */
1397
typedef struct {
1398
#if CONFIG_MULTITHREAD
1399
  /**
1400
   * \name Synchronization objects for top-right dependency.
1401
   */
1402
  /**@{*/
1403
  pthread_mutex_t *mutex_; /*!< Mutex lock object */
1404
  pthread_cond_t *cond_;   /*!< Condition variable */
1405
  /**@}*/
1406
#endif  // CONFIG_MULTITHREAD
1407
  /*!
1408
   * Buffer to store the superblock whose encoding is complete.
1409
   * num_finished_cols[i] stores the number of superblocks which finished
1410
   * encoding in the ith superblock row.
1411
   */
1412
  int *num_finished_cols;
1413
  /*!
1414
   * Denotes the superblock interval at which conditional signalling should
1415
   * happen. Also denotes the minimum number of extra superblocks of the top row
1416
   * to be complete to start encoding the current superblock. A value of 1
1417
   * indicates top-right dependency.
1418
   */
1419
  int sync_range;
1420
  /*!
1421
   * Denotes the additional number of superblocks in the previous row to be
1422
   * complete to start encoding the current superblock when intraBC tool is
1423
   * enabled. This additional top-right delay is required to satisfy the
1424
   * hardware constraints for intraBC tool when row multithreading is enabled.
1425
   */
1426
  int intrabc_extra_top_right_sb_delay;
1427
  /*!
1428
   * Number of superblock rows.
1429
   */
1430
  int rows;
1431
  /*!
1432
   * The superblock row (in units of MI blocks) to be processed next.
1433
   */
1434
  int next_mi_row;
1435
  /*!
1436
   * Number of threads processing the current tile.
1437
   */
1438
  int num_threads_working;
1439
} AV1EncRowMultiThreadSync;
1440
1441
/*!\cond */
1442
1443
// TODO(jingning) All spatially adaptive variables should go to TileDataEnc.
1444
typedef struct TileDataEnc {
1445
  TileInfo tile_info;
1446
  DECLARE_ALIGNED(16, FRAME_CONTEXT, tctx);
1447
  FRAME_CONTEXT *row_ctx;
1448
  uint64_t abs_sum_level;
1449
  uint8_t allow_update_cdf;
1450
  InterModeRdModel inter_mode_rd_models[BLOCK_SIZES_ALL];
1451
  AV1EncRowMultiThreadSync row_mt_sync;
1452
  MV firstpass_top_mv;
1453
} TileDataEnc;
1454
1455
typedef struct RD_COUNTS {
1456
  int compound_ref_used_flag;
1457
  int skip_mode_used_flag;
1458
  int tx_type_used[TX_SIZES_ALL][TX_TYPES];
1459
  int obmc_used[BLOCK_SIZES_ALL][2];
1460
  int warped_used[2];
1461
  int newmv_or_intra_blocks;
1462
  uint64_t seg_tmp_pred_cost[2];
1463
} RD_COUNTS;
1464
1465
typedef struct ThreadData {
1466
  MACROBLOCK mb;
1467
  MvCosts *mv_costs_alloc;
1468
  IntraBCMVCosts *dv_costs_alloc;
1469
  RD_COUNTS rd_counts;
1470
  FRAME_COUNTS *counts;
1471
  PC_TREE_SHARED_BUFFERS shared_coeff_buf;
1472
  SIMPLE_MOTION_DATA_TREE *sms_tree;
1473
  SIMPLE_MOTION_DATA_TREE *sms_root;
1474
  // buffers are AOM_BUFFER_SIZE_FOR_BLOCK_HASH elements long
1475
  uint32_t *hash_value_buffer[2];
1476
  OBMCBuffer obmc_buffer;
1477
  PALETTE_BUFFER *palette_buffer;
1478
  CompoundTypeRdBuffers comp_rd_buffer;
1479
  CONV_BUF_TYPE *tmp_conv_dst;
1480
  uint64_t abs_sum_level;
1481
  uint8_t *tmp_pred_bufs[2];
1482
  uint8_t *upsample_pred;
1483
  uint8_t *wiener_tmp_pred_buf;
1484
  int intrabc_used;
1485
  int deltaq_used;
1486
  int coefficient_size;
1487
  int max_mv_magnitude;
1488
  int interp_filter_selected[SWITCHABLE];
1489
  FRAME_CONTEXT *tctx;
1490
  VP64x64 *vt64x64;
1491
  int32_t num_64x64_blocks;
1492
  PICK_MODE_CONTEXT *firstpass_ctx;
1493
  TemporalFilterData tf_data;
1494
  TplBuffers tpl_tmp_buffers;
1495
  TplTxfmStats tpl_txfm_stats;
1496
  GlobalMotionData gm_data;
1497
  // Pointer to the array of structures to store gradient information of each
1498
  // pixel in a superblock. The buffer constitutes of MAX_SB_SQUARE pixel level
1499
  // structures for each of the plane types (PLANE_TYPE_Y and PLANE_TYPE_UV).
1500
  PixelLevelGradientInfo *pixel_gradient_info;
1501
  // Pointer to the array of structures to store source variance information of
1502
  // each 4x4 sub-block in a superblock. Block4x4VarInfo structure is used to
1503
  // store source variance and log of source variance of each 4x4 sub-block
1504
  // for subsequent retrieval.
1505
  Block4x4VarInfo *src_var_info_of_4x4_sub_blocks;
1506
  // Pointer to pc tree root.
1507
  PC_TREE *pc_root;
1508
} ThreadData;
1509
1510
struct EncWorkerData;
1511
1512
/*!\endcond */
1513
1514
/*!
1515
 * \brief Encoder data related to row-based multi-threading
1516
 */
1517
typedef struct {
1518
  /*!
1519
   * Number of tile rows for which row synchronization memory is allocated.
1520
   */
1521
  int allocated_tile_rows;
1522
  /*!
1523
   * Number of tile cols for which row synchronization memory is allocated.
1524
   */
1525
  int allocated_tile_cols;
1526
  /*!
1527
   * Number of rows for which row synchronization memory is allocated
1528
   * per tile. During first-pass/look-ahead stage this equals the
1529
   * maximum number of macroblock rows in a tile. During encode stage,
1530
   * this equals the maximum number of superblock rows in a tile.
1531
   */
1532
  int allocated_rows;
1533
  /*!
1534
   * Number of columns for which entropy context memory is allocated
1535
   * per tile. During encode stage, this equals the maximum number of
1536
   * superblock columns in a tile minus 1. The entropy context memory
1537
   * is not allocated during first-pass/look-ahead stage.
1538
   */
1539
  int allocated_cols;
1540
1541
  /*!
1542
   * thread_id_to_tile_id[i] indicates the tile id assigned to the ith thread.
1543
   */
1544
  int thread_id_to_tile_id[MAX_NUM_THREADS];
1545
1546
  /*!
1547
   * num_tile_cols_done[i] indicates the number of tile columns whose encoding
1548
   * is complete in the ith superblock row.
1549
   */
1550
  int *num_tile_cols_done;
1551
1552
  /*!
1553
   * Number of superblock rows in a frame for which 'num_tile_cols_done' is
1554
   * allocated.
1555
   */
1556
  int allocated_sb_rows;
1557
1558
  /*!
1559
   * Initialized to false, set to true by the worker thread that encounters an
1560
   * error in order to abort the processing of other worker threads.
1561
   */
1562
  bool row_mt_exit;
1563
1564
  /*!
1565
   * Initialized to false, set to true during first pass encoding by the worker
1566
   * thread that encounters an error in order to abort the processing of other
1567
   * worker threads.
1568
   */
1569
  bool firstpass_mt_exit;
1570
1571
  /*!
1572
   * Initialized to false, set to true in cal_mb_wiener_var_hook() by the worker
1573
   * thread that encounters an error in order to abort the processing of other
1574
   * worker threads.
1575
   */
1576
  bool mb_wiener_mt_exit;
1577
1578
#if CONFIG_MULTITHREAD
1579
  /*!
1580
   * Mutex lock used while dispatching jobs.
1581
   */
1582
  pthread_mutex_t *mutex_;
1583
  /*!
1584
   *  Condition variable used to dispatch loopfilter jobs.
1585
   */
1586
  pthread_cond_t *cond_;
1587
#endif
1588
1589
  /**
1590
   * \name Row synchronization related function pointers.
1591
   */
1592
  /**@{*/
1593
  /*!
1594
   * Reader.
1595
   */
1596
  void (*sync_read_ptr)(AV1EncRowMultiThreadSync *const, int, int);
1597
  /*!
1598
   * Writer.
1599
   */
1600
  void (*sync_write_ptr)(AV1EncRowMultiThreadSync *const, int, int, int);
1601
  /**@}*/
1602
} AV1EncRowMultiThreadInfo;
1603
1604
/*!
1605
 * \brief Encoder data related to multi-threading for allintra deltaq-mode=3
1606
 */
1607
typedef struct {
1608
#if CONFIG_MULTITHREAD
1609
  /*!
1610
   * Mutex lock used while dispatching jobs.
1611
   */
1612
  pthread_mutex_t *mutex_;
1613
  /*!
1614
   *  Condition variable used to dispatch loopfilter jobs.
1615
   */
1616
  pthread_cond_t *cond_;
1617
#endif
1618
1619
  /**
1620
   * \name Row synchronization related function pointers for all intra mode
1621
   */
1622
  /**@{*/
1623
  /*!
1624
   * Reader.
1625
   */
1626
  void (*intra_sync_read_ptr)(AV1EncRowMultiThreadSync *const, int, int);
1627
  /*!
1628
   * Writer.
1629
   */
1630
  void (*intra_sync_write_ptr)(AV1EncRowMultiThreadSync *const, int, int, int);
1631
  /**@}*/
1632
} AV1EncAllIntraMultiThreadInfo;
1633
1634
/*!
1635
 * \brief Max number of recodes used to track the frame probabilities.
1636
 */
1637
0
#define NUM_RECODES_PER_FRAME 10
1638
1639
/*!
1640
 * \brief Max number of frames that can be encoded in a parallel encode set.
1641
 */
1642
0
#define MAX_PARALLEL_FRAMES 4
1643
1644
/*!
1645
 * \brief Buffers to be backed up during parallel encode set to be restored
1646
 * later.
1647
 */
1648
typedef struct RestoreStateBuffers {
1649
  /*!
1650
   * Backup of original CDEF srcbuf.
1651
   */
1652
  uint16_t *cdef_srcbuf;
1653
1654
  /*!
1655
   * Backup of original CDEF colbuf.
1656
   */
1657
  uint16_t *cdef_colbuf[MAX_MB_PLANE];
1658
1659
  /*!
1660
   * Backup of original LR rst_tmpbuf.
1661
   */
1662
  int32_t *rst_tmpbuf;
1663
1664
  /*!
1665
   * Backup of original LR rlbs.
1666
   */
1667
  RestorationLineBuffers *rlbs;
1668
} RestoreStateBuffers;
1669
1670
/*!
1671
 * \brief Parameters related to restoration types.
1672
 */
1673
typedef struct {
1674
  /*!
1675
   * Stores the best coefficients for Wiener restoration.
1676
   */
1677
  WienerInfo wiener;
1678
1679
  /*!
1680
   * Stores the best coefficients for Sgrproj restoration.
1681
   */
1682
  SgrprojInfo sgrproj;
1683
1684
  /*!
1685
   * The rtype to use for this unit given a frame rtype as index. Indices:
1686
   * WIENER, SGRPROJ, SWITCHABLE.
1687
   */
1688
  RestorationType best_rtype[RESTORE_TYPES - 1];
1689
} RestUnitSearchInfo;
1690
1691
/*!
1692
 * \brief Structure to hold search parameter per restoration unit and
1693
 * intermediate buffer of Wiener filter used in pick filter stage of Loop
1694
 * restoration.
1695
 */
1696
typedef struct {
1697
  /*!
1698
   * Array of pointers to 'RestUnitSearchInfo' which holds data related to
1699
   * restoration types.
1700
   */
1701
  RestUnitSearchInfo *rusi[MAX_MB_PLANE];
1702
1703
  /*!
1704
   * Buffer used to hold dgd-avg data during SIMD call of Wiener filter.
1705
   */
1706
  int16_t *dgd_avg;
1707
} AV1LrPickStruct;
1708
1709
/*!
1710
 * \brief Primary Encoder parameters related to multi-threading.
1711
 */
1712
typedef struct PrimaryMultiThreadInfo {
1713
  /*!
1714
   * Number of workers created for multi-threading.
1715
   */
1716
  int num_workers;
1717
1718
  /*!
1719
   * Number of workers used for different MT modules.
1720
   */
1721
  int num_mod_workers[NUM_MT_MODULES];
1722
1723
  /*!
1724
   * Synchronization object used to launch job in the worker thread.
1725
   */
1726
  AVxWorker *workers;
1727
1728
  /*!
1729
   * Data specific to each worker in encoder multi-threading.
1730
   * tile_thr_data[i] stores the worker data of the ith thread.
1731
   */
1732
  struct EncWorkerData *tile_thr_data;
1733
1734
  /*!
1735
   * CDEF row multi-threading data.
1736
   */
1737
  AV1CdefWorkerData *cdef_worker;
1738
1739
  /*!
1740
   * Primary(Level 1) Synchronization object used to launch job in the worker
1741
   * thread.
1742
   */
1743
  AVxWorker *p_workers[MAX_PARALLEL_FRAMES];
1744
1745
  /*!
1746
   * Number of primary workers created for multi-threading.
1747
   */
1748
  int p_num_workers;
1749
1750
  /*!
1751
   * Tracks the number of workers in encode stage multi-threading.
1752
   */
1753
  int prev_num_enc_workers;
1754
} PrimaryMultiThreadInfo;
1755
1756
/*!
1757
 * \brief Encoder parameters related to multi-threading.
1758
 */
1759
typedef struct MultiThreadInfo {
1760
  /*!
1761
   * Number of workers created for multi-threading.
1762
   */
1763
  int num_workers;
1764
1765
  /*!
1766
   * Number of workers used for different MT modules.
1767
   */
1768
  int num_mod_workers[NUM_MT_MODULES];
1769
1770
  /*!
1771
   * Synchronization object used to launch job in the worker thread.
1772
   */
1773
  AVxWorker *workers;
1774
1775
  /*!
1776
   * Data specific to each worker in encoder multi-threading.
1777
   * tile_thr_data[i] stores the worker data of the ith thread.
1778
   */
1779
  struct EncWorkerData *tile_thr_data;
1780
1781
  /*!
1782
   * When set, indicates that row based multi-threading of the encoder is
1783
   * enabled.
1784
   */
1785
  bool row_mt_enabled;
1786
1787
  /*!
1788
   * When set, indicates that multi-threading for bitstream packing is enabled.
1789
   */
1790
  bool pack_bs_mt_enabled;
1791
1792
  /*!
1793
   * Encoder row multi-threading data.
1794
   */
1795
  AV1EncRowMultiThreadInfo enc_row_mt;
1796
1797
  /*!
1798
   * Encoder multi-threading data for allintra mode in the preprocessing stage
1799
   * when --deltaq-mode=3.
1800
   */
1801
  AV1EncAllIntraMultiThreadInfo intra_mt;
1802
1803
  /*!
1804
   * Tpl row multi-threading data.
1805
   */
1806
  AV1TplRowMultiThreadInfo tpl_row_mt;
1807
1808
  /*!
1809
   * Loop Filter multi-threading object.
1810
   */
1811
  AV1LfSync lf_row_sync;
1812
1813
  /*!
1814
   * Loop Restoration multi-threading object.
1815
   */
1816
  AV1LrSync lr_row_sync;
1817
1818
  /*!
1819
   * Pack bitstream multi-threading object.
1820
   */
1821
  AV1EncPackBSSync pack_bs_sync;
1822
1823
  /*!
1824
   * Global Motion multi-threading object.
1825
   */
1826
  AV1GlobalMotionSync gm_sync;
1827
1828
  /*!
1829
   * Temporal Filter multi-threading object.
1830
   */
1831
  AV1TemporalFilterSync tf_sync;
1832
1833
  /*!
1834
   * CDEF search multi-threading object.
1835
   */
1836
  AV1CdefSync cdef_sync;
1837
1838
  /*!
1839
   * Pointer to CDEF row multi-threading data for the frame.
1840
   */
1841
  AV1CdefWorkerData *cdef_worker;
1842
1843
  /*!
1844
   * Buffers to be stored/restored before/after parallel encode.
1845
   */
1846
  RestoreStateBuffers restore_state_buf;
1847
1848
  /*!
1849
   * In multi-threaded realtime encoding with row-mt enabled, pipeline
1850
   * loop-filtering after encoding.
1851
   */
1852
  int pipeline_lpf_mt_with_enc;
1853
} MultiThreadInfo;
1854
1855
/*!\cond */
1856
1857
typedef struct ActiveMap {
1858
  int enabled;
1859
  int update;
1860
  unsigned char *map;
1861
} ActiveMap;
1862
1863
/*!\endcond */
1864
1865
/*!
1866
 * \brief Encoder info used for decision on forcing integer motion vectors.
1867
 */
1868
typedef struct {
1869
  /*!
1870
   * cs_rate_array[i] is the fraction of blocks in a frame which either match
1871
   * with the collocated block or are smooth, where i is the rate_index.
1872
   */
1873
  double cs_rate_array[32];
1874
  /*!
1875
   * rate_index is used to index cs_rate_array.
1876
   */
1877
  int rate_index;
1878
  /*!
1879
   * rate_size is the total number of entries populated in cs_rate_array.
1880
   */
1881
  int rate_size;
1882
} ForceIntegerMVInfo;
1883
1884
/*!\cond */
1885
1886
#if CONFIG_INTERNAL_STATS
1887
// types of stats
1888
enum {
1889
  STAT_Y,
1890
  STAT_U,
1891
  STAT_V,
1892
  STAT_ALL,
1893
  NUM_STAT_TYPES  // This should always be the last member of the enum
1894
} UENUM1BYTE(StatType);
1895
1896
typedef struct IMAGE_STAT {
1897
  double stat[NUM_STAT_TYPES];
1898
  double worst;
1899
} ImageStat;
1900
#endif  // CONFIG_INTERNAL_STATS
1901
1902
typedef struct {
1903
  int ref_count;
1904
  YV12_BUFFER_CONFIG buf;
1905
} EncRefCntBuffer;
1906
1907
/*!\endcond */
1908
1909
/*!
1910
 * \brief Buffer to store mode information at mi_alloc_bsize (4x4 or 8x8) level
1911
 *
1912
 * This is used for bitstream preparation.
1913
 */
1914
typedef struct {
1915
  /*!
1916
   * frame_base[mi_row * stride + mi_col] stores the mode information of
1917
   * block (mi_row,mi_col).
1918
   */
1919
  MB_MODE_INFO_EXT_FRAME *frame_base;
1920
  /*!
1921
   * Size of frame_base buffer.
1922
   */
1923
  int alloc_size;
1924
  /*!
1925
   * Stride of frame_base buffer.
1926
   */
1927
  int stride;
1928
} MBMIExtFrameBufferInfo;
1929
1930
/*!\cond */
1931
1932
#if CONFIG_COLLECT_PARTITION_STATS
1933
typedef struct FramePartitionTimingStats {
1934
  int partition_decisions[6][EXT_PARTITION_TYPES];
1935
  int partition_attempts[6][EXT_PARTITION_TYPES];
1936
  int64_t partition_times[6][EXT_PARTITION_TYPES];
1937
1938
  int partition_redo;
1939
} FramePartitionTimingStats;
1940
#endif  // CONFIG_COLLECT_PARTITION_STATS
1941
1942
#if CONFIG_COLLECT_COMPONENT_TIMING
1943
#include "aom_ports/aom_timer.h"
1944
// Adjust the following to add new components.
1945
enum {
1946
  av1_encode_strategy_time,
1947
  av1_get_one_pass_rt_params_time,
1948
  av1_get_second_pass_params_time,
1949
  denoise_and_encode_time,
1950
  apply_filtering_time,
1951
  av1_tpl_setup_stats_time,
1952
  encode_frame_to_data_rate_time,
1953
  encode_with_or_without_recode_time,
1954
  loop_filter_time,
1955
  cdef_time,
1956
  loop_restoration_time,
1957
  av1_pack_bitstream_final_time,
1958
  av1_encode_frame_time,
1959
  av1_compute_global_motion_time,
1960
  av1_setup_motion_field_time,
1961
  encode_sb_row_time,
1962
1963
  rd_pick_partition_time,
1964
  rd_use_partition_time,
1965
  choose_var_based_partitioning_time,
1966
  av1_prune_partitions_time,
1967
  none_partition_search_time,
1968
  split_partition_search_time,
1969
  rectangular_partition_search_time,
1970
  ab_partitions_search_time,
1971
  rd_pick_4partition_time,
1972
  encode_sb_time,
1973
1974
  rd_pick_sb_modes_time,
1975
  av1_rd_pick_intra_mode_sb_time,
1976
  av1_rd_pick_inter_mode_sb_time,
1977
  set_params_rd_pick_inter_mode_time,
1978
  skip_inter_mode_time,
1979
  handle_inter_mode_time,
1980
  evaluate_motion_mode_for_winner_candidates_time,
1981
  do_tx_search_time,
1982
  handle_intra_mode_time,
1983
  refine_winner_mode_tx_time,
1984
  av1_search_palette_mode_time,
1985
  handle_newmv_time,
1986
  compound_type_rd_time,
1987
  interpolation_filter_search_time,
1988
  motion_mode_rd_time,
1989
1990
  nonrd_use_partition_time,
1991
  pick_sb_modes_nonrd_time,
1992
  hybrid_intra_mode_search_time,
1993
  nonrd_pick_inter_mode_sb_time,
1994
  encode_b_nonrd_time,
1995
1996
  kTimingComponents,
1997
} UENUM1BYTE(TIMING_COMPONENT);
1998
1999
static inline char const *get_component_name(int index) {
2000
  switch (index) {
2001
    case av1_encode_strategy_time: return "av1_encode_strategy_time";
2002
    case av1_get_one_pass_rt_params_time:
2003
      return "av1_get_one_pass_rt_params_time";
2004
    case av1_get_second_pass_params_time:
2005
      return "av1_get_second_pass_params_time";
2006
    case denoise_and_encode_time: return "denoise_and_encode_time";
2007
    case apply_filtering_time: return "apply_filtering_time";
2008
    case av1_tpl_setup_stats_time: return "av1_tpl_setup_stats_time";
2009
    case encode_frame_to_data_rate_time:
2010
      return "encode_frame_to_data_rate_time";
2011
    case encode_with_or_without_recode_time:
2012
      return "encode_with_or_without_recode_time";
2013
    case loop_filter_time: return "loop_filter_time";
2014
    case cdef_time: return "cdef_time";
2015
    case loop_restoration_time: return "loop_restoration_time";
2016
    case av1_pack_bitstream_final_time: return "av1_pack_bitstream_final_time";
2017
    case av1_encode_frame_time: return "av1_encode_frame_time";
2018
    case av1_compute_global_motion_time:
2019
      return "av1_compute_global_motion_time";
2020
    case av1_setup_motion_field_time: return "av1_setup_motion_field_time";
2021
    case encode_sb_row_time: return "encode_sb_row_time";
2022
2023
    case rd_pick_partition_time: return "rd_pick_partition_time";
2024
    case rd_use_partition_time: return "rd_use_partition_time";
2025
    case choose_var_based_partitioning_time:
2026
      return "choose_var_based_partitioning_time";
2027
    case av1_prune_partitions_time: return "av1_prune_partitions_time";
2028
    case none_partition_search_time: return "none_partition_search_time";
2029
    case split_partition_search_time: return "split_partition_search_time";
2030
    case rectangular_partition_search_time:
2031
      return "rectangular_partition_search_time";
2032
    case ab_partitions_search_time: return "ab_partitions_search_time";
2033
    case rd_pick_4partition_time: return "rd_pick_4partition_time";
2034
    case encode_sb_time: return "encode_sb_time";
2035
2036
    case rd_pick_sb_modes_time: return "rd_pick_sb_modes_time";
2037
    case av1_rd_pick_intra_mode_sb_time:
2038
      return "av1_rd_pick_intra_mode_sb_time";
2039
    case av1_rd_pick_inter_mode_sb_time:
2040
      return "av1_rd_pick_inter_mode_sb_time";
2041
    case set_params_rd_pick_inter_mode_time:
2042
      return "set_params_rd_pick_inter_mode_time";
2043
    case skip_inter_mode_time: return "skip_inter_mode_time";
2044
    case handle_inter_mode_time: return "handle_inter_mode_time";
2045
    case evaluate_motion_mode_for_winner_candidates_time:
2046
      return "evaluate_motion_mode_for_winner_candidates_time";
2047
    case do_tx_search_time: return "do_tx_search_time";
2048
    case handle_intra_mode_time: return "handle_intra_mode_time";
2049
    case refine_winner_mode_tx_time: return "refine_winner_mode_tx_time";
2050
    case av1_search_palette_mode_time: return "av1_search_palette_mode_time";
2051
    case handle_newmv_time: return "handle_newmv_time";
2052
    case compound_type_rd_time: return "compound_type_rd_time";
2053
    case interpolation_filter_search_time:
2054
      return "interpolation_filter_search_time";
2055
    case motion_mode_rd_time: return "motion_mode_rd_time";
2056
2057
    case nonrd_use_partition_time: return "nonrd_use_partition_time";
2058
    case pick_sb_modes_nonrd_time: return "pick_sb_modes_nonrd_time";
2059
    case hybrid_intra_mode_search_time: return "hybrid_intra_mode_search_time";
2060
    case nonrd_pick_inter_mode_sb_time: return "nonrd_pick_inter_mode_sb_time";
2061
    case encode_b_nonrd_time: return "encode_b_nonrd_time";
2062
2063
    default: assert(0);
2064
  }
2065
  return "error";
2066
}
2067
#endif
2068
2069
// The maximum number of internal ARFs except ALTREF_FRAME
2070
#define MAX_INTERNAL_ARFS (REF_FRAMES - BWDREF_FRAME - 1)
2071
2072
/*!\endcond */
2073
2074
/*!
2075
 * \brief Parameters related to global motion search
2076
 */
2077
typedef struct {
2078
  /*!
2079
   * Flag to indicate if global motion search needs to be rerun.
2080
   */
2081
  bool search_done;
2082
2083
  /*!
2084
   * Array of pointers to the frame buffers holding the reference frames.
2085
   * ref_buf[i] stores the pointer to the reference frame of the ith
2086
   * reference frame type.
2087
   */
2088
  YV12_BUFFER_CONFIG *ref_buf[REF_FRAMES];
2089
2090
  /*!
2091
   * Holds the number of valid reference frames in past and future directions
2092
   * w.r.t. the current frame. num_ref_frames[i] stores the total number of
2093
   * valid reference frames in 'i' direction.
2094
   */
2095
  int num_ref_frames[MAX_DIRECTIONS];
2096
2097
  /*!
2098
   * Array of structure which stores the valid reference frames in past and
2099
   * future directions and their corresponding distance from the source frame.
2100
   * reference_frames[i][j] holds the jth valid reference frame type in the
2101
   * direction 'i' and its temporal distance from the source frame .
2102
   */
2103
  FrameDistPair reference_frames[MAX_DIRECTIONS][REF_FRAMES - 1];
2104
2105
  /**
2106
   * \name Dimensions for which segment map is allocated.
2107
   */
2108
  /**@{*/
2109
  int segment_map_w; /*!< segment map width */
2110
  int segment_map_h; /*!< segment map height */
2111
  /**@}*/
2112
} GlobalMotionInfo;
2113
2114
/*!
2115
 * \brief Flags related to interpolation filter search
2116
 */
2117
typedef struct {
2118
  /*!
2119
   * Stores the default value of skip flag depending on chroma format
2120
   * Set as 1 for monochrome and 3 for other color formats
2121
   */
2122
  int default_interp_skip_flags;
2123
  /*!
2124
   * Filter mask to allow certain interp_filter type.
2125
   */
2126
  uint16_t interp_filter_search_mask;
2127
} InterpSearchFlags;
2128
2129
/*!
2130
 * \brief Parameters for motion vector search process
2131
 */
2132
typedef struct {
2133
  /*!
2134
   * Largest MV component used in a frame.
2135
   * The value from the previous frame is used to set the full pixel search
2136
   * range for the current frame.
2137
   */
2138
  int max_mv_magnitude;
2139
  /*!
2140
   * Parameter indicating initial search window to be used in full-pixel search.
2141
   * Range [0, MAX_MVSEARCH_STEPS-2]. Lower value indicates larger window.
2142
   */
2143
  int mv_step_param;
2144
  /*!
2145
   * Pointer to sub-pixel search function.
2146
   * In encoder: av1_find_best_sub_pixel_tree
2147
   *             av1_find_best_sub_pixel_tree_pruned
2148
   *             av1_find_best_sub_pixel_tree_pruned_more
2149
   * In MV unit test: av1_return_max_sub_pixel_mv
2150
   *                  av1_return_min_sub_pixel_mv
2151
   */
2152
  fractional_mv_step_fp *find_fractional_mv_step;
2153
  /*!
2154
   * Search site configuration for full-pel MV search.
2155
   * search_site_cfg[SS_CFG_SRC]: Used in tpl, rd/non-rd inter mode loop, simple
2156
   * motion search. search_site_cfg[SS_CFG_LOOKAHEAD]: Used in intraBC, temporal
2157
   * filter search_site_cfg[SS_CFG_FPF]: Used during first pass and lookahead
2158
   */
2159
  search_site_config search_site_cfg[SS_CFG_TOTAL][NUM_DISTINCT_SEARCH_METHODS];
2160
} MotionVectorSearchParams;
2161
2162
/*!
2163
 * \brief Refresh frame flags for different type of frames.
2164
 *
2165
 * If the refresh flag is true for a particular reference frame, after the
2166
 * current frame is encoded, the reference frame gets refreshed (updated) to
2167
 * be the current frame. Note: Usually at most one flag will be set to true at
2168
 * a time. But, for key-frames, all flags are set to true at once.
2169
 */
2170
typedef struct {
2171
  bool golden_frame;  /*!< Refresh flag for golden frame */
2172
  bool bwd_ref_frame; /*!< Refresh flag for bwd-ref frame */
2173
  bool alt_ref_frame; /*!< Refresh flag for alt-ref frame */
2174
} RefreshFrameInfo;
2175
2176
/*!
2177
 * \brief Desired dimensions for an externally triggered resize.
2178
 *
2179
 * When resize is triggered externally, the desired dimensions are stored in
2180
 * this struct until used in the next frame to be coded. These values are
2181
 * effective only for one frame and are reset after they are used.
2182
 */
2183
typedef struct {
2184
  int width;  /*!< Desired resized width */
2185
  int height; /*!< Desired resized height */
2186
} ResizePendingParams;
2187
2188
/*!
2189
 * \brief Refrence frame distance related variables.
2190
 */
2191
typedef struct {
2192
  /*!
2193
   * True relative distance of reference frames w.r.t. the current frame.
2194
   */
2195
  int ref_relative_dist[INTER_REFS_PER_FRAME];
2196
  /*!
2197
   * The nearest reference w.r.t. current frame in the past.
2198
   */
2199
  int8_t nearest_past_ref;
2200
  /*!
2201
   * The nearest reference w.r.t. current frame in the future.
2202
   */
2203
  int8_t nearest_future_ref;
2204
} RefFrameDistanceInfo;
2205
2206
/*!
2207
 * \brief Parameters used for winner mode processing.
2208
 *
2209
 * This is a basic two pass approach: in the first pass, we reduce the number of
2210
 * transform searches based on some thresholds during the rdopt process to find
2211
 * the  "winner mode". In the second pass, we perform a more through tx search
2212
 * on the winner mode.
2213
 * There are some arrays in the struct, and their indices are used in the
2214
 * following manner:
2215
 * Index 0: Default mode evaluation, Winner mode processing is not applicable
2216
 * (Eg : IntraBc).
2217
 * Index 1: Mode evaluation.
2218
 * Index 2: Winner mode evaluation
2219
 * Index 1 and 2 are only used when the respective speed feature is on.
2220
 */
2221
typedef struct {
2222
  /*!
2223
   * Threshold to determine if trellis optimization is to be enabled
2224
   * based on :
2225
   * 0 : dist threshold
2226
   * 1 : satd threshold
2227
   * Corresponds to enable_winner_mode_for_coeff_opt speed feature.
2228
   */
2229
  unsigned int coeff_opt_thresholds[MODE_EVAL_TYPES][2];
2230
2231
  /*!
2232
   * Determines the tx size search method during rdopt.
2233
   * Corresponds to enable_winner_mode_for_tx_size_srch speed feature.
2234
   */
2235
  TX_SIZE_SEARCH_METHOD tx_size_search_methods[MODE_EVAL_TYPES];
2236
2237
  /*!
2238
   * Controls how often we should approximate prediction error with tx
2239
   * coefficients. If it's 0, then never. If 1, then it's during the tx_type
2240
   * search only. If 2, then always.
2241
   * Corresponds to tx_domain_dist_level speed feature.
2242
   */
2243
  unsigned int use_transform_domain_distortion[MODE_EVAL_TYPES];
2244
2245
  /*!
2246
   * Threshold to approximate pixel domain distortion with transform domain
2247
   * distortion. This is only used if use_transform_domain_distortion is on.
2248
   * Corresponds to enable_winner_mode_for_use_tx_domain_dist speed feature.
2249
   */
2250
  unsigned int tx_domain_dist_threshold[MODE_EVAL_TYPES];
2251
2252
  /*!
2253
   * Controls how often we should try to skip the transform process based on
2254
   * result from dct.
2255
   * Corresponds to use_skip_flag_prediction speed feature.
2256
   */
2257
  unsigned int skip_txfm_level[MODE_EVAL_TYPES];
2258
2259
  /*!
2260
   * Predict DC only txfm blocks for default, mode and winner mode evaluation.
2261
   * Index 0: Default mode evaluation, Winner mode processing is not applicable.
2262
   * Index 1: Mode evaluation, Index 2: Winner mode evaluation
2263
   */
2264
  unsigned int predict_dc_level[MODE_EVAL_TYPES];
2265
} WinnerModeParams;
2266
2267
/*!
2268
 * \brief Frame refresh flags set by the external interface.
2269
 *
2270
 * Flags set by external interface to determine which reference buffers are
2271
 * refreshed by this frame. When set, the encoder will update the particular
2272
 * reference frame buffer with the contents of the current frame.
2273
 */
2274
typedef struct {
2275
  bool last_frame;     /*!< Refresh flag for last frame */
2276
  bool golden_frame;   /*!< Refresh flag for golden frame */
2277
  bool bwd_ref_frame;  /*!< Refresh flag for bwd-ref frame */
2278
  bool alt2_ref_frame; /*!< Refresh flag for alt2-ref frame */
2279
  bool alt_ref_frame;  /*!< Refresh flag for alt-ref frame */
2280
  /*!
2281
   * Flag indicating if the update of refresh frame flags is pending.
2282
   */
2283
  bool update_pending;
2284
} ExtRefreshFrameFlagsInfo;
2285
2286
/*!
2287
 * \brief Flags signalled by the external interface at frame level.
2288
 */
2289
typedef struct {
2290
  /*!
2291
   * Bit mask to disable certain reference frame types.
2292
   */
2293
  int ref_frame_flags;
2294
2295
  /*!
2296
   * Frame refresh flags set by the external interface.
2297
   */
2298
  ExtRefreshFrameFlagsInfo refresh_frame;
2299
2300
  /*!
2301
   * Flag to enable the update of frame contexts at the end of a frame decode.
2302
   */
2303
  bool refresh_frame_context;
2304
2305
  /*!
2306
   * Flag to indicate that update of refresh_frame_context from external
2307
   * interface is pending.
2308
   */
2309
  bool refresh_frame_context_pending;
2310
2311
  /*!
2312
   * Flag to enable temporal MV prediction.
2313
   */
2314
  bool use_ref_frame_mvs;
2315
2316
  /*!
2317
   * Indicates whether the current frame is to be coded as error resilient.
2318
   */
2319
  bool use_error_resilient;
2320
2321
  /*!
2322
   * Indicates whether the current frame is to be coded as s-frame.
2323
   */
2324
  bool use_s_frame;
2325
2326
  /*!
2327
   * Indicates whether the current frame's primary_ref_frame is set to
2328
   * PRIMARY_REF_NONE.
2329
   */
2330
  bool use_primary_ref_none;
2331
} ExternalFlags;
2332
2333
/*!\cond */
2334
2335
typedef struct {
2336
  // Some misc info
2337
  int high_prec;
2338
  int q;
2339
  int order;
2340
2341
  // MV counters
2342
  int inter_count;
2343
  int intra_count;
2344
  int default_mvs;
2345
  int mv_joint_count[4];
2346
  int last_bit_zero;
2347
  int last_bit_nonzero;
2348
2349
  // Keep track of the rates
2350
  int total_mv_rate;
2351
  int hp_total_mv_rate;
2352
  int lp_total_mv_rate;
2353
2354
  // Texture info
2355
  int horz_text;
2356
  int vert_text;
2357
  int diag_text;
2358
2359
  // Whether the current struct contains valid data
2360
  int valid;
2361
} MV_STATS;
2362
2363
typedef struct WeberStats {
2364
  int64_t mb_wiener_variance;
2365
  int64_t src_variance;
2366
  int64_t rec_variance;
2367
  int16_t src_pix_max;
2368
  int16_t rec_pix_max;
2369
  int64_t distortion;
2370
  int64_t satd;
2371
  double max_scale;
2372
} WeberStats;
2373
2374
/*!
2375
 * \brief This structure stores different types of frame indices.
2376
 */
2377
typedef struct {
2378
  int show_frame_count;
2379
} FRAME_INDEX_SET;
2380
2381
typedef struct {
2382
  struct loopfilter lf;
2383
  CdefInfo cdef_info;
2384
  YV12_BUFFER_CONFIG copy_buffer;
2385
  RATE_CONTROL rc;
2386
  MV_STATS mv_stats;
2387
  unsigned int frame_number;
2388
  FRAME_INDEX_SET frame_index_set;
2389
} CODING_CONTEXT;
2390
2391
typedef struct {
2392
  int frame_width;
2393
  int frame_height;
2394
  int mi_rows;
2395
  int mi_cols;
2396
  int mb_rows;
2397
  int mb_cols;
2398
  int num_mbs;
2399
  aom_bit_depth_t bit_depth;
2400
  int subsampling_x;
2401
  int subsampling_y;
2402
} FRAME_INFO;
2403
2404
/*!\endcond */
2405
2406
/*!
2407
 * \brief Segmentation related information for the current frame.
2408
 */
2409
typedef struct {
2410
  /*!
2411
   * 3-bit number containing the segment affiliation for each 4x4 block in the
2412
   * frame. map[y * stride + x] contains the segment id of the 4x4 block at
2413
   * (x,y) position.
2414
   */
2415
  uint8_t *map;
2416
  /*!
2417
   * Flag to indicate if current frame has lossless segments or not.
2418
   * 1: frame has at least one lossless segment.
2419
   * 0: frame has no lossless segments.
2420
   */
2421
  bool has_lossless_segment;
2422
} EncSegmentationInfo;
2423
2424
/*!
2425
 * \brief Frame time stamps.
2426
 */
2427
typedef struct {
2428
  /*!
2429
   * Start time stamp of the previous frame
2430
   */
2431
  int64_t prev_ts_start;
2432
  /*!
2433
   * End time stamp of the previous frame
2434
   */
2435
  int64_t prev_ts_end;
2436
  /*!
2437
   * Start time stamp of the first frame
2438
   */
2439
  int64_t first_ts_start;
2440
} TimeStamps;
2441
2442
/*!
2443
 * Pointers to the memory allocated for frame level transform coeff related
2444
 * info.
2445
 */
2446
typedef struct {
2447
  /*!
2448
   * Pointer to the transformed coefficients buffer.
2449
   */
2450
  tran_low_t *tcoeff;
2451
  /*!
2452
   * Pointer to the eobs buffer.
2453
   */
2454
  uint16_t *eobs;
2455
  /*!
2456
   * Pointer to the entropy_ctx buffer.
2457
   */
2458
  uint8_t *entropy_ctx;
2459
} CoeffBufferPool;
2460
2461
#if !CONFIG_REALTIME_ONLY
2462
/*!\cond */
2463
// DUCKY_ENCODE_FRAME_MODE is c version of EncodeFrameMode
2464
enum {
2465
  DUCKY_ENCODE_FRAME_MODE_NONE,  // Let native AV1 determine q index and rdmult
2466
  DUCKY_ENCODE_FRAME_MODE_QINDEX,  // DuckyEncode determines q index and AV1
2467
                                   // determines rdmult
2468
  DUCKY_ENCODE_FRAME_MODE_QINDEX_RDMULT,  // DuckyEncode determines q index and
2469
                                          // rdmult
2470
} UENUM1BYTE(DUCKY_ENCODE_FRAME_MODE);
2471
2472
enum {
2473
  DUCKY_ENCODE_GOP_MODE_NONE,  // native AV1 decides GOP
2474
  DUCKY_ENCODE_GOP_MODE_RCL,   // rate control lib decides GOP
2475
} UENUM1BYTE(DUCKY_ENCODE_GOP_MODE);
2476
2477
typedef struct DuckyEncodeFrameInfo {
2478
  DUCKY_ENCODE_FRAME_MODE qp_mode;
2479
  DUCKY_ENCODE_GOP_MODE gop_mode;
2480
  int q_index;
2481
  int rdmult;
2482
  // These two arrays are equivalent to std::vector<SuperblockEncodeParameters>
2483
  int *superblock_encode_qindex;
2484
  int *superblock_encode_rdmult;
2485
  int delta_q_enabled;
2486
} DuckyEncodeFrameInfo;
2487
2488
typedef struct DuckyEncodeFrameResult {
2489
  int global_order_idx;
2490
  int q_index;
2491
  int rdmult;
2492
  int rate;
2493
  int64_t dist;
2494
  double psnr;
2495
} DuckyEncodeFrameResult;
2496
2497
typedef struct DuckyEncodeInfo {
2498
  DuckyEncodeFrameInfo frame_info;
2499
  DuckyEncodeFrameResult frame_result;
2500
} DuckyEncodeInfo;
2501
/*!\endcond */
2502
#endif
2503
2504
/*!\cond */
2505
typedef struct RTC_REF {
2506
  /*!
2507
   * LAST_FRAME (0), LAST2_FRAME(1), LAST3_FRAME(2), GOLDEN_FRAME(3),
2508
   * BWDREF_FRAME(4), ALTREF2_FRAME(5), ALTREF_FRAME(6).
2509
   */
2510
  int reference[INTER_REFS_PER_FRAME];
2511
  int ref_idx[INTER_REFS_PER_FRAME];
2512
  int refresh[REF_FRAMES];
2513
  int set_ref_frame_config;
2514
  int non_reference_frame;
2515
  int ref_frame_comp[3];
2516
  int gld_idx_1layer;
2517
  /*!
2518
   * Frame number of the last frame that refreshed the buffer slot.
2519
   */
2520
  unsigned int buffer_time_index[REF_FRAMES];
2521
  /*!
2522
   * Spatial layer id of the last frame that refreshed the buffer slot.
2523
   */
2524
  unsigned char buffer_spatial_layer[REF_FRAMES];
2525
  /*!
2526
   * Flag to indicate whether closest reference was the previous frame.
2527
   */
2528
  bool reference_was_previous_frame;
2529
  /*!
2530
   * Flag to indicate this frame is based on longer term reference only,
2531
   * for recovery from past loss, and it should be biased for improved coding.
2532
   */
2533
  bool bias_recovery_frame;
2534
} RTC_REF;
2535
/*!\endcond */
2536
2537
/*!
2538
 * \brief Structure to hold data corresponding to an encoded frame.
2539
 */
2540
typedef struct AV1_COMP_DATA {
2541
  /*!
2542
   * Buffer to store packed bitstream data of a frame.
2543
   */
2544
  unsigned char *cx_data;
2545
2546
  /*!
2547
   * Allocated size of the cx_data buffer.
2548
   */
2549
  size_t cx_data_sz;
2550
2551
  /*!
2552
   * Size of data written in the cx_data buffer.
2553
   */
2554
  size_t frame_size;
2555
2556
  /*!
2557
   * Flags for the frame.
2558
   */
2559
  unsigned int lib_flags;
2560
2561
  /*!
2562
   * Time stamp for start of frame.
2563
   */
2564
  int64_t ts_frame_start;
2565
2566
  /*!
2567
   * Time stamp for end of frame.
2568
   */
2569
  int64_t ts_frame_end;
2570
2571
  /*!
2572
   * Flag to indicate flush call.
2573
   */
2574
  int flush;
2575
2576
  /*!
2577
   * Time base for sequence.
2578
   */
2579
  const aom_rational64_t *timestamp_ratio;
2580
2581
  /*!
2582
   * Decide to pop the source for this frame from input buffer queue.
2583
   */
2584
  int pop_lookahead;
2585
} AV1_COMP_DATA;
2586
2587
/*!
2588
 * \brief Top level primary encoder structure
2589
 */
2590
typedef struct AV1_PRIMARY {
2591
  /*!
2592
   * Array of frame level encoder stage top level structures
2593
   */
2594
  struct AV1_COMP *parallel_cpi[MAX_PARALLEL_FRAMES];
2595
2596
  /*!
2597
   * Array of structures to hold data of frames encoded in a given parallel
2598
   * encode set.
2599
   */
2600
  struct AV1_COMP_DATA parallel_frames_data[MAX_PARALLEL_FRAMES - 1];
2601
#if CONFIG_FPMT_TEST
2602
  /*!
2603
   * Flag which enables/disables simulation path for fpmt unit test.
2604
   * 0 - FPMT integration
2605
   * 1 - FPMT simulation
2606
   */
2607
  FPMT_TEST_ENC_CFG fpmt_unit_test_cfg;
2608
2609
  /*!
2610
   * Temporary variable simulating the delayed frame_probability update.
2611
   */
2612
  FrameProbInfo temp_frame_probs;
2613
2614
  /*!
2615
   * Temporary variable holding the updated frame probability across
2616
   * frames. Copy its value to temp_frame_probs for frame_parallel_level 0
2617
   * frames or last frame in parallel encode set.
2618
   */
2619
  FrameProbInfo temp_frame_probs_simulation;
2620
2621
  /*!
2622
   * Temporary variable simulating the delayed update of valid global motion
2623
   * model across frames.
2624
   */
2625
  int temp_valid_gm_model_found[FRAME_UPDATE_TYPES];
2626
#endif  // CONFIG_FPMT_TEST
2627
  /*!
2628
   * Copy of cm->ref_frame_map maintained to facilitate sequential update of
2629
   * ref_frame_map by lower layer depth frames encoded ahead of time in a
2630
   * parallel encode set.
2631
   */
2632
  RefCntBuffer *ref_frame_map_copy[REF_FRAMES];
2633
2634
  /*!
2635
   * Start time stamp of the last encoded show frame
2636
   */
2637
  int64_t ts_start_last_show_frame;
2638
2639
  /*!
2640
   * End time stamp of the last encoded show frame
2641
   */
2642
  int64_t ts_end_last_show_frame;
2643
2644
  /*!
2645
   * Number of frame level contexts(cpis)
2646
   */
2647
  int num_fp_contexts;
2648
2649
  /*!
2650
   * Loopfilter levels of the previous encoded frame.
2651
   */
2652
  int filter_level[2];
2653
2654
  /*!
2655
   * Chrominance component loopfilter level of the previous encoded frame.
2656
   */
2657
  int filter_level_u;
2658
2659
  /*!
2660
   * Chrominance component loopfilter level of the previous encoded frame.
2661
   */
2662
  int filter_level_v;
2663
2664
  /*!
2665
   * Encode stage top level structure
2666
   * During frame parallel encode, this is the same as parallel_cpi[0]
2667
   */
2668
  struct AV1_COMP *cpi;
2669
2670
  /*!
2671
   * Lookahead processing stage top level structure
2672
   */
2673
  struct AV1_COMP *cpi_lap;
2674
2675
  /*!
2676
   * Look-ahead context.
2677
   */
2678
  struct lookahead_ctx *lookahead;
2679
2680
  /*!
2681
   * Sequence parameters have been transmitted already and locked
2682
   * or not. Once locked av1_change_config cannot change the seq
2683
   * parameters. Note that for SVC encoding the sequence parameters
2684
   * (operating_points_cnt_minus_1, operating_point_idc[],
2685
   * has_nonzero_operating_point_idc) should be updated whenever the
2686
   * number of layers is changed. This is done in the
2687
   * ctrl_set_svc_params().
2688
   */
2689
  int seq_params_locked;
2690
2691
  /*!
2692
   * Pointer to internal utility functions that manipulate aom_codec_* data
2693
   * structures.
2694
   */
2695
  struct aom_codec_pkt_list *output_pkt_list;
2696
2697
  /*!
2698
   * When set, indicates that internal ARFs are enabled.
2699
   */
2700
  int internal_altref_allowed;
2701
2702
  /*!
2703
   * Tell if OVERLAY frame shows existing alt_ref frame.
2704
   */
2705
  int show_existing_alt_ref;
2706
2707
  /*!
2708
   * Information related to a gf group.
2709
   */
2710
  GF_GROUP gf_group;
2711
2712
  /*!
2713
   * Track prior gf group state.
2714
   */
2715
  GF_STATE gf_state;
2716
2717
  /*!
2718
   * Flag indicating whether look ahead processing (LAP) is enabled.
2719
   */
2720
  int lap_enabled;
2721
2722
  /*!
2723
   * Parameters for AV1 bitstream levels.
2724
   */
2725
  AV1LevelParams level_params;
2726
2727
  /*!
2728
   * Calculates PSNR on each frame when set to 1.
2729
   */
2730
  int b_calculate_psnr;
2731
2732
  /*!
2733
   * Number of frames left to be encoded, is 0 if limit is not set.
2734
   */
2735
  int frames_left;
2736
2737
  /*!
2738
   * Information related to two pass encoding.
2739
   */
2740
  TWO_PASS twopass;
2741
2742
  /*!
2743
   * Rate control related parameters.
2744
   */
2745
  PRIMARY_RATE_CONTROL p_rc;
2746
2747
  /*!
2748
   * Info and resources used by temporal filtering.
2749
   */
2750
  TEMPORAL_FILTER_INFO tf_info;
2751
  /*!
2752
   * Elements part of the sequence header, that are applicable for all the
2753
   * frames in the video.
2754
   */
2755
  SequenceHeader seq_params;
2756
2757
  /*!
2758
   * Indicates whether to use SVC.
2759
   */
2760
  int use_svc;
2761
2762
  /*!
2763
   * If true, buffer removal times are present.
2764
   */
2765
  bool buffer_removal_time_present;
2766
2767
  /*!
2768
   * Number of temporal layers: may be > 1 for SVC (scalable vector coding).
2769
   */
2770
  unsigned int number_temporal_layers;
2771
2772
  /*!
2773
   * Number of spatial layers: may be > 1 for SVC (scalable vector coding).
2774
   */
2775
  unsigned int number_spatial_layers;
2776
2777
  /*!
2778
   * Code and details about current error status.
2779
   */
2780
  struct aom_internal_error_info error;
2781
2782
  /*!
2783
   * Function pointers to variants of sse/sad/variance computation functions.
2784
   * fn_ptr[i] indicates the list of function pointers corresponding to block
2785
   * size i.
2786
   */
2787
  aom_variance_fn_ptr_t fn_ptr[BLOCK_SIZES_ALL];
2788
2789
  /*!
2790
   * tpl_sb_rdmult_scaling_factors[i] stores the RD multiplier scaling factor of
2791
   * the ith 16 x 16 block in raster scan order.
2792
   */
2793
  double *tpl_sb_rdmult_scaling_factors;
2794
2795
  /*!
2796
   * Parameters related to tpl.
2797
   */
2798
  TplParams tpl_data;
2799
2800
  /*!
2801
   * Motion vector stats of the previous encoded frame.
2802
   */
2803
  MV_STATS mv_stats;
2804
2805
#if CONFIG_INTERNAL_STATS
2806
  /*!\cond */
2807
  uint64_t total_time_receive_data;
2808
  uint64_t total_time_compress_data;
2809
2810
  unsigned int total_mode_chosen_counts[MAX_MODES];
2811
2812
  int count[2];
2813
  uint64_t total_sq_error[2];
2814
  uint64_t total_samples[2];
2815
  ImageStat psnr[2];
2816
2817
  double total_blockiness;
2818
  double worst_blockiness;
2819
2820
  uint64_t total_bytes;
2821
  double summed_quality;
2822
  double summed_weights;
2823
  double summed_quality_hbd;
2824
  double summed_weights_hbd;
2825
  unsigned int total_recode_hits;
2826
  double worst_ssim;
2827
  double worst_ssim_hbd;
2828
2829
  ImageStat fastssim;
2830
  ImageStat psnrhvs;
2831
2832
  int b_calculate_blockiness;
2833
  int b_calculate_consistency;
2834
2835
  double total_inconsistency;
2836
  double worst_consistency;
2837
  Ssimv *ssim_vars;
2838
  Metrics metrics;
2839
  /*!\endcond */
2840
#endif
2841
2842
#if CONFIG_ENTROPY_STATS
2843
  /*!
2844
   * Aggregates frame counts for the sequence.
2845
   */
2846
  FRAME_COUNTS aggregate_fc;
2847
#endif  // CONFIG_ENTROPY_STATS
2848
2849
  /*!
2850
   * For each type of reference frame, this contains the index of a reference
2851
   * frame buffer for a reference frame of the same type.  We use this to
2852
   * choose our primary reference frame (which is the most recent reference
2853
   * frame of the same type as the current frame).
2854
   */
2855
  int fb_of_context_type[REF_FRAMES];
2856
2857
  /*!
2858
   * Primary Multi-threading parameters.
2859
   */
2860
  PrimaryMultiThreadInfo p_mt_info;
2861
2862
  /*!
2863
   * Probabilities for pruning of various AV1 tools.
2864
   */
2865
  FrameProbInfo frame_probs;
2866
2867
  /*!
2868
   * Indicates if a valid global motion model has been found in the different
2869
   * frame update types of a GF group.
2870
   * valid_gm_model_found[i] indicates if valid global motion model has been
2871
   * found in the frame update type with enum value equal to i
2872
   */
2873
  int valid_gm_model_found[FRAME_UPDATE_TYPES];
2874
2875
  /*!
2876
   * Struct for the reference structure for RTC.
2877
   */
2878
  RTC_REF rtc_ref;
2879
2880
  /*!
2881
   * Struct for all intra mode row multi threading in the preprocess stage
2882
   * when --deltaq-mode=3.
2883
   */
2884
  AV1EncRowMultiThreadSync intra_row_mt_sync;
2885
2886
  /*!
2887
   * If set to 1, the encoder should not update any internal state after
2888
   * completing the encode. E.g. no updates to reference buffers, CDF
2889
   * tables or RC state.
2890
   */
2891
  int b_freeze_internal_state;
2892
} AV1_PRIMARY;
2893
2894
/*!
2895
 * \brief Top level encoder structure.
2896
 */
2897
typedef struct AV1_COMP {
2898
  /*!
2899
   * Pointer to top level primary encoder structure
2900
   */
2901
  AV1_PRIMARY *ppi;
2902
2903
  /*!
2904
   * Quantization and dequantization parameters for internal quantizer setup
2905
   * in the encoder.
2906
   */
2907
  EncQuantDequantParams enc_quant_dequant_params;
2908
2909
  /*!
2910
   * Structure holding thread specific variables.
2911
   */
2912
  ThreadData td;
2913
2914
  /*!
2915
   * Statistics collected at frame level.
2916
   */
2917
  FRAME_COUNTS counts;
2918
2919
  /*!
2920
   * Holds buffer storing mode information at 4x4/8x8 level.
2921
   */
2922
  MBMIExtFrameBufferInfo mbmi_ext_info;
2923
2924
  /*!
2925
   * Buffer holding the transform block related information.
2926
   * coeff_buffer_base[i] stores the transform block related information of the
2927
   * ith superblock in raster scan order.
2928
   */
2929
  CB_COEFF_BUFFER *coeff_buffer_base;
2930
2931
  /*!
2932
   * Structure holding pointers to frame level memory allocated for transform
2933
   * block related information.
2934
   */
2935
  CoeffBufferPool coeff_buffer_pool;
2936
2937
  /*!
2938
   * Structure holding variables common to encoder and decoder.
2939
   */
2940
  AV1_COMMON common;
2941
2942
  /*!
2943
   * Encoder configuration related parameters.
2944
   */
2945
  AV1EncoderConfig oxcf;
2946
2947
  /*!
2948
   * Stores the trellis optimization type at segment level.
2949
   * optimize_seg_arr[i] stores the trellis opt type for ith segment.
2950
   */
2951
  TRELLIS_OPT_TYPE optimize_seg_arr[MAX_SEGMENTS];
2952
2953
  /*!
2954
   * Pointer to the frame buffer holding the source frame to be used during the
2955
   * current stage of encoding. It can be the raw input, temporally filtered
2956
   * input or scaled input.
2957
   */
2958
  YV12_BUFFER_CONFIG *source;
2959
2960
  /*!
2961
   * Pointer to the frame buffer holding the last raw source frame.
2962
   * last_source is NULL for the following cases:
2963
   * 1) First frame
2964
   * 2) Alt-ref frames
2965
   * 3) All frames for all-intra frame encoding.
2966
   */
2967
  YV12_BUFFER_CONFIG *last_source;
2968
2969
  /*!
2970
   * Pointer to the frame buffer holding the unscaled source frame.
2971
   * It can be either the raw input or temporally filtered input.
2972
   */
2973
  YV12_BUFFER_CONFIG *unscaled_source;
2974
2975
  /*!
2976
   * Frame buffer holding the resized source frame (cropping / superres).
2977
   */
2978
  YV12_BUFFER_CONFIG scaled_source;
2979
2980
  /*!
2981
   * Pointer to the frame buffer holding the unscaled last source frame.
2982
   */
2983
  YV12_BUFFER_CONFIG *unscaled_last_source;
2984
2985
  /*!
2986
   * Frame buffer holding the resized last source frame.
2987
   */
2988
  YV12_BUFFER_CONFIG scaled_last_source;
2989
2990
  /*!
2991
   * Pointer to the original source frame. This is used to determine if the
2992
   * content is screen.
2993
   */
2994
  YV12_BUFFER_CONFIG *unfiltered_source;
2995
2996
  /*!
2997
   * Frame buffer holding the orig source frame for PSNR calculation in rtc tf
2998
   * case.
2999
   */
3000
  YV12_BUFFER_CONFIG orig_source;
3001
3002
  /*!
3003
   * Skip tpl setup when tpl data from gop length decision can be reused.
3004
   */
3005
  int skip_tpl_setup_stats;
3006
3007
  /*!
3008
   * Scaling factors used in the RD multiplier modulation.
3009
   * TODO(sdeng): consider merge the following arrays.
3010
   * tpl_rdmult_scaling_factors is a temporary buffer used to store the
3011
   * intermediate scaling factors which are used in the calculation of
3012
   * tpl_sb_rdmult_scaling_factors. tpl_rdmult_scaling_factors[i] stores the
3013
   * intermediate scaling factor of the ith 16 x 16 block in raster scan order.
3014
   */
3015
  double *tpl_rdmult_scaling_factors;
3016
3017
  /*!
3018
   * Temporal filter context.
3019
   */
3020
  TemporalFilterCtx tf_ctx;
3021
3022
  /*!
3023
   * Pointer to CDEF search context.
3024
   */
3025
  CdefSearchCtx *cdef_search_ctx;
3026
3027
  /*!
3028
   * Variables related to forcing integer mv decisions for the current frame.
3029
   */
3030
  ForceIntegerMVInfo force_intpel_info;
3031
3032
  /*!
3033
   * Pointer to the buffer holding the scaled reference frames.
3034
   * scaled_ref_buf[i] holds the scaled reference frame of type i.
3035
   */
3036
  RefCntBuffer *scaled_ref_buf[INTER_REFS_PER_FRAME];
3037
3038
  /*!
3039
   * Pointer to the buffer holding the last show frame.
3040
   */
3041
  RefCntBuffer *last_show_frame_buf;
3042
3043
  /*!
3044
   * Refresh frame flags for golden, bwd-ref and alt-ref frames.
3045
   */
3046
  RefreshFrameInfo refresh_frame;
3047
3048
  /*!
3049
   * Flag to reduce the number of reference frame buffers used in rt.
3050
   */
3051
  int rt_reduce_num_ref_buffers;
3052
3053
  /*!
3054
   * Flags signalled by the external interface at frame level.
3055
   */
3056
  ExternalFlags ext_flags;
3057
3058
  /*!
3059
   * Temporary frame buffer used to store the non-loop filtered reconstructed
3060
   * frame during the search of loop filter level.
3061
   */
3062
  YV12_BUFFER_CONFIG last_frame_uf;
3063
3064
  /*!
3065
   * Temporary frame buffer used to store the loop restored frame during loop
3066
   * restoration search.
3067
   */
3068
  YV12_BUFFER_CONFIG trial_frame_rst;
3069
3070
  /*!
3071
   * Ambient reconstruction err target for force key frames.
3072
   */
3073
  int64_t ambient_err;
3074
3075
  /*!
3076
   * Parameters related to rate distortion optimization.
3077
   */
3078
  RD_OPT rd;
3079
3080
  /*!
3081
   * Temporary coding context used to save and restore when encoding with and
3082
   * without super-resolution.
3083
   */
3084
  CODING_CONTEXT coding_context;
3085
3086
  /*!
3087
   * Parameters related to global motion search.
3088
   */
3089
  GlobalMotionInfo gm_info;
3090
3091
  /*!
3092
   * Parameters related to winner mode processing.
3093
   */
3094
  WinnerModeParams winner_mode_params;
3095
3096
  /*!
3097
   * Frame time stamps.
3098
   */
3099
  TimeStamps time_stamps;
3100
3101
  /*!
3102
   * Rate control related parameters.
3103
   */
3104
  RATE_CONTROL rc;
3105
3106
  /*!
3107
   * Frame rate of the video.
3108
   */
3109
  double framerate;
3110
3111
  /*!
3112
   * Bitmask indicating which reference buffers may be referenced by this frame.
3113
   */
3114
  int ref_frame_flags;
3115
3116
  /*!
3117
   * speed is passed as a per-frame parameter into the encoder.
3118
   */
3119
  int speed;
3120
3121
  /*!
3122
   * sf contains fine-grained config set internally based on speed.
3123
   */
3124
  SPEED_FEATURES sf;
3125
3126
  /*!
3127
   * Parameters for motion vector search process.
3128
   */
3129
  MotionVectorSearchParams mv_search_params;
3130
3131
  /*!
3132
   * When set, indicates that all reference frames are forward references,
3133
   * i.e., all the reference frames are output before the current frame.
3134
   */
3135
  int all_one_sided_refs;
3136
3137
  /*!
3138
   * Segmentation related information for current frame.
3139
   */
3140
  EncSegmentationInfo enc_seg;
3141
3142
  /*!
3143
   * Parameters related to cyclic refresh aq-mode.
3144
   */
3145
  CYCLIC_REFRESH *cyclic_refresh;
3146
  /*!
3147
   * Parameters related to active map. Active maps indicate
3148
   * if there is any activity on a 4x4 block basis.
3149
   */
3150
  ActiveMap active_map;
3151
3152
  /*!
3153
   * The frame processing order within a GOP.
3154
   */
3155
  unsigned char gf_frame_index;
3156
3157
#if CONFIG_INTERNAL_STATS
3158
  /*!\cond */
3159
  uint64_t time_compress_data;
3160
3161
  unsigned int mode_chosen_counts[MAX_MODES];
3162
  int bytes;
3163
  unsigned int frame_recode_hits;
3164
  /*!\endcond */
3165
#endif
3166
3167
#if CONFIG_SPEED_STATS
3168
  /*!
3169
   * For debugging: number of transform searches we have performed.
3170
   */
3171
  unsigned int tx_search_count;
3172
#endif  // CONFIG_SPEED_STATS
3173
3174
  /*!
3175
   * When set, indicates that the frame is droppable, i.e., this frame
3176
   * does not update any reference buffers.
3177
   */
3178
  int droppable;
3179
3180
  /*!
3181
   * Stores the frame parameters during encoder initialization.
3182
   */
3183
  FRAME_INFO frame_info;
3184
3185
  /*!
3186
   * Stores different types of frame indices.
3187
   */
3188
  FRAME_INDEX_SET frame_index_set;
3189
3190
  /*!
3191
   * Stores the cm->width in the last call of alloc_compressor_data(). Helps
3192
   * determine whether compressor data should be reallocated when cm->width
3193
   * changes.
3194
   */
3195
  int data_alloc_width;
3196
3197
  /*!
3198
   * Stores the cm->height in the last call of alloc_compressor_data(). Helps
3199
   * determine whether compressor data should be reallocated when cm->height
3200
   * changes.
3201
   */
3202
  int data_alloc_height;
3203
3204
  /*!
3205
   * Number of MBs in the full-size frame; to be used to
3206
   * normalize the firstpass stats. This will differ from the
3207
   * number of MBs in the current frame when the frame is
3208
   * scaled.
3209
   */
3210
  int initial_mbs;
3211
3212
  /*!
3213
   * Flag to indicate whether the frame size inforamation has been
3214
   * setup and propagated to associated allocations.
3215
   */
3216
  bool frame_size_related_setup_done;
3217
3218
  /*!
3219
   * The width of the frame that is lastly encoded.
3220
   * It is updated in the function "encoder_encode()".
3221
   */
3222
  int last_coded_width;
3223
3224
  /*!
3225
   * The height of the frame that is lastly encoded.
3226
   * It is updated in the function "encoder_encode()".
3227
   */
3228
  int last_coded_height;
3229
3230
  /*!
3231
   * Resize related parameters.
3232
   */
3233
  ResizePendingParams resize_pending_params;
3234
3235
  /*!
3236
   * Pointer to struct holding adaptive data/contexts/models for the tile during
3237
   * encoding.
3238
   */
3239
  TileDataEnc *tile_data;
3240
  /*!
3241
   * Number of tiles for which memory has been allocated for tile_data.
3242
   */
3243
  int allocated_tiles;
3244
3245
  /*!
3246
   * Structure to store the palette token related information.
3247
   */
3248
  TokenInfo token_info;
3249
3250
  /*!
3251
   * VARIANCE_AQ segment map refresh.
3252
   */
3253
  int vaq_refresh;
3254
3255
  /*!
3256
   * Thresholds for variance based partitioning.
3257
   */
3258
  VarBasedPartitionInfo vbp_info;
3259
3260
  /*!
3261
   * Number of recodes in the frame.
3262
   */
3263
  int num_frame_recode;
3264
3265
  /*!
3266
   * Current frame probability of parallel frames, across recodes.
3267
   */
3268
  FrameProbInfo frame_new_probs[NUM_RECODES_PER_FRAME];
3269
3270
  /*!
3271
   * Retain condition for transform type frame_probability calculation
3272
   */
3273
  int do_update_frame_probs_txtype[NUM_RECODES_PER_FRAME];
3274
3275
  /*!
3276
   * Retain condition for obmc frame_probability calculation
3277
   */
3278
  int do_update_frame_probs_obmc[NUM_RECODES_PER_FRAME];
3279
3280
  /*!
3281
   * Retain condition for warped motion frame_probability calculation
3282
   */
3283
  int do_update_frame_probs_warp[NUM_RECODES_PER_FRAME];
3284
3285
  /*!
3286
   * Retain condition for interpolation filter frame_probability calculation
3287
   */
3288
  int do_update_frame_probs_interpfilter[NUM_RECODES_PER_FRAME];
3289
3290
#if CONFIG_FPMT_TEST
3291
  /*!
3292
   * Temporary variable for simulation.
3293
   * Previous frame's framerate.
3294
   */
3295
  double temp_framerate;
3296
#endif
3297
  /*!
3298
   * Updated framerate for the current parallel frame.
3299
   * cpi->framerate is updated with new_framerate during
3300
   * post encode updates for parallel frames.
3301
   */
3302
  double new_framerate;
3303
3304
  /*!
3305
   * Retain condition for fast_extra_bits calculation.
3306
   */
3307
  int do_update_vbr_bits_off_target_fast;
3308
3309
  /*!
3310
   * Multi-threading parameters.
3311
   */
3312
  MultiThreadInfo mt_info;
3313
3314
  /*!
3315
   * Specifies the frame to be output. It is valid only if show_existing_frame
3316
   * is 1. When show_existing_frame is 0, existing_fb_idx_to_show is set to
3317
   * INVALID_IDX.
3318
   */
3319
  int existing_fb_idx_to_show;
3320
3321
  /*!
3322
   * A flag to indicate if intrabc is ever used in current frame.
3323
   */
3324
  int intrabc_used;
3325
3326
  /*!
3327
   * Mark which ref frames can be skipped for encoding current frame during RDO.
3328
   */
3329
  int prune_ref_frame_mask;
3330
3331
  /*!
3332
   * Mark the reference frames which are important (based on the temporal
3333
   * distance and quality) to prevent pruning the reference frame at block
3334
   * level.
3335
   */
3336
  int keep_single_ref_frame_mask;
3337
3338
  /*!
3339
   * Loop Restoration context.
3340
   */
3341
  AV1LrStruct lr_ctxt;
3342
3343
  /*!
3344
   * Loop Restoration context used during pick stage.
3345
   */
3346
  AV1LrPickStruct pick_lr_ctxt;
3347
3348
  /*!
3349
   * Pointer to list of tables with film grain parameters.
3350
   */
3351
  aom_film_grain_table_t *film_grain_table;
3352
3353
#if CONFIG_DENOISE
3354
  /*!
3355
   * Pointer to structure holding the denoised image buffers and the helper
3356
   * noise models.
3357
   */
3358
  struct aom_denoise_and_model_t *denoise_and_model;
3359
#endif
3360
3361
  /*!
3362
   * Flags related to interpolation filter search.
3363
   */
3364
  InterpSearchFlags interp_search_flags;
3365
3366
  /*!
3367
   * Turn on screen content tools flag.
3368
   * Note that some videos are not screen content videos, but
3369
   * screen content tools could also improve coding efficiency.
3370
   * For example, videos with large flat regions, gaming videos that look
3371
   * like natural videos.
3372
   */
3373
  int use_screen_content_tools;
3374
3375
  /*!
3376
   * A flag to indicate "real" screen content videos.
3377
   * For example, screen shares, screen editing.
3378
   * This type is true indicates |use_screen_content_tools| must be true.
3379
   * In addition, rate control strategy is adjusted when this flag is true.
3380
   */
3381
  int is_screen_content_type;
3382
3383
#if CONFIG_COLLECT_PARTITION_STATS
3384
  /*!
3385
   * Accumulates the partition timing stat over the whole frame.
3386
   */
3387
  FramePartitionTimingStats partition_stats;
3388
#endif  // CONFIG_COLLECT_PARTITION_STATS
3389
3390
#if CONFIG_COLLECT_COMPONENT_TIMING
3391
  /*!
3392
   * component_time[] are initialized to zero while encoder starts.
3393
   */
3394
  uint64_t component_time[kTimingComponents];
3395
  /*!
3396
   * Stores timing for individual components between calls of start_timing()
3397
   * and end_timing().
3398
   */
3399
  struct aom_usec_timer component_timer[kTimingComponents];
3400
  /*!
3401
   * frame_component_time[] are initialized to zero at beginning of each frame.
3402
   */
3403
  uint64_t frame_component_time[kTimingComponents];
3404
#endif
3405
3406
  /*!
3407
   * Count the number of OBU_FRAME and OBU_FRAME_HEADER for level calculation.
3408
   */
3409
  int frame_header_count;
3410
3411
  /*!
3412
   * Whether any no-zero delta_q was actually used.
3413
   */
3414
  int deltaq_used;
3415
3416
  /*!
3417
   * Refrence frame distance related variables.
3418
   */
3419
  RefFrameDistanceInfo ref_frame_dist_info;
3420
3421
  /*!
3422
   * ssim_rdmult_scaling_factors[i] stores the RD multiplier scaling factor of
3423
   * the ith 16 x 16 block in raster scan order. This scaling factor is used for
3424
   * RD multiplier modulation when SSIM tuning is enabled.
3425
   */
3426
  double *ssim_rdmult_scaling_factors;
3427
3428
#if CONFIG_TUNE_VMAF
3429
  /*!
3430
   * Parameters for VMAF tuning.
3431
   */
3432
  TuneVMAFInfo vmaf_info;
3433
#endif
3434
3435
#if CONFIG_TUNE_BUTTERAUGLI
3436
  /*!
3437
   * Parameters for Butteraugli tuning.
3438
   */
3439
  TuneButteraugliInfo butteraugli_info;
3440
#endif
3441
3442
  /*!
3443
   * Parameters for scalable video coding.
3444
   */
3445
  SVC svc;
3446
3447
  /*!
3448
   * Indicates whether current processing stage is encode stage or LAP stage.
3449
   */
3450
  COMPRESSOR_STAGE compressor_stage;
3451
3452
  /*!
3453
   * Frame type of the last frame. May be used in some heuristics for speeding
3454
   * up the encoding.
3455
   */
3456
  FRAME_TYPE last_frame_type;
3457
3458
  /*!
3459
   * Number of tile-groups.
3460
   */
3461
  int num_tg;
3462
3463
  /*!
3464
   * Super-resolution mode currently being used by the encoder.
3465
   * This may / may not be same as user-supplied mode in oxcf->superres_mode
3466
   * (when we are recoding to try multiple options for example).
3467
   */
3468
  aom_superres_mode superres_mode;
3469
3470
  /*!
3471
   * First pass related data.
3472
   */
3473
  FirstPassData firstpass_data;
3474
3475
  /*!
3476
   * Temporal Noise Estimate
3477
   */
3478
  NOISE_ESTIMATE noise_estimate;
3479
3480
#if CONFIG_AV1_TEMPORAL_DENOISING
3481
  /*!
3482
   * Temporal Denoiser
3483
   */
3484
  AV1_DENOISER denoiser;
3485
#endif
3486
3487
  /*!
3488
   * Count on how many consecutive times a block uses small/zeromv for encoding
3489
   * in a scale of 8x8 block.
3490
   */
3491
  uint8_t *consec_zero_mv;
3492
3493
  /*!
3494
   * Allocated memory size for |consec_zero_mv|.
3495
   */
3496
  int consec_zero_mv_alloc_size;
3497
3498
  /*!
3499
   * Block size of first pass encoding
3500
   */
3501
  BLOCK_SIZE fp_block_size;
3502
3503
  /*!
3504
   * The counter of encoded super block, used to differentiate block names.
3505
   * This number starts from 0 and increases whenever a super block is encoded.
3506
   */
3507
  int sb_counter;
3508
3509
  /*!
3510
   * Available bitstream buffer size in bytes
3511
   */
3512
  size_t available_bs_size;
3513
3514
  /*!
3515
   * The controller of the external partition model.
3516
   * It is used to do partition type selection based on external models.
3517
   */
3518
  ExtPartController ext_part_controller;
3519
3520
  /*!
3521
   * Motion vector stats of the current encoded frame, used to update the
3522
   * ppi->mv_stats during postencode.
3523
   */
3524
  MV_STATS mv_stats;
3525
  /*!
3526
   * Stores the reference refresh index for the current frame.
3527
   */
3528
  int ref_refresh_index;
3529
3530
  /*!
3531
   * A flag to indicate if the reference refresh index is available for the
3532
   * current frame.
3533
   */
3534
  bool refresh_idx_available;
3535
3536
  /*!
3537
   * Reference frame index corresponding to the frame to be excluded from being
3538
   * used as a reference by frame_parallel_level 2 frame in a parallel
3539
   * encode set of lower layer frames.
3540
   */
3541
  int ref_idx_to_skip;
3542
#if CONFIG_FPMT_TEST
3543
  /*!
3544
   * Stores the wanted frame buffer index for choosing primary ref frame by a
3545
   * frame_parallel_level 2 frame in a parallel encode set of lower layer
3546
   * frames.
3547
   */
3548
3549
  int wanted_fb;
3550
#endif  // CONFIG_FPMT_TEST
3551
3552
  /*!
3553
   * A flag to indicate frames that will update their data to the primary
3554
   * context at the end of the encode. It is set for non-parallel frames and the
3555
   * last frame in encode order in a given parallel encode set.
3556
   */
3557
  bool do_frame_data_update;
3558
3559
#if CONFIG_RD_COMMAND
3560
  /*!
3561
   *  A structure for assigning external q_index / rdmult for experiments
3562
   */
3563
  RD_COMMAND rd_command;
3564
#endif  // CONFIG_RD_COMMAND
3565
3566
  /*!
3567
   * Buffer to store MB variance after Wiener filter.
3568
   */
3569
  WeberStats *mb_weber_stats;
3570
3571
  /*!
3572
   * Buffer to store rate cost estimates for each macro block (8x8) in the
3573
   * preprocessing stage used in allintra mode.
3574
   */
3575
  int *prep_rate_estimates;
3576
3577
  /*!
3578
   * Buffer to store rate cost estimates for each 16x16 block read
3579
   * from an external file, used in allintra mode.
3580
   */
3581
  double *ext_rate_distribution;
3582
3583
  /*!
3584
   * The scale that equals sum_rate_uniform_quantizer / sum_ext_rate.
3585
   */
3586
  double ext_rate_scale;
3587
3588
  /*!
3589
   * Buffer to store MB variance after Wiener filter.
3590
   */
3591
  BLOCK_SIZE weber_bsize;
3592
3593
  /*!
3594
   * Frame level Wiener filter normalization.
3595
   */
3596
  int64_t norm_wiener_variance;
3597
3598
  /*!
3599
   * Buffer to store delta-q values for delta-q mode 4.
3600
   */
3601
  int *mb_delta_q;
3602
3603
  /*!
3604
   * Flag to indicate that current frame is dropped.
3605
   */
3606
  bool is_dropped_frame;
3607
3608
#if CONFIG_BITRATE_ACCURACY
3609
  /*!
3610
   * Structure stores information needed for bitrate accuracy experiment.
3611
   */
3612
  VBR_RATECTRL_INFO vbr_rc_info;
3613
#endif
3614
3615
#if CONFIG_RATECTRL_LOG
3616
  /*!
3617
   * Structure stores information of rate control decisions.
3618
   */
3619
  RATECTRL_LOG rc_log;
3620
#endif  // CONFIG_RATECTRL_LOG
3621
3622
  /*!
3623
   * Frame level twopass status and control data
3624
   */
3625
  TWO_PASS_FRAME twopass_frame;
3626
3627
#if CONFIG_THREE_PASS
3628
  /*!
3629
   * Context needed for third pass encoding.
3630
   */
3631
  THIRD_PASS_DEC_CTX *third_pass_ctx;
3632
#endif
3633
3634
  /*!
3635
   * File pointer to second pass log
3636
   */
3637
  FILE *second_pass_log_stream;
3638
3639
  /*!
3640
   * Buffer to store 64x64 SAD
3641
   */
3642
  uint64_t *src_sad_blk_64x64;
3643
3644
  /*!
3645
   * SSE between the current frame and the reconstructed last frame
3646
   * It is only used for CBR mode.
3647
   * It is not used if the reference frame has a different frame size.
3648
   */
3649
  uint64_t rec_sse;
3650
3651
  /*!
3652
   * A flag to indicate whether the encoder is controlled by DuckyEncode or not.
3653
   * 1:yes 0:no
3654
   */
3655
  int use_ducky_encode;
3656
3657
#if !CONFIG_REALTIME_ONLY
3658
  /*! A structure that facilitates the communication between DuckyEncode and AV1
3659
   * encoder.
3660
   */
3661
  DuckyEncodeInfo ducky_encode_info;
3662
#endif  // CONFIG_REALTIME_ONLY
3663
        //
3664
  /*!
3665
   * Frames since last frame with cdf update.
3666
   */
3667
  int frames_since_last_update;
3668
3669
  /*!
3670
   * Block level thresholds to force zeromv-skip at partition level.
3671
   */
3672
  unsigned int zeromv_skip_thresh_exit_part[BLOCK_SIZES_ALL];
3673
3674
  /*!
3675
   *  Should we allocate a downsampling pyramid for each frame buffer?
3676
   *  This is currently only used for global motion
3677
   */
3678
  bool alloc_pyramid;
3679
3680
#if CONFIG_SALIENCY_MAP
3681
  /*!
3682
   * Pixel level saliency map for each frame.
3683
   */
3684
  uint8_t *saliency_map;
3685
3686
  /*!
3687
   * Superblock level rdmult scaling factor driven by saliency map.
3688
   */
3689
  double *sm_scaling_factor;
3690
#endif
3691
3692
  /*!
3693
   * Number of pixels that choose palette mode for luma in the
3694
   * fast encoding pass in av1_determine_sc_tools_with_encoding().
3695
   */
3696
  int palette_pixel_num;
3697
3698
  /*!
3699
   * Flag to indicate scaled_last_source is available,
3700
   * so scaling is not needed for last_source.
3701
   */
3702
  int scaled_last_source_available;
3703
3704
  /*!
3705
   * ROI map.
3706
   */
3707
  aom_roi_map_t roi;
3708
3709
  /*!
3710
   * External rate control.
3711
   */
3712
  AOM_EXT_RATECTRL ext_ratectrl;
3713
3714
  /*!
3715
   * Store TPL stats before propagation
3716
   */
3717
  AomTplGopStats extrc_tpl_gop_stats;
3718
} AV1_COMP;
3719
3720
/*!
3721
 * \brief Input frames and last input frame
3722
 */
3723
typedef struct EncodeFrameInput {
3724
  /*!\cond */
3725
  YV12_BUFFER_CONFIG *source;
3726
  YV12_BUFFER_CONFIG *last_source;
3727
  int64_t ts_duration;
3728
  /*!\endcond */
3729
} EncodeFrameInput;
3730
3731
/*!
3732
 * \brief contains per-frame encoding parameters decided upon by
3733
 * av1_encode_strategy() and passed down to av1_encode().
3734
 */
3735
typedef struct EncodeFrameParams {
3736
  /*!
3737
   * Is error resilient mode enabled
3738
   */
3739
  int error_resilient_mode;
3740
  /*!
3741
   * Frame type (eg KF vs inter frame etc)
3742
   */
3743
  FRAME_TYPE frame_type;
3744
3745
  /*!\cond */
3746
  int primary_ref_frame;
3747
  int order_offset;
3748
3749
  /*!\endcond */
3750
  /*!
3751
   * Should the current frame be displayed after being decoded
3752
   */
3753
  int show_frame;
3754
3755
  /*!\cond */
3756
  int refresh_frame_flags;
3757
3758
  int show_existing_frame;
3759
  int existing_fb_idx_to_show;
3760
3761
  /*!\endcond */
3762
  /*!
3763
   *  Bitmask of which reference buffers may be referenced by this frame.
3764
   */
3765
  int ref_frame_flags;
3766
3767
  /*!
3768
   *  Reference buffer assignment for this frame.
3769
   */
3770
  int remapped_ref_idx[REF_FRAMES];
3771
3772
  /*!
3773
   *  Flags which determine which reference buffers are refreshed by this
3774
   *  frame.
3775
   */
3776
  RefreshFrameInfo refresh_frame;
3777
3778
  /*!
3779
   *  Speed level to use for this frame: Bigger number means faster.
3780
   */
3781
  int speed;
3782
} EncodeFrameParams;
3783
3784
/*!\cond */
3785
3786
void av1_initialize_enc(unsigned int usage, enum aom_rc_mode end_usage);
3787
3788
struct AV1_COMP *av1_create_compressor(struct AV1_PRIMARY *ppi,
3789
                                       const AV1EncoderConfig *oxcf,
3790
                                       struct BufferPool *const pool,
3791
                                       COMPRESSOR_STAGE stage,
3792
                                       int lap_lag_in_frames);
3793
3794
struct AV1_PRIMARY *av1_create_primary_compressor(
3795
    struct aom_codec_pkt_list *pkt_list_head, int num_lap_buffers,
3796
    const AV1EncoderConfig *oxcf);
3797
3798
void av1_remove_compressor(AV1_COMP *cpi);
3799
3800
void av1_remove_primary_compressor(AV1_PRIMARY *ppi);
3801
3802
#if CONFIG_ENTROPY_STATS
3803
void print_entropy_stats(AV1_PRIMARY *const ppi);
3804
#endif
3805
#if CONFIG_INTERNAL_STATS
3806
void print_internal_stats(AV1_PRIMARY *ppi);
3807
#endif
3808
3809
void av1_change_config_seq(AV1_PRIMARY *ppi, const AV1EncoderConfig *oxcf,
3810
                           bool *sb_size_changed);
3811
3812
void av1_change_config(AV1_COMP *cpi, const AV1EncoderConfig *oxcf,
3813
                       bool sb_size_changed);
3814
3815
aom_codec_err_t av1_check_initial_width(AV1_COMP *cpi, int use_highbitdepth,
3816
                                        int subsampling_x, int subsampling_y);
3817
3818
void av1_post_encode_updates(AV1_COMP *const cpi,
3819
                             const AV1_COMP_DATA *const cpi_data);
3820
3821
void av1_release_scaled_references_fpmt(AV1_COMP *cpi);
3822
3823
void av1_decrement_ref_counts_fpmt(BufferPool *buffer_pool,
3824
                                   int ref_buffers_used_map);
3825
3826
void av1_init_sc_decisions(AV1_PRIMARY *const ppi);
3827
3828
AV1_COMP *av1_get_parallel_frame_enc_data(AV1_PRIMARY *const ppi,
3829
                                          AV1_COMP_DATA *const first_cpi_data);
3830
3831
int av1_init_parallel_frame_context(const AV1_COMP_DATA *const first_cpi_data,
3832
                                    AV1_PRIMARY *const ppi,
3833
                                    int *ref_buffers_used_map);
3834
3835
/*!\endcond */
3836
3837
/*!\brief Obtain the raw frame data
3838
 *
3839
 * \ingroup high_level_algo
3840
 * This function receives the raw frame data from input.
3841
 *
3842
 * \param[in]     cpi            Top-level encoder structure
3843
 * \param[in]     frame_flags    Flags to decide how to encoding the frame
3844
 * \param[in,out] sd             Contain raw frame data
3845
 * \param[in]     time_stamp     Time stamp of the frame
3846
 * \param[in]     end_time_stamp End time stamp
3847
 *
3848
 * \return Returns a value to indicate if the frame data is received
3849
 * successfully.
3850
 * \note The caller can assume that a copy of this frame is made and not just a
3851
 * copy of the pointer.
3852
 */
3853
int av1_receive_raw_frame(AV1_COMP *cpi, aom_enc_frame_flags_t frame_flags,
3854
                          const YV12_BUFFER_CONFIG *sd, int64_t time_stamp,
3855
                          int64_t end_time_stamp);
3856
3857
/*!\brief Encode a frame
3858
 *
3859
 * \ingroup high_level_algo
3860
 * \callgraph
3861
 * \callergraph
3862
 * This function encodes the raw frame data, and outputs the frame bit stream
3863
 * to the designated buffer. The caller should use the output parameters
3864
 * cpi_data->ts_frame_start and cpi_data->ts_frame_end only when this function
3865
 * returns AOM_CODEC_OK.
3866
 *
3867
 * \param[in]     cpi         Top-level encoder structure
3868
 * \param[in,out] cpi_data    Data corresponding to a frame encode
3869
 *
3870
 * \return Returns a value to indicate if the encoding is done successfully.
3871
 * \retval #AOM_CODEC_OK
3872
 * \retval -1
3873
 *     No frame encoded; more input is required.
3874
 * \retval "A nonzero (positive) aom_codec_err_t code"
3875
 *     The encoding failed with the error. Sets the error code and error message
3876
 * in \c cpi->common.error.
3877
 */
3878
int av1_get_compressed_data(AV1_COMP *cpi, AV1_COMP_DATA *const cpi_data);
3879
3880
/*!\brief Run 1-pass/2-pass encoding
3881
 *
3882
 * \ingroup high_level_algo
3883
 * \callgraph
3884
 * \callergraph
3885
 */
3886
int av1_encode(AV1_COMP *const cpi, uint8_t *const dest, size_t dest_size,
3887
               const EncodeFrameInput *const frame_input,
3888
               const EncodeFrameParams *const frame_params,
3889
               size_t *const frame_size);
3890
3891
/*!\cond */
3892
int av1_get_preview_raw_frame(AV1_COMP *cpi, YV12_BUFFER_CONFIG *dest);
3893
3894
int av1_get_last_show_frame(AV1_COMP *cpi, YV12_BUFFER_CONFIG *frame);
3895
3896
aom_codec_err_t av1_copy_new_frame_enc(AV1_COMMON *cm,
3897
                                       YV12_BUFFER_CONFIG *new_frame,
3898
                                       YV12_BUFFER_CONFIG *sd);
3899
3900
int av1_use_as_reference(int *ext_ref_frame_flags, int ref_frame_flags);
3901
3902
int av1_copy_reference_enc(AV1_COMP *cpi, int idx, YV12_BUFFER_CONFIG *sd);
3903
3904
int av1_set_reference_enc(AV1_COMP *cpi, int idx, YV12_BUFFER_CONFIG *sd);
3905
3906
void av1_set_frame_size(AV1_COMP *cpi, int width, int height);
3907
3908
void av1_set_mv_search_params(AV1_COMP *cpi);
3909
3910
int av1_set_roi_map(AV1_COMP *cpi, unsigned char *map, unsigned int rows,
3911
                    unsigned int cols, int delta_q[8], int delta_lf[8],
3912
                    int skip[8], int ref_frame[8]);
3913
3914
int av1_set_active_map(AV1_COMP *cpi, unsigned char *map, int rows, int cols);
3915
3916
int av1_get_active_map(AV1_COMP *cpi, unsigned char *map, int rows, int cols);
3917
3918
int av1_set_internal_size(AV1EncoderConfig *const oxcf,
3919
                          ResizePendingParams *resize_pending_params,
3920
                          AOM_SCALING_MODE horiz_mode,
3921
                          AOM_SCALING_MODE vert_mode);
3922
3923
int av1_get_quantizer(struct AV1_COMP *cpi);
3924
3925
// This function assumes that the input buffer contains valid OBUs. It should
3926
// not be called on untrusted input.
3927
int av1_convert_sect5obus_to_annexb(uint8_t *buffer, size_t buffer_size,
3928
                                    size_t *input_size);
3929
3930
void av1_alloc_mb_wiener_var_pred_buf(AV1_COMMON *cm, ThreadData *td);
3931
3932
void av1_dealloc_mb_wiener_var_pred_buf(ThreadData *td);
3933
3934
uint8_t av1_find_dominant_value(const uint8_t *src, int stride, int rows,
3935
                                int cols);
3936
3937
void av1_dilate_block(const uint8_t *src, int src_stride, uint8_t *dilated,
3938
                      int dilated_stride, int rows, int cols);
3939
3940
// Set screen content options.
3941
// This function estimates whether to use screen content tools, by counting
3942
// the portion of blocks that have few luma colors.
3943
// Modifies:
3944
//   cpi->commom.features.allow_screen_content_tools
3945
//   cpi->common.features.allow_intrabc
3946
//   cpi->use_screen_content_tools
3947
//   cpi->is_screen_content_type
3948
// However, the estimation is not accurate and may misclassify videos.
3949
// A slower but more accurate approach that determines whether to use screen
3950
// content tools is employed later. See av1_determine_sc_tools_with_encoding().
3951
void av1_set_screen_content_options(struct AV1_COMP *cpi,
3952
                                    FeatureFlags *features);
3953
3954
void av1_update_frame_size(AV1_COMP *cpi);
3955
3956
void av1_set_svc_seq_params(AV1_PRIMARY *const ppi);
3957
3958
typedef struct {
3959
  int pyr_level;
3960
  int disp_order;
3961
} RefFrameMapPair;
3962
3963
static inline void init_ref_map_pair(
3964
0
    AV1_COMP *cpi, RefFrameMapPair ref_frame_map_pairs[REF_FRAMES]) {
3965
0
  if (cpi->ppi->gf_group.update_type[cpi->gf_frame_index] == KF_UPDATE) {
3966
0
    memset(ref_frame_map_pairs, -1, sizeof(*ref_frame_map_pairs) * REF_FRAMES);
3967
0
    return;
3968
0
  }
3969
0
  memset(ref_frame_map_pairs, 0, sizeof(*ref_frame_map_pairs) * REF_FRAMES);
3970
0
  for (int map_idx = 0; map_idx < REF_FRAMES; map_idx++) {
3971
    // Get reference frame buffer.
3972
0
    const RefCntBuffer *const buf = cpi->common.ref_frame_map[map_idx];
3973
0
    if (ref_frame_map_pairs[map_idx].disp_order == -1) continue;
3974
0
    if (buf == NULL) {
3975
0
      ref_frame_map_pairs[map_idx].disp_order = -1;
3976
0
      ref_frame_map_pairs[map_idx].pyr_level = -1;
3977
0
      continue;
3978
0
    } else if (buf->ref_count > 1) {
3979
      // Once the keyframe is coded, the slots in ref_frame_map will all
3980
      // point to the same frame. In that case, all subsequent pointers
3981
      // matching the current are considered "free" slots. This will find
3982
      // the next occurrence of the current pointer if ref_count indicates
3983
      // there are multiple instances of it and mark it as free.
3984
0
      for (int idx2 = map_idx + 1; idx2 < REF_FRAMES; ++idx2) {
3985
0
        const RefCntBuffer *const buf2 = cpi->common.ref_frame_map[idx2];
3986
0
        if (buf2 == buf) {
3987
0
          ref_frame_map_pairs[idx2].disp_order = -1;
3988
0
          ref_frame_map_pairs[idx2].pyr_level = -1;
3989
0
        }
3990
0
      }
3991
0
    }
3992
0
    ref_frame_map_pairs[map_idx].disp_order = (int)buf->display_order_hint;
3993
0
    ref_frame_map_pairs[map_idx].pyr_level = buf->pyramid_level;
3994
0
  }
3995
0
}
Unexecuted instantiation: av1_cx_iface.c:init_ref_map_pair
Unexecuted instantiation: allintra_vis.c:init_ref_map_pair
Unexecuted instantiation: av1_quantize.c:init_ref_map_pair
Unexecuted instantiation: bitstream.c:init_ref_map_pair
Unexecuted instantiation: context_tree.c:init_ref_map_pair
Unexecuted instantiation: encodeframe.c:init_ref_map_pair
Unexecuted instantiation: encodeframe_utils.c:init_ref_map_pair
Unexecuted instantiation: encodemb.c:init_ref_map_pair
Unexecuted instantiation: encodemv.c:init_ref_map_pair
Unexecuted instantiation: encoder.c:init_ref_map_pair
Unexecuted instantiation: encoder_utils.c:init_ref_map_pair
Unexecuted instantiation: encodetxb.c:init_ref_map_pair
Unexecuted instantiation: ethread.c:init_ref_map_pair
Unexecuted instantiation: firstpass.c:init_ref_map_pair
Unexecuted instantiation: global_motion_facade.c:init_ref_map_pair
Unexecuted instantiation: level.c:init_ref_map_pair
Unexecuted instantiation: lookahead.c:init_ref_map_pair
Unexecuted instantiation: mcomp.c:init_ref_map_pair
Unexecuted instantiation: mv_prec.c:init_ref_map_pair
Unexecuted instantiation: palette.c:init_ref_map_pair
Unexecuted instantiation: partition_search.c:init_ref_map_pair
Unexecuted instantiation: partition_strategy.c:init_ref_map_pair
Unexecuted instantiation: pass2_strategy.c:init_ref_map_pair
Unexecuted instantiation: pickcdef.c:init_ref_map_pair
Unexecuted instantiation: picklpf.c:init_ref_map_pair
Unexecuted instantiation: pickrst.c:init_ref_map_pair
Unexecuted instantiation: ratectrl.c:init_ref_map_pair
Unexecuted instantiation: rd.c:init_ref_map_pair
Unexecuted instantiation: rdopt.c:init_ref_map_pair
Unexecuted instantiation: nonrd_pickmode.c:init_ref_map_pair
Unexecuted instantiation: nonrd_opt.c:init_ref_map_pair
Unexecuted instantiation: segmentation.c:init_ref_map_pair
Unexecuted instantiation: speed_features.c:init_ref_map_pair
Unexecuted instantiation: superres_scale.c:init_ref_map_pair
Unexecuted instantiation: svc_layercontext.c:init_ref_map_pair
Unexecuted instantiation: temporal_filter.c:init_ref_map_pair
Unexecuted instantiation: tokenize.c:init_ref_map_pair
Unexecuted instantiation: tpl_model.c:init_ref_map_pair
Unexecuted instantiation: tx_search.c:init_ref_map_pair
Unexecuted instantiation: txb_rdopt.c:init_ref_map_pair
Unexecuted instantiation: intra_mode_search.c:init_ref_map_pair
Unexecuted instantiation: var_based_part.c:init_ref_map_pair
Unexecuted instantiation: av1_noise_estimate.c:init_ref_map_pair
Unexecuted instantiation: aq_complexity.c:init_ref_map_pair
Unexecuted instantiation: aq_cyclicrefresh.c:init_ref_map_pair
Unexecuted instantiation: aq_variance.c:init_ref_map_pair
Unexecuted instantiation: compound_type.c:init_ref_map_pair
Unexecuted instantiation: encode_strategy.c:init_ref_map_pair
Unexecuted instantiation: global_motion.c:init_ref_map_pair
Unexecuted instantiation: gop_structure.c:init_ref_map_pair
Unexecuted instantiation: interp_search.c:init_ref_map_pair
Unexecuted instantiation: motion_search_facade.c:init_ref_map_pair
3996
3997
#if CONFIG_FPMT_TEST
3998
static inline void calc_frame_data_update_flag(
3999
    GF_GROUP *const gf_group, int gf_frame_index,
4000
    bool *const do_frame_data_update) {
4001
  *do_frame_data_update = true;
4002
  // Set the flag to false for all frames in a given parallel encode set except
4003
  // the last frame in the set with frame_parallel_level = 2.
4004
  if (gf_group->frame_parallel_level[gf_frame_index] == 1) {
4005
    *do_frame_data_update = false;
4006
  } else if (gf_group->frame_parallel_level[gf_frame_index] == 2) {
4007
    // Check if this is the last frame in the set with frame_parallel_level = 2.
4008
    for (int i = gf_frame_index + 1; i < gf_group->size; i++) {
4009
      if ((gf_group->frame_parallel_level[i] == 0 &&
4010
           (gf_group->update_type[i] == ARF_UPDATE ||
4011
            gf_group->update_type[i] == INTNL_ARF_UPDATE)) ||
4012
          gf_group->frame_parallel_level[i] == 1) {
4013
        break;
4014
      } else if (gf_group->frame_parallel_level[i] == 2) {
4015
        *do_frame_data_update = false;
4016
        break;
4017
      }
4018
    }
4019
  }
4020
}
4021
#endif
4022
4023
// av1 uses 10,000,000 ticks/second as time stamp
4024
0
#define TICKS_PER_SEC 10000000LL
4025
4026
static inline int64_t timebase_units_to_ticks(
4027
0
    const aom_rational64_t *timestamp_ratio, int64_t n) {
4028
0
  return n * timestamp_ratio->num / timestamp_ratio->den;
4029
0
}
Unexecuted instantiation: av1_cx_iface.c:timebase_units_to_ticks
Unexecuted instantiation: allintra_vis.c:timebase_units_to_ticks
Unexecuted instantiation: av1_quantize.c:timebase_units_to_ticks
Unexecuted instantiation: bitstream.c:timebase_units_to_ticks
Unexecuted instantiation: context_tree.c:timebase_units_to_ticks
Unexecuted instantiation: encodeframe.c:timebase_units_to_ticks
Unexecuted instantiation: encodeframe_utils.c:timebase_units_to_ticks
Unexecuted instantiation: encodemb.c:timebase_units_to_ticks
Unexecuted instantiation: encodemv.c:timebase_units_to_ticks
Unexecuted instantiation: encoder.c:timebase_units_to_ticks
Unexecuted instantiation: encoder_utils.c:timebase_units_to_ticks
Unexecuted instantiation: encodetxb.c:timebase_units_to_ticks
Unexecuted instantiation: ethread.c:timebase_units_to_ticks
Unexecuted instantiation: firstpass.c:timebase_units_to_ticks
Unexecuted instantiation: global_motion_facade.c:timebase_units_to_ticks
Unexecuted instantiation: level.c:timebase_units_to_ticks
Unexecuted instantiation: lookahead.c:timebase_units_to_ticks
Unexecuted instantiation: mcomp.c:timebase_units_to_ticks
Unexecuted instantiation: mv_prec.c:timebase_units_to_ticks
Unexecuted instantiation: palette.c:timebase_units_to_ticks
Unexecuted instantiation: partition_search.c:timebase_units_to_ticks
Unexecuted instantiation: partition_strategy.c:timebase_units_to_ticks
Unexecuted instantiation: pass2_strategy.c:timebase_units_to_ticks
Unexecuted instantiation: pickcdef.c:timebase_units_to_ticks
Unexecuted instantiation: picklpf.c:timebase_units_to_ticks
Unexecuted instantiation: pickrst.c:timebase_units_to_ticks
Unexecuted instantiation: ratectrl.c:timebase_units_to_ticks
Unexecuted instantiation: rd.c:timebase_units_to_ticks
Unexecuted instantiation: rdopt.c:timebase_units_to_ticks
Unexecuted instantiation: nonrd_pickmode.c:timebase_units_to_ticks
Unexecuted instantiation: nonrd_opt.c:timebase_units_to_ticks
Unexecuted instantiation: segmentation.c:timebase_units_to_ticks
Unexecuted instantiation: speed_features.c:timebase_units_to_ticks
Unexecuted instantiation: superres_scale.c:timebase_units_to_ticks
Unexecuted instantiation: svc_layercontext.c:timebase_units_to_ticks
Unexecuted instantiation: temporal_filter.c:timebase_units_to_ticks
Unexecuted instantiation: tokenize.c:timebase_units_to_ticks
Unexecuted instantiation: tpl_model.c:timebase_units_to_ticks
Unexecuted instantiation: tx_search.c:timebase_units_to_ticks
Unexecuted instantiation: txb_rdopt.c:timebase_units_to_ticks
Unexecuted instantiation: intra_mode_search.c:timebase_units_to_ticks
Unexecuted instantiation: var_based_part.c:timebase_units_to_ticks
Unexecuted instantiation: av1_noise_estimate.c:timebase_units_to_ticks
Unexecuted instantiation: aq_complexity.c:timebase_units_to_ticks
Unexecuted instantiation: aq_cyclicrefresh.c:timebase_units_to_ticks
Unexecuted instantiation: aq_variance.c:timebase_units_to_ticks
Unexecuted instantiation: compound_type.c:timebase_units_to_ticks
Unexecuted instantiation: encode_strategy.c:timebase_units_to_ticks
Unexecuted instantiation: global_motion.c:timebase_units_to_ticks
Unexecuted instantiation: gop_structure.c:timebase_units_to_ticks
Unexecuted instantiation: interp_search.c:timebase_units_to_ticks
Unexecuted instantiation: motion_search_facade.c:timebase_units_to_ticks
4030
4031
static inline int64_t ticks_to_timebase_units(
4032
0
    const aom_rational64_t *timestamp_ratio, int64_t n) {
4033
0
  int64_t round = timestamp_ratio->num / 2;
4034
0
  if (round > 0) --round;
4035
0
  return (n * timestamp_ratio->den + round) / timestamp_ratio->num;
4036
0
}
Unexecuted instantiation: av1_cx_iface.c:ticks_to_timebase_units
Unexecuted instantiation: allintra_vis.c:ticks_to_timebase_units
Unexecuted instantiation: av1_quantize.c:ticks_to_timebase_units
Unexecuted instantiation: bitstream.c:ticks_to_timebase_units
Unexecuted instantiation: context_tree.c:ticks_to_timebase_units
Unexecuted instantiation: encodeframe.c:ticks_to_timebase_units
Unexecuted instantiation: encodeframe_utils.c:ticks_to_timebase_units
Unexecuted instantiation: encodemb.c:ticks_to_timebase_units
Unexecuted instantiation: encodemv.c:ticks_to_timebase_units
Unexecuted instantiation: encoder.c:ticks_to_timebase_units
Unexecuted instantiation: encoder_utils.c:ticks_to_timebase_units
Unexecuted instantiation: encodetxb.c:ticks_to_timebase_units
Unexecuted instantiation: ethread.c:ticks_to_timebase_units
Unexecuted instantiation: firstpass.c:ticks_to_timebase_units
Unexecuted instantiation: global_motion_facade.c:ticks_to_timebase_units
Unexecuted instantiation: level.c:ticks_to_timebase_units
Unexecuted instantiation: lookahead.c:ticks_to_timebase_units
Unexecuted instantiation: mcomp.c:ticks_to_timebase_units
Unexecuted instantiation: mv_prec.c:ticks_to_timebase_units
Unexecuted instantiation: palette.c:ticks_to_timebase_units
Unexecuted instantiation: partition_search.c:ticks_to_timebase_units
Unexecuted instantiation: partition_strategy.c:ticks_to_timebase_units
Unexecuted instantiation: pass2_strategy.c:ticks_to_timebase_units
Unexecuted instantiation: pickcdef.c:ticks_to_timebase_units
Unexecuted instantiation: picklpf.c:ticks_to_timebase_units
Unexecuted instantiation: pickrst.c:ticks_to_timebase_units
Unexecuted instantiation: ratectrl.c:ticks_to_timebase_units
Unexecuted instantiation: rd.c:ticks_to_timebase_units
Unexecuted instantiation: rdopt.c:ticks_to_timebase_units
Unexecuted instantiation: nonrd_pickmode.c:ticks_to_timebase_units
Unexecuted instantiation: nonrd_opt.c:ticks_to_timebase_units
Unexecuted instantiation: segmentation.c:ticks_to_timebase_units
Unexecuted instantiation: speed_features.c:ticks_to_timebase_units
Unexecuted instantiation: superres_scale.c:ticks_to_timebase_units
Unexecuted instantiation: svc_layercontext.c:ticks_to_timebase_units
Unexecuted instantiation: temporal_filter.c:ticks_to_timebase_units
Unexecuted instantiation: tokenize.c:ticks_to_timebase_units
Unexecuted instantiation: tpl_model.c:ticks_to_timebase_units
Unexecuted instantiation: tx_search.c:ticks_to_timebase_units
Unexecuted instantiation: txb_rdopt.c:ticks_to_timebase_units
Unexecuted instantiation: intra_mode_search.c:ticks_to_timebase_units
Unexecuted instantiation: var_based_part.c:ticks_to_timebase_units
Unexecuted instantiation: av1_noise_estimate.c:ticks_to_timebase_units
Unexecuted instantiation: aq_complexity.c:ticks_to_timebase_units
Unexecuted instantiation: aq_cyclicrefresh.c:ticks_to_timebase_units
Unexecuted instantiation: aq_variance.c:ticks_to_timebase_units
Unexecuted instantiation: compound_type.c:ticks_to_timebase_units
Unexecuted instantiation: encode_strategy.c:ticks_to_timebase_units
Unexecuted instantiation: global_motion.c:ticks_to_timebase_units
Unexecuted instantiation: gop_structure.c:ticks_to_timebase_units
Unexecuted instantiation: interp_search.c:ticks_to_timebase_units
Unexecuted instantiation: motion_search_facade.c:ticks_to_timebase_units
4037
4038
0
static inline int frame_is_kf_gf_arf(const AV1_COMP *cpi) {
4039
0
  const GF_GROUP *const gf_group = &cpi->ppi->gf_group;
4040
0
  const FRAME_UPDATE_TYPE update_type =
4041
0
      gf_group->update_type[cpi->gf_frame_index];
4042
4043
0
  return frame_is_intra_only(&cpi->common) || update_type == ARF_UPDATE ||
4044
0
         update_type == GF_UPDATE;
4045
0
}
Unexecuted instantiation: av1_cx_iface.c:frame_is_kf_gf_arf
Unexecuted instantiation: allintra_vis.c:frame_is_kf_gf_arf
Unexecuted instantiation: av1_quantize.c:frame_is_kf_gf_arf
Unexecuted instantiation: bitstream.c:frame_is_kf_gf_arf
Unexecuted instantiation: context_tree.c:frame_is_kf_gf_arf
Unexecuted instantiation: encodeframe.c:frame_is_kf_gf_arf
Unexecuted instantiation: encodeframe_utils.c:frame_is_kf_gf_arf
Unexecuted instantiation: encodemb.c:frame_is_kf_gf_arf
Unexecuted instantiation: encodemv.c:frame_is_kf_gf_arf
Unexecuted instantiation: encoder.c:frame_is_kf_gf_arf
Unexecuted instantiation: encoder_utils.c:frame_is_kf_gf_arf
Unexecuted instantiation: encodetxb.c:frame_is_kf_gf_arf
Unexecuted instantiation: ethread.c:frame_is_kf_gf_arf
Unexecuted instantiation: firstpass.c:frame_is_kf_gf_arf
Unexecuted instantiation: global_motion_facade.c:frame_is_kf_gf_arf
Unexecuted instantiation: level.c:frame_is_kf_gf_arf
Unexecuted instantiation: lookahead.c:frame_is_kf_gf_arf
Unexecuted instantiation: mcomp.c:frame_is_kf_gf_arf
Unexecuted instantiation: mv_prec.c:frame_is_kf_gf_arf
Unexecuted instantiation: palette.c:frame_is_kf_gf_arf
Unexecuted instantiation: partition_search.c:frame_is_kf_gf_arf
Unexecuted instantiation: partition_strategy.c:frame_is_kf_gf_arf
Unexecuted instantiation: pass2_strategy.c:frame_is_kf_gf_arf
Unexecuted instantiation: pickcdef.c:frame_is_kf_gf_arf
Unexecuted instantiation: picklpf.c:frame_is_kf_gf_arf
Unexecuted instantiation: pickrst.c:frame_is_kf_gf_arf
Unexecuted instantiation: ratectrl.c:frame_is_kf_gf_arf
Unexecuted instantiation: rd.c:frame_is_kf_gf_arf
Unexecuted instantiation: rdopt.c:frame_is_kf_gf_arf
Unexecuted instantiation: nonrd_pickmode.c:frame_is_kf_gf_arf
Unexecuted instantiation: nonrd_opt.c:frame_is_kf_gf_arf
Unexecuted instantiation: segmentation.c:frame_is_kf_gf_arf
Unexecuted instantiation: speed_features.c:frame_is_kf_gf_arf
Unexecuted instantiation: superres_scale.c:frame_is_kf_gf_arf
Unexecuted instantiation: svc_layercontext.c:frame_is_kf_gf_arf
Unexecuted instantiation: temporal_filter.c:frame_is_kf_gf_arf
Unexecuted instantiation: tokenize.c:frame_is_kf_gf_arf
Unexecuted instantiation: tpl_model.c:frame_is_kf_gf_arf
Unexecuted instantiation: tx_search.c:frame_is_kf_gf_arf
Unexecuted instantiation: txb_rdopt.c:frame_is_kf_gf_arf
Unexecuted instantiation: intra_mode_search.c:frame_is_kf_gf_arf
Unexecuted instantiation: var_based_part.c:frame_is_kf_gf_arf
Unexecuted instantiation: av1_noise_estimate.c:frame_is_kf_gf_arf
Unexecuted instantiation: aq_complexity.c:frame_is_kf_gf_arf
Unexecuted instantiation: aq_cyclicrefresh.c:frame_is_kf_gf_arf
Unexecuted instantiation: aq_variance.c:frame_is_kf_gf_arf
Unexecuted instantiation: compound_type.c:frame_is_kf_gf_arf
Unexecuted instantiation: encode_strategy.c:frame_is_kf_gf_arf
Unexecuted instantiation: global_motion.c:frame_is_kf_gf_arf
Unexecuted instantiation: gop_structure.c:frame_is_kf_gf_arf
Unexecuted instantiation: interp_search.c:frame_is_kf_gf_arf
Unexecuted instantiation: motion_search_facade.c:frame_is_kf_gf_arf
4046
4047
// TODO(huisu@google.com, youzhou@microsoft.com): enable hash-me for HBD.
4048
0
static inline int av1_use_hash_me(const AV1_COMP *const cpi) {
4049
0
  return (cpi->common.features.allow_screen_content_tools &&
4050
0
          cpi->common.features.allow_intrabc &&
4051
0
          frame_is_intra_only(&cpi->common));
4052
0
}
Unexecuted instantiation: av1_cx_iface.c:av1_use_hash_me
Unexecuted instantiation: allintra_vis.c:av1_use_hash_me
Unexecuted instantiation: av1_quantize.c:av1_use_hash_me
Unexecuted instantiation: bitstream.c:av1_use_hash_me
Unexecuted instantiation: context_tree.c:av1_use_hash_me
Unexecuted instantiation: encodeframe.c:av1_use_hash_me
Unexecuted instantiation: encodeframe_utils.c:av1_use_hash_me
Unexecuted instantiation: encodemb.c:av1_use_hash_me
Unexecuted instantiation: encodemv.c:av1_use_hash_me
Unexecuted instantiation: encoder.c:av1_use_hash_me
Unexecuted instantiation: encoder_utils.c:av1_use_hash_me
Unexecuted instantiation: encodetxb.c:av1_use_hash_me
Unexecuted instantiation: ethread.c:av1_use_hash_me
Unexecuted instantiation: firstpass.c:av1_use_hash_me
Unexecuted instantiation: global_motion_facade.c:av1_use_hash_me
Unexecuted instantiation: level.c:av1_use_hash_me
Unexecuted instantiation: lookahead.c:av1_use_hash_me
Unexecuted instantiation: mcomp.c:av1_use_hash_me
Unexecuted instantiation: mv_prec.c:av1_use_hash_me
Unexecuted instantiation: palette.c:av1_use_hash_me
Unexecuted instantiation: partition_search.c:av1_use_hash_me
Unexecuted instantiation: partition_strategy.c:av1_use_hash_me
Unexecuted instantiation: pass2_strategy.c:av1_use_hash_me
Unexecuted instantiation: pickcdef.c:av1_use_hash_me
Unexecuted instantiation: picklpf.c:av1_use_hash_me
Unexecuted instantiation: pickrst.c:av1_use_hash_me
Unexecuted instantiation: ratectrl.c:av1_use_hash_me
Unexecuted instantiation: rd.c:av1_use_hash_me
Unexecuted instantiation: rdopt.c:av1_use_hash_me
Unexecuted instantiation: nonrd_pickmode.c:av1_use_hash_me
Unexecuted instantiation: nonrd_opt.c:av1_use_hash_me
Unexecuted instantiation: segmentation.c:av1_use_hash_me
Unexecuted instantiation: speed_features.c:av1_use_hash_me
Unexecuted instantiation: superres_scale.c:av1_use_hash_me
Unexecuted instantiation: svc_layercontext.c:av1_use_hash_me
Unexecuted instantiation: temporal_filter.c:av1_use_hash_me
Unexecuted instantiation: tokenize.c:av1_use_hash_me
Unexecuted instantiation: tpl_model.c:av1_use_hash_me
Unexecuted instantiation: tx_search.c:av1_use_hash_me
Unexecuted instantiation: txb_rdopt.c:av1_use_hash_me
Unexecuted instantiation: intra_mode_search.c:av1_use_hash_me
Unexecuted instantiation: var_based_part.c:av1_use_hash_me
Unexecuted instantiation: av1_noise_estimate.c:av1_use_hash_me
Unexecuted instantiation: aq_complexity.c:av1_use_hash_me
Unexecuted instantiation: aq_cyclicrefresh.c:av1_use_hash_me
Unexecuted instantiation: aq_variance.c:av1_use_hash_me
Unexecuted instantiation: compound_type.c:av1_use_hash_me
Unexecuted instantiation: encode_strategy.c:av1_use_hash_me
Unexecuted instantiation: global_motion.c:av1_use_hash_me
Unexecuted instantiation: gop_structure.c:av1_use_hash_me
Unexecuted instantiation: interp_search.c:av1_use_hash_me
Unexecuted instantiation: motion_search_facade.c:av1_use_hash_me
4053
4054
static inline const YV12_BUFFER_CONFIG *get_ref_frame_yv12_buf(
4055
0
    const AV1_COMMON *const cm, MV_REFERENCE_FRAME ref_frame) {
4056
0
  const RefCntBuffer *const buf = get_ref_frame_buf(cm, ref_frame);
4057
0
  return buf != NULL ? &buf->buf : NULL;
4058
0
}
Unexecuted instantiation: av1_cx_iface.c:get_ref_frame_yv12_buf
Unexecuted instantiation: allintra_vis.c:get_ref_frame_yv12_buf
Unexecuted instantiation: av1_quantize.c:get_ref_frame_yv12_buf
Unexecuted instantiation: bitstream.c:get_ref_frame_yv12_buf
Unexecuted instantiation: context_tree.c:get_ref_frame_yv12_buf
Unexecuted instantiation: encodeframe.c:get_ref_frame_yv12_buf
Unexecuted instantiation: encodeframe_utils.c:get_ref_frame_yv12_buf
Unexecuted instantiation: encodemb.c:get_ref_frame_yv12_buf
Unexecuted instantiation: encodemv.c:get_ref_frame_yv12_buf
Unexecuted instantiation: encoder.c:get_ref_frame_yv12_buf
Unexecuted instantiation: encoder_utils.c:get_ref_frame_yv12_buf
Unexecuted instantiation: encodetxb.c:get_ref_frame_yv12_buf
Unexecuted instantiation: ethread.c:get_ref_frame_yv12_buf
Unexecuted instantiation: firstpass.c:get_ref_frame_yv12_buf
Unexecuted instantiation: global_motion_facade.c:get_ref_frame_yv12_buf
Unexecuted instantiation: level.c:get_ref_frame_yv12_buf
Unexecuted instantiation: lookahead.c:get_ref_frame_yv12_buf
Unexecuted instantiation: mcomp.c:get_ref_frame_yv12_buf
Unexecuted instantiation: mv_prec.c:get_ref_frame_yv12_buf
Unexecuted instantiation: palette.c:get_ref_frame_yv12_buf
Unexecuted instantiation: partition_search.c:get_ref_frame_yv12_buf
Unexecuted instantiation: partition_strategy.c:get_ref_frame_yv12_buf
Unexecuted instantiation: pass2_strategy.c:get_ref_frame_yv12_buf
Unexecuted instantiation: pickcdef.c:get_ref_frame_yv12_buf
Unexecuted instantiation: picklpf.c:get_ref_frame_yv12_buf
Unexecuted instantiation: pickrst.c:get_ref_frame_yv12_buf
Unexecuted instantiation: ratectrl.c:get_ref_frame_yv12_buf
Unexecuted instantiation: rd.c:get_ref_frame_yv12_buf
Unexecuted instantiation: rdopt.c:get_ref_frame_yv12_buf
Unexecuted instantiation: nonrd_pickmode.c:get_ref_frame_yv12_buf
Unexecuted instantiation: nonrd_opt.c:get_ref_frame_yv12_buf
Unexecuted instantiation: segmentation.c:get_ref_frame_yv12_buf
Unexecuted instantiation: speed_features.c:get_ref_frame_yv12_buf
Unexecuted instantiation: superres_scale.c:get_ref_frame_yv12_buf
Unexecuted instantiation: svc_layercontext.c:get_ref_frame_yv12_buf
Unexecuted instantiation: temporal_filter.c:get_ref_frame_yv12_buf
Unexecuted instantiation: tokenize.c:get_ref_frame_yv12_buf
Unexecuted instantiation: tpl_model.c:get_ref_frame_yv12_buf
Unexecuted instantiation: tx_search.c:get_ref_frame_yv12_buf
Unexecuted instantiation: txb_rdopt.c:get_ref_frame_yv12_buf
Unexecuted instantiation: intra_mode_search.c:get_ref_frame_yv12_buf
Unexecuted instantiation: var_based_part.c:get_ref_frame_yv12_buf
Unexecuted instantiation: av1_noise_estimate.c:get_ref_frame_yv12_buf
Unexecuted instantiation: aq_complexity.c:get_ref_frame_yv12_buf
Unexecuted instantiation: aq_cyclicrefresh.c:get_ref_frame_yv12_buf
Unexecuted instantiation: aq_variance.c:get_ref_frame_yv12_buf
Unexecuted instantiation: compound_type.c:get_ref_frame_yv12_buf
Unexecuted instantiation: encode_strategy.c:get_ref_frame_yv12_buf
Unexecuted instantiation: global_motion.c:get_ref_frame_yv12_buf
Unexecuted instantiation: gop_structure.c:get_ref_frame_yv12_buf
Unexecuted instantiation: interp_search.c:get_ref_frame_yv12_buf
Unexecuted instantiation: motion_search_facade.c:get_ref_frame_yv12_buf
4059
4060
0
static inline void alloc_frame_mvs(AV1_COMMON *const cm, RefCntBuffer *buf) {
4061
0
  assert(buf != NULL);
4062
0
  ensure_mv_buffer(buf, cm);
4063
0
  buf->width = cm->width;
4064
0
  buf->height = cm->height;
4065
0
}
Unexecuted instantiation: av1_cx_iface.c:alloc_frame_mvs
Unexecuted instantiation: allintra_vis.c:alloc_frame_mvs
Unexecuted instantiation: av1_quantize.c:alloc_frame_mvs
Unexecuted instantiation: bitstream.c:alloc_frame_mvs
Unexecuted instantiation: context_tree.c:alloc_frame_mvs
Unexecuted instantiation: encodeframe.c:alloc_frame_mvs
Unexecuted instantiation: encodeframe_utils.c:alloc_frame_mvs
Unexecuted instantiation: encodemb.c:alloc_frame_mvs
Unexecuted instantiation: encodemv.c:alloc_frame_mvs
Unexecuted instantiation: encoder.c:alloc_frame_mvs
Unexecuted instantiation: encoder_utils.c:alloc_frame_mvs
Unexecuted instantiation: encodetxb.c:alloc_frame_mvs
Unexecuted instantiation: ethread.c:alloc_frame_mvs
Unexecuted instantiation: firstpass.c:alloc_frame_mvs
Unexecuted instantiation: global_motion_facade.c:alloc_frame_mvs
Unexecuted instantiation: level.c:alloc_frame_mvs
Unexecuted instantiation: lookahead.c:alloc_frame_mvs
Unexecuted instantiation: mcomp.c:alloc_frame_mvs
Unexecuted instantiation: mv_prec.c:alloc_frame_mvs
Unexecuted instantiation: palette.c:alloc_frame_mvs
Unexecuted instantiation: partition_search.c:alloc_frame_mvs
Unexecuted instantiation: partition_strategy.c:alloc_frame_mvs
Unexecuted instantiation: pass2_strategy.c:alloc_frame_mvs
Unexecuted instantiation: pickcdef.c:alloc_frame_mvs
Unexecuted instantiation: picklpf.c:alloc_frame_mvs
Unexecuted instantiation: pickrst.c:alloc_frame_mvs
Unexecuted instantiation: ratectrl.c:alloc_frame_mvs
Unexecuted instantiation: rd.c:alloc_frame_mvs
Unexecuted instantiation: rdopt.c:alloc_frame_mvs
Unexecuted instantiation: nonrd_pickmode.c:alloc_frame_mvs
Unexecuted instantiation: nonrd_opt.c:alloc_frame_mvs
Unexecuted instantiation: segmentation.c:alloc_frame_mvs
Unexecuted instantiation: speed_features.c:alloc_frame_mvs
Unexecuted instantiation: superres_scale.c:alloc_frame_mvs
Unexecuted instantiation: svc_layercontext.c:alloc_frame_mvs
Unexecuted instantiation: temporal_filter.c:alloc_frame_mvs
Unexecuted instantiation: tokenize.c:alloc_frame_mvs
Unexecuted instantiation: tpl_model.c:alloc_frame_mvs
Unexecuted instantiation: tx_search.c:alloc_frame_mvs
Unexecuted instantiation: txb_rdopt.c:alloc_frame_mvs
Unexecuted instantiation: intra_mode_search.c:alloc_frame_mvs
Unexecuted instantiation: var_based_part.c:alloc_frame_mvs
Unexecuted instantiation: av1_noise_estimate.c:alloc_frame_mvs
Unexecuted instantiation: aq_complexity.c:alloc_frame_mvs
Unexecuted instantiation: aq_cyclicrefresh.c:alloc_frame_mvs
Unexecuted instantiation: aq_variance.c:alloc_frame_mvs
Unexecuted instantiation: compound_type.c:alloc_frame_mvs
Unexecuted instantiation: encode_strategy.c:alloc_frame_mvs
Unexecuted instantiation: global_motion.c:alloc_frame_mvs
Unexecuted instantiation: gop_structure.c:alloc_frame_mvs
Unexecuted instantiation: interp_search.c:alloc_frame_mvs
Unexecuted instantiation: motion_search_facade.c:alloc_frame_mvs
4066
4067
// Get the allocated token size for a tile. It does the same calculation as in
4068
// the frame token allocation.
4069
static inline unsigned int allocated_tokens(const TileInfo *tile,
4070
0
                                            int sb_size_log2, int num_planes) {
4071
0
  int tile_mb_rows =
4072
0
      ROUND_POWER_OF_TWO(tile->mi_row_end - tile->mi_row_start, 2);
4073
0
  int tile_mb_cols =
4074
0
      ROUND_POWER_OF_TWO(tile->mi_col_end - tile->mi_col_start, 2);
4075
4076
0
  return get_token_alloc(tile_mb_rows, tile_mb_cols, sb_size_log2, num_planes);
4077
0
}
Unexecuted instantiation: av1_cx_iface.c:allocated_tokens
Unexecuted instantiation: allintra_vis.c:allocated_tokens
Unexecuted instantiation: av1_quantize.c:allocated_tokens
Unexecuted instantiation: bitstream.c:allocated_tokens
Unexecuted instantiation: context_tree.c:allocated_tokens
Unexecuted instantiation: encodeframe.c:allocated_tokens
Unexecuted instantiation: encodeframe_utils.c:allocated_tokens
Unexecuted instantiation: encodemb.c:allocated_tokens
Unexecuted instantiation: encodemv.c:allocated_tokens
Unexecuted instantiation: encoder.c:allocated_tokens
Unexecuted instantiation: encoder_utils.c:allocated_tokens
Unexecuted instantiation: encodetxb.c:allocated_tokens
Unexecuted instantiation: ethread.c:allocated_tokens
Unexecuted instantiation: firstpass.c:allocated_tokens
Unexecuted instantiation: global_motion_facade.c:allocated_tokens
Unexecuted instantiation: level.c:allocated_tokens
Unexecuted instantiation: lookahead.c:allocated_tokens
Unexecuted instantiation: mcomp.c:allocated_tokens
Unexecuted instantiation: mv_prec.c:allocated_tokens
Unexecuted instantiation: palette.c:allocated_tokens
Unexecuted instantiation: partition_search.c:allocated_tokens
Unexecuted instantiation: partition_strategy.c:allocated_tokens
Unexecuted instantiation: pass2_strategy.c:allocated_tokens
Unexecuted instantiation: pickcdef.c:allocated_tokens
Unexecuted instantiation: picklpf.c:allocated_tokens
Unexecuted instantiation: pickrst.c:allocated_tokens
Unexecuted instantiation: ratectrl.c:allocated_tokens
Unexecuted instantiation: rd.c:allocated_tokens
Unexecuted instantiation: rdopt.c:allocated_tokens
Unexecuted instantiation: nonrd_pickmode.c:allocated_tokens
Unexecuted instantiation: nonrd_opt.c:allocated_tokens
Unexecuted instantiation: segmentation.c:allocated_tokens
Unexecuted instantiation: speed_features.c:allocated_tokens
Unexecuted instantiation: superres_scale.c:allocated_tokens
Unexecuted instantiation: svc_layercontext.c:allocated_tokens
Unexecuted instantiation: temporal_filter.c:allocated_tokens
Unexecuted instantiation: tokenize.c:allocated_tokens
Unexecuted instantiation: tpl_model.c:allocated_tokens
Unexecuted instantiation: tx_search.c:allocated_tokens
Unexecuted instantiation: txb_rdopt.c:allocated_tokens
Unexecuted instantiation: intra_mode_search.c:allocated_tokens
Unexecuted instantiation: var_based_part.c:allocated_tokens
Unexecuted instantiation: av1_noise_estimate.c:allocated_tokens
Unexecuted instantiation: aq_complexity.c:allocated_tokens
Unexecuted instantiation: aq_cyclicrefresh.c:allocated_tokens
Unexecuted instantiation: aq_variance.c:allocated_tokens
Unexecuted instantiation: compound_type.c:allocated_tokens
Unexecuted instantiation: encode_strategy.c:allocated_tokens
Unexecuted instantiation: global_motion.c:allocated_tokens
Unexecuted instantiation: gop_structure.c:allocated_tokens
Unexecuted instantiation: interp_search.c:allocated_tokens
Unexecuted instantiation: motion_search_facade.c:allocated_tokens
4078
4079
static inline void get_start_tok(AV1_COMP *cpi, int tile_row, int tile_col,
4080
                                 int mi_row, TokenExtra **tok, int sb_size_log2,
4081
0
                                 int num_planes) {
4082
0
  AV1_COMMON *const cm = &cpi->common;
4083
0
  const int tile_cols = cm->tiles.cols;
4084
0
  TileDataEnc *this_tile = &cpi->tile_data[tile_row * tile_cols + tile_col];
4085
0
  const TileInfo *const tile_info = &this_tile->tile_info;
4086
4087
0
  const int tile_mb_cols =
4088
0
      (tile_info->mi_col_end - tile_info->mi_col_start + 2) >> 2;
4089
0
  const int tile_mb_row = (mi_row - tile_info->mi_row_start + 2) >> 2;
4090
4091
0
  *tok = cpi->token_info.tile_tok[tile_row][tile_col] +
4092
0
         get_token_alloc(tile_mb_row, tile_mb_cols, sb_size_log2, num_planes);
4093
0
}
Unexecuted instantiation: av1_cx_iface.c:get_start_tok
Unexecuted instantiation: allintra_vis.c:get_start_tok
Unexecuted instantiation: av1_quantize.c:get_start_tok
Unexecuted instantiation: bitstream.c:get_start_tok
Unexecuted instantiation: context_tree.c:get_start_tok
Unexecuted instantiation: encodeframe.c:get_start_tok
Unexecuted instantiation: encodeframe_utils.c:get_start_tok
Unexecuted instantiation: encodemb.c:get_start_tok
Unexecuted instantiation: encodemv.c:get_start_tok
Unexecuted instantiation: encoder.c:get_start_tok
Unexecuted instantiation: encoder_utils.c:get_start_tok
Unexecuted instantiation: encodetxb.c:get_start_tok
Unexecuted instantiation: ethread.c:get_start_tok
Unexecuted instantiation: firstpass.c:get_start_tok
Unexecuted instantiation: global_motion_facade.c:get_start_tok
Unexecuted instantiation: level.c:get_start_tok
Unexecuted instantiation: lookahead.c:get_start_tok
Unexecuted instantiation: mcomp.c:get_start_tok
Unexecuted instantiation: mv_prec.c:get_start_tok
Unexecuted instantiation: palette.c:get_start_tok
Unexecuted instantiation: partition_search.c:get_start_tok
Unexecuted instantiation: partition_strategy.c:get_start_tok
Unexecuted instantiation: pass2_strategy.c:get_start_tok
Unexecuted instantiation: pickcdef.c:get_start_tok
Unexecuted instantiation: picklpf.c:get_start_tok
Unexecuted instantiation: pickrst.c:get_start_tok
Unexecuted instantiation: ratectrl.c:get_start_tok
Unexecuted instantiation: rd.c:get_start_tok
Unexecuted instantiation: rdopt.c:get_start_tok
Unexecuted instantiation: nonrd_pickmode.c:get_start_tok
Unexecuted instantiation: nonrd_opt.c:get_start_tok
Unexecuted instantiation: segmentation.c:get_start_tok
Unexecuted instantiation: speed_features.c:get_start_tok
Unexecuted instantiation: superres_scale.c:get_start_tok
Unexecuted instantiation: svc_layercontext.c:get_start_tok
Unexecuted instantiation: temporal_filter.c:get_start_tok
Unexecuted instantiation: tokenize.c:get_start_tok
Unexecuted instantiation: tpl_model.c:get_start_tok
Unexecuted instantiation: tx_search.c:get_start_tok
Unexecuted instantiation: txb_rdopt.c:get_start_tok
Unexecuted instantiation: intra_mode_search.c:get_start_tok
Unexecuted instantiation: var_based_part.c:get_start_tok
Unexecuted instantiation: av1_noise_estimate.c:get_start_tok
Unexecuted instantiation: aq_complexity.c:get_start_tok
Unexecuted instantiation: aq_cyclicrefresh.c:get_start_tok
Unexecuted instantiation: aq_variance.c:get_start_tok
Unexecuted instantiation: compound_type.c:get_start_tok
Unexecuted instantiation: encode_strategy.c:get_start_tok
Unexecuted instantiation: global_motion.c:get_start_tok
Unexecuted instantiation: gop_structure.c:get_start_tok
Unexecuted instantiation: interp_search.c:get_start_tok
Unexecuted instantiation: motion_search_facade.c:get_start_tok
4094
4095
void av1_apply_encoding_flags(AV1_COMP *cpi, aom_enc_frame_flags_t flags);
4096
4097
0
#define ALT_MIN_LAG 3
4098
0
static inline int is_altref_enabled(int lag_in_frames, bool enable_auto_arf) {
4099
0
  return lag_in_frames >= ALT_MIN_LAG && enable_auto_arf;
4100
0
}
Unexecuted instantiation: av1_cx_iface.c:is_altref_enabled
Unexecuted instantiation: allintra_vis.c:is_altref_enabled
Unexecuted instantiation: av1_quantize.c:is_altref_enabled
Unexecuted instantiation: bitstream.c:is_altref_enabled
Unexecuted instantiation: context_tree.c:is_altref_enabled
Unexecuted instantiation: encodeframe.c:is_altref_enabled
Unexecuted instantiation: encodeframe_utils.c:is_altref_enabled
Unexecuted instantiation: encodemb.c:is_altref_enabled
Unexecuted instantiation: encodemv.c:is_altref_enabled
Unexecuted instantiation: encoder.c:is_altref_enabled
Unexecuted instantiation: encoder_utils.c:is_altref_enabled
Unexecuted instantiation: encodetxb.c:is_altref_enabled
Unexecuted instantiation: ethread.c:is_altref_enabled
Unexecuted instantiation: firstpass.c:is_altref_enabled
Unexecuted instantiation: global_motion_facade.c:is_altref_enabled
Unexecuted instantiation: level.c:is_altref_enabled
Unexecuted instantiation: lookahead.c:is_altref_enabled
Unexecuted instantiation: mcomp.c:is_altref_enabled
Unexecuted instantiation: mv_prec.c:is_altref_enabled
Unexecuted instantiation: palette.c:is_altref_enabled
Unexecuted instantiation: partition_search.c:is_altref_enabled
Unexecuted instantiation: partition_strategy.c:is_altref_enabled
Unexecuted instantiation: pass2_strategy.c:is_altref_enabled
Unexecuted instantiation: pickcdef.c:is_altref_enabled
Unexecuted instantiation: picklpf.c:is_altref_enabled
Unexecuted instantiation: pickrst.c:is_altref_enabled
Unexecuted instantiation: ratectrl.c:is_altref_enabled
Unexecuted instantiation: rd.c:is_altref_enabled
Unexecuted instantiation: rdopt.c:is_altref_enabled
Unexecuted instantiation: nonrd_pickmode.c:is_altref_enabled
Unexecuted instantiation: nonrd_opt.c:is_altref_enabled
Unexecuted instantiation: segmentation.c:is_altref_enabled
Unexecuted instantiation: speed_features.c:is_altref_enabled
Unexecuted instantiation: superres_scale.c:is_altref_enabled
Unexecuted instantiation: svc_layercontext.c:is_altref_enabled
Unexecuted instantiation: temporal_filter.c:is_altref_enabled
Unexecuted instantiation: tokenize.c:is_altref_enabled
Unexecuted instantiation: tpl_model.c:is_altref_enabled
Unexecuted instantiation: tx_search.c:is_altref_enabled
Unexecuted instantiation: txb_rdopt.c:is_altref_enabled
Unexecuted instantiation: intra_mode_search.c:is_altref_enabled
Unexecuted instantiation: var_based_part.c:is_altref_enabled
Unexecuted instantiation: av1_noise_estimate.c:is_altref_enabled
Unexecuted instantiation: aq_complexity.c:is_altref_enabled
Unexecuted instantiation: aq_cyclicrefresh.c:is_altref_enabled
Unexecuted instantiation: aq_variance.c:is_altref_enabled
Unexecuted instantiation: compound_type.c:is_altref_enabled
Unexecuted instantiation: encode_strategy.c:is_altref_enabled
Unexecuted instantiation: global_motion.c:is_altref_enabled
Unexecuted instantiation: gop_structure.c:is_altref_enabled
Unexecuted instantiation: interp_search.c:is_altref_enabled
Unexecuted instantiation: motion_search_facade.c:is_altref_enabled
4101
4102
0
static inline int can_disable_altref(const GFConfig *gf_cfg) {
4103
0
  return is_altref_enabled(gf_cfg->lag_in_frames, gf_cfg->enable_auto_arf) &&
4104
0
         (gf_cfg->gf_min_pyr_height == 0);
4105
0
}
Unexecuted instantiation: av1_cx_iface.c:can_disable_altref
Unexecuted instantiation: allintra_vis.c:can_disable_altref
Unexecuted instantiation: av1_quantize.c:can_disable_altref
Unexecuted instantiation: bitstream.c:can_disable_altref
Unexecuted instantiation: context_tree.c:can_disable_altref
Unexecuted instantiation: encodeframe.c:can_disable_altref
Unexecuted instantiation: encodeframe_utils.c:can_disable_altref
Unexecuted instantiation: encodemb.c:can_disable_altref
Unexecuted instantiation: encodemv.c:can_disable_altref
Unexecuted instantiation: encoder.c:can_disable_altref
Unexecuted instantiation: encoder_utils.c:can_disable_altref
Unexecuted instantiation: encodetxb.c:can_disable_altref
Unexecuted instantiation: ethread.c:can_disable_altref
Unexecuted instantiation: firstpass.c:can_disable_altref
Unexecuted instantiation: global_motion_facade.c:can_disable_altref
Unexecuted instantiation: level.c:can_disable_altref
Unexecuted instantiation: lookahead.c:can_disable_altref
Unexecuted instantiation: mcomp.c:can_disable_altref
Unexecuted instantiation: mv_prec.c:can_disable_altref
Unexecuted instantiation: palette.c:can_disable_altref
Unexecuted instantiation: partition_search.c:can_disable_altref
Unexecuted instantiation: partition_strategy.c:can_disable_altref
Unexecuted instantiation: pass2_strategy.c:can_disable_altref
Unexecuted instantiation: pickcdef.c:can_disable_altref
Unexecuted instantiation: picklpf.c:can_disable_altref
Unexecuted instantiation: pickrst.c:can_disable_altref
Unexecuted instantiation: ratectrl.c:can_disable_altref
Unexecuted instantiation: rd.c:can_disable_altref
Unexecuted instantiation: rdopt.c:can_disable_altref
Unexecuted instantiation: nonrd_pickmode.c:can_disable_altref
Unexecuted instantiation: nonrd_opt.c:can_disable_altref
Unexecuted instantiation: segmentation.c:can_disable_altref
Unexecuted instantiation: speed_features.c:can_disable_altref
Unexecuted instantiation: superres_scale.c:can_disable_altref
Unexecuted instantiation: svc_layercontext.c:can_disable_altref
Unexecuted instantiation: temporal_filter.c:can_disable_altref
Unexecuted instantiation: tokenize.c:can_disable_altref
Unexecuted instantiation: tpl_model.c:can_disable_altref
Unexecuted instantiation: tx_search.c:can_disable_altref
Unexecuted instantiation: txb_rdopt.c:can_disable_altref
Unexecuted instantiation: intra_mode_search.c:can_disable_altref
Unexecuted instantiation: var_based_part.c:can_disable_altref
Unexecuted instantiation: av1_noise_estimate.c:can_disable_altref
Unexecuted instantiation: aq_complexity.c:can_disable_altref
Unexecuted instantiation: aq_cyclicrefresh.c:can_disable_altref
Unexecuted instantiation: aq_variance.c:can_disable_altref
Unexecuted instantiation: compound_type.c:can_disable_altref
Unexecuted instantiation: encode_strategy.c:can_disable_altref
Unexecuted instantiation: global_motion.c:can_disable_altref
Unexecuted instantiation: gop_structure.c:can_disable_altref
Unexecuted instantiation: interp_search.c:can_disable_altref
Unexecuted instantiation: motion_search_facade.c:can_disable_altref
4106
4107
// Helper function to compute number of blocks on either side of the frame.
4108
0
static inline int get_num_blocks(const int frame_length, const int mb_length) {
4109
0
  return (frame_length + mb_length - 1) / mb_length;
4110
0
}
Unexecuted instantiation: av1_cx_iface.c:get_num_blocks
Unexecuted instantiation: allintra_vis.c:get_num_blocks
Unexecuted instantiation: av1_quantize.c:get_num_blocks
Unexecuted instantiation: bitstream.c:get_num_blocks
Unexecuted instantiation: context_tree.c:get_num_blocks
Unexecuted instantiation: encodeframe.c:get_num_blocks
Unexecuted instantiation: encodeframe_utils.c:get_num_blocks
Unexecuted instantiation: encodemb.c:get_num_blocks
Unexecuted instantiation: encodemv.c:get_num_blocks
Unexecuted instantiation: encoder.c:get_num_blocks
Unexecuted instantiation: encoder_utils.c:get_num_blocks
Unexecuted instantiation: encodetxb.c:get_num_blocks
Unexecuted instantiation: ethread.c:get_num_blocks
Unexecuted instantiation: firstpass.c:get_num_blocks
Unexecuted instantiation: global_motion_facade.c:get_num_blocks
Unexecuted instantiation: level.c:get_num_blocks
Unexecuted instantiation: lookahead.c:get_num_blocks
Unexecuted instantiation: mcomp.c:get_num_blocks
Unexecuted instantiation: mv_prec.c:get_num_blocks
Unexecuted instantiation: palette.c:get_num_blocks
Unexecuted instantiation: partition_search.c:get_num_blocks
Unexecuted instantiation: partition_strategy.c:get_num_blocks
Unexecuted instantiation: pass2_strategy.c:get_num_blocks
Unexecuted instantiation: pickcdef.c:get_num_blocks
Unexecuted instantiation: picklpf.c:get_num_blocks
Unexecuted instantiation: pickrst.c:get_num_blocks
Unexecuted instantiation: ratectrl.c:get_num_blocks
Unexecuted instantiation: rd.c:get_num_blocks
Unexecuted instantiation: rdopt.c:get_num_blocks
Unexecuted instantiation: nonrd_pickmode.c:get_num_blocks
Unexecuted instantiation: nonrd_opt.c:get_num_blocks
Unexecuted instantiation: segmentation.c:get_num_blocks
Unexecuted instantiation: speed_features.c:get_num_blocks
Unexecuted instantiation: superres_scale.c:get_num_blocks
Unexecuted instantiation: svc_layercontext.c:get_num_blocks
Unexecuted instantiation: temporal_filter.c:get_num_blocks
Unexecuted instantiation: tokenize.c:get_num_blocks
Unexecuted instantiation: tpl_model.c:get_num_blocks
Unexecuted instantiation: tx_search.c:get_num_blocks
Unexecuted instantiation: txb_rdopt.c:get_num_blocks
Unexecuted instantiation: intra_mode_search.c:get_num_blocks
Unexecuted instantiation: var_based_part.c:get_num_blocks
Unexecuted instantiation: av1_noise_estimate.c:get_num_blocks
Unexecuted instantiation: aq_complexity.c:get_num_blocks
Unexecuted instantiation: aq_cyclicrefresh.c:get_num_blocks
Unexecuted instantiation: aq_variance.c:get_num_blocks
Unexecuted instantiation: compound_type.c:get_num_blocks
Unexecuted instantiation: encode_strategy.c:get_num_blocks
Unexecuted instantiation: global_motion.c:get_num_blocks
Unexecuted instantiation: gop_structure.c:get_num_blocks
Unexecuted instantiation: interp_search.c:get_num_blocks
Unexecuted instantiation: motion_search_facade.c:get_num_blocks
4111
4112
// Check if statistics generation stage
4113
0
static inline int is_stat_generation_stage(const AV1_COMP *const cpi) {
4114
0
  assert(IMPLIES(cpi->compressor_stage == LAP_STAGE,
4115
0
                 cpi->oxcf.pass == AOM_RC_ONE_PASS && cpi->ppi->lap_enabled));
4116
0
  return (cpi->oxcf.pass == AOM_RC_FIRST_PASS ||
4117
0
          (cpi->compressor_stage == LAP_STAGE));
4118
0
}
Unexecuted instantiation: av1_cx_iface.c:is_stat_generation_stage
Unexecuted instantiation: allintra_vis.c:is_stat_generation_stage
Unexecuted instantiation: av1_quantize.c:is_stat_generation_stage
Unexecuted instantiation: bitstream.c:is_stat_generation_stage
Unexecuted instantiation: context_tree.c:is_stat_generation_stage
Unexecuted instantiation: encodeframe.c:is_stat_generation_stage
Unexecuted instantiation: encodeframe_utils.c:is_stat_generation_stage
Unexecuted instantiation: encodemb.c:is_stat_generation_stage
Unexecuted instantiation: encodemv.c:is_stat_generation_stage
Unexecuted instantiation: encoder.c:is_stat_generation_stage
Unexecuted instantiation: encoder_utils.c:is_stat_generation_stage
Unexecuted instantiation: encodetxb.c:is_stat_generation_stage
Unexecuted instantiation: ethread.c:is_stat_generation_stage
Unexecuted instantiation: firstpass.c:is_stat_generation_stage
Unexecuted instantiation: global_motion_facade.c:is_stat_generation_stage
Unexecuted instantiation: level.c:is_stat_generation_stage
Unexecuted instantiation: lookahead.c:is_stat_generation_stage
Unexecuted instantiation: mcomp.c:is_stat_generation_stage
Unexecuted instantiation: mv_prec.c:is_stat_generation_stage
Unexecuted instantiation: palette.c:is_stat_generation_stage
Unexecuted instantiation: partition_search.c:is_stat_generation_stage
Unexecuted instantiation: partition_strategy.c:is_stat_generation_stage
Unexecuted instantiation: pass2_strategy.c:is_stat_generation_stage
Unexecuted instantiation: pickcdef.c:is_stat_generation_stage
Unexecuted instantiation: picklpf.c:is_stat_generation_stage
Unexecuted instantiation: pickrst.c:is_stat_generation_stage
Unexecuted instantiation: ratectrl.c:is_stat_generation_stage
Unexecuted instantiation: rd.c:is_stat_generation_stage
Unexecuted instantiation: rdopt.c:is_stat_generation_stage
Unexecuted instantiation: nonrd_pickmode.c:is_stat_generation_stage
Unexecuted instantiation: nonrd_opt.c:is_stat_generation_stage
Unexecuted instantiation: segmentation.c:is_stat_generation_stage
Unexecuted instantiation: speed_features.c:is_stat_generation_stage
Unexecuted instantiation: superres_scale.c:is_stat_generation_stage
Unexecuted instantiation: svc_layercontext.c:is_stat_generation_stage
Unexecuted instantiation: temporal_filter.c:is_stat_generation_stage
Unexecuted instantiation: tokenize.c:is_stat_generation_stage
Unexecuted instantiation: tpl_model.c:is_stat_generation_stage
Unexecuted instantiation: tx_search.c:is_stat_generation_stage
Unexecuted instantiation: txb_rdopt.c:is_stat_generation_stage
Unexecuted instantiation: intra_mode_search.c:is_stat_generation_stage
Unexecuted instantiation: var_based_part.c:is_stat_generation_stage
Unexecuted instantiation: av1_noise_estimate.c:is_stat_generation_stage
Unexecuted instantiation: aq_complexity.c:is_stat_generation_stage
Unexecuted instantiation: aq_cyclicrefresh.c:is_stat_generation_stage
Unexecuted instantiation: aq_variance.c:is_stat_generation_stage
Unexecuted instantiation: compound_type.c:is_stat_generation_stage
Unexecuted instantiation: encode_strategy.c:is_stat_generation_stage
Unexecuted instantiation: global_motion.c:is_stat_generation_stage
Unexecuted instantiation: gop_structure.c:is_stat_generation_stage
Unexecuted instantiation: interp_search.c:is_stat_generation_stage
Unexecuted instantiation: motion_search_facade.c:is_stat_generation_stage
4119
// Check if statistics consumption stage
4120
0
static inline int is_stat_consumption_stage_twopass(const AV1_COMP *const cpi) {
4121
0
  return (cpi->oxcf.pass >= AOM_RC_SECOND_PASS);
4122
0
}
Unexecuted instantiation: av1_cx_iface.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: allintra_vis.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: av1_quantize.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: bitstream.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: context_tree.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: encodeframe.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: encodeframe_utils.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: encodemb.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: encodemv.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: encoder.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: encoder_utils.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: encodetxb.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: ethread.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: firstpass.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: global_motion_facade.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: level.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: lookahead.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: mcomp.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: mv_prec.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: palette.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: partition_search.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: partition_strategy.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: pass2_strategy.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: pickcdef.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: picklpf.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: pickrst.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: ratectrl.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: rd.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: rdopt.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: nonrd_pickmode.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: nonrd_opt.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: segmentation.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: speed_features.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: superres_scale.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: svc_layercontext.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: temporal_filter.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: tokenize.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: tpl_model.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: tx_search.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: txb_rdopt.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: intra_mode_search.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: var_based_part.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: av1_noise_estimate.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: aq_complexity.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: aq_cyclicrefresh.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: aq_variance.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: compound_type.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: encode_strategy.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: global_motion.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: gop_structure.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: interp_search.c:is_stat_consumption_stage_twopass
Unexecuted instantiation: motion_search_facade.c:is_stat_consumption_stage_twopass
4123
4124
// Check if statistics consumption stage
4125
0
static inline int is_stat_consumption_stage(const AV1_COMP *const cpi) {
4126
0
  return (is_stat_consumption_stage_twopass(cpi) ||
4127
0
          (cpi->oxcf.pass == AOM_RC_ONE_PASS &&
4128
0
           (cpi->compressor_stage == ENCODE_STAGE) && cpi->ppi->lap_enabled &&
4129
0
           cpi->oxcf.mode != REALTIME));
4130
0
}
Unexecuted instantiation: av1_cx_iface.c:is_stat_consumption_stage
Unexecuted instantiation: allintra_vis.c:is_stat_consumption_stage
Unexecuted instantiation: av1_quantize.c:is_stat_consumption_stage
Unexecuted instantiation: bitstream.c:is_stat_consumption_stage
Unexecuted instantiation: context_tree.c:is_stat_consumption_stage
Unexecuted instantiation: encodeframe.c:is_stat_consumption_stage
Unexecuted instantiation: encodeframe_utils.c:is_stat_consumption_stage
Unexecuted instantiation: encodemb.c:is_stat_consumption_stage
Unexecuted instantiation: encodemv.c:is_stat_consumption_stage
Unexecuted instantiation: encoder.c:is_stat_consumption_stage
Unexecuted instantiation: encoder_utils.c:is_stat_consumption_stage
Unexecuted instantiation: encodetxb.c:is_stat_consumption_stage
Unexecuted instantiation: ethread.c:is_stat_consumption_stage
Unexecuted instantiation: firstpass.c:is_stat_consumption_stage
Unexecuted instantiation: global_motion_facade.c:is_stat_consumption_stage
Unexecuted instantiation: level.c:is_stat_consumption_stage
Unexecuted instantiation: lookahead.c:is_stat_consumption_stage
Unexecuted instantiation: mcomp.c:is_stat_consumption_stage
Unexecuted instantiation: mv_prec.c:is_stat_consumption_stage
Unexecuted instantiation: palette.c:is_stat_consumption_stage
Unexecuted instantiation: partition_search.c:is_stat_consumption_stage
Unexecuted instantiation: partition_strategy.c:is_stat_consumption_stage
Unexecuted instantiation: pass2_strategy.c:is_stat_consumption_stage
Unexecuted instantiation: pickcdef.c:is_stat_consumption_stage
Unexecuted instantiation: picklpf.c:is_stat_consumption_stage
Unexecuted instantiation: pickrst.c:is_stat_consumption_stage
Unexecuted instantiation: ratectrl.c:is_stat_consumption_stage
Unexecuted instantiation: rd.c:is_stat_consumption_stage
Unexecuted instantiation: rdopt.c:is_stat_consumption_stage
Unexecuted instantiation: nonrd_pickmode.c:is_stat_consumption_stage
Unexecuted instantiation: nonrd_opt.c:is_stat_consumption_stage
Unexecuted instantiation: segmentation.c:is_stat_consumption_stage
Unexecuted instantiation: speed_features.c:is_stat_consumption_stage
Unexecuted instantiation: superres_scale.c:is_stat_consumption_stage
Unexecuted instantiation: svc_layercontext.c:is_stat_consumption_stage
Unexecuted instantiation: temporal_filter.c:is_stat_consumption_stage
Unexecuted instantiation: tokenize.c:is_stat_consumption_stage
Unexecuted instantiation: tpl_model.c:is_stat_consumption_stage
Unexecuted instantiation: tx_search.c:is_stat_consumption_stage
Unexecuted instantiation: txb_rdopt.c:is_stat_consumption_stage
Unexecuted instantiation: intra_mode_search.c:is_stat_consumption_stage
Unexecuted instantiation: var_based_part.c:is_stat_consumption_stage
Unexecuted instantiation: av1_noise_estimate.c:is_stat_consumption_stage
Unexecuted instantiation: aq_complexity.c:is_stat_consumption_stage
Unexecuted instantiation: aq_cyclicrefresh.c:is_stat_consumption_stage
Unexecuted instantiation: aq_variance.c:is_stat_consumption_stage
Unexecuted instantiation: compound_type.c:is_stat_consumption_stage
Unexecuted instantiation: encode_strategy.c:is_stat_consumption_stage
Unexecuted instantiation: global_motion.c:is_stat_consumption_stage
Unexecuted instantiation: gop_structure.c:is_stat_consumption_stage
Unexecuted instantiation: interp_search.c:is_stat_consumption_stage
Unexecuted instantiation: motion_search_facade.c:is_stat_consumption_stage
4131
4132
// Decide whether 'dv_costs' need to be allocated/stored during the encoding.
4133
0
static inline bool av1_need_dv_costs(const AV1_COMP *const cpi) {
4134
0
  return !cpi->sf.rt_sf.use_nonrd_pick_mode &&
4135
0
         av1_allow_intrabc(&cpi->common) && !is_stat_generation_stage(cpi);
4136
0
}
Unexecuted instantiation: av1_cx_iface.c:av1_need_dv_costs
Unexecuted instantiation: allintra_vis.c:av1_need_dv_costs
Unexecuted instantiation: av1_quantize.c:av1_need_dv_costs
Unexecuted instantiation: bitstream.c:av1_need_dv_costs
Unexecuted instantiation: context_tree.c:av1_need_dv_costs
Unexecuted instantiation: encodeframe.c:av1_need_dv_costs
Unexecuted instantiation: encodeframe_utils.c:av1_need_dv_costs
Unexecuted instantiation: encodemb.c:av1_need_dv_costs
Unexecuted instantiation: encodemv.c:av1_need_dv_costs
Unexecuted instantiation: encoder.c:av1_need_dv_costs
Unexecuted instantiation: encoder_utils.c:av1_need_dv_costs
Unexecuted instantiation: encodetxb.c:av1_need_dv_costs
Unexecuted instantiation: ethread.c:av1_need_dv_costs
Unexecuted instantiation: firstpass.c:av1_need_dv_costs
Unexecuted instantiation: global_motion_facade.c:av1_need_dv_costs
Unexecuted instantiation: level.c:av1_need_dv_costs
Unexecuted instantiation: lookahead.c:av1_need_dv_costs
Unexecuted instantiation: mcomp.c:av1_need_dv_costs
Unexecuted instantiation: mv_prec.c:av1_need_dv_costs
Unexecuted instantiation: palette.c:av1_need_dv_costs
Unexecuted instantiation: partition_search.c:av1_need_dv_costs
Unexecuted instantiation: partition_strategy.c:av1_need_dv_costs
Unexecuted instantiation: pass2_strategy.c:av1_need_dv_costs
Unexecuted instantiation: pickcdef.c:av1_need_dv_costs
Unexecuted instantiation: picklpf.c:av1_need_dv_costs
Unexecuted instantiation: pickrst.c:av1_need_dv_costs
Unexecuted instantiation: ratectrl.c:av1_need_dv_costs
Unexecuted instantiation: rd.c:av1_need_dv_costs
Unexecuted instantiation: rdopt.c:av1_need_dv_costs
Unexecuted instantiation: nonrd_pickmode.c:av1_need_dv_costs
Unexecuted instantiation: nonrd_opt.c:av1_need_dv_costs
Unexecuted instantiation: segmentation.c:av1_need_dv_costs
Unexecuted instantiation: speed_features.c:av1_need_dv_costs
Unexecuted instantiation: superres_scale.c:av1_need_dv_costs
Unexecuted instantiation: svc_layercontext.c:av1_need_dv_costs
Unexecuted instantiation: temporal_filter.c:av1_need_dv_costs
Unexecuted instantiation: tokenize.c:av1_need_dv_costs
Unexecuted instantiation: tpl_model.c:av1_need_dv_costs
Unexecuted instantiation: tx_search.c:av1_need_dv_costs
Unexecuted instantiation: txb_rdopt.c:av1_need_dv_costs
Unexecuted instantiation: intra_mode_search.c:av1_need_dv_costs
Unexecuted instantiation: var_based_part.c:av1_need_dv_costs
Unexecuted instantiation: av1_noise_estimate.c:av1_need_dv_costs
Unexecuted instantiation: aq_complexity.c:av1_need_dv_costs
Unexecuted instantiation: aq_cyclicrefresh.c:av1_need_dv_costs
Unexecuted instantiation: aq_variance.c:av1_need_dv_costs
Unexecuted instantiation: compound_type.c:av1_need_dv_costs
Unexecuted instantiation: encode_strategy.c:av1_need_dv_costs
Unexecuted instantiation: global_motion.c:av1_need_dv_costs
Unexecuted instantiation: gop_structure.c:av1_need_dv_costs
Unexecuted instantiation: interp_search.c:av1_need_dv_costs
Unexecuted instantiation: motion_search_facade.c:av1_need_dv_costs
4137
4138
/*!\endcond */
4139
/*!\brief Check if the current stage has statistics
4140
 *
4141
 *\ingroup two_pass_algo
4142
 *
4143
 * \param[in]    cpi     Top - level encoder instance structure
4144
 *
4145
 * \return 0 if no stats for current stage else 1
4146
 */
4147
0
static inline int has_no_stats_stage(const AV1_COMP *const cpi) {
4148
0
  assert(
4149
0
      IMPLIES(!cpi->ppi->lap_enabled, cpi->compressor_stage == ENCODE_STAGE));
4150
0
  return (cpi->oxcf.pass == AOM_RC_ONE_PASS &&
4151
0
          (!cpi->ppi->lap_enabled || cpi->oxcf.mode == REALTIME));
4152
0
}
Unexecuted instantiation: av1_cx_iface.c:has_no_stats_stage
Unexecuted instantiation: allintra_vis.c:has_no_stats_stage
Unexecuted instantiation: av1_quantize.c:has_no_stats_stage
Unexecuted instantiation: bitstream.c:has_no_stats_stage
Unexecuted instantiation: context_tree.c:has_no_stats_stage
Unexecuted instantiation: encodeframe.c:has_no_stats_stage
Unexecuted instantiation: encodeframe_utils.c:has_no_stats_stage
Unexecuted instantiation: encodemb.c:has_no_stats_stage
Unexecuted instantiation: encodemv.c:has_no_stats_stage
Unexecuted instantiation: encoder.c:has_no_stats_stage
Unexecuted instantiation: encoder_utils.c:has_no_stats_stage
Unexecuted instantiation: encodetxb.c:has_no_stats_stage
Unexecuted instantiation: ethread.c:has_no_stats_stage
Unexecuted instantiation: firstpass.c:has_no_stats_stage
Unexecuted instantiation: global_motion_facade.c:has_no_stats_stage
Unexecuted instantiation: level.c:has_no_stats_stage
Unexecuted instantiation: lookahead.c:has_no_stats_stage
Unexecuted instantiation: mcomp.c:has_no_stats_stage
Unexecuted instantiation: mv_prec.c:has_no_stats_stage
Unexecuted instantiation: palette.c:has_no_stats_stage
Unexecuted instantiation: partition_search.c:has_no_stats_stage
Unexecuted instantiation: partition_strategy.c:has_no_stats_stage
Unexecuted instantiation: pass2_strategy.c:has_no_stats_stage
Unexecuted instantiation: pickcdef.c:has_no_stats_stage
Unexecuted instantiation: picklpf.c:has_no_stats_stage
Unexecuted instantiation: pickrst.c:has_no_stats_stage
Unexecuted instantiation: ratectrl.c:has_no_stats_stage
Unexecuted instantiation: rd.c:has_no_stats_stage
Unexecuted instantiation: rdopt.c:has_no_stats_stage
Unexecuted instantiation: nonrd_pickmode.c:has_no_stats_stage
Unexecuted instantiation: nonrd_opt.c:has_no_stats_stage
Unexecuted instantiation: segmentation.c:has_no_stats_stage
Unexecuted instantiation: speed_features.c:has_no_stats_stage
Unexecuted instantiation: superres_scale.c:has_no_stats_stage
Unexecuted instantiation: svc_layercontext.c:has_no_stats_stage
Unexecuted instantiation: temporal_filter.c:has_no_stats_stage
Unexecuted instantiation: tokenize.c:has_no_stats_stage
Unexecuted instantiation: tpl_model.c:has_no_stats_stage
Unexecuted instantiation: tx_search.c:has_no_stats_stage
Unexecuted instantiation: txb_rdopt.c:has_no_stats_stage
Unexecuted instantiation: intra_mode_search.c:has_no_stats_stage
Unexecuted instantiation: var_based_part.c:has_no_stats_stage
Unexecuted instantiation: av1_noise_estimate.c:has_no_stats_stage
Unexecuted instantiation: aq_complexity.c:has_no_stats_stage
Unexecuted instantiation: aq_cyclicrefresh.c:has_no_stats_stage
Unexecuted instantiation: aq_variance.c:has_no_stats_stage
Unexecuted instantiation: compound_type.c:has_no_stats_stage
Unexecuted instantiation: encode_strategy.c:has_no_stats_stage
Unexecuted instantiation: global_motion.c:has_no_stats_stage
Unexecuted instantiation: gop_structure.c:has_no_stats_stage
Unexecuted instantiation: interp_search.c:has_no_stats_stage
Unexecuted instantiation: motion_search_facade.c:has_no_stats_stage
4153
4154
/*!\cond */
4155
4156
0
static inline int is_one_pass_rt_lag_params(const AV1_COMP *cpi) {
4157
0
  return cpi->oxcf.pass == AOM_RC_ONE_PASS &&
4158
0
         cpi->oxcf.gf_cfg.lag_in_frames > 0 && cpi->oxcf.mode == REALTIME;
4159
0
}
Unexecuted instantiation: av1_cx_iface.c:is_one_pass_rt_lag_params
Unexecuted instantiation: allintra_vis.c:is_one_pass_rt_lag_params
Unexecuted instantiation: av1_quantize.c:is_one_pass_rt_lag_params
Unexecuted instantiation: bitstream.c:is_one_pass_rt_lag_params
Unexecuted instantiation: context_tree.c:is_one_pass_rt_lag_params
Unexecuted instantiation: encodeframe.c:is_one_pass_rt_lag_params
Unexecuted instantiation: encodeframe_utils.c:is_one_pass_rt_lag_params
Unexecuted instantiation: encodemb.c:is_one_pass_rt_lag_params
Unexecuted instantiation: encodemv.c:is_one_pass_rt_lag_params
Unexecuted instantiation: encoder.c:is_one_pass_rt_lag_params
Unexecuted instantiation: encoder_utils.c:is_one_pass_rt_lag_params
Unexecuted instantiation: encodetxb.c:is_one_pass_rt_lag_params
Unexecuted instantiation: ethread.c:is_one_pass_rt_lag_params
Unexecuted instantiation: firstpass.c:is_one_pass_rt_lag_params
Unexecuted instantiation: global_motion_facade.c:is_one_pass_rt_lag_params
Unexecuted instantiation: level.c:is_one_pass_rt_lag_params
Unexecuted instantiation: lookahead.c:is_one_pass_rt_lag_params
Unexecuted instantiation: mcomp.c:is_one_pass_rt_lag_params
Unexecuted instantiation: mv_prec.c:is_one_pass_rt_lag_params
Unexecuted instantiation: palette.c:is_one_pass_rt_lag_params
Unexecuted instantiation: partition_search.c:is_one_pass_rt_lag_params
Unexecuted instantiation: partition_strategy.c:is_one_pass_rt_lag_params
Unexecuted instantiation: pass2_strategy.c:is_one_pass_rt_lag_params
Unexecuted instantiation: pickcdef.c:is_one_pass_rt_lag_params
Unexecuted instantiation: picklpf.c:is_one_pass_rt_lag_params
Unexecuted instantiation: pickrst.c:is_one_pass_rt_lag_params
Unexecuted instantiation: ratectrl.c:is_one_pass_rt_lag_params
Unexecuted instantiation: rd.c:is_one_pass_rt_lag_params
Unexecuted instantiation: rdopt.c:is_one_pass_rt_lag_params
Unexecuted instantiation: nonrd_pickmode.c:is_one_pass_rt_lag_params
Unexecuted instantiation: nonrd_opt.c:is_one_pass_rt_lag_params
Unexecuted instantiation: segmentation.c:is_one_pass_rt_lag_params
Unexecuted instantiation: speed_features.c:is_one_pass_rt_lag_params
Unexecuted instantiation: superres_scale.c:is_one_pass_rt_lag_params
Unexecuted instantiation: svc_layercontext.c:is_one_pass_rt_lag_params
Unexecuted instantiation: temporal_filter.c:is_one_pass_rt_lag_params
Unexecuted instantiation: tokenize.c:is_one_pass_rt_lag_params
Unexecuted instantiation: tpl_model.c:is_one_pass_rt_lag_params
Unexecuted instantiation: tx_search.c:is_one_pass_rt_lag_params
Unexecuted instantiation: txb_rdopt.c:is_one_pass_rt_lag_params
Unexecuted instantiation: intra_mode_search.c:is_one_pass_rt_lag_params
Unexecuted instantiation: var_based_part.c:is_one_pass_rt_lag_params
Unexecuted instantiation: av1_noise_estimate.c:is_one_pass_rt_lag_params
Unexecuted instantiation: aq_complexity.c:is_one_pass_rt_lag_params
Unexecuted instantiation: aq_cyclicrefresh.c:is_one_pass_rt_lag_params
Unexecuted instantiation: aq_variance.c:is_one_pass_rt_lag_params
Unexecuted instantiation: compound_type.c:is_one_pass_rt_lag_params
Unexecuted instantiation: encode_strategy.c:is_one_pass_rt_lag_params
Unexecuted instantiation: global_motion.c:is_one_pass_rt_lag_params
Unexecuted instantiation: gop_structure.c:is_one_pass_rt_lag_params
Unexecuted instantiation: interp_search.c:is_one_pass_rt_lag_params
Unexecuted instantiation: motion_search_facade.c:is_one_pass_rt_lag_params
4160
4161
0
static inline int is_one_pass_rt_params(const AV1_COMP *cpi) {
4162
0
  return has_no_stats_stage(cpi) && cpi->oxcf.gf_cfg.lag_in_frames == 0 &&
4163
0
         (cpi->oxcf.mode == REALTIME || cpi->svc.number_spatial_layers > 1);
4164
0
}
Unexecuted instantiation: av1_cx_iface.c:is_one_pass_rt_params
Unexecuted instantiation: allintra_vis.c:is_one_pass_rt_params
Unexecuted instantiation: av1_quantize.c:is_one_pass_rt_params
Unexecuted instantiation: bitstream.c:is_one_pass_rt_params
Unexecuted instantiation: context_tree.c:is_one_pass_rt_params
Unexecuted instantiation: encodeframe.c:is_one_pass_rt_params
Unexecuted instantiation: encodeframe_utils.c:is_one_pass_rt_params
Unexecuted instantiation: encodemb.c:is_one_pass_rt_params
Unexecuted instantiation: encodemv.c:is_one_pass_rt_params
Unexecuted instantiation: encoder.c:is_one_pass_rt_params
Unexecuted instantiation: encoder_utils.c:is_one_pass_rt_params
Unexecuted instantiation: encodetxb.c:is_one_pass_rt_params
Unexecuted instantiation: ethread.c:is_one_pass_rt_params
Unexecuted instantiation: firstpass.c:is_one_pass_rt_params
Unexecuted instantiation: global_motion_facade.c:is_one_pass_rt_params
Unexecuted instantiation: level.c:is_one_pass_rt_params
Unexecuted instantiation: lookahead.c:is_one_pass_rt_params
Unexecuted instantiation: mcomp.c:is_one_pass_rt_params
Unexecuted instantiation: mv_prec.c:is_one_pass_rt_params
Unexecuted instantiation: palette.c:is_one_pass_rt_params
Unexecuted instantiation: partition_search.c:is_one_pass_rt_params
Unexecuted instantiation: partition_strategy.c:is_one_pass_rt_params
Unexecuted instantiation: pass2_strategy.c:is_one_pass_rt_params
Unexecuted instantiation: pickcdef.c:is_one_pass_rt_params
Unexecuted instantiation: picklpf.c:is_one_pass_rt_params
Unexecuted instantiation: pickrst.c:is_one_pass_rt_params
Unexecuted instantiation: ratectrl.c:is_one_pass_rt_params
Unexecuted instantiation: rd.c:is_one_pass_rt_params
Unexecuted instantiation: rdopt.c:is_one_pass_rt_params
Unexecuted instantiation: nonrd_pickmode.c:is_one_pass_rt_params
Unexecuted instantiation: nonrd_opt.c:is_one_pass_rt_params
Unexecuted instantiation: segmentation.c:is_one_pass_rt_params
Unexecuted instantiation: speed_features.c:is_one_pass_rt_params
Unexecuted instantiation: superres_scale.c:is_one_pass_rt_params
Unexecuted instantiation: svc_layercontext.c:is_one_pass_rt_params
Unexecuted instantiation: temporal_filter.c:is_one_pass_rt_params
Unexecuted instantiation: tokenize.c:is_one_pass_rt_params
Unexecuted instantiation: tpl_model.c:is_one_pass_rt_params
Unexecuted instantiation: tx_search.c:is_one_pass_rt_params
Unexecuted instantiation: txb_rdopt.c:is_one_pass_rt_params
Unexecuted instantiation: intra_mode_search.c:is_one_pass_rt_params
Unexecuted instantiation: var_based_part.c:is_one_pass_rt_params
Unexecuted instantiation: av1_noise_estimate.c:is_one_pass_rt_params
Unexecuted instantiation: aq_complexity.c:is_one_pass_rt_params
Unexecuted instantiation: aq_cyclicrefresh.c:is_one_pass_rt_params
Unexecuted instantiation: aq_variance.c:is_one_pass_rt_params
Unexecuted instantiation: compound_type.c:is_one_pass_rt_params
Unexecuted instantiation: encode_strategy.c:is_one_pass_rt_params
Unexecuted instantiation: global_motion.c:is_one_pass_rt_params
Unexecuted instantiation: gop_structure.c:is_one_pass_rt_params
Unexecuted instantiation: interp_search.c:is_one_pass_rt_params
Unexecuted instantiation: motion_search_facade.c:is_one_pass_rt_params
4165
4166
// Use default/internal reference structure for single-layer RTC.
4167
0
static inline int use_rtc_reference_structure_one_layer(const AV1_COMP *cpi) {
4168
0
  return is_one_pass_rt_params(cpi) && cpi->ppi->number_spatial_layers == 1 &&
4169
0
         cpi->ppi->number_temporal_layers == 1 &&
4170
0
         !cpi->ppi->rtc_ref.set_ref_frame_config;
4171
0
}
Unexecuted instantiation: av1_cx_iface.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: allintra_vis.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: av1_quantize.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: bitstream.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: context_tree.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: encodeframe.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: encodeframe_utils.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: encodemb.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: encodemv.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: encoder.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: encoder_utils.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: encodetxb.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: ethread.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: firstpass.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: global_motion_facade.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: level.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: lookahead.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: mcomp.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: mv_prec.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: palette.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: partition_search.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: partition_strategy.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: pass2_strategy.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: pickcdef.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: picklpf.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: pickrst.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: ratectrl.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: rd.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: rdopt.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: nonrd_pickmode.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: nonrd_opt.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: segmentation.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: speed_features.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: superres_scale.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: svc_layercontext.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: temporal_filter.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: tokenize.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: tpl_model.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: tx_search.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: txb_rdopt.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: intra_mode_search.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: var_based_part.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: av1_noise_estimate.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: aq_complexity.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: aq_cyclicrefresh.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: aq_variance.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: compound_type.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: encode_strategy.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: global_motion.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: gop_structure.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: interp_search.c:use_rtc_reference_structure_one_layer
Unexecuted instantiation: motion_search_facade.c:use_rtc_reference_structure_one_layer
4172
4173
// Check if postencode drop is allowed.
4174
0
static inline int allow_postencode_drop_rtc(const AV1_COMP *cpi) {
4175
0
  const AV1_COMMON *const cm = &cpi->common;
4176
0
  return is_one_pass_rt_params(cpi) && cpi->oxcf.rc_cfg.mode == AOM_CBR &&
4177
0
         cpi->oxcf.rc_cfg.drop_frames_water_mark > 0 &&
4178
0
         !cpi->rc.rtc_external_ratectrl && !frame_is_intra_only(cm) &&
4179
0
         cpi->svc.spatial_layer_id == 0;
4180
0
}
Unexecuted instantiation: av1_cx_iface.c:allow_postencode_drop_rtc
Unexecuted instantiation: allintra_vis.c:allow_postencode_drop_rtc
Unexecuted instantiation: av1_quantize.c:allow_postencode_drop_rtc
Unexecuted instantiation: bitstream.c:allow_postencode_drop_rtc
Unexecuted instantiation: context_tree.c:allow_postencode_drop_rtc
Unexecuted instantiation: encodeframe.c:allow_postencode_drop_rtc
Unexecuted instantiation: encodeframe_utils.c:allow_postencode_drop_rtc
Unexecuted instantiation: encodemb.c:allow_postencode_drop_rtc
Unexecuted instantiation: encodemv.c:allow_postencode_drop_rtc
Unexecuted instantiation: encoder.c:allow_postencode_drop_rtc
Unexecuted instantiation: encoder_utils.c:allow_postencode_drop_rtc
Unexecuted instantiation: encodetxb.c:allow_postencode_drop_rtc
Unexecuted instantiation: ethread.c:allow_postencode_drop_rtc
Unexecuted instantiation: firstpass.c:allow_postencode_drop_rtc
Unexecuted instantiation: global_motion_facade.c:allow_postencode_drop_rtc
Unexecuted instantiation: level.c:allow_postencode_drop_rtc
Unexecuted instantiation: lookahead.c:allow_postencode_drop_rtc
Unexecuted instantiation: mcomp.c:allow_postencode_drop_rtc
Unexecuted instantiation: mv_prec.c:allow_postencode_drop_rtc
Unexecuted instantiation: palette.c:allow_postencode_drop_rtc
Unexecuted instantiation: partition_search.c:allow_postencode_drop_rtc
Unexecuted instantiation: partition_strategy.c:allow_postencode_drop_rtc
Unexecuted instantiation: pass2_strategy.c:allow_postencode_drop_rtc
Unexecuted instantiation: pickcdef.c:allow_postencode_drop_rtc
Unexecuted instantiation: picklpf.c:allow_postencode_drop_rtc
Unexecuted instantiation: pickrst.c:allow_postencode_drop_rtc
Unexecuted instantiation: ratectrl.c:allow_postencode_drop_rtc
Unexecuted instantiation: rd.c:allow_postencode_drop_rtc
Unexecuted instantiation: rdopt.c:allow_postencode_drop_rtc
Unexecuted instantiation: nonrd_pickmode.c:allow_postencode_drop_rtc
Unexecuted instantiation: nonrd_opt.c:allow_postencode_drop_rtc
Unexecuted instantiation: segmentation.c:allow_postencode_drop_rtc
Unexecuted instantiation: speed_features.c:allow_postencode_drop_rtc
Unexecuted instantiation: superres_scale.c:allow_postencode_drop_rtc
Unexecuted instantiation: svc_layercontext.c:allow_postencode_drop_rtc
Unexecuted instantiation: temporal_filter.c:allow_postencode_drop_rtc
Unexecuted instantiation: tokenize.c:allow_postencode_drop_rtc
Unexecuted instantiation: tpl_model.c:allow_postencode_drop_rtc
Unexecuted instantiation: tx_search.c:allow_postencode_drop_rtc
Unexecuted instantiation: txb_rdopt.c:allow_postencode_drop_rtc
Unexecuted instantiation: intra_mode_search.c:allow_postencode_drop_rtc
Unexecuted instantiation: var_based_part.c:allow_postencode_drop_rtc
Unexecuted instantiation: av1_noise_estimate.c:allow_postencode_drop_rtc
Unexecuted instantiation: aq_complexity.c:allow_postencode_drop_rtc
Unexecuted instantiation: aq_cyclicrefresh.c:allow_postencode_drop_rtc
Unexecuted instantiation: aq_variance.c:allow_postencode_drop_rtc
Unexecuted instantiation: compound_type.c:allow_postencode_drop_rtc
Unexecuted instantiation: encode_strategy.c:allow_postencode_drop_rtc
Unexecuted instantiation: global_motion.c:allow_postencode_drop_rtc
Unexecuted instantiation: gop_structure.c:allow_postencode_drop_rtc
Unexecuted instantiation: interp_search.c:allow_postencode_drop_rtc
Unexecuted instantiation: motion_search_facade.c:allow_postencode_drop_rtc
4181
4182
// Function return size of frame stats buffer
4183
0
static inline int get_stats_buf_size(int num_lap_buffer, int num_lag_buffer) {
4184
  /* if lookahead is enabled return num_lap_buffers else num_lag_buffers */
4185
0
  return (num_lap_buffer > 0 ? num_lap_buffer + 1 : num_lag_buffer);
4186
0
}
Unexecuted instantiation: av1_cx_iface.c:get_stats_buf_size
Unexecuted instantiation: allintra_vis.c:get_stats_buf_size
Unexecuted instantiation: av1_quantize.c:get_stats_buf_size
Unexecuted instantiation: bitstream.c:get_stats_buf_size
Unexecuted instantiation: context_tree.c:get_stats_buf_size
Unexecuted instantiation: encodeframe.c:get_stats_buf_size
Unexecuted instantiation: encodeframe_utils.c:get_stats_buf_size
Unexecuted instantiation: encodemb.c:get_stats_buf_size
Unexecuted instantiation: encodemv.c:get_stats_buf_size
Unexecuted instantiation: encoder.c:get_stats_buf_size
Unexecuted instantiation: encoder_utils.c:get_stats_buf_size
Unexecuted instantiation: encodetxb.c:get_stats_buf_size
Unexecuted instantiation: ethread.c:get_stats_buf_size
Unexecuted instantiation: firstpass.c:get_stats_buf_size
Unexecuted instantiation: global_motion_facade.c:get_stats_buf_size
Unexecuted instantiation: level.c:get_stats_buf_size
Unexecuted instantiation: lookahead.c:get_stats_buf_size
Unexecuted instantiation: mcomp.c:get_stats_buf_size
Unexecuted instantiation: mv_prec.c:get_stats_buf_size
Unexecuted instantiation: palette.c:get_stats_buf_size
Unexecuted instantiation: partition_search.c:get_stats_buf_size
Unexecuted instantiation: partition_strategy.c:get_stats_buf_size
Unexecuted instantiation: pass2_strategy.c:get_stats_buf_size
Unexecuted instantiation: pickcdef.c:get_stats_buf_size
Unexecuted instantiation: picklpf.c:get_stats_buf_size
Unexecuted instantiation: pickrst.c:get_stats_buf_size
Unexecuted instantiation: ratectrl.c:get_stats_buf_size
Unexecuted instantiation: rd.c:get_stats_buf_size
Unexecuted instantiation: rdopt.c:get_stats_buf_size
Unexecuted instantiation: nonrd_pickmode.c:get_stats_buf_size
Unexecuted instantiation: nonrd_opt.c:get_stats_buf_size
Unexecuted instantiation: segmentation.c:get_stats_buf_size
Unexecuted instantiation: speed_features.c:get_stats_buf_size
Unexecuted instantiation: superres_scale.c:get_stats_buf_size
Unexecuted instantiation: svc_layercontext.c:get_stats_buf_size
Unexecuted instantiation: temporal_filter.c:get_stats_buf_size
Unexecuted instantiation: tokenize.c:get_stats_buf_size
Unexecuted instantiation: tpl_model.c:get_stats_buf_size
Unexecuted instantiation: tx_search.c:get_stats_buf_size
Unexecuted instantiation: txb_rdopt.c:get_stats_buf_size
Unexecuted instantiation: intra_mode_search.c:get_stats_buf_size
Unexecuted instantiation: var_based_part.c:get_stats_buf_size
Unexecuted instantiation: av1_noise_estimate.c:get_stats_buf_size
Unexecuted instantiation: aq_complexity.c:get_stats_buf_size
Unexecuted instantiation: aq_cyclicrefresh.c:get_stats_buf_size
Unexecuted instantiation: aq_variance.c:get_stats_buf_size
Unexecuted instantiation: compound_type.c:get_stats_buf_size
Unexecuted instantiation: encode_strategy.c:get_stats_buf_size
Unexecuted instantiation: global_motion.c:get_stats_buf_size
Unexecuted instantiation: gop_structure.c:get_stats_buf_size
Unexecuted instantiation: interp_search.c:get_stats_buf_size
Unexecuted instantiation: motion_search_facade.c:get_stats_buf_size
4187
4188
// TODO(zoeliu): To set up cpi->oxcf.gf_cfg.enable_auto_brf
4189
4190
static inline void set_ref_ptrs(const AV1_COMMON *cm, MACROBLOCKD *xd,
4191
                                MV_REFERENCE_FRAME ref0,
4192
0
                                MV_REFERENCE_FRAME ref1) {
4193
0
  xd->block_ref_scale_factors[0] =
4194
0
      get_ref_scale_factors_const(cm, ref0 >= LAST_FRAME ? ref0 : 1);
4195
0
  xd->block_ref_scale_factors[1] =
4196
0
      get_ref_scale_factors_const(cm, ref1 >= LAST_FRAME ? ref1 : 1);
4197
0
}
Unexecuted instantiation: av1_cx_iface.c:set_ref_ptrs
Unexecuted instantiation: allintra_vis.c:set_ref_ptrs
Unexecuted instantiation: av1_quantize.c:set_ref_ptrs
Unexecuted instantiation: bitstream.c:set_ref_ptrs
Unexecuted instantiation: context_tree.c:set_ref_ptrs
Unexecuted instantiation: encodeframe.c:set_ref_ptrs
Unexecuted instantiation: encodeframe_utils.c:set_ref_ptrs
Unexecuted instantiation: encodemb.c:set_ref_ptrs
Unexecuted instantiation: encodemv.c:set_ref_ptrs
Unexecuted instantiation: encoder.c:set_ref_ptrs
Unexecuted instantiation: encoder_utils.c:set_ref_ptrs
Unexecuted instantiation: encodetxb.c:set_ref_ptrs
Unexecuted instantiation: ethread.c:set_ref_ptrs
Unexecuted instantiation: firstpass.c:set_ref_ptrs
Unexecuted instantiation: global_motion_facade.c:set_ref_ptrs
Unexecuted instantiation: level.c:set_ref_ptrs
Unexecuted instantiation: lookahead.c:set_ref_ptrs
Unexecuted instantiation: mcomp.c:set_ref_ptrs
Unexecuted instantiation: mv_prec.c:set_ref_ptrs
Unexecuted instantiation: palette.c:set_ref_ptrs
Unexecuted instantiation: partition_search.c:set_ref_ptrs
Unexecuted instantiation: partition_strategy.c:set_ref_ptrs
Unexecuted instantiation: pass2_strategy.c:set_ref_ptrs
Unexecuted instantiation: pickcdef.c:set_ref_ptrs
Unexecuted instantiation: picklpf.c:set_ref_ptrs
Unexecuted instantiation: pickrst.c:set_ref_ptrs
Unexecuted instantiation: ratectrl.c:set_ref_ptrs
Unexecuted instantiation: rd.c:set_ref_ptrs
Unexecuted instantiation: rdopt.c:set_ref_ptrs
Unexecuted instantiation: nonrd_pickmode.c:set_ref_ptrs
Unexecuted instantiation: nonrd_opt.c:set_ref_ptrs
Unexecuted instantiation: segmentation.c:set_ref_ptrs
Unexecuted instantiation: speed_features.c:set_ref_ptrs
Unexecuted instantiation: superres_scale.c:set_ref_ptrs
Unexecuted instantiation: svc_layercontext.c:set_ref_ptrs
Unexecuted instantiation: temporal_filter.c:set_ref_ptrs
Unexecuted instantiation: tokenize.c:set_ref_ptrs
Unexecuted instantiation: tpl_model.c:set_ref_ptrs
Unexecuted instantiation: tx_search.c:set_ref_ptrs
Unexecuted instantiation: txb_rdopt.c:set_ref_ptrs
Unexecuted instantiation: intra_mode_search.c:set_ref_ptrs
Unexecuted instantiation: var_based_part.c:set_ref_ptrs
Unexecuted instantiation: av1_noise_estimate.c:set_ref_ptrs
Unexecuted instantiation: aq_complexity.c:set_ref_ptrs
Unexecuted instantiation: aq_cyclicrefresh.c:set_ref_ptrs
Unexecuted instantiation: aq_variance.c:set_ref_ptrs
Unexecuted instantiation: compound_type.c:set_ref_ptrs
Unexecuted instantiation: encode_strategy.c:set_ref_ptrs
Unexecuted instantiation: global_motion.c:set_ref_ptrs
Unexecuted instantiation: gop_structure.c:set_ref_ptrs
Unexecuted instantiation: interp_search.c:set_ref_ptrs
Unexecuted instantiation: motion_search_facade.c:set_ref_ptrs
4198
4199
0
static inline int get_chessboard_index(int frame_index) {
4200
0
  return frame_index & 0x1;
4201
0
}
Unexecuted instantiation: av1_cx_iface.c:get_chessboard_index
Unexecuted instantiation: allintra_vis.c:get_chessboard_index
Unexecuted instantiation: av1_quantize.c:get_chessboard_index
Unexecuted instantiation: bitstream.c:get_chessboard_index
Unexecuted instantiation: context_tree.c:get_chessboard_index
Unexecuted instantiation: encodeframe.c:get_chessboard_index
Unexecuted instantiation: encodeframe_utils.c:get_chessboard_index
Unexecuted instantiation: encodemb.c:get_chessboard_index
Unexecuted instantiation: encodemv.c:get_chessboard_index
Unexecuted instantiation: encoder.c:get_chessboard_index
Unexecuted instantiation: encoder_utils.c:get_chessboard_index
Unexecuted instantiation: encodetxb.c:get_chessboard_index
Unexecuted instantiation: ethread.c:get_chessboard_index
Unexecuted instantiation: firstpass.c:get_chessboard_index
Unexecuted instantiation: global_motion_facade.c:get_chessboard_index
Unexecuted instantiation: level.c:get_chessboard_index
Unexecuted instantiation: lookahead.c:get_chessboard_index
Unexecuted instantiation: mcomp.c:get_chessboard_index
Unexecuted instantiation: mv_prec.c:get_chessboard_index
Unexecuted instantiation: palette.c:get_chessboard_index
Unexecuted instantiation: partition_search.c:get_chessboard_index
Unexecuted instantiation: partition_strategy.c:get_chessboard_index
Unexecuted instantiation: pass2_strategy.c:get_chessboard_index
Unexecuted instantiation: pickcdef.c:get_chessboard_index
Unexecuted instantiation: picklpf.c:get_chessboard_index
Unexecuted instantiation: pickrst.c:get_chessboard_index
Unexecuted instantiation: ratectrl.c:get_chessboard_index
Unexecuted instantiation: rd.c:get_chessboard_index
Unexecuted instantiation: rdopt.c:get_chessboard_index
Unexecuted instantiation: nonrd_pickmode.c:get_chessboard_index
Unexecuted instantiation: nonrd_opt.c:get_chessboard_index
Unexecuted instantiation: segmentation.c:get_chessboard_index
Unexecuted instantiation: speed_features.c:get_chessboard_index
Unexecuted instantiation: superres_scale.c:get_chessboard_index
Unexecuted instantiation: svc_layercontext.c:get_chessboard_index
Unexecuted instantiation: temporal_filter.c:get_chessboard_index
Unexecuted instantiation: tokenize.c:get_chessboard_index
Unexecuted instantiation: tpl_model.c:get_chessboard_index
Unexecuted instantiation: tx_search.c:get_chessboard_index
Unexecuted instantiation: txb_rdopt.c:get_chessboard_index
Unexecuted instantiation: intra_mode_search.c:get_chessboard_index
Unexecuted instantiation: var_based_part.c:get_chessboard_index
Unexecuted instantiation: av1_noise_estimate.c:get_chessboard_index
Unexecuted instantiation: aq_complexity.c:get_chessboard_index
Unexecuted instantiation: aq_cyclicrefresh.c:get_chessboard_index
Unexecuted instantiation: aq_variance.c:get_chessboard_index
Unexecuted instantiation: compound_type.c:get_chessboard_index
Unexecuted instantiation: encode_strategy.c:get_chessboard_index
Unexecuted instantiation: global_motion.c:get_chessboard_index
Unexecuted instantiation: gop_structure.c:get_chessboard_index
Unexecuted instantiation: interp_search.c:get_chessboard_index
Unexecuted instantiation: motion_search_facade.c:get_chessboard_index
4202
4203
static inline const int *cond_cost_list_const(const struct AV1_COMP *cpi,
4204
0
                                              const int *cost_list) {
4205
0
  const int use_cost_list = cpi->sf.mv_sf.subpel_search_method != SUBPEL_TREE &&
4206
0
                            cpi->sf.mv_sf.use_fullpel_costlist;
4207
0
  return use_cost_list ? cost_list : NULL;
4208
0
}
Unexecuted instantiation: av1_cx_iface.c:cond_cost_list_const
Unexecuted instantiation: allintra_vis.c:cond_cost_list_const
Unexecuted instantiation: av1_quantize.c:cond_cost_list_const
Unexecuted instantiation: bitstream.c:cond_cost_list_const
Unexecuted instantiation: context_tree.c:cond_cost_list_const
Unexecuted instantiation: encodeframe.c:cond_cost_list_const
Unexecuted instantiation: encodeframe_utils.c:cond_cost_list_const
Unexecuted instantiation: encodemb.c:cond_cost_list_const
Unexecuted instantiation: encodemv.c:cond_cost_list_const
Unexecuted instantiation: encoder.c:cond_cost_list_const
Unexecuted instantiation: encoder_utils.c:cond_cost_list_const
Unexecuted instantiation: encodetxb.c:cond_cost_list_const
Unexecuted instantiation: ethread.c:cond_cost_list_const
Unexecuted instantiation: firstpass.c:cond_cost_list_const
Unexecuted instantiation: global_motion_facade.c:cond_cost_list_const
Unexecuted instantiation: level.c:cond_cost_list_const
Unexecuted instantiation: lookahead.c:cond_cost_list_const
Unexecuted instantiation: mcomp.c:cond_cost_list_const
Unexecuted instantiation: mv_prec.c:cond_cost_list_const
Unexecuted instantiation: palette.c:cond_cost_list_const
Unexecuted instantiation: partition_search.c:cond_cost_list_const
Unexecuted instantiation: partition_strategy.c:cond_cost_list_const
Unexecuted instantiation: pass2_strategy.c:cond_cost_list_const
Unexecuted instantiation: pickcdef.c:cond_cost_list_const
Unexecuted instantiation: picklpf.c:cond_cost_list_const
Unexecuted instantiation: pickrst.c:cond_cost_list_const
Unexecuted instantiation: ratectrl.c:cond_cost_list_const
Unexecuted instantiation: rd.c:cond_cost_list_const
Unexecuted instantiation: rdopt.c:cond_cost_list_const
Unexecuted instantiation: nonrd_pickmode.c:cond_cost_list_const
Unexecuted instantiation: nonrd_opt.c:cond_cost_list_const
Unexecuted instantiation: segmentation.c:cond_cost_list_const
Unexecuted instantiation: speed_features.c:cond_cost_list_const
Unexecuted instantiation: superres_scale.c:cond_cost_list_const
Unexecuted instantiation: svc_layercontext.c:cond_cost_list_const
Unexecuted instantiation: temporal_filter.c:cond_cost_list_const
Unexecuted instantiation: tokenize.c:cond_cost_list_const
Unexecuted instantiation: tpl_model.c:cond_cost_list_const
Unexecuted instantiation: tx_search.c:cond_cost_list_const
Unexecuted instantiation: txb_rdopt.c:cond_cost_list_const
Unexecuted instantiation: intra_mode_search.c:cond_cost_list_const
Unexecuted instantiation: var_based_part.c:cond_cost_list_const
Unexecuted instantiation: av1_noise_estimate.c:cond_cost_list_const
Unexecuted instantiation: aq_complexity.c:cond_cost_list_const
Unexecuted instantiation: aq_cyclicrefresh.c:cond_cost_list_const
Unexecuted instantiation: aq_variance.c:cond_cost_list_const
Unexecuted instantiation: compound_type.c:cond_cost_list_const
Unexecuted instantiation: encode_strategy.c:cond_cost_list_const
Unexecuted instantiation: global_motion.c:cond_cost_list_const
Unexecuted instantiation: gop_structure.c:cond_cost_list_const
Unexecuted instantiation: interp_search.c:cond_cost_list_const
Unexecuted instantiation: motion_search_facade.c:cond_cost_list_const
4209
4210
0
static inline int *cond_cost_list(const struct AV1_COMP *cpi, int *cost_list) {
4211
0
  const int use_cost_list = cpi->sf.mv_sf.subpel_search_method != SUBPEL_TREE &&
4212
0
                            cpi->sf.mv_sf.use_fullpel_costlist;
4213
0
  return use_cost_list ? cost_list : NULL;
4214
0
}
Unexecuted instantiation: av1_cx_iface.c:cond_cost_list
Unexecuted instantiation: allintra_vis.c:cond_cost_list
Unexecuted instantiation: av1_quantize.c:cond_cost_list
Unexecuted instantiation: bitstream.c:cond_cost_list
Unexecuted instantiation: context_tree.c:cond_cost_list
Unexecuted instantiation: encodeframe.c:cond_cost_list
Unexecuted instantiation: encodeframe_utils.c:cond_cost_list
Unexecuted instantiation: encodemb.c:cond_cost_list
Unexecuted instantiation: encodemv.c:cond_cost_list
Unexecuted instantiation: encoder.c:cond_cost_list
Unexecuted instantiation: encoder_utils.c:cond_cost_list
Unexecuted instantiation: encodetxb.c:cond_cost_list
Unexecuted instantiation: ethread.c:cond_cost_list
Unexecuted instantiation: firstpass.c:cond_cost_list
Unexecuted instantiation: global_motion_facade.c:cond_cost_list
Unexecuted instantiation: level.c:cond_cost_list
Unexecuted instantiation: lookahead.c:cond_cost_list
Unexecuted instantiation: mcomp.c:cond_cost_list
Unexecuted instantiation: mv_prec.c:cond_cost_list
Unexecuted instantiation: palette.c:cond_cost_list
Unexecuted instantiation: partition_search.c:cond_cost_list
Unexecuted instantiation: partition_strategy.c:cond_cost_list
Unexecuted instantiation: pass2_strategy.c:cond_cost_list
Unexecuted instantiation: pickcdef.c:cond_cost_list
Unexecuted instantiation: picklpf.c:cond_cost_list
Unexecuted instantiation: pickrst.c:cond_cost_list
Unexecuted instantiation: ratectrl.c:cond_cost_list
Unexecuted instantiation: rd.c:cond_cost_list
Unexecuted instantiation: rdopt.c:cond_cost_list
Unexecuted instantiation: nonrd_pickmode.c:cond_cost_list
Unexecuted instantiation: nonrd_opt.c:cond_cost_list
Unexecuted instantiation: segmentation.c:cond_cost_list
Unexecuted instantiation: speed_features.c:cond_cost_list
Unexecuted instantiation: superres_scale.c:cond_cost_list
Unexecuted instantiation: svc_layercontext.c:cond_cost_list
Unexecuted instantiation: temporal_filter.c:cond_cost_list
Unexecuted instantiation: tokenize.c:cond_cost_list
Unexecuted instantiation: tpl_model.c:cond_cost_list
Unexecuted instantiation: tx_search.c:cond_cost_list
Unexecuted instantiation: txb_rdopt.c:cond_cost_list
Unexecuted instantiation: intra_mode_search.c:cond_cost_list
Unexecuted instantiation: var_based_part.c:cond_cost_list
Unexecuted instantiation: av1_noise_estimate.c:cond_cost_list
Unexecuted instantiation: aq_complexity.c:cond_cost_list
Unexecuted instantiation: aq_cyclicrefresh.c:cond_cost_list
Unexecuted instantiation: aq_variance.c:cond_cost_list
Unexecuted instantiation: compound_type.c:cond_cost_list
Unexecuted instantiation: encode_strategy.c:cond_cost_list
Unexecuted instantiation: global_motion.c:cond_cost_list
Unexecuted instantiation: gop_structure.c:cond_cost_list
Unexecuted instantiation: interp_search.c:cond_cost_list
Unexecuted instantiation: motion_search_facade.c:cond_cost_list
4215
4216
// Compression ratio of current frame.
4217
double av1_get_compression_ratio(const AV1_COMMON *const cm,
4218
                                 size_t encoded_frame_size);
4219
4220
void av1_new_framerate(AV1_COMP *cpi, double framerate);
4221
4222
void av1_setup_frame_size(AV1_COMP *cpi);
4223
4224
0
#define LAYER_IDS_TO_IDX(sl, tl, num_tl) ((sl) * (num_tl) + (tl))
4225
4226
// Returns 1 if a frame is scaled and 0 otherwise.
4227
0
static inline int av1_resize_scaled(const AV1_COMMON *cm) {
4228
0
  return cm->superres_upscaled_width != cm->render_width ||
4229
0
         cm->superres_upscaled_height != cm->render_height;
4230
0
}
Unexecuted instantiation: av1_cx_iface.c:av1_resize_scaled
Unexecuted instantiation: allintra_vis.c:av1_resize_scaled
Unexecuted instantiation: av1_quantize.c:av1_resize_scaled
Unexecuted instantiation: bitstream.c:av1_resize_scaled
Unexecuted instantiation: context_tree.c:av1_resize_scaled
Unexecuted instantiation: encodeframe.c:av1_resize_scaled
Unexecuted instantiation: encodeframe_utils.c:av1_resize_scaled
Unexecuted instantiation: encodemb.c:av1_resize_scaled
Unexecuted instantiation: encodemv.c:av1_resize_scaled
Unexecuted instantiation: encoder.c:av1_resize_scaled
Unexecuted instantiation: encoder_utils.c:av1_resize_scaled
Unexecuted instantiation: encodetxb.c:av1_resize_scaled
Unexecuted instantiation: ethread.c:av1_resize_scaled
Unexecuted instantiation: firstpass.c:av1_resize_scaled
Unexecuted instantiation: global_motion_facade.c:av1_resize_scaled
Unexecuted instantiation: level.c:av1_resize_scaled
Unexecuted instantiation: lookahead.c:av1_resize_scaled
Unexecuted instantiation: mcomp.c:av1_resize_scaled
Unexecuted instantiation: mv_prec.c:av1_resize_scaled
Unexecuted instantiation: palette.c:av1_resize_scaled
Unexecuted instantiation: partition_search.c:av1_resize_scaled
Unexecuted instantiation: partition_strategy.c:av1_resize_scaled
Unexecuted instantiation: pass2_strategy.c:av1_resize_scaled
Unexecuted instantiation: pickcdef.c:av1_resize_scaled
Unexecuted instantiation: picklpf.c:av1_resize_scaled
Unexecuted instantiation: pickrst.c:av1_resize_scaled
Unexecuted instantiation: ratectrl.c:av1_resize_scaled
Unexecuted instantiation: rd.c:av1_resize_scaled
Unexecuted instantiation: rdopt.c:av1_resize_scaled
Unexecuted instantiation: nonrd_pickmode.c:av1_resize_scaled
Unexecuted instantiation: nonrd_opt.c:av1_resize_scaled
Unexecuted instantiation: segmentation.c:av1_resize_scaled
Unexecuted instantiation: speed_features.c:av1_resize_scaled
Unexecuted instantiation: superres_scale.c:av1_resize_scaled
Unexecuted instantiation: svc_layercontext.c:av1_resize_scaled
Unexecuted instantiation: temporal_filter.c:av1_resize_scaled
Unexecuted instantiation: tokenize.c:av1_resize_scaled
Unexecuted instantiation: tpl_model.c:av1_resize_scaled
Unexecuted instantiation: tx_search.c:av1_resize_scaled
Unexecuted instantiation: txb_rdopt.c:av1_resize_scaled
Unexecuted instantiation: intra_mode_search.c:av1_resize_scaled
Unexecuted instantiation: var_based_part.c:av1_resize_scaled
Unexecuted instantiation: av1_noise_estimate.c:av1_resize_scaled
Unexecuted instantiation: aq_complexity.c:av1_resize_scaled
Unexecuted instantiation: aq_cyclicrefresh.c:av1_resize_scaled
Unexecuted instantiation: aq_variance.c:av1_resize_scaled
Unexecuted instantiation: compound_type.c:av1_resize_scaled
Unexecuted instantiation: encode_strategy.c:av1_resize_scaled
Unexecuted instantiation: global_motion.c:av1_resize_scaled
Unexecuted instantiation: gop_structure.c:av1_resize_scaled
Unexecuted instantiation: interp_search.c:av1_resize_scaled
Unexecuted instantiation: motion_search_facade.c:av1_resize_scaled
4231
4232
0
static inline int av1_frame_scaled(const AV1_COMMON *cm) {
4233
0
  return av1_superres_scaled(cm) || av1_resize_scaled(cm);
4234
0
}
Unexecuted instantiation: av1_cx_iface.c:av1_frame_scaled
Unexecuted instantiation: allintra_vis.c:av1_frame_scaled
Unexecuted instantiation: av1_quantize.c:av1_frame_scaled
Unexecuted instantiation: bitstream.c:av1_frame_scaled
Unexecuted instantiation: context_tree.c:av1_frame_scaled
Unexecuted instantiation: encodeframe.c:av1_frame_scaled
Unexecuted instantiation: encodeframe_utils.c:av1_frame_scaled
Unexecuted instantiation: encodemb.c:av1_frame_scaled
Unexecuted instantiation: encodemv.c:av1_frame_scaled
Unexecuted instantiation: encoder.c:av1_frame_scaled
Unexecuted instantiation: encoder_utils.c:av1_frame_scaled
Unexecuted instantiation: encodetxb.c:av1_frame_scaled
Unexecuted instantiation: ethread.c:av1_frame_scaled
Unexecuted instantiation: firstpass.c:av1_frame_scaled
Unexecuted instantiation: global_motion_facade.c:av1_frame_scaled
Unexecuted instantiation: level.c:av1_frame_scaled
Unexecuted instantiation: lookahead.c:av1_frame_scaled
Unexecuted instantiation: mcomp.c:av1_frame_scaled
Unexecuted instantiation: mv_prec.c:av1_frame_scaled
Unexecuted instantiation: palette.c:av1_frame_scaled
Unexecuted instantiation: partition_search.c:av1_frame_scaled
Unexecuted instantiation: partition_strategy.c:av1_frame_scaled
Unexecuted instantiation: pass2_strategy.c:av1_frame_scaled
Unexecuted instantiation: pickcdef.c:av1_frame_scaled
Unexecuted instantiation: picklpf.c:av1_frame_scaled
Unexecuted instantiation: pickrst.c:av1_frame_scaled
Unexecuted instantiation: ratectrl.c:av1_frame_scaled
Unexecuted instantiation: rd.c:av1_frame_scaled
Unexecuted instantiation: rdopt.c:av1_frame_scaled
Unexecuted instantiation: nonrd_pickmode.c:av1_frame_scaled
Unexecuted instantiation: nonrd_opt.c:av1_frame_scaled
Unexecuted instantiation: segmentation.c:av1_frame_scaled
Unexecuted instantiation: speed_features.c:av1_frame_scaled
Unexecuted instantiation: superres_scale.c:av1_frame_scaled
Unexecuted instantiation: svc_layercontext.c:av1_frame_scaled
Unexecuted instantiation: temporal_filter.c:av1_frame_scaled
Unexecuted instantiation: tokenize.c:av1_frame_scaled
Unexecuted instantiation: tpl_model.c:av1_frame_scaled
Unexecuted instantiation: tx_search.c:av1_frame_scaled
Unexecuted instantiation: txb_rdopt.c:av1_frame_scaled
Unexecuted instantiation: intra_mode_search.c:av1_frame_scaled
Unexecuted instantiation: var_based_part.c:av1_frame_scaled
Unexecuted instantiation: av1_noise_estimate.c:av1_frame_scaled
Unexecuted instantiation: aq_complexity.c:av1_frame_scaled
Unexecuted instantiation: aq_cyclicrefresh.c:av1_frame_scaled
Unexecuted instantiation: aq_variance.c:av1_frame_scaled
Unexecuted instantiation: compound_type.c:av1_frame_scaled
Unexecuted instantiation: encode_strategy.c:av1_frame_scaled
Unexecuted instantiation: global_motion.c:av1_frame_scaled
Unexecuted instantiation: gop_structure.c:av1_frame_scaled
Unexecuted instantiation: interp_search.c:av1_frame_scaled
Unexecuted instantiation: motion_search_facade.c:av1_frame_scaled
4235
4236
0
static inline bool av1_encode_for_extrc(AOM_EXT_RATECTRL const *ext_rc) {
4237
0
  return ext_rc->ready && (ext_rc->funcs.rc_type & AOM_RC_QP) != 0 &&
4238
0
         ext_rc->funcs.get_encodeframe_decision != NULL;
4239
0
}
Unexecuted instantiation: av1_cx_iface.c:av1_encode_for_extrc
Unexecuted instantiation: allintra_vis.c:av1_encode_for_extrc
Unexecuted instantiation: av1_quantize.c:av1_encode_for_extrc
Unexecuted instantiation: bitstream.c:av1_encode_for_extrc
Unexecuted instantiation: context_tree.c:av1_encode_for_extrc
Unexecuted instantiation: encodeframe.c:av1_encode_for_extrc
Unexecuted instantiation: encodeframe_utils.c:av1_encode_for_extrc
Unexecuted instantiation: encodemb.c:av1_encode_for_extrc
Unexecuted instantiation: encodemv.c:av1_encode_for_extrc
Unexecuted instantiation: encoder.c:av1_encode_for_extrc
Unexecuted instantiation: encoder_utils.c:av1_encode_for_extrc
Unexecuted instantiation: encodetxb.c:av1_encode_for_extrc
Unexecuted instantiation: ethread.c:av1_encode_for_extrc
Unexecuted instantiation: firstpass.c:av1_encode_for_extrc
Unexecuted instantiation: global_motion_facade.c:av1_encode_for_extrc
Unexecuted instantiation: level.c:av1_encode_for_extrc
Unexecuted instantiation: lookahead.c:av1_encode_for_extrc
Unexecuted instantiation: mcomp.c:av1_encode_for_extrc
Unexecuted instantiation: mv_prec.c:av1_encode_for_extrc
Unexecuted instantiation: palette.c:av1_encode_for_extrc
Unexecuted instantiation: partition_search.c:av1_encode_for_extrc
Unexecuted instantiation: partition_strategy.c:av1_encode_for_extrc
Unexecuted instantiation: pass2_strategy.c:av1_encode_for_extrc
Unexecuted instantiation: pickcdef.c:av1_encode_for_extrc
Unexecuted instantiation: picklpf.c:av1_encode_for_extrc
Unexecuted instantiation: pickrst.c:av1_encode_for_extrc
Unexecuted instantiation: ratectrl.c:av1_encode_for_extrc
Unexecuted instantiation: rd.c:av1_encode_for_extrc
Unexecuted instantiation: rdopt.c:av1_encode_for_extrc
Unexecuted instantiation: nonrd_pickmode.c:av1_encode_for_extrc
Unexecuted instantiation: nonrd_opt.c:av1_encode_for_extrc
Unexecuted instantiation: segmentation.c:av1_encode_for_extrc
Unexecuted instantiation: speed_features.c:av1_encode_for_extrc
Unexecuted instantiation: superres_scale.c:av1_encode_for_extrc
Unexecuted instantiation: svc_layercontext.c:av1_encode_for_extrc
Unexecuted instantiation: temporal_filter.c:av1_encode_for_extrc
Unexecuted instantiation: tokenize.c:av1_encode_for_extrc
Unexecuted instantiation: tpl_model.c:av1_encode_for_extrc
Unexecuted instantiation: tx_search.c:av1_encode_for_extrc
Unexecuted instantiation: txb_rdopt.c:av1_encode_for_extrc
Unexecuted instantiation: intra_mode_search.c:av1_encode_for_extrc
Unexecuted instantiation: var_based_part.c:av1_encode_for_extrc
Unexecuted instantiation: av1_noise_estimate.c:av1_encode_for_extrc
Unexecuted instantiation: aq_complexity.c:av1_encode_for_extrc
Unexecuted instantiation: aq_cyclicrefresh.c:av1_encode_for_extrc
Unexecuted instantiation: aq_variance.c:av1_encode_for_extrc
Unexecuted instantiation: compound_type.c:av1_encode_for_extrc
Unexecuted instantiation: encode_strategy.c:av1_encode_for_extrc
Unexecuted instantiation: global_motion.c:av1_encode_for_extrc
Unexecuted instantiation: gop_structure.c:av1_encode_for_extrc
Unexecuted instantiation: interp_search.c:av1_encode_for_extrc
Unexecuted instantiation: motion_search_facade.c:av1_encode_for_extrc
4240
4241
// Don't allow a show_existing_frame to coincide with an error resilient
4242
// frame. An exception can be made for a forward keyframe since it has no
4243
// previous dependencies.
4244
0
static inline int encode_show_existing_frame(const AV1_COMMON *cm) {
4245
0
  return cm->show_existing_frame && (!cm->features.error_resilient_mode ||
4246
0
                                     cm->current_frame.frame_type == KEY_FRAME);
4247
0
}
Unexecuted instantiation: av1_cx_iface.c:encode_show_existing_frame
Unexecuted instantiation: allintra_vis.c:encode_show_existing_frame
Unexecuted instantiation: av1_quantize.c:encode_show_existing_frame
Unexecuted instantiation: bitstream.c:encode_show_existing_frame
Unexecuted instantiation: context_tree.c:encode_show_existing_frame
Unexecuted instantiation: encodeframe.c:encode_show_existing_frame
Unexecuted instantiation: encodeframe_utils.c:encode_show_existing_frame
Unexecuted instantiation: encodemb.c:encode_show_existing_frame
Unexecuted instantiation: encodemv.c:encode_show_existing_frame
Unexecuted instantiation: encoder.c:encode_show_existing_frame
Unexecuted instantiation: encoder_utils.c:encode_show_existing_frame
Unexecuted instantiation: encodetxb.c:encode_show_existing_frame
Unexecuted instantiation: ethread.c:encode_show_existing_frame
Unexecuted instantiation: firstpass.c:encode_show_existing_frame
Unexecuted instantiation: global_motion_facade.c:encode_show_existing_frame
Unexecuted instantiation: level.c:encode_show_existing_frame
Unexecuted instantiation: lookahead.c:encode_show_existing_frame
Unexecuted instantiation: mcomp.c:encode_show_existing_frame
Unexecuted instantiation: mv_prec.c:encode_show_existing_frame
Unexecuted instantiation: palette.c:encode_show_existing_frame
Unexecuted instantiation: partition_search.c:encode_show_existing_frame
Unexecuted instantiation: partition_strategy.c:encode_show_existing_frame
Unexecuted instantiation: pass2_strategy.c:encode_show_existing_frame
Unexecuted instantiation: pickcdef.c:encode_show_existing_frame
Unexecuted instantiation: picklpf.c:encode_show_existing_frame
Unexecuted instantiation: pickrst.c:encode_show_existing_frame
Unexecuted instantiation: ratectrl.c:encode_show_existing_frame
Unexecuted instantiation: rd.c:encode_show_existing_frame
Unexecuted instantiation: rdopt.c:encode_show_existing_frame
Unexecuted instantiation: nonrd_pickmode.c:encode_show_existing_frame
Unexecuted instantiation: nonrd_opt.c:encode_show_existing_frame
Unexecuted instantiation: segmentation.c:encode_show_existing_frame
Unexecuted instantiation: speed_features.c:encode_show_existing_frame
Unexecuted instantiation: superres_scale.c:encode_show_existing_frame
Unexecuted instantiation: svc_layercontext.c:encode_show_existing_frame
Unexecuted instantiation: temporal_filter.c:encode_show_existing_frame
Unexecuted instantiation: tokenize.c:encode_show_existing_frame
Unexecuted instantiation: tpl_model.c:encode_show_existing_frame
Unexecuted instantiation: tx_search.c:encode_show_existing_frame
Unexecuted instantiation: txb_rdopt.c:encode_show_existing_frame
Unexecuted instantiation: intra_mode_search.c:encode_show_existing_frame
Unexecuted instantiation: var_based_part.c:encode_show_existing_frame
Unexecuted instantiation: av1_noise_estimate.c:encode_show_existing_frame
Unexecuted instantiation: aq_complexity.c:encode_show_existing_frame
Unexecuted instantiation: aq_cyclicrefresh.c:encode_show_existing_frame
Unexecuted instantiation: aq_variance.c:encode_show_existing_frame
Unexecuted instantiation: compound_type.c:encode_show_existing_frame
Unexecuted instantiation: encode_strategy.c:encode_show_existing_frame
Unexecuted instantiation: global_motion.c:encode_show_existing_frame
Unexecuted instantiation: gop_structure.c:encode_show_existing_frame
Unexecuted instantiation: interp_search.c:encode_show_existing_frame
Unexecuted instantiation: motion_search_facade.c:encode_show_existing_frame
4248
4249
// Get index into the 'cpi->mbmi_ext_info.frame_base' array for the given
4250
// 'mi_row' and 'mi_col'.
4251
static inline int get_mi_ext_idx(const int mi_row, const int mi_col,
4252
                                 const BLOCK_SIZE mi_alloc_bsize,
4253
0
                                 const int mbmi_ext_stride) {
4254
0
  const int mi_ext_size_1d = mi_size_wide[mi_alloc_bsize];
4255
0
  const int mi_ext_row = mi_row / mi_ext_size_1d;
4256
0
  const int mi_ext_col = mi_col / mi_ext_size_1d;
4257
0
  return mi_ext_row * mbmi_ext_stride + mi_ext_col;
4258
0
}
Unexecuted instantiation: av1_cx_iface.c:get_mi_ext_idx
Unexecuted instantiation: allintra_vis.c:get_mi_ext_idx
Unexecuted instantiation: av1_quantize.c:get_mi_ext_idx
Unexecuted instantiation: bitstream.c:get_mi_ext_idx
Unexecuted instantiation: context_tree.c:get_mi_ext_idx
Unexecuted instantiation: encodeframe.c:get_mi_ext_idx
Unexecuted instantiation: encodeframe_utils.c:get_mi_ext_idx
Unexecuted instantiation: encodemb.c:get_mi_ext_idx
Unexecuted instantiation: encodemv.c:get_mi_ext_idx
Unexecuted instantiation: encoder.c:get_mi_ext_idx
Unexecuted instantiation: encoder_utils.c:get_mi_ext_idx
Unexecuted instantiation: encodetxb.c:get_mi_ext_idx
Unexecuted instantiation: ethread.c:get_mi_ext_idx
Unexecuted instantiation: firstpass.c:get_mi_ext_idx
Unexecuted instantiation: global_motion_facade.c:get_mi_ext_idx
Unexecuted instantiation: level.c:get_mi_ext_idx
Unexecuted instantiation: lookahead.c:get_mi_ext_idx
Unexecuted instantiation: mcomp.c:get_mi_ext_idx
Unexecuted instantiation: mv_prec.c:get_mi_ext_idx
Unexecuted instantiation: palette.c:get_mi_ext_idx
Unexecuted instantiation: partition_search.c:get_mi_ext_idx
Unexecuted instantiation: partition_strategy.c:get_mi_ext_idx
Unexecuted instantiation: pass2_strategy.c:get_mi_ext_idx
Unexecuted instantiation: pickcdef.c:get_mi_ext_idx
Unexecuted instantiation: picklpf.c:get_mi_ext_idx
Unexecuted instantiation: pickrst.c:get_mi_ext_idx
Unexecuted instantiation: ratectrl.c:get_mi_ext_idx
Unexecuted instantiation: rd.c:get_mi_ext_idx
Unexecuted instantiation: rdopt.c:get_mi_ext_idx
Unexecuted instantiation: nonrd_pickmode.c:get_mi_ext_idx
Unexecuted instantiation: nonrd_opt.c:get_mi_ext_idx
Unexecuted instantiation: segmentation.c:get_mi_ext_idx
Unexecuted instantiation: speed_features.c:get_mi_ext_idx
Unexecuted instantiation: superres_scale.c:get_mi_ext_idx
Unexecuted instantiation: svc_layercontext.c:get_mi_ext_idx
Unexecuted instantiation: temporal_filter.c:get_mi_ext_idx
Unexecuted instantiation: tokenize.c:get_mi_ext_idx
Unexecuted instantiation: tpl_model.c:get_mi_ext_idx
Unexecuted instantiation: tx_search.c:get_mi_ext_idx
Unexecuted instantiation: txb_rdopt.c:get_mi_ext_idx
Unexecuted instantiation: intra_mode_search.c:get_mi_ext_idx
Unexecuted instantiation: var_based_part.c:get_mi_ext_idx
Unexecuted instantiation: av1_noise_estimate.c:get_mi_ext_idx
Unexecuted instantiation: aq_complexity.c:get_mi_ext_idx
Unexecuted instantiation: aq_cyclicrefresh.c:get_mi_ext_idx
Unexecuted instantiation: aq_variance.c:get_mi_ext_idx
Unexecuted instantiation: compound_type.c:get_mi_ext_idx
Unexecuted instantiation: encode_strategy.c:get_mi_ext_idx
Unexecuted instantiation: global_motion.c:get_mi_ext_idx
Unexecuted instantiation: gop_structure.c:get_mi_ext_idx
Unexecuted instantiation: interp_search.c:get_mi_ext_idx
Unexecuted instantiation: motion_search_facade.c:get_mi_ext_idx
4259
4260
// Lighter version of set_offsets that only sets the mode info
4261
// pointers.
4262
static inline void set_mode_info_offsets(
4263
    const CommonModeInfoParams *const mi_params,
4264
    const MBMIExtFrameBufferInfo *const mbmi_ext_info, MACROBLOCK *const x,
4265
0
    MACROBLOCKD *const xd, int mi_row, int mi_col) {
4266
0
  set_mi_offsets(mi_params, xd, mi_row, mi_col);
4267
0
  const int ext_idx = get_mi_ext_idx(mi_row, mi_col, mi_params->mi_alloc_bsize,
4268
0
                                     mbmi_ext_info->stride);
4269
0
  x->mbmi_ext_frame = mbmi_ext_info->frame_base + ext_idx;
4270
0
}
Unexecuted instantiation: av1_cx_iface.c:set_mode_info_offsets
Unexecuted instantiation: allintra_vis.c:set_mode_info_offsets
Unexecuted instantiation: av1_quantize.c:set_mode_info_offsets
Unexecuted instantiation: bitstream.c:set_mode_info_offsets
Unexecuted instantiation: context_tree.c:set_mode_info_offsets
Unexecuted instantiation: encodeframe.c:set_mode_info_offsets
Unexecuted instantiation: encodeframe_utils.c:set_mode_info_offsets
Unexecuted instantiation: encodemb.c:set_mode_info_offsets
Unexecuted instantiation: encodemv.c:set_mode_info_offsets
Unexecuted instantiation: encoder.c:set_mode_info_offsets
Unexecuted instantiation: encoder_utils.c:set_mode_info_offsets
Unexecuted instantiation: encodetxb.c:set_mode_info_offsets
Unexecuted instantiation: ethread.c:set_mode_info_offsets
Unexecuted instantiation: firstpass.c:set_mode_info_offsets
Unexecuted instantiation: global_motion_facade.c:set_mode_info_offsets
Unexecuted instantiation: level.c:set_mode_info_offsets
Unexecuted instantiation: lookahead.c:set_mode_info_offsets
Unexecuted instantiation: mcomp.c:set_mode_info_offsets
Unexecuted instantiation: mv_prec.c:set_mode_info_offsets
Unexecuted instantiation: palette.c:set_mode_info_offsets
Unexecuted instantiation: partition_search.c:set_mode_info_offsets
Unexecuted instantiation: partition_strategy.c:set_mode_info_offsets
Unexecuted instantiation: pass2_strategy.c:set_mode_info_offsets
Unexecuted instantiation: pickcdef.c:set_mode_info_offsets
Unexecuted instantiation: picklpf.c:set_mode_info_offsets
Unexecuted instantiation: pickrst.c:set_mode_info_offsets
Unexecuted instantiation: ratectrl.c:set_mode_info_offsets
Unexecuted instantiation: rd.c:set_mode_info_offsets
Unexecuted instantiation: rdopt.c:set_mode_info_offsets
Unexecuted instantiation: nonrd_pickmode.c:set_mode_info_offsets
Unexecuted instantiation: nonrd_opt.c:set_mode_info_offsets
Unexecuted instantiation: segmentation.c:set_mode_info_offsets
Unexecuted instantiation: speed_features.c:set_mode_info_offsets
Unexecuted instantiation: superres_scale.c:set_mode_info_offsets
Unexecuted instantiation: svc_layercontext.c:set_mode_info_offsets
Unexecuted instantiation: temporal_filter.c:set_mode_info_offsets
Unexecuted instantiation: tokenize.c:set_mode_info_offsets
Unexecuted instantiation: tpl_model.c:set_mode_info_offsets
Unexecuted instantiation: tx_search.c:set_mode_info_offsets
Unexecuted instantiation: txb_rdopt.c:set_mode_info_offsets
Unexecuted instantiation: intra_mode_search.c:set_mode_info_offsets
Unexecuted instantiation: var_based_part.c:set_mode_info_offsets
Unexecuted instantiation: av1_noise_estimate.c:set_mode_info_offsets
Unexecuted instantiation: aq_complexity.c:set_mode_info_offsets
Unexecuted instantiation: aq_cyclicrefresh.c:set_mode_info_offsets
Unexecuted instantiation: aq_variance.c:set_mode_info_offsets
Unexecuted instantiation: compound_type.c:set_mode_info_offsets
Unexecuted instantiation: encode_strategy.c:set_mode_info_offsets
Unexecuted instantiation: global_motion.c:set_mode_info_offsets
Unexecuted instantiation: gop_structure.c:set_mode_info_offsets
Unexecuted instantiation: interp_search.c:set_mode_info_offsets
Unexecuted instantiation: motion_search_facade.c:set_mode_info_offsets
4271
4272
// Check to see if the given partition size is allowed for a specified number
4273
// of mi block rows and columns remaining in the image.
4274
// If not then return the largest allowed partition size
4275
static inline BLOCK_SIZE find_partition_size(BLOCK_SIZE bsize, int rows_left,
4276
0
                                             int cols_left, int *bh, int *bw) {
4277
0
  int int_size = (int)bsize;
4278
0
  if (rows_left <= 0 || cols_left <= 0) {
4279
0
    return AOMMIN(bsize, BLOCK_8X8);
4280
0
  } else {
4281
0
    for (; int_size > 0; int_size -= 3) {
4282
0
      *bh = mi_size_high[int_size];
4283
0
      *bw = mi_size_wide[int_size];
4284
0
      if ((*bh <= rows_left) && (*bw <= cols_left)) {
4285
0
        break;
4286
0
      }
4287
0
    }
4288
0
  }
4289
0
  return (BLOCK_SIZE)int_size;
4290
0
}
Unexecuted instantiation: av1_cx_iface.c:find_partition_size
Unexecuted instantiation: allintra_vis.c:find_partition_size
Unexecuted instantiation: av1_quantize.c:find_partition_size
Unexecuted instantiation: bitstream.c:find_partition_size
Unexecuted instantiation: context_tree.c:find_partition_size
Unexecuted instantiation: encodeframe.c:find_partition_size
Unexecuted instantiation: encodeframe_utils.c:find_partition_size
Unexecuted instantiation: encodemb.c:find_partition_size
Unexecuted instantiation: encodemv.c:find_partition_size
Unexecuted instantiation: encoder.c:find_partition_size
Unexecuted instantiation: encoder_utils.c:find_partition_size
Unexecuted instantiation: encodetxb.c:find_partition_size
Unexecuted instantiation: ethread.c:find_partition_size
Unexecuted instantiation: firstpass.c:find_partition_size
Unexecuted instantiation: global_motion_facade.c:find_partition_size
Unexecuted instantiation: level.c:find_partition_size
Unexecuted instantiation: lookahead.c:find_partition_size
Unexecuted instantiation: mcomp.c:find_partition_size
Unexecuted instantiation: mv_prec.c:find_partition_size
Unexecuted instantiation: palette.c:find_partition_size
Unexecuted instantiation: partition_search.c:find_partition_size
Unexecuted instantiation: partition_strategy.c:find_partition_size
Unexecuted instantiation: pass2_strategy.c:find_partition_size
Unexecuted instantiation: pickcdef.c:find_partition_size
Unexecuted instantiation: picklpf.c:find_partition_size
Unexecuted instantiation: pickrst.c:find_partition_size
Unexecuted instantiation: ratectrl.c:find_partition_size
Unexecuted instantiation: rd.c:find_partition_size
Unexecuted instantiation: rdopt.c:find_partition_size
Unexecuted instantiation: nonrd_pickmode.c:find_partition_size
Unexecuted instantiation: nonrd_opt.c:find_partition_size
Unexecuted instantiation: segmentation.c:find_partition_size
Unexecuted instantiation: speed_features.c:find_partition_size
Unexecuted instantiation: superres_scale.c:find_partition_size
Unexecuted instantiation: svc_layercontext.c:find_partition_size
Unexecuted instantiation: temporal_filter.c:find_partition_size
Unexecuted instantiation: tokenize.c:find_partition_size
Unexecuted instantiation: tpl_model.c:find_partition_size
Unexecuted instantiation: tx_search.c:find_partition_size
Unexecuted instantiation: txb_rdopt.c:find_partition_size
Unexecuted instantiation: intra_mode_search.c:find_partition_size
Unexecuted instantiation: var_based_part.c:find_partition_size
Unexecuted instantiation: av1_noise_estimate.c:find_partition_size
Unexecuted instantiation: aq_complexity.c:find_partition_size
Unexecuted instantiation: aq_cyclicrefresh.c:find_partition_size
Unexecuted instantiation: aq_variance.c:find_partition_size
Unexecuted instantiation: compound_type.c:find_partition_size
Unexecuted instantiation: encode_strategy.c:find_partition_size
Unexecuted instantiation: global_motion.c:find_partition_size
Unexecuted instantiation: gop_structure.c:find_partition_size
Unexecuted instantiation: interp_search.c:find_partition_size
Unexecuted instantiation: motion_search_facade.c:find_partition_size
4291
4292
static const uint8_t av1_ref_frame_flag_list[REF_FRAMES] = { 0,
4293
                                                             AOM_LAST_FLAG,
4294
                                                             AOM_LAST2_FLAG,
4295
                                                             AOM_LAST3_FLAG,
4296
                                                             AOM_GOLD_FLAG,
4297
                                                             AOM_BWD_FLAG,
4298
                                                             AOM_ALT2_FLAG,
4299
                                                             AOM_ALT_FLAG };
4300
4301
// When more than 'max_allowed_refs' are available, we reduce the number of
4302
// reference frames one at a time based on this order.
4303
static const MV_REFERENCE_FRAME disable_order[] = {
4304
  LAST3_FRAME,
4305
  LAST2_FRAME,
4306
  ALTREF2_FRAME,
4307
  BWDREF_FRAME,
4308
};
4309
4310
static const MV_REFERENCE_FRAME
4311
    ref_frame_priority_order[INTER_REFS_PER_FRAME] = {
4312
      LAST_FRAME,    ALTREF_FRAME, BWDREF_FRAME, GOLDEN_FRAME,
4313
      ALTREF2_FRAME, LAST2_FRAME,  LAST3_FRAME,
4314
    };
4315
4316
static inline int get_ref_frame_flags(const SPEED_FEATURES *const sf,
4317
                                      const int use_one_pass_rt_params,
4318
                                      const YV12_BUFFER_CONFIG **ref_frames,
4319
0
                                      const int ext_ref_frame_flags) {
4320
  // cpi->ext_flags.ref_frame_flags allows certain reference types to be
4321
  // disabled by the external interface.  These are set by
4322
  // av1_apply_encoding_flags(). Start with what the external interface allows,
4323
  // then suppress any reference types which we have found to be duplicates.
4324
0
  int flags = ext_ref_frame_flags;
4325
4326
0
  for (int i = 1; i < INTER_REFS_PER_FRAME; ++i) {
4327
0
    const YV12_BUFFER_CONFIG *const this_ref = ref_frames[i];
4328
    // If this_ref has appeared before, mark the corresponding ref frame as
4329
    // invalid. For one_pass_rt mode, only disable GOLDEN_FRAME if it's the
4330
    // same as LAST_FRAME or ALTREF_FRAME (if ALTREF is being used in nonrd).
4331
0
    int index =
4332
0
        (use_one_pass_rt_params && ref_frame_priority_order[i] == GOLDEN_FRAME)
4333
0
            ? (1 + sf->rt_sf.use_nonrd_altref_frame)
4334
0
            : i;
4335
0
    for (int j = 0; j < index; ++j) {
4336
      // If this_ref has appeared before (same as the reference corresponding
4337
      // to lower index j), remove it as a reference only if that reference
4338
      // (for index j) is actually used as a reference.
4339
0
      if (this_ref == ref_frames[j] &&
4340
0
          (flags & (1 << (ref_frame_priority_order[j] - 1)))) {
4341
0
        flags &= ~(1 << (ref_frame_priority_order[i] - 1));
4342
0
        break;
4343
0
      }
4344
0
    }
4345
0
  }
4346
0
  return flags;
4347
0
}
Unexecuted instantiation: av1_cx_iface.c:get_ref_frame_flags
Unexecuted instantiation: allintra_vis.c:get_ref_frame_flags
Unexecuted instantiation: av1_quantize.c:get_ref_frame_flags
Unexecuted instantiation: bitstream.c:get_ref_frame_flags
Unexecuted instantiation: context_tree.c:get_ref_frame_flags
Unexecuted instantiation: encodeframe.c:get_ref_frame_flags
Unexecuted instantiation: encodeframe_utils.c:get_ref_frame_flags
Unexecuted instantiation: encodemb.c:get_ref_frame_flags
Unexecuted instantiation: encodemv.c:get_ref_frame_flags
Unexecuted instantiation: encoder.c:get_ref_frame_flags
Unexecuted instantiation: encoder_utils.c:get_ref_frame_flags
Unexecuted instantiation: encodetxb.c:get_ref_frame_flags
Unexecuted instantiation: ethread.c:get_ref_frame_flags
Unexecuted instantiation: firstpass.c:get_ref_frame_flags
Unexecuted instantiation: global_motion_facade.c:get_ref_frame_flags
Unexecuted instantiation: level.c:get_ref_frame_flags
Unexecuted instantiation: lookahead.c:get_ref_frame_flags
Unexecuted instantiation: mcomp.c:get_ref_frame_flags
Unexecuted instantiation: mv_prec.c:get_ref_frame_flags
Unexecuted instantiation: palette.c:get_ref_frame_flags
Unexecuted instantiation: partition_search.c:get_ref_frame_flags
Unexecuted instantiation: partition_strategy.c:get_ref_frame_flags
Unexecuted instantiation: pass2_strategy.c:get_ref_frame_flags
Unexecuted instantiation: pickcdef.c:get_ref_frame_flags
Unexecuted instantiation: picklpf.c:get_ref_frame_flags
Unexecuted instantiation: pickrst.c:get_ref_frame_flags
Unexecuted instantiation: ratectrl.c:get_ref_frame_flags
Unexecuted instantiation: rd.c:get_ref_frame_flags
Unexecuted instantiation: rdopt.c:get_ref_frame_flags
Unexecuted instantiation: nonrd_pickmode.c:get_ref_frame_flags
Unexecuted instantiation: nonrd_opt.c:get_ref_frame_flags
Unexecuted instantiation: segmentation.c:get_ref_frame_flags
Unexecuted instantiation: speed_features.c:get_ref_frame_flags
Unexecuted instantiation: superres_scale.c:get_ref_frame_flags
Unexecuted instantiation: svc_layercontext.c:get_ref_frame_flags
Unexecuted instantiation: temporal_filter.c:get_ref_frame_flags
Unexecuted instantiation: tokenize.c:get_ref_frame_flags
Unexecuted instantiation: tpl_model.c:get_ref_frame_flags
Unexecuted instantiation: tx_search.c:get_ref_frame_flags
Unexecuted instantiation: txb_rdopt.c:get_ref_frame_flags
Unexecuted instantiation: intra_mode_search.c:get_ref_frame_flags
Unexecuted instantiation: var_based_part.c:get_ref_frame_flags
Unexecuted instantiation: av1_noise_estimate.c:get_ref_frame_flags
Unexecuted instantiation: aq_complexity.c:get_ref_frame_flags
Unexecuted instantiation: aq_cyclicrefresh.c:get_ref_frame_flags
Unexecuted instantiation: aq_variance.c:get_ref_frame_flags
Unexecuted instantiation: compound_type.c:get_ref_frame_flags
Unexecuted instantiation: encode_strategy.c:get_ref_frame_flags
Unexecuted instantiation: global_motion.c:get_ref_frame_flags
Unexecuted instantiation: gop_structure.c:get_ref_frame_flags
Unexecuted instantiation: interp_search.c:get_ref_frame_flags
Unexecuted instantiation: motion_search_facade.c:get_ref_frame_flags
4348
4349
// Returns a Sequence Header OBU stored in an aom_fixed_buf_t, or NULL upon
4350
// failure. When a non-NULL aom_fixed_buf_t pointer is returned by this
4351
// function, the memory must be freed by the caller. Both the buf member of the
4352
// aom_fixed_buf_t, and the aom_fixed_buf_t pointer itself must be freed. Memory
4353
// returned must be freed via call to free().
4354
//
4355
// Note: The OBU returned is in Low Overhead Bitstream Format. Specifically,
4356
// the obu_has_size_field bit is set, and the buffer contains the obu_size
4357
// field.
4358
aom_fixed_buf_t *av1_get_global_headers(AV1_PRIMARY *ppi);
4359
4360
0
#define MAX_GFUBOOST_FACTOR 10.0
4361
#define MIN_GFUBOOST_FACTOR 4.0
4362
4363
static inline int is_frame_tpl_eligible(const GF_GROUP *const gf_group,
4364
0
                                        uint8_t index) {
4365
0
  const FRAME_UPDATE_TYPE update_type = gf_group->update_type[index];
4366
0
  return update_type == ARF_UPDATE || update_type == GF_UPDATE ||
4367
0
         update_type == KF_UPDATE;
4368
0
}
Unexecuted instantiation: av1_cx_iface.c:is_frame_tpl_eligible
Unexecuted instantiation: allintra_vis.c:is_frame_tpl_eligible
Unexecuted instantiation: av1_quantize.c:is_frame_tpl_eligible
Unexecuted instantiation: bitstream.c:is_frame_tpl_eligible
Unexecuted instantiation: context_tree.c:is_frame_tpl_eligible
Unexecuted instantiation: encodeframe.c:is_frame_tpl_eligible
Unexecuted instantiation: encodeframe_utils.c:is_frame_tpl_eligible
Unexecuted instantiation: encodemb.c:is_frame_tpl_eligible
Unexecuted instantiation: encodemv.c:is_frame_tpl_eligible
Unexecuted instantiation: encoder.c:is_frame_tpl_eligible
Unexecuted instantiation: encoder_utils.c:is_frame_tpl_eligible
Unexecuted instantiation: encodetxb.c:is_frame_tpl_eligible
Unexecuted instantiation: ethread.c:is_frame_tpl_eligible
Unexecuted instantiation: firstpass.c:is_frame_tpl_eligible
Unexecuted instantiation: global_motion_facade.c:is_frame_tpl_eligible
Unexecuted instantiation: level.c:is_frame_tpl_eligible
Unexecuted instantiation: lookahead.c:is_frame_tpl_eligible
Unexecuted instantiation: mcomp.c:is_frame_tpl_eligible
Unexecuted instantiation: mv_prec.c:is_frame_tpl_eligible
Unexecuted instantiation: palette.c:is_frame_tpl_eligible
Unexecuted instantiation: partition_search.c:is_frame_tpl_eligible
Unexecuted instantiation: partition_strategy.c:is_frame_tpl_eligible
Unexecuted instantiation: pass2_strategy.c:is_frame_tpl_eligible
Unexecuted instantiation: pickcdef.c:is_frame_tpl_eligible
Unexecuted instantiation: picklpf.c:is_frame_tpl_eligible
Unexecuted instantiation: pickrst.c:is_frame_tpl_eligible
Unexecuted instantiation: ratectrl.c:is_frame_tpl_eligible
Unexecuted instantiation: rd.c:is_frame_tpl_eligible
Unexecuted instantiation: rdopt.c:is_frame_tpl_eligible
Unexecuted instantiation: nonrd_pickmode.c:is_frame_tpl_eligible
Unexecuted instantiation: nonrd_opt.c:is_frame_tpl_eligible
Unexecuted instantiation: segmentation.c:is_frame_tpl_eligible
Unexecuted instantiation: speed_features.c:is_frame_tpl_eligible
Unexecuted instantiation: superres_scale.c:is_frame_tpl_eligible
Unexecuted instantiation: svc_layercontext.c:is_frame_tpl_eligible
Unexecuted instantiation: temporal_filter.c:is_frame_tpl_eligible
Unexecuted instantiation: tokenize.c:is_frame_tpl_eligible
Unexecuted instantiation: tpl_model.c:is_frame_tpl_eligible
Unexecuted instantiation: tx_search.c:is_frame_tpl_eligible
Unexecuted instantiation: txb_rdopt.c:is_frame_tpl_eligible
Unexecuted instantiation: intra_mode_search.c:is_frame_tpl_eligible
Unexecuted instantiation: var_based_part.c:is_frame_tpl_eligible
Unexecuted instantiation: av1_noise_estimate.c:is_frame_tpl_eligible
Unexecuted instantiation: aq_complexity.c:is_frame_tpl_eligible
Unexecuted instantiation: aq_cyclicrefresh.c:is_frame_tpl_eligible
Unexecuted instantiation: aq_variance.c:is_frame_tpl_eligible
Unexecuted instantiation: compound_type.c:is_frame_tpl_eligible
Unexecuted instantiation: encode_strategy.c:is_frame_tpl_eligible
Unexecuted instantiation: global_motion.c:is_frame_tpl_eligible
Unexecuted instantiation: gop_structure.c:is_frame_tpl_eligible
Unexecuted instantiation: interp_search.c:is_frame_tpl_eligible
Unexecuted instantiation: motion_search_facade.c:is_frame_tpl_eligible
4369
4370
static inline int is_frame_eligible_for_ref_pruning(const GF_GROUP *gf_group,
4371
                                                    int selective_ref_frame,
4372
                                                    int prune_ref_frames,
4373
0
                                                    int gf_index) {
4374
0
  return (selective_ref_frame > 0) && (prune_ref_frames > 0) &&
4375
0
         !is_frame_tpl_eligible(gf_group, gf_index);
4376
0
}
Unexecuted instantiation: av1_cx_iface.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: allintra_vis.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: av1_quantize.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: bitstream.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: context_tree.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: encodeframe.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: encodeframe_utils.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: encodemb.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: encodemv.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: encoder.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: encoder_utils.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: encodetxb.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: ethread.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: firstpass.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: global_motion_facade.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: level.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: lookahead.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: mcomp.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: mv_prec.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: palette.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: partition_search.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: partition_strategy.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: pass2_strategy.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: pickcdef.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: picklpf.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: pickrst.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: ratectrl.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: rd.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: rdopt.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: nonrd_pickmode.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: nonrd_opt.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: segmentation.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: speed_features.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: superres_scale.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: svc_layercontext.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: temporal_filter.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: tokenize.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: tpl_model.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: tx_search.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: txb_rdopt.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: intra_mode_search.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: var_based_part.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: av1_noise_estimate.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: aq_complexity.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: aq_cyclicrefresh.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: aq_variance.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: compound_type.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: encode_strategy.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: global_motion.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: gop_structure.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: interp_search.c:is_frame_eligible_for_ref_pruning
Unexecuted instantiation: motion_search_facade.c:is_frame_eligible_for_ref_pruning
4377
4378
// Get update type of the current frame.
4379
static inline FRAME_UPDATE_TYPE get_frame_update_type(const GF_GROUP *gf_group,
4380
0
                                                      int gf_frame_index) {
4381
0
  return gf_group->update_type[gf_frame_index];
4382
0
}
Unexecuted instantiation: av1_cx_iface.c:get_frame_update_type
Unexecuted instantiation: allintra_vis.c:get_frame_update_type
Unexecuted instantiation: av1_quantize.c:get_frame_update_type
Unexecuted instantiation: bitstream.c:get_frame_update_type
Unexecuted instantiation: context_tree.c:get_frame_update_type
Unexecuted instantiation: encodeframe.c:get_frame_update_type
Unexecuted instantiation: encodeframe_utils.c:get_frame_update_type
Unexecuted instantiation: encodemb.c:get_frame_update_type
Unexecuted instantiation: encodemv.c:get_frame_update_type
Unexecuted instantiation: encoder.c:get_frame_update_type
Unexecuted instantiation: encoder_utils.c:get_frame_update_type
Unexecuted instantiation: encodetxb.c:get_frame_update_type
Unexecuted instantiation: ethread.c:get_frame_update_type
Unexecuted instantiation: firstpass.c:get_frame_update_type
Unexecuted instantiation: global_motion_facade.c:get_frame_update_type
Unexecuted instantiation: level.c:get_frame_update_type
Unexecuted instantiation: lookahead.c:get_frame_update_type
Unexecuted instantiation: mcomp.c:get_frame_update_type
Unexecuted instantiation: mv_prec.c:get_frame_update_type
Unexecuted instantiation: palette.c:get_frame_update_type
Unexecuted instantiation: partition_search.c:get_frame_update_type
Unexecuted instantiation: partition_strategy.c:get_frame_update_type
Unexecuted instantiation: pass2_strategy.c:get_frame_update_type
Unexecuted instantiation: pickcdef.c:get_frame_update_type
Unexecuted instantiation: picklpf.c:get_frame_update_type
Unexecuted instantiation: pickrst.c:get_frame_update_type
Unexecuted instantiation: ratectrl.c:get_frame_update_type
Unexecuted instantiation: rd.c:get_frame_update_type
Unexecuted instantiation: rdopt.c:get_frame_update_type
Unexecuted instantiation: nonrd_pickmode.c:get_frame_update_type
Unexecuted instantiation: nonrd_opt.c:get_frame_update_type
Unexecuted instantiation: segmentation.c:get_frame_update_type
Unexecuted instantiation: speed_features.c:get_frame_update_type
Unexecuted instantiation: superres_scale.c:get_frame_update_type
Unexecuted instantiation: svc_layercontext.c:get_frame_update_type
Unexecuted instantiation: temporal_filter.c:get_frame_update_type
Unexecuted instantiation: tokenize.c:get_frame_update_type
Unexecuted instantiation: tpl_model.c:get_frame_update_type
Unexecuted instantiation: tx_search.c:get_frame_update_type
Unexecuted instantiation: txb_rdopt.c:get_frame_update_type
Unexecuted instantiation: intra_mode_search.c:get_frame_update_type
Unexecuted instantiation: var_based_part.c:get_frame_update_type
Unexecuted instantiation: av1_noise_estimate.c:get_frame_update_type
Unexecuted instantiation: aq_complexity.c:get_frame_update_type
Unexecuted instantiation: aq_cyclicrefresh.c:get_frame_update_type
Unexecuted instantiation: aq_variance.c:get_frame_update_type
Unexecuted instantiation: compound_type.c:get_frame_update_type
Unexecuted instantiation: encode_strategy.c:get_frame_update_type
Unexecuted instantiation: global_motion.c:get_frame_update_type
Unexecuted instantiation: gop_structure.c:get_frame_update_type
Unexecuted instantiation: interp_search.c:get_frame_update_type
Unexecuted instantiation: motion_search_facade.c:get_frame_update_type
4383
4384
0
static inline int av1_pixels_to_mi(int pixels) {
4385
0
  return ALIGN_POWER_OF_TWO(pixels, 3) >> MI_SIZE_LOG2;
4386
0
}
Unexecuted instantiation: av1_cx_iface.c:av1_pixels_to_mi
Unexecuted instantiation: allintra_vis.c:av1_pixels_to_mi
Unexecuted instantiation: av1_quantize.c:av1_pixels_to_mi
Unexecuted instantiation: bitstream.c:av1_pixels_to_mi
Unexecuted instantiation: context_tree.c:av1_pixels_to_mi
Unexecuted instantiation: encodeframe.c:av1_pixels_to_mi
Unexecuted instantiation: encodeframe_utils.c:av1_pixels_to_mi
Unexecuted instantiation: encodemb.c:av1_pixels_to_mi
Unexecuted instantiation: encodemv.c:av1_pixels_to_mi
Unexecuted instantiation: encoder.c:av1_pixels_to_mi
Unexecuted instantiation: encoder_utils.c:av1_pixels_to_mi
Unexecuted instantiation: encodetxb.c:av1_pixels_to_mi
Unexecuted instantiation: ethread.c:av1_pixels_to_mi
Unexecuted instantiation: firstpass.c:av1_pixels_to_mi
Unexecuted instantiation: global_motion_facade.c:av1_pixels_to_mi
Unexecuted instantiation: level.c:av1_pixels_to_mi
Unexecuted instantiation: lookahead.c:av1_pixels_to_mi
Unexecuted instantiation: mcomp.c:av1_pixels_to_mi
Unexecuted instantiation: mv_prec.c:av1_pixels_to_mi
Unexecuted instantiation: palette.c:av1_pixels_to_mi
Unexecuted instantiation: partition_search.c:av1_pixels_to_mi
Unexecuted instantiation: partition_strategy.c:av1_pixels_to_mi
Unexecuted instantiation: pass2_strategy.c:av1_pixels_to_mi
Unexecuted instantiation: pickcdef.c:av1_pixels_to_mi
Unexecuted instantiation: picklpf.c:av1_pixels_to_mi
Unexecuted instantiation: pickrst.c:av1_pixels_to_mi
Unexecuted instantiation: ratectrl.c:av1_pixels_to_mi
Unexecuted instantiation: rd.c:av1_pixels_to_mi
Unexecuted instantiation: rdopt.c:av1_pixels_to_mi
Unexecuted instantiation: nonrd_pickmode.c:av1_pixels_to_mi
Unexecuted instantiation: nonrd_opt.c:av1_pixels_to_mi
Unexecuted instantiation: segmentation.c:av1_pixels_to_mi
Unexecuted instantiation: speed_features.c:av1_pixels_to_mi
Unexecuted instantiation: superres_scale.c:av1_pixels_to_mi
Unexecuted instantiation: svc_layercontext.c:av1_pixels_to_mi
Unexecuted instantiation: temporal_filter.c:av1_pixels_to_mi
Unexecuted instantiation: tokenize.c:av1_pixels_to_mi
Unexecuted instantiation: tpl_model.c:av1_pixels_to_mi
Unexecuted instantiation: tx_search.c:av1_pixels_to_mi
Unexecuted instantiation: txb_rdopt.c:av1_pixels_to_mi
Unexecuted instantiation: intra_mode_search.c:av1_pixels_to_mi
Unexecuted instantiation: var_based_part.c:av1_pixels_to_mi
Unexecuted instantiation: av1_noise_estimate.c:av1_pixels_to_mi
Unexecuted instantiation: aq_complexity.c:av1_pixels_to_mi
Unexecuted instantiation: aq_cyclicrefresh.c:av1_pixels_to_mi
Unexecuted instantiation: aq_variance.c:av1_pixels_to_mi
Unexecuted instantiation: compound_type.c:av1_pixels_to_mi
Unexecuted instantiation: encode_strategy.c:av1_pixels_to_mi
Unexecuted instantiation: global_motion.c:av1_pixels_to_mi
Unexecuted instantiation: gop_structure.c:av1_pixels_to_mi
Unexecuted instantiation: interp_search.c:av1_pixels_to_mi
Unexecuted instantiation: motion_search_facade.c:av1_pixels_to_mi
4387
4388
0
static inline int is_psnr_calc_enabled(const AV1_COMP *cpi) {
4389
0
  const AV1_COMMON *const cm = &cpi->common;
4390
4391
0
  return cpi->ppi->b_calculate_psnr && !is_stat_generation_stage(cpi) &&
4392
0
         cm->show_frame && !cpi->is_dropped_frame;
4393
0
}
Unexecuted instantiation: av1_cx_iface.c:is_psnr_calc_enabled
Unexecuted instantiation: allintra_vis.c:is_psnr_calc_enabled
Unexecuted instantiation: av1_quantize.c:is_psnr_calc_enabled
Unexecuted instantiation: bitstream.c:is_psnr_calc_enabled
Unexecuted instantiation: context_tree.c:is_psnr_calc_enabled
Unexecuted instantiation: encodeframe.c:is_psnr_calc_enabled
Unexecuted instantiation: encodeframe_utils.c:is_psnr_calc_enabled
Unexecuted instantiation: encodemb.c:is_psnr_calc_enabled
Unexecuted instantiation: encodemv.c:is_psnr_calc_enabled
Unexecuted instantiation: encoder.c:is_psnr_calc_enabled
Unexecuted instantiation: encoder_utils.c:is_psnr_calc_enabled
Unexecuted instantiation: encodetxb.c:is_psnr_calc_enabled
Unexecuted instantiation: ethread.c:is_psnr_calc_enabled
Unexecuted instantiation: firstpass.c:is_psnr_calc_enabled
Unexecuted instantiation: global_motion_facade.c:is_psnr_calc_enabled
Unexecuted instantiation: level.c:is_psnr_calc_enabled
Unexecuted instantiation: lookahead.c:is_psnr_calc_enabled
Unexecuted instantiation: mcomp.c:is_psnr_calc_enabled
Unexecuted instantiation: mv_prec.c:is_psnr_calc_enabled
Unexecuted instantiation: palette.c:is_psnr_calc_enabled
Unexecuted instantiation: partition_search.c:is_psnr_calc_enabled
Unexecuted instantiation: partition_strategy.c:is_psnr_calc_enabled
Unexecuted instantiation: pass2_strategy.c:is_psnr_calc_enabled
Unexecuted instantiation: pickcdef.c:is_psnr_calc_enabled
Unexecuted instantiation: picklpf.c:is_psnr_calc_enabled
Unexecuted instantiation: pickrst.c:is_psnr_calc_enabled
Unexecuted instantiation: ratectrl.c:is_psnr_calc_enabled
Unexecuted instantiation: rd.c:is_psnr_calc_enabled
Unexecuted instantiation: rdopt.c:is_psnr_calc_enabled
Unexecuted instantiation: nonrd_pickmode.c:is_psnr_calc_enabled
Unexecuted instantiation: nonrd_opt.c:is_psnr_calc_enabled
Unexecuted instantiation: segmentation.c:is_psnr_calc_enabled
Unexecuted instantiation: speed_features.c:is_psnr_calc_enabled
Unexecuted instantiation: superres_scale.c:is_psnr_calc_enabled
Unexecuted instantiation: svc_layercontext.c:is_psnr_calc_enabled
Unexecuted instantiation: temporal_filter.c:is_psnr_calc_enabled
Unexecuted instantiation: tokenize.c:is_psnr_calc_enabled
Unexecuted instantiation: tpl_model.c:is_psnr_calc_enabled
Unexecuted instantiation: tx_search.c:is_psnr_calc_enabled
Unexecuted instantiation: txb_rdopt.c:is_psnr_calc_enabled
Unexecuted instantiation: intra_mode_search.c:is_psnr_calc_enabled
Unexecuted instantiation: var_based_part.c:is_psnr_calc_enabled
Unexecuted instantiation: av1_noise_estimate.c:is_psnr_calc_enabled
Unexecuted instantiation: aq_complexity.c:is_psnr_calc_enabled
Unexecuted instantiation: aq_cyclicrefresh.c:is_psnr_calc_enabled
Unexecuted instantiation: aq_variance.c:is_psnr_calc_enabled
Unexecuted instantiation: compound_type.c:is_psnr_calc_enabled
Unexecuted instantiation: encode_strategy.c:is_psnr_calc_enabled
Unexecuted instantiation: global_motion.c:is_psnr_calc_enabled
Unexecuted instantiation: gop_structure.c:is_psnr_calc_enabled
Unexecuted instantiation: interp_search.c:is_psnr_calc_enabled
Unexecuted instantiation: motion_search_facade.c:is_psnr_calc_enabled
4394
4395
0
static inline int is_frame_resize_pending(const AV1_COMP *const cpi) {
4396
0
  const ResizePendingParams *const resize_pending_params =
4397
0
      &cpi->resize_pending_params;
4398
0
  return (resize_pending_params->width && resize_pending_params->height &&
4399
0
          (cpi->common.width != resize_pending_params->width ||
4400
0
           cpi->common.height != resize_pending_params->height));
4401
0
}
Unexecuted instantiation: av1_cx_iface.c:is_frame_resize_pending
Unexecuted instantiation: allintra_vis.c:is_frame_resize_pending
Unexecuted instantiation: av1_quantize.c:is_frame_resize_pending
Unexecuted instantiation: bitstream.c:is_frame_resize_pending
Unexecuted instantiation: context_tree.c:is_frame_resize_pending
Unexecuted instantiation: encodeframe.c:is_frame_resize_pending
Unexecuted instantiation: encodeframe_utils.c:is_frame_resize_pending
Unexecuted instantiation: encodemb.c:is_frame_resize_pending
Unexecuted instantiation: encodemv.c:is_frame_resize_pending
Unexecuted instantiation: encoder.c:is_frame_resize_pending
Unexecuted instantiation: encoder_utils.c:is_frame_resize_pending
Unexecuted instantiation: encodetxb.c:is_frame_resize_pending
Unexecuted instantiation: ethread.c:is_frame_resize_pending
Unexecuted instantiation: firstpass.c:is_frame_resize_pending
Unexecuted instantiation: global_motion_facade.c:is_frame_resize_pending
Unexecuted instantiation: level.c:is_frame_resize_pending
Unexecuted instantiation: lookahead.c:is_frame_resize_pending
Unexecuted instantiation: mcomp.c:is_frame_resize_pending
Unexecuted instantiation: mv_prec.c:is_frame_resize_pending
Unexecuted instantiation: palette.c:is_frame_resize_pending
Unexecuted instantiation: partition_search.c:is_frame_resize_pending
Unexecuted instantiation: partition_strategy.c:is_frame_resize_pending
Unexecuted instantiation: pass2_strategy.c:is_frame_resize_pending
Unexecuted instantiation: pickcdef.c:is_frame_resize_pending
Unexecuted instantiation: picklpf.c:is_frame_resize_pending
Unexecuted instantiation: pickrst.c:is_frame_resize_pending
Unexecuted instantiation: ratectrl.c:is_frame_resize_pending
Unexecuted instantiation: rd.c:is_frame_resize_pending
Unexecuted instantiation: rdopt.c:is_frame_resize_pending
Unexecuted instantiation: nonrd_pickmode.c:is_frame_resize_pending
Unexecuted instantiation: nonrd_opt.c:is_frame_resize_pending
Unexecuted instantiation: segmentation.c:is_frame_resize_pending
Unexecuted instantiation: speed_features.c:is_frame_resize_pending
Unexecuted instantiation: superres_scale.c:is_frame_resize_pending
Unexecuted instantiation: svc_layercontext.c:is_frame_resize_pending
Unexecuted instantiation: temporal_filter.c:is_frame_resize_pending
Unexecuted instantiation: tokenize.c:is_frame_resize_pending
Unexecuted instantiation: tpl_model.c:is_frame_resize_pending
Unexecuted instantiation: tx_search.c:is_frame_resize_pending
Unexecuted instantiation: txb_rdopt.c:is_frame_resize_pending
Unexecuted instantiation: intra_mode_search.c:is_frame_resize_pending
Unexecuted instantiation: var_based_part.c:is_frame_resize_pending
Unexecuted instantiation: av1_noise_estimate.c:is_frame_resize_pending
Unexecuted instantiation: aq_complexity.c:is_frame_resize_pending
Unexecuted instantiation: aq_cyclicrefresh.c:is_frame_resize_pending
Unexecuted instantiation: aq_variance.c:is_frame_resize_pending
Unexecuted instantiation: compound_type.c:is_frame_resize_pending
Unexecuted instantiation: encode_strategy.c:is_frame_resize_pending
Unexecuted instantiation: global_motion.c:is_frame_resize_pending
Unexecuted instantiation: gop_structure.c:is_frame_resize_pending
Unexecuted instantiation: interp_search.c:is_frame_resize_pending
Unexecuted instantiation: motion_search_facade.c:is_frame_resize_pending
4402
4403
// Check if loop filter is used.
4404
0
static inline int is_loopfilter_used(const AV1_COMMON *const cm) {
4405
0
  return !cm->features.coded_lossless && !cm->tiles.large_scale;
4406
0
}
Unexecuted instantiation: av1_cx_iface.c:is_loopfilter_used
Unexecuted instantiation: allintra_vis.c:is_loopfilter_used
Unexecuted instantiation: av1_quantize.c:is_loopfilter_used
Unexecuted instantiation: bitstream.c:is_loopfilter_used
Unexecuted instantiation: context_tree.c:is_loopfilter_used
Unexecuted instantiation: encodeframe.c:is_loopfilter_used
Unexecuted instantiation: encodeframe_utils.c:is_loopfilter_used
Unexecuted instantiation: encodemb.c:is_loopfilter_used
Unexecuted instantiation: encodemv.c:is_loopfilter_used
Unexecuted instantiation: encoder.c:is_loopfilter_used
Unexecuted instantiation: encoder_utils.c:is_loopfilter_used
Unexecuted instantiation: encodetxb.c:is_loopfilter_used
Unexecuted instantiation: ethread.c:is_loopfilter_used
Unexecuted instantiation: firstpass.c:is_loopfilter_used
Unexecuted instantiation: global_motion_facade.c:is_loopfilter_used
Unexecuted instantiation: level.c:is_loopfilter_used
Unexecuted instantiation: lookahead.c:is_loopfilter_used
Unexecuted instantiation: mcomp.c:is_loopfilter_used
Unexecuted instantiation: mv_prec.c:is_loopfilter_used
Unexecuted instantiation: palette.c:is_loopfilter_used
Unexecuted instantiation: partition_search.c:is_loopfilter_used
Unexecuted instantiation: partition_strategy.c:is_loopfilter_used
Unexecuted instantiation: pass2_strategy.c:is_loopfilter_used
Unexecuted instantiation: pickcdef.c:is_loopfilter_used
Unexecuted instantiation: picklpf.c:is_loopfilter_used
Unexecuted instantiation: pickrst.c:is_loopfilter_used
Unexecuted instantiation: ratectrl.c:is_loopfilter_used
Unexecuted instantiation: rd.c:is_loopfilter_used
Unexecuted instantiation: rdopt.c:is_loopfilter_used
Unexecuted instantiation: nonrd_pickmode.c:is_loopfilter_used
Unexecuted instantiation: nonrd_opt.c:is_loopfilter_used
Unexecuted instantiation: segmentation.c:is_loopfilter_used
Unexecuted instantiation: speed_features.c:is_loopfilter_used
Unexecuted instantiation: superres_scale.c:is_loopfilter_used
Unexecuted instantiation: svc_layercontext.c:is_loopfilter_used
Unexecuted instantiation: temporal_filter.c:is_loopfilter_used
Unexecuted instantiation: tokenize.c:is_loopfilter_used
Unexecuted instantiation: tpl_model.c:is_loopfilter_used
Unexecuted instantiation: tx_search.c:is_loopfilter_used
Unexecuted instantiation: txb_rdopt.c:is_loopfilter_used
Unexecuted instantiation: intra_mode_search.c:is_loopfilter_used
Unexecuted instantiation: var_based_part.c:is_loopfilter_used
Unexecuted instantiation: av1_noise_estimate.c:is_loopfilter_used
Unexecuted instantiation: aq_complexity.c:is_loopfilter_used
Unexecuted instantiation: aq_cyclicrefresh.c:is_loopfilter_used
Unexecuted instantiation: aq_variance.c:is_loopfilter_used
Unexecuted instantiation: compound_type.c:is_loopfilter_used
Unexecuted instantiation: encode_strategy.c:is_loopfilter_used
Unexecuted instantiation: global_motion.c:is_loopfilter_used
Unexecuted instantiation: gop_structure.c:is_loopfilter_used
Unexecuted instantiation: interp_search.c:is_loopfilter_used
Unexecuted instantiation: motion_search_facade.c:is_loopfilter_used
4407
4408
// Check if CDEF is used.
4409
0
static inline int is_cdef_used(const AV1_COMMON *const cm) {
4410
0
  return cm->seq_params->enable_cdef && !cm->features.coded_lossless &&
4411
0
         !cm->tiles.large_scale;
4412
0
}
Unexecuted instantiation: av1_cx_iface.c:is_cdef_used
Unexecuted instantiation: allintra_vis.c:is_cdef_used
Unexecuted instantiation: av1_quantize.c:is_cdef_used
Unexecuted instantiation: bitstream.c:is_cdef_used
Unexecuted instantiation: context_tree.c:is_cdef_used
Unexecuted instantiation: encodeframe.c:is_cdef_used
Unexecuted instantiation: encodeframe_utils.c:is_cdef_used
Unexecuted instantiation: encodemb.c:is_cdef_used
Unexecuted instantiation: encodemv.c:is_cdef_used
Unexecuted instantiation: encoder.c:is_cdef_used
Unexecuted instantiation: encoder_utils.c:is_cdef_used
Unexecuted instantiation: encodetxb.c:is_cdef_used
Unexecuted instantiation: ethread.c:is_cdef_used
Unexecuted instantiation: firstpass.c:is_cdef_used
Unexecuted instantiation: global_motion_facade.c:is_cdef_used
Unexecuted instantiation: level.c:is_cdef_used
Unexecuted instantiation: lookahead.c:is_cdef_used
Unexecuted instantiation: mcomp.c:is_cdef_used
Unexecuted instantiation: mv_prec.c:is_cdef_used
Unexecuted instantiation: palette.c:is_cdef_used
Unexecuted instantiation: partition_search.c:is_cdef_used
Unexecuted instantiation: partition_strategy.c:is_cdef_used
Unexecuted instantiation: pass2_strategy.c:is_cdef_used
Unexecuted instantiation: pickcdef.c:is_cdef_used
Unexecuted instantiation: picklpf.c:is_cdef_used
Unexecuted instantiation: pickrst.c:is_cdef_used
Unexecuted instantiation: ratectrl.c:is_cdef_used
Unexecuted instantiation: rd.c:is_cdef_used
Unexecuted instantiation: rdopt.c:is_cdef_used
Unexecuted instantiation: nonrd_pickmode.c:is_cdef_used
Unexecuted instantiation: nonrd_opt.c:is_cdef_used
Unexecuted instantiation: segmentation.c:is_cdef_used
Unexecuted instantiation: speed_features.c:is_cdef_used
Unexecuted instantiation: superres_scale.c:is_cdef_used
Unexecuted instantiation: svc_layercontext.c:is_cdef_used
Unexecuted instantiation: temporal_filter.c:is_cdef_used
Unexecuted instantiation: tokenize.c:is_cdef_used
Unexecuted instantiation: tpl_model.c:is_cdef_used
Unexecuted instantiation: tx_search.c:is_cdef_used
Unexecuted instantiation: txb_rdopt.c:is_cdef_used
Unexecuted instantiation: intra_mode_search.c:is_cdef_used
Unexecuted instantiation: var_based_part.c:is_cdef_used
Unexecuted instantiation: av1_noise_estimate.c:is_cdef_used
Unexecuted instantiation: aq_complexity.c:is_cdef_used
Unexecuted instantiation: aq_cyclicrefresh.c:is_cdef_used
Unexecuted instantiation: aq_variance.c:is_cdef_used
Unexecuted instantiation: compound_type.c:is_cdef_used
Unexecuted instantiation: encode_strategy.c:is_cdef_used
Unexecuted instantiation: global_motion.c:is_cdef_used
Unexecuted instantiation: gop_structure.c:is_cdef_used
Unexecuted instantiation: interp_search.c:is_cdef_used
Unexecuted instantiation: motion_search_facade.c:is_cdef_used
4413
4414
// Check if loop restoration filter is used.
4415
0
static inline int is_restoration_used(const AV1_COMMON *const cm) {
4416
0
  return cm->seq_params->enable_restoration && !cm->features.all_lossless &&
4417
0
         !cm->tiles.large_scale;
4418
0
}
Unexecuted instantiation: av1_cx_iface.c:is_restoration_used
Unexecuted instantiation: allintra_vis.c:is_restoration_used
Unexecuted instantiation: av1_quantize.c:is_restoration_used
Unexecuted instantiation: bitstream.c:is_restoration_used
Unexecuted instantiation: context_tree.c:is_restoration_used
Unexecuted instantiation: encodeframe.c:is_restoration_used
Unexecuted instantiation: encodeframe_utils.c:is_restoration_used
Unexecuted instantiation: encodemb.c:is_restoration_used
Unexecuted instantiation: encodemv.c:is_restoration_used
Unexecuted instantiation: encoder.c:is_restoration_used
Unexecuted instantiation: encoder_utils.c:is_restoration_used
Unexecuted instantiation: encodetxb.c:is_restoration_used
Unexecuted instantiation: ethread.c:is_restoration_used
Unexecuted instantiation: firstpass.c:is_restoration_used
Unexecuted instantiation: global_motion_facade.c:is_restoration_used
Unexecuted instantiation: level.c:is_restoration_used
Unexecuted instantiation: lookahead.c:is_restoration_used
Unexecuted instantiation: mcomp.c:is_restoration_used
Unexecuted instantiation: mv_prec.c:is_restoration_used
Unexecuted instantiation: palette.c:is_restoration_used
Unexecuted instantiation: partition_search.c:is_restoration_used
Unexecuted instantiation: partition_strategy.c:is_restoration_used
Unexecuted instantiation: pass2_strategy.c:is_restoration_used
Unexecuted instantiation: pickcdef.c:is_restoration_used
Unexecuted instantiation: picklpf.c:is_restoration_used
Unexecuted instantiation: pickrst.c:is_restoration_used
Unexecuted instantiation: ratectrl.c:is_restoration_used
Unexecuted instantiation: rd.c:is_restoration_used
Unexecuted instantiation: rdopt.c:is_restoration_used
Unexecuted instantiation: nonrd_pickmode.c:is_restoration_used
Unexecuted instantiation: nonrd_opt.c:is_restoration_used
Unexecuted instantiation: segmentation.c:is_restoration_used
Unexecuted instantiation: speed_features.c:is_restoration_used
Unexecuted instantiation: superres_scale.c:is_restoration_used
Unexecuted instantiation: svc_layercontext.c:is_restoration_used
Unexecuted instantiation: temporal_filter.c:is_restoration_used
Unexecuted instantiation: tokenize.c:is_restoration_used
Unexecuted instantiation: tpl_model.c:is_restoration_used
Unexecuted instantiation: tx_search.c:is_restoration_used
Unexecuted instantiation: txb_rdopt.c:is_restoration_used
Unexecuted instantiation: intra_mode_search.c:is_restoration_used
Unexecuted instantiation: var_based_part.c:is_restoration_used
Unexecuted instantiation: av1_noise_estimate.c:is_restoration_used
Unexecuted instantiation: aq_complexity.c:is_restoration_used
Unexecuted instantiation: aq_cyclicrefresh.c:is_restoration_used
Unexecuted instantiation: aq_variance.c:is_restoration_used
Unexecuted instantiation: compound_type.c:is_restoration_used
Unexecuted instantiation: encode_strategy.c:is_restoration_used
Unexecuted instantiation: global_motion.c:is_restoration_used
Unexecuted instantiation: gop_structure.c:is_restoration_used
Unexecuted instantiation: interp_search.c:is_restoration_used
Unexecuted instantiation: motion_search_facade.c:is_restoration_used
4419
4420
// Checks if post-processing filters need to be applied.
4421
// NOTE: This function decides if the application of different post-processing
4422
// filters on the reconstructed frame can be skipped at the encoder side.
4423
// However the computation of different filter parameters that are signaled in
4424
// the bitstream is still required.
4425
static inline unsigned int derive_skip_apply_postproc_filters(
4426
    const AV1_COMP *cpi, int use_loopfilter, int use_cdef, int use_superres,
4427
0
    int use_restoration) {
4428
  // Though CDEF parameter selection should be dependent on
4429
  // deblocked/loop-filtered pixels for cdef_pick_method <=
4430
  // CDEF_FAST_SEARCH_LVL5, CDEF strength values are calculated based on the
4431
  // pixel values that are not loop-filtered in svc real-time encoding mode.
4432
  // Hence this case is handled separately using the condition below.
4433
0
  if (cpi->ppi->rtc_ref.non_reference_frame)
4434
0
    return (SKIP_APPLY_LOOPFILTER | SKIP_APPLY_CDEF);
4435
4436
0
  if (!cpi->oxcf.algo_cfg.skip_postproc_filtering || cpi->ppi->b_calculate_psnr)
4437
0
    return 0;
4438
0
  assert(cpi->oxcf.mode == ALLINTRA);
4439
4440
  // The post-processing filters are applied one after the other in the
4441
  // following order: deblocking->cdef->superres->restoration. In case of
4442
  // ALLINTRA encoding, the reconstructed frame is not used as a reference
4443
  // frame. Hence, the application of these filters can be skipped when
4444
  // 1. filter parameters of the subsequent stages are not dependent on the
4445
  // filtered output of the current stage or
4446
  // 2. subsequent filtering stages are disabled
4447
0
  if (use_restoration) return SKIP_APPLY_RESTORATION;
4448
0
  if (use_superres) return SKIP_APPLY_SUPERRES;
4449
0
  if (use_cdef) {
4450
    // CDEF parameter selection is not dependent on the deblocked frame if
4451
    // cdef_pick_method is CDEF_PICK_FROM_Q. Hence the application of deblocking
4452
    // filters and cdef filters can be skipped in this case.
4453
0
    return (cpi->sf.lpf_sf.cdef_pick_method == CDEF_PICK_FROM_Q &&
4454
0
            use_loopfilter)
4455
0
               ? (SKIP_APPLY_LOOPFILTER | SKIP_APPLY_CDEF)
4456
0
               : SKIP_APPLY_CDEF;
4457
0
  }
4458
0
  if (use_loopfilter) return SKIP_APPLY_LOOPFILTER;
4459
4460
  // If we reach here, all post-processing stages are disabled, so none need to
4461
  // be skipped.
4462
0
  return 0;
4463
0
}
Unexecuted instantiation: av1_cx_iface.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: allintra_vis.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: av1_quantize.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: bitstream.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: context_tree.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: encodeframe.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: encodeframe_utils.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: encodemb.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: encodemv.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: encoder.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: encoder_utils.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: encodetxb.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: ethread.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: firstpass.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: global_motion_facade.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: level.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: lookahead.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: mcomp.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: mv_prec.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: palette.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: partition_search.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: partition_strategy.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: pass2_strategy.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: pickcdef.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: picklpf.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: pickrst.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: ratectrl.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: rd.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: rdopt.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: nonrd_pickmode.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: nonrd_opt.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: segmentation.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: speed_features.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: superres_scale.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: svc_layercontext.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: temporal_filter.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: tokenize.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: tpl_model.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: tx_search.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: txb_rdopt.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: intra_mode_search.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: var_based_part.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: av1_noise_estimate.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: aq_complexity.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: aq_cyclicrefresh.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: aq_variance.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: compound_type.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: encode_strategy.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: global_motion.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: gop_structure.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: interp_search.c:derive_skip_apply_postproc_filters
Unexecuted instantiation: motion_search_facade.c:derive_skip_apply_postproc_filters
4464
4465
0
static inline void set_postproc_filter_default_params(AV1_COMMON *cm) {
4466
0
  struct loopfilter *const lf = &cm->lf;
4467
0
  CdefInfo *const cdef_info = &cm->cdef_info;
4468
0
  RestorationInfo *const rst_info = cm->rst_info;
4469
4470
0
  lf->filter_level[0] = 0;
4471
0
  lf->filter_level[1] = 0;
4472
0
  lf->backup_filter_level[0] = 0;
4473
0
  lf->backup_filter_level[1] = 0;
4474
0
  cdef_info->cdef_bits = 0;
4475
0
  cdef_info->cdef_strengths[0] = 0;
4476
0
  cdef_info->nb_cdef_strengths = 1;
4477
0
  cdef_info->cdef_uv_strengths[0] = 0;
4478
0
  rst_info[0].frame_restoration_type = RESTORE_NONE;
4479
0
  rst_info[1].frame_restoration_type = RESTORE_NONE;
4480
0
  rst_info[2].frame_restoration_type = RESTORE_NONE;
4481
0
}
Unexecuted instantiation: av1_cx_iface.c:set_postproc_filter_default_params
Unexecuted instantiation: allintra_vis.c:set_postproc_filter_default_params
Unexecuted instantiation: av1_quantize.c:set_postproc_filter_default_params
Unexecuted instantiation: bitstream.c:set_postproc_filter_default_params
Unexecuted instantiation: context_tree.c:set_postproc_filter_default_params
Unexecuted instantiation: encodeframe.c:set_postproc_filter_default_params
Unexecuted instantiation: encodeframe_utils.c:set_postproc_filter_default_params
Unexecuted instantiation: encodemb.c:set_postproc_filter_default_params
Unexecuted instantiation: encodemv.c:set_postproc_filter_default_params
Unexecuted instantiation: encoder.c:set_postproc_filter_default_params
Unexecuted instantiation: encoder_utils.c:set_postproc_filter_default_params
Unexecuted instantiation: encodetxb.c:set_postproc_filter_default_params
Unexecuted instantiation: ethread.c:set_postproc_filter_default_params
Unexecuted instantiation: firstpass.c:set_postproc_filter_default_params
Unexecuted instantiation: global_motion_facade.c:set_postproc_filter_default_params
Unexecuted instantiation: level.c:set_postproc_filter_default_params
Unexecuted instantiation: lookahead.c:set_postproc_filter_default_params
Unexecuted instantiation: mcomp.c:set_postproc_filter_default_params
Unexecuted instantiation: mv_prec.c:set_postproc_filter_default_params
Unexecuted instantiation: palette.c:set_postproc_filter_default_params
Unexecuted instantiation: partition_search.c:set_postproc_filter_default_params
Unexecuted instantiation: partition_strategy.c:set_postproc_filter_default_params
Unexecuted instantiation: pass2_strategy.c:set_postproc_filter_default_params
Unexecuted instantiation: pickcdef.c:set_postproc_filter_default_params
Unexecuted instantiation: picklpf.c:set_postproc_filter_default_params
Unexecuted instantiation: pickrst.c:set_postproc_filter_default_params
Unexecuted instantiation: ratectrl.c:set_postproc_filter_default_params
Unexecuted instantiation: rd.c:set_postproc_filter_default_params
Unexecuted instantiation: rdopt.c:set_postproc_filter_default_params
Unexecuted instantiation: nonrd_pickmode.c:set_postproc_filter_default_params
Unexecuted instantiation: nonrd_opt.c:set_postproc_filter_default_params
Unexecuted instantiation: segmentation.c:set_postproc_filter_default_params
Unexecuted instantiation: speed_features.c:set_postproc_filter_default_params
Unexecuted instantiation: superres_scale.c:set_postproc_filter_default_params
Unexecuted instantiation: svc_layercontext.c:set_postproc_filter_default_params
Unexecuted instantiation: temporal_filter.c:set_postproc_filter_default_params
Unexecuted instantiation: tokenize.c:set_postproc_filter_default_params
Unexecuted instantiation: tpl_model.c:set_postproc_filter_default_params
Unexecuted instantiation: tx_search.c:set_postproc_filter_default_params
Unexecuted instantiation: txb_rdopt.c:set_postproc_filter_default_params
Unexecuted instantiation: intra_mode_search.c:set_postproc_filter_default_params
Unexecuted instantiation: var_based_part.c:set_postproc_filter_default_params
Unexecuted instantiation: av1_noise_estimate.c:set_postproc_filter_default_params
Unexecuted instantiation: aq_complexity.c:set_postproc_filter_default_params
Unexecuted instantiation: aq_cyclicrefresh.c:set_postproc_filter_default_params
Unexecuted instantiation: aq_variance.c:set_postproc_filter_default_params
Unexecuted instantiation: compound_type.c:set_postproc_filter_default_params
Unexecuted instantiation: encode_strategy.c:set_postproc_filter_default_params
Unexecuted instantiation: global_motion.c:set_postproc_filter_default_params
Unexecuted instantiation: gop_structure.c:set_postproc_filter_default_params
Unexecuted instantiation: interp_search.c:set_postproc_filter_default_params
Unexecuted instantiation: motion_search_facade.c:set_postproc_filter_default_params
4482
4483
static inline int is_inter_tx_size_search_level_one(
4484
0
    const TX_SPEED_FEATURES *tx_sf) {
4485
0
  return (tx_sf->inter_tx_size_search_init_depth_rect >= 1 &&
4486
0
          tx_sf->inter_tx_size_search_init_depth_sqr >= 1);
4487
0
}
Unexecuted instantiation: av1_cx_iface.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: allintra_vis.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: av1_quantize.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: bitstream.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: context_tree.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: encodeframe.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: encodeframe_utils.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: encodemb.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: encodemv.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: encoder.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: encoder_utils.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: encodetxb.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: ethread.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: firstpass.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: global_motion_facade.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: level.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: lookahead.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: mcomp.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: mv_prec.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: palette.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: partition_search.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: partition_strategy.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: pass2_strategy.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: pickcdef.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: picklpf.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: pickrst.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: ratectrl.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: rd.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: rdopt.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: nonrd_pickmode.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: nonrd_opt.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: segmentation.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: speed_features.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: superres_scale.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: svc_layercontext.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: temporal_filter.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: tokenize.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: tpl_model.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: tx_search.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: txb_rdopt.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: intra_mode_search.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: var_based_part.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: av1_noise_estimate.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: aq_complexity.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: aq_cyclicrefresh.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: aq_variance.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: compound_type.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: encode_strategy.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: global_motion.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: gop_structure.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: interp_search.c:is_inter_tx_size_search_level_one
Unexecuted instantiation: motion_search_facade.c:is_inter_tx_size_search_level_one
4488
4489
0
static inline int get_lpf_opt_level(const SPEED_FEATURES *sf) {
4490
0
  int lpf_opt_level = 0;
4491
0
  if (is_inter_tx_size_search_level_one(&sf->tx_sf))
4492
0
    lpf_opt_level = (sf->lpf_sf.lpf_pick == LPF_PICK_FROM_Q) ? 2 : 1;
4493
0
  return lpf_opt_level;
4494
0
}
Unexecuted instantiation: av1_cx_iface.c:get_lpf_opt_level
Unexecuted instantiation: allintra_vis.c:get_lpf_opt_level
Unexecuted instantiation: av1_quantize.c:get_lpf_opt_level
Unexecuted instantiation: bitstream.c:get_lpf_opt_level
Unexecuted instantiation: context_tree.c:get_lpf_opt_level
Unexecuted instantiation: encodeframe.c:get_lpf_opt_level
Unexecuted instantiation: encodeframe_utils.c:get_lpf_opt_level
Unexecuted instantiation: encodemb.c:get_lpf_opt_level
Unexecuted instantiation: encodemv.c:get_lpf_opt_level
Unexecuted instantiation: encoder.c:get_lpf_opt_level
Unexecuted instantiation: encoder_utils.c:get_lpf_opt_level
Unexecuted instantiation: encodetxb.c:get_lpf_opt_level
Unexecuted instantiation: ethread.c:get_lpf_opt_level
Unexecuted instantiation: firstpass.c:get_lpf_opt_level
Unexecuted instantiation: global_motion_facade.c:get_lpf_opt_level
Unexecuted instantiation: level.c:get_lpf_opt_level
Unexecuted instantiation: lookahead.c:get_lpf_opt_level
Unexecuted instantiation: mcomp.c:get_lpf_opt_level
Unexecuted instantiation: mv_prec.c:get_lpf_opt_level
Unexecuted instantiation: palette.c:get_lpf_opt_level
Unexecuted instantiation: partition_search.c:get_lpf_opt_level
Unexecuted instantiation: partition_strategy.c:get_lpf_opt_level
Unexecuted instantiation: pass2_strategy.c:get_lpf_opt_level
Unexecuted instantiation: pickcdef.c:get_lpf_opt_level
Unexecuted instantiation: picklpf.c:get_lpf_opt_level
Unexecuted instantiation: pickrst.c:get_lpf_opt_level
Unexecuted instantiation: ratectrl.c:get_lpf_opt_level
Unexecuted instantiation: rd.c:get_lpf_opt_level
Unexecuted instantiation: rdopt.c:get_lpf_opt_level
Unexecuted instantiation: nonrd_pickmode.c:get_lpf_opt_level
Unexecuted instantiation: nonrd_opt.c:get_lpf_opt_level
Unexecuted instantiation: segmentation.c:get_lpf_opt_level
Unexecuted instantiation: speed_features.c:get_lpf_opt_level
Unexecuted instantiation: superres_scale.c:get_lpf_opt_level
Unexecuted instantiation: svc_layercontext.c:get_lpf_opt_level
Unexecuted instantiation: temporal_filter.c:get_lpf_opt_level
Unexecuted instantiation: tokenize.c:get_lpf_opt_level
Unexecuted instantiation: tpl_model.c:get_lpf_opt_level
Unexecuted instantiation: tx_search.c:get_lpf_opt_level
Unexecuted instantiation: txb_rdopt.c:get_lpf_opt_level
Unexecuted instantiation: intra_mode_search.c:get_lpf_opt_level
Unexecuted instantiation: var_based_part.c:get_lpf_opt_level
Unexecuted instantiation: av1_noise_estimate.c:get_lpf_opt_level
Unexecuted instantiation: aq_complexity.c:get_lpf_opt_level
Unexecuted instantiation: aq_cyclicrefresh.c:get_lpf_opt_level
Unexecuted instantiation: aq_variance.c:get_lpf_opt_level
Unexecuted instantiation: compound_type.c:get_lpf_opt_level
Unexecuted instantiation: encode_strategy.c:get_lpf_opt_level
Unexecuted instantiation: global_motion.c:get_lpf_opt_level
Unexecuted instantiation: gop_structure.c:get_lpf_opt_level
Unexecuted instantiation: interp_search.c:get_lpf_opt_level
Unexecuted instantiation: motion_search_facade.c:get_lpf_opt_level
4495
4496
// Enable switchable motion mode only if warp and OBMC tools are allowed
4497
static inline bool is_switchable_motion_mode_allowed(bool allow_warped_motion,
4498
0
                                                     bool enable_obmc) {
4499
0
  return (allow_warped_motion || enable_obmc);
4500
0
}
Unexecuted instantiation: av1_cx_iface.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: allintra_vis.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: av1_quantize.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: bitstream.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: context_tree.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: encodeframe.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: encodeframe_utils.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: encodemb.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: encodemv.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: encoder.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: encoder_utils.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: encodetxb.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: ethread.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: firstpass.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: global_motion_facade.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: level.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: lookahead.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: mcomp.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: mv_prec.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: palette.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: partition_search.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: partition_strategy.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: pass2_strategy.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: pickcdef.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: picklpf.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: pickrst.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: ratectrl.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: rd.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: rdopt.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: nonrd_pickmode.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: nonrd_opt.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: segmentation.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: speed_features.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: superres_scale.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: svc_layercontext.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: temporal_filter.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: tokenize.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: tpl_model.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: tx_search.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: txb_rdopt.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: intra_mode_search.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: var_based_part.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: av1_noise_estimate.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: aq_complexity.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: aq_cyclicrefresh.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: aq_variance.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: compound_type.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: encode_strategy.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: global_motion.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: gop_structure.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: interp_search.c:is_switchable_motion_mode_allowed
Unexecuted instantiation: motion_search_facade.c:is_switchable_motion_mode_allowed
4501
4502
#if CONFIG_AV1_TEMPORAL_DENOISING
4503
static inline int denoise_svc(const struct AV1_COMP *const cpi) {
4504
  return (!cpi->ppi->use_svc ||
4505
          (cpi->ppi->use_svc &&
4506
           cpi->svc.spatial_layer_id >= cpi->svc.first_layer_denoise));
4507
}
4508
#endif
4509
4510
#if CONFIG_COLLECT_PARTITION_STATS == 2
4511
static inline void av1_print_fr_partition_timing_stats(
4512
    const FramePartitionTimingStats *part_stats, const char *filename) {
4513
  FILE *f = fopen(filename, "w");
4514
  if (!f) {
4515
    return;
4516
  }
4517
4518
  fprintf(f, "bsize,redo,");
4519
  for (int part = 0; part < EXT_PARTITION_TYPES; part++) {
4520
    fprintf(f, "decision_%d,", part);
4521
  }
4522
  for (int part = 0; part < EXT_PARTITION_TYPES; part++) {
4523
    fprintf(f, "attempt_%d,", part);
4524
  }
4525
  for (int part = 0; part < EXT_PARTITION_TYPES; part++) {
4526
    fprintf(f, "time_%d,", part);
4527
  }
4528
  fprintf(f, "\n");
4529
4530
  static const int bsizes[6] = { 128, 64, 32, 16, 8, 4 };
4531
4532
  for (int bsize_idx = 0; bsize_idx < 6; bsize_idx++) {
4533
    fprintf(f, "%d,%d,", bsizes[bsize_idx], part_stats->partition_redo);
4534
    for (int part = 0; part < EXT_PARTITION_TYPES; part++) {
4535
      fprintf(f, "%d,", part_stats->partition_decisions[bsize_idx][part]);
4536
    }
4537
    for (int part = 0; part < EXT_PARTITION_TYPES; part++) {
4538
      fprintf(f, "%d,", part_stats->partition_attempts[bsize_idx][part]);
4539
    }
4540
    for (int part = 0; part < EXT_PARTITION_TYPES; part++) {
4541
      fprintf(f, "%ld,", part_stats->partition_times[bsize_idx][part]);
4542
    }
4543
    fprintf(f, "\n");
4544
  }
4545
  fclose(f);
4546
}
4547
#endif  // CONFIG_COLLECT_PARTITION_STATS == 2
4548
4549
#if CONFIG_COLLECT_PARTITION_STATS
4550
static inline int av1_get_bsize_idx_for_part_stats(BLOCK_SIZE bsize) {
4551
  assert(bsize == BLOCK_128X128 || bsize == BLOCK_64X64 ||
4552
         bsize == BLOCK_32X32 || bsize == BLOCK_16X16 || bsize == BLOCK_8X8 ||
4553
         bsize == BLOCK_4X4);
4554
  switch (bsize) {
4555
    case BLOCK_128X128: return 0;
4556
    case BLOCK_64X64: return 1;
4557
    case BLOCK_32X32: return 2;
4558
    case BLOCK_16X16: return 3;
4559
    case BLOCK_8X8: return 4;
4560
    case BLOCK_4X4: return 5;
4561
    default: assert(0 && "Invalid bsize for partition_stats."); return -1;
4562
  }
4563
}
4564
#endif  // CONFIG_COLLECT_PARTITION_STATS
4565
4566
#if CONFIG_COLLECT_COMPONENT_TIMING
4567
static inline void start_timing(AV1_COMP *cpi, int component) {
4568
  aom_usec_timer_start(&cpi->component_timer[component]);
4569
}
4570
static inline void end_timing(AV1_COMP *cpi, int component) {
4571
  aom_usec_timer_mark(&cpi->component_timer[component]);
4572
  cpi->frame_component_time[component] +=
4573
      aom_usec_timer_elapsed(&cpi->component_timer[component]);
4574
}
4575
static inline char const *get_frame_type_enum(int type) {
4576
  switch (type) {
4577
    case 0: return "KEY_FRAME";
4578
    case 1: return "INTER_FRAME";
4579
    case 2: return "INTRA_ONLY_FRAME";
4580
    case 3: return "S_FRAME";
4581
    default: assert(0);
4582
  }
4583
  return "error";
4584
}
4585
#endif
4586
4587
/*!\endcond */
4588
4589
#ifdef __cplusplus
4590
}  // extern "C"
4591
#endif
4592
4593
#endif  // AOM_AV1_ENCODER_ENCODER_H_