Coverage Report

Created: 2022-08-24 06:17

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