/src/aom/av1/common/av1_common_int.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Copyright (c) 2016, Alliance for Open Media. All rights reserved |
3 | | * |
4 | | * This source code is subject to the terms of the BSD 2 Clause License and |
5 | | * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License |
6 | | * was not distributed with this source code in the LICENSE file, you can |
7 | | * obtain it at www.aomedia.org/license/software. If the Alliance for Open |
8 | | * Media Patent License 1.0 was not distributed with this source code in the |
9 | | * PATENTS file, you can obtain it at www.aomedia.org/license/patent. |
10 | | */ |
11 | | |
12 | | #ifndef AOM_AV1_COMMON_AV1_COMMON_INT_H_ |
13 | | #define AOM_AV1_COMMON_AV1_COMMON_INT_H_ |
14 | | |
15 | | #include "config/aom_config.h" |
16 | | #include "config/av1_rtcd.h" |
17 | | |
18 | | #include "aom/internal/aom_codec_internal.h" |
19 | | #include "aom_dsp/flow_estimation/corner_detect.h" |
20 | | #include "aom_util/aom_thread.h" |
21 | | #include "av1/common/alloccommon.h" |
22 | | #include "av1/common/av1_loopfilter.h" |
23 | | #include "av1/common/entropy.h" |
24 | | #include "av1/common/entropymode.h" |
25 | | #include "av1/common/entropymv.h" |
26 | | #include "av1/common/enums.h" |
27 | | #include "av1/common/frame_buffers.h" |
28 | | #include "av1/common/mv.h" |
29 | | #include "av1/common/quant_common.h" |
30 | | #include "av1/common/restoration.h" |
31 | | #include "av1/common/tile_common.h" |
32 | | #include "av1/common/timing.h" |
33 | | #include "aom_dsp/grain_params.h" |
34 | | #include "aom_dsp/grain_table.h" |
35 | | #include "aom_dsp/odintrin.h" |
36 | | #ifdef __cplusplus |
37 | | extern "C" { |
38 | | #endif |
39 | | |
40 | | #if defined(__clang__) && defined(__has_warning) |
41 | | #if __has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough") |
42 | | #define AOM_FALLTHROUGH_INTENDED [[clang::fallthrough]] // NOLINT |
43 | | #endif |
44 | | #elif defined(__GNUC__) && __GNUC__ >= 7 |
45 | | #define AOM_FALLTHROUGH_INTENDED __attribute__((fallthrough)) // NOLINT |
46 | | #endif |
47 | | |
48 | | #ifndef AOM_FALLTHROUGH_INTENDED |
49 | | #define AOM_FALLTHROUGH_INTENDED \ |
50 | 437k | do { \ |
51 | 437k | } while (0) |
52 | | #endif |
53 | | |
54 | | #define CDEF_MAX_STRENGTHS 16 |
55 | | |
56 | | /* Constant values while waiting for the sequence header */ |
57 | | #define FRAME_ID_LENGTH 15 |
58 | | #define DELTA_FRAME_ID_LENGTH 14 |
59 | | |
60 | | #define FRAME_CONTEXTS (FRAME_BUFFERS + 1) |
61 | | // Extra frame context which is always kept at default values |
62 | | #define FRAME_CONTEXT_DEFAULTS (FRAME_CONTEXTS - 1) |
63 | 62.9k | #define PRIMARY_REF_BITS 3 |
64 | 1.04M | #define PRIMARY_REF_NONE 7 |
65 | | |
66 | | #define NUM_PING_PONG_BUFFERS 2 |
67 | | |
68 | 340k | #define MAX_NUM_TEMPORAL_LAYERS 8 |
69 | 131k | #define MAX_NUM_SPATIAL_LAYERS 4 |
70 | | /* clang-format off */ |
71 | | // clang-format seems to think this is a pointer dereference and not a |
72 | | // multiplication. |
73 | | #define MAX_NUM_OPERATING_POINTS \ |
74 | | (MAX_NUM_TEMPORAL_LAYERS * MAX_NUM_SPATIAL_LAYERS) |
75 | | /* clang-format on */ |
76 | | |
77 | | // TODO(jingning): Turning this on to set up transform coefficient |
78 | | // processing timer. |
79 | | #define TXCOEFF_TIMER 0 |
80 | | #define TXCOEFF_COST_TIMER 0 |
81 | | |
82 | | /*!\cond */ |
83 | | |
84 | | enum { |
85 | | SINGLE_REFERENCE = 0, |
86 | | COMPOUND_REFERENCE = 1, |
87 | | REFERENCE_MODE_SELECT = 2, |
88 | | REFERENCE_MODES = 3, |
89 | | } UENUM1BYTE(REFERENCE_MODE); |
90 | | |
91 | | enum { |
92 | | /** |
93 | | * Frame context updates are disabled |
94 | | */ |
95 | | REFRESH_FRAME_CONTEXT_DISABLED, |
96 | | /** |
97 | | * Update frame context to values resulting from backward probability |
98 | | * updates based on entropy/counts in the decoded frame |
99 | | */ |
100 | | REFRESH_FRAME_CONTEXT_BACKWARD, |
101 | | } UENUM1BYTE(REFRESH_FRAME_CONTEXT_MODE); |
102 | | |
103 | 10.8k | #define MFMV_STACK_SIZE 3 |
104 | | typedef struct { |
105 | | int_mv mfmv0; |
106 | | uint8_t ref_frame_offset; |
107 | | } TPL_MV_REF; |
108 | | |
109 | | typedef struct { |
110 | | int_mv mv; |
111 | | MV_REFERENCE_FRAME ref_frame; |
112 | | } MV_REF; |
113 | | |
114 | | typedef struct RefCntBuffer { |
115 | | // For a RefCntBuffer, the following are reference-holding variables: |
116 | | // - cm->ref_frame_map[] |
117 | | // - cm->cur_frame |
118 | | // - cm->scaled_ref_buf[] (encoder only) |
119 | | // - pbi->output_frame_index[] (decoder only) |
120 | | // With that definition, 'ref_count' is the number of reference-holding |
121 | | // variables that are currently referencing this buffer. |
122 | | // For example: |
123 | | // - suppose this buffer is at index 'k' in the buffer pool, and |
124 | | // - Total 'n' of the variables / array elements above have value 'k' (that |
125 | | // is, they are pointing to buffer at index 'k'). |
126 | | // Then, pool->frame_bufs[k].ref_count = n. |
127 | | int ref_count; |
128 | | |
129 | | unsigned int order_hint; |
130 | | unsigned int ref_order_hints[INTER_REFS_PER_FRAME]; |
131 | | |
132 | | // These variables are used only in encoder and compare the absolute |
133 | | // display order hint to compute the relative distance and overcome |
134 | | // the limitation of get_relative_dist() which returns incorrect |
135 | | // distance when a very old frame is used as a reference. |
136 | | unsigned int display_order_hint; |
137 | | unsigned int ref_display_order_hint[INTER_REFS_PER_FRAME]; |
138 | | // Frame's level within the hierarchical structure. |
139 | | unsigned int pyramid_level; |
140 | | MV_REF *mvs; |
141 | | uint8_t *seg_map; |
142 | | struct segmentation seg; |
143 | | int mi_rows; |
144 | | int mi_cols; |
145 | | // Width and height give the size of the buffer (before any upscaling, unlike |
146 | | // the sizes that can be derived from the buf structure) |
147 | | int width; |
148 | | int height; |
149 | | WarpedMotionParams global_motion[REF_FRAMES]; |
150 | | int showable_frame; // frame can be used as show existing frame in future |
151 | | uint8_t film_grain_params_present; |
152 | | aom_film_grain_t film_grain_params; |
153 | | aom_codec_frame_buffer_t raw_frame_buffer; |
154 | | YV12_BUFFER_CONFIG buf; |
155 | | int temporal_id; // Temporal layer ID of the frame |
156 | | int spatial_id; // Spatial layer ID of the frame |
157 | | FRAME_TYPE frame_type; |
158 | | |
159 | | // This is only used in the encoder but needs to be indexed per ref frame |
160 | | // so it's extremely convenient to keep it here. |
161 | | int interp_filter_selected[SWITCHABLE]; |
162 | | |
163 | | // Inter frame reference frame delta for loop filter |
164 | | int8_t ref_deltas[REF_FRAMES]; |
165 | | |
166 | | // 0 = ZERO_MV, MV |
167 | | int8_t mode_deltas[MAX_MODE_LF_DELTAS]; |
168 | | |
169 | | FRAME_CONTEXT frame_context; |
170 | | } RefCntBuffer; |
171 | | |
172 | | typedef struct BufferPool { |
173 | | // Protect BufferPool from being accessed by several FrameWorkers at |
174 | | // the same time during frame parallel decode. |
175 | | // TODO(hkuang): Try to use atomic variable instead of locking the whole pool. |
176 | | // TODO(wtc): Remove this. See |
177 | | // https://chromium-review.googlesource.com/c/webm/libvpx/+/560630. |
178 | | #if CONFIG_MULTITHREAD |
179 | | pthread_mutex_t pool_mutex; |
180 | | #endif |
181 | | |
182 | | // Private data associated with the frame buffer callbacks. |
183 | | void *cb_priv; |
184 | | |
185 | | aom_get_frame_buffer_cb_fn_t get_fb_cb; |
186 | | aom_release_frame_buffer_cb_fn_t release_fb_cb; |
187 | | |
188 | | RefCntBuffer *frame_bufs; |
189 | | uint8_t num_frame_bufs; |
190 | | |
191 | | // Frame buffers allocated internally by the codec. |
192 | | InternalFrameBufferList int_frame_buffers; |
193 | | } BufferPool; |
194 | | |
195 | | /*!\endcond */ |
196 | | |
197 | | /*!\brief Parameters related to CDEF */ |
198 | | typedef struct { |
199 | | //! CDEF column line buffer |
200 | | uint16_t *colbuf[MAX_MB_PLANE]; |
201 | | //! CDEF top & bottom line buffer |
202 | | uint16_t *linebuf[MAX_MB_PLANE]; |
203 | | //! CDEF intermediate buffer |
204 | | uint16_t *srcbuf; |
205 | | //! CDEF column line buffer sizes |
206 | | size_t allocated_colbuf_size[MAX_MB_PLANE]; |
207 | | //! CDEF top and bottom line buffer sizes |
208 | | size_t allocated_linebuf_size[MAX_MB_PLANE]; |
209 | | //! CDEF intermediate buffer size |
210 | | size_t allocated_srcbuf_size; |
211 | | //! CDEF damping factor |
212 | | int cdef_damping; |
213 | | //! Number of CDEF strength values |
214 | | int nb_cdef_strengths; |
215 | | //! CDEF strength values for luma |
216 | | int cdef_strengths[CDEF_MAX_STRENGTHS]; |
217 | | //! CDEF strength values for chroma |
218 | | int cdef_uv_strengths[CDEF_MAX_STRENGTHS]; |
219 | | //! Number of CDEF strength values in bits |
220 | | int cdef_bits; |
221 | | //! Number of rows in the frame in 4 pixel |
222 | | int allocated_mi_rows; |
223 | | //! Number of CDEF workers |
224 | | int allocated_num_workers; |
225 | | } CdefInfo; |
226 | | |
227 | | /*!\cond */ |
228 | | |
229 | | typedef struct { |
230 | | int delta_q_present_flag; |
231 | | // Resolution of delta quant |
232 | | int delta_q_res; |
233 | | int delta_lf_present_flag; |
234 | | // Resolution of delta lf level |
235 | | int delta_lf_res; |
236 | | // This is a flag for number of deltas of loop filter level |
237 | | // 0: use 1 delta, for y_vertical, y_horizontal, u, and v |
238 | | // 1: use separate deltas for each filter level |
239 | | int delta_lf_multi; |
240 | | } DeltaQInfo; |
241 | | |
242 | | typedef struct { |
243 | | int enable_order_hint; // 0 - disable order hint, and related tools |
244 | | int order_hint_bits_minus_1; // dist_wtd_comp, ref_frame_mvs, |
245 | | // frame_sign_bias |
246 | | // if 0, enable_dist_wtd_comp and |
247 | | // enable_ref_frame_mvs must be set as 0. |
248 | | int enable_dist_wtd_comp; // 0 - disable dist-wtd compound modes |
249 | | // 1 - enable it |
250 | | int enable_ref_frame_mvs; // 0 - disable ref frame mvs |
251 | | // 1 - enable it |
252 | | } OrderHintInfo; |
253 | | |
254 | | // Sequence header structure. |
255 | | // Note: All syntax elements of sequence_header_obu that need to be |
256 | | // bit-identical across multiple sequence headers must be part of this struct, |
257 | | // so that consistency is checked by are_seq_headers_consistent() function. |
258 | | // One exception is the last member 'op_params' that is ignored by |
259 | | // are_seq_headers_consistent() function. |
260 | | typedef struct SequenceHeader { |
261 | | int num_bits_width; |
262 | | int num_bits_height; |
263 | | int max_frame_width; |
264 | | int max_frame_height; |
265 | | // Whether current and reference frame IDs are signaled in the bitstream. |
266 | | // Frame id numbers are additional information that do not affect the |
267 | | // decoding process, but provide decoders with a way of detecting missing |
268 | | // reference frames so that appropriate action can be taken. |
269 | | uint8_t frame_id_numbers_present_flag; |
270 | | int frame_id_length; |
271 | | int delta_frame_id_length; |
272 | | BLOCK_SIZE sb_size; // Size of the superblock used for this frame |
273 | | int mib_size; // Size of the superblock in units of MI blocks |
274 | | int mib_size_log2; // Log 2 of above. |
275 | | |
276 | | OrderHintInfo order_hint_info; |
277 | | |
278 | | uint8_t force_screen_content_tools; // 0 - force off |
279 | | // 1 - force on |
280 | | // 2 - adaptive |
281 | | uint8_t still_picture; // Video is a single frame still picture |
282 | | uint8_t reduced_still_picture_hdr; // Use reduced header for still picture |
283 | | uint8_t force_integer_mv; // 0 - Don't force. MV can use subpel |
284 | | // 1 - force to integer |
285 | | // 2 - adaptive |
286 | | uint8_t enable_filter_intra; // enables/disables filterintra |
287 | | uint8_t enable_intra_edge_filter; // enables/disables edge upsampling |
288 | | uint8_t enable_interintra_compound; // enables/disables interintra_compound |
289 | | uint8_t enable_masked_compound; // enables/disables masked compound |
290 | | uint8_t enable_dual_filter; // 0 - disable dual interpolation filter |
291 | | // 1 - enable vert/horz filter selection |
292 | | uint8_t enable_warped_motion; // 0 - disable warp for the sequence |
293 | | // 1 - enable warp for the sequence |
294 | | uint8_t enable_superres; // 0 - Disable superres for the sequence |
295 | | // and no frame level superres flag |
296 | | // 1 - Enable superres for the sequence |
297 | | // enable per-frame superres flag |
298 | | uint8_t enable_cdef; // To turn on/off CDEF |
299 | | uint8_t enable_restoration; // To turn on/off loop restoration |
300 | | BITSTREAM_PROFILE profile; |
301 | | |
302 | | // Color config. |
303 | | aom_bit_depth_t bit_depth; // AOM_BITS_8 in profile 0 or 1, |
304 | | // AOM_BITS_10 or AOM_BITS_12 in profile 2 or 3. |
305 | | uint8_t use_highbitdepth; // If true, we need to use 16bit frame buffers. |
306 | | uint8_t monochrome; // Monochrome video |
307 | | aom_color_primaries_t color_primaries; |
308 | | aom_transfer_characteristics_t transfer_characteristics; |
309 | | aom_matrix_coefficients_t matrix_coefficients; |
310 | | int color_range; |
311 | | int subsampling_x; // Chroma subsampling for x |
312 | | int subsampling_y; // Chroma subsampling for y |
313 | | aom_chroma_sample_position_t chroma_sample_position; |
314 | | uint8_t separate_uv_delta_q; |
315 | | uint8_t film_grain_params_present; |
316 | | |
317 | | // Operating point info. |
318 | | int operating_points_cnt_minus_1; |
319 | | int operating_point_idc[MAX_NUM_OPERATING_POINTS]; |
320 | | int timing_info_present; |
321 | | aom_timing_info_t timing_info; |
322 | | uint8_t decoder_model_info_present_flag; |
323 | | aom_dec_model_info_t decoder_model_info; |
324 | | uint8_t display_model_info_present_flag; |
325 | | AV1_LEVEL seq_level_idx[MAX_NUM_OPERATING_POINTS]; |
326 | | uint8_t tier[MAX_NUM_OPERATING_POINTS]; // seq_tier in spec. One bit: 0 or 1. |
327 | | |
328 | | // IMPORTANT: the op_params member must be at the end of the struct so that |
329 | | // are_seq_headers_consistent() can be implemented with a memcmp() call. |
330 | | // TODO(urvang): We probably don't need the +1 here. |
331 | | aom_dec_model_op_parameters_t op_params[MAX_NUM_OPERATING_POINTS + 1]; |
332 | | } SequenceHeader; |
333 | | |
334 | | typedef struct { |
335 | | int skip_mode_allowed; |
336 | | int skip_mode_flag; |
337 | | int ref_frame_idx_0; |
338 | | int ref_frame_idx_1; |
339 | | } SkipModeInfo; |
340 | | |
341 | | typedef struct { |
342 | | FRAME_TYPE frame_type; |
343 | | REFERENCE_MODE reference_mode; |
344 | | |
345 | | unsigned int order_hint; |
346 | | unsigned int display_order_hint; |
347 | | // Frame's level within the hierarchical structure. |
348 | | unsigned int pyramid_level; |
349 | | unsigned int frame_number; |
350 | | SkipModeInfo skip_mode_info; |
351 | | int refresh_frame_flags; // Which ref frames are overwritten by this frame |
352 | | int frame_refs_short_signaling; |
353 | | } CurrentFrame; |
354 | | |
355 | | /*!\endcond */ |
356 | | |
357 | | /*! |
358 | | * \brief Frame level features. |
359 | | */ |
360 | | typedef struct { |
361 | | /*! |
362 | | * If true, CDF update in the symbol encoding/decoding process is disabled. |
363 | | */ |
364 | | bool disable_cdf_update; |
365 | | /*! |
366 | | * If true, motion vectors are specified to eighth pel precision; and |
367 | | * if false, motion vectors are specified to quarter pel precision. |
368 | | */ |
369 | | bool allow_high_precision_mv; |
370 | | /*! |
371 | | * If true, force integer motion vectors; if false, use the default. |
372 | | */ |
373 | | bool cur_frame_force_integer_mv; |
374 | | /*! |
375 | | * If true, palette tool and/or intra block copy tools may be used. |
376 | | */ |
377 | | bool allow_screen_content_tools; |
378 | | bool allow_intrabc; /*!< If true, intra block copy tool may be used. */ |
379 | | bool allow_warped_motion; /*!< If true, frame may use warped motion mode. */ |
380 | | /*! |
381 | | * If true, using previous frames' motion vectors for prediction is allowed. |
382 | | */ |
383 | | bool allow_ref_frame_mvs; |
384 | | /*! |
385 | | * If true, frame is fully lossless at coded resolution. |
386 | | * */ |
387 | | bool coded_lossless; |
388 | | /*! |
389 | | * If true, frame is fully lossless at upscaled resolution. |
390 | | */ |
391 | | bool all_lossless; |
392 | | /*! |
393 | | * If true, the frame is restricted to a reduced subset of the full set of |
394 | | * transform types. |
395 | | */ |
396 | | bool reduced_tx_set_used; |
397 | | /*! |
398 | | * If true, error resilient mode is enabled. |
399 | | * Note: Error resilient mode allows the syntax of a frame to be parsed |
400 | | * independently of previously decoded frames. |
401 | | */ |
402 | | bool error_resilient_mode; |
403 | | /*! |
404 | | * If false, only MOTION_MODE that may be used is SIMPLE_TRANSLATION; |
405 | | * if true, all MOTION_MODES may be used. |
406 | | */ |
407 | | bool switchable_motion_mode; |
408 | | TX_MODE tx_mode; /*!< Transform mode at frame level. */ |
409 | | InterpFilter interp_filter; /*!< Interpolation filter at frame level. */ |
410 | | /*! |
411 | | * The reference frame that contains the CDF values and other state that |
412 | | * should be loaded at the start of the frame. |
413 | | */ |
414 | | int primary_ref_frame; |
415 | | /*! |
416 | | * Byte alignment of the planes in the reference buffers. |
417 | | */ |
418 | | int byte_alignment; |
419 | | /*! |
420 | | * Flag signaling how frame contexts should be updated at the end of |
421 | | * a frame decode. |
422 | | */ |
423 | | REFRESH_FRAME_CONTEXT_MODE refresh_frame_context; |
424 | | } FeatureFlags; |
425 | | |
426 | | /*! |
427 | | * \brief Params related to tiles. |
428 | | */ |
429 | | typedef struct CommonTileParams { |
430 | | int cols; /*!< number of tile columns that frame is divided into */ |
431 | | int rows; /*!< number of tile rows that frame is divided into */ |
432 | | int max_width_sb; /*!< maximum tile width in superblock units. */ |
433 | | int max_height_sb; /*!< maximum tile height in superblock units. */ |
434 | | |
435 | | /*! |
436 | | * Min width of non-rightmost tile in MI units. Only valid if cols > 1. |
437 | | */ |
438 | | int min_inner_width; |
439 | | |
440 | | /*! |
441 | | * If true, tiles are uniformly spaced with power-of-two number of rows and |
442 | | * columns. |
443 | | * If false, tiles have explicitly configured widths and heights. |
444 | | */ |
445 | | int uniform_spacing; |
446 | | |
447 | | /** |
448 | | * \name Members only valid when uniform_spacing == 1 |
449 | | */ |
450 | | /**@{*/ |
451 | | int log2_cols; /*!< log2 of 'cols'. */ |
452 | | int log2_rows; /*!< log2 of 'rows'. */ |
453 | | int width; /*!< tile width in MI units */ |
454 | | int height; /*!< tile height in MI units */ |
455 | | /**@}*/ |
456 | | |
457 | | /*! |
458 | | * Min num of tile columns possible based on 'max_width_sb' and frame width. |
459 | | */ |
460 | | int min_log2_cols; |
461 | | /*! |
462 | | * Min num of tile rows possible based on 'max_height_sb' and frame height. |
463 | | */ |
464 | | int min_log2_rows; |
465 | | /*! |
466 | | * Max num of tile columns possible based on frame width. |
467 | | */ |
468 | | int max_log2_cols; |
469 | | /*! |
470 | | * Max num of tile rows possible based on frame height. |
471 | | */ |
472 | | int max_log2_rows; |
473 | | /*! |
474 | | * log2 of min number of tiles (same as min_log2_cols + min_log2_rows). |
475 | | */ |
476 | | int min_log2; |
477 | | /*! |
478 | | * col_start_sb[i] is the start position of tile column i in superblock units. |
479 | | * valid for 0 <= i <= cols |
480 | | */ |
481 | | int col_start_sb[MAX_TILE_COLS + 1]; |
482 | | /*! |
483 | | * row_start_sb[i] is the start position of tile row i in superblock units. |
484 | | * valid for 0 <= i <= rows |
485 | | */ |
486 | | int row_start_sb[MAX_TILE_ROWS + 1]; |
487 | | /*! |
488 | | * If true, we are using large scale tile mode. |
489 | | */ |
490 | | unsigned int large_scale; |
491 | | /*! |
492 | | * Only relevant when large_scale == 1. |
493 | | * If true, the independent decoding of a single tile or a section of a frame |
494 | | * is allowed. |
495 | | */ |
496 | | unsigned int single_tile_decoding; |
497 | | } CommonTileParams; |
498 | | |
499 | | typedef struct CommonModeInfoParams CommonModeInfoParams; |
500 | | /*! |
501 | | * \brief Params related to MB_MODE_INFO arrays and related info. |
502 | | */ |
503 | | struct CommonModeInfoParams { |
504 | | /*! |
505 | | * Number of rows in the frame in 16 pixel units. |
506 | | * This is computed from frame height aligned to a multiple of 8. |
507 | | */ |
508 | | int mb_rows; |
509 | | /*! |
510 | | * Number of cols in the frame in 16 pixel units. |
511 | | * This is computed from frame width aligned to a multiple of 8. |
512 | | */ |
513 | | int mb_cols; |
514 | | |
515 | | /*! |
516 | | * Total MBs = mb_rows * mb_cols. |
517 | | */ |
518 | | int MBs; |
519 | | |
520 | | /*! |
521 | | * Number of rows in the frame in 4 pixel (MB_MODE_INFO) units. |
522 | | * This is computed from frame height aligned to a multiple of 8. |
523 | | */ |
524 | | int mi_rows; |
525 | | /*! |
526 | | * Number of cols in the frame in 4 pixel (MB_MODE_INFO) units. |
527 | | * This is computed from frame width aligned to a multiple of 8. |
528 | | */ |
529 | | int mi_cols; |
530 | | |
531 | | /*! |
532 | | * An array of MB_MODE_INFO structs for every 'mi_alloc_bsize' sized block |
533 | | * in the frame. |
534 | | * Note: This array should be treated like a scratch memory, and should NOT be |
535 | | * accessed directly, in most cases. Please use 'mi_grid_base' array instead. |
536 | | */ |
537 | | MB_MODE_INFO *mi_alloc; |
538 | | /*! |
539 | | * Number of allocated elements in 'mi_alloc'. |
540 | | */ |
541 | | int mi_alloc_size; |
542 | | /*! |
543 | | * Stride for 'mi_alloc' array. |
544 | | */ |
545 | | int mi_alloc_stride; |
546 | | /*! |
547 | | * The minimum block size that each element in 'mi_alloc' can correspond to. |
548 | | * For decoder, this is always BLOCK_4X4. |
549 | | * For encoder, this is BLOCK_8X8 for resolution >= 4k case or REALTIME mode |
550 | | * case. Otherwise, this is BLOCK_4X4. |
551 | | */ |
552 | | BLOCK_SIZE mi_alloc_bsize; |
553 | | |
554 | | /*! |
555 | | * Grid of pointers to 4x4 MB_MODE_INFO structs allocated in 'mi_alloc'. |
556 | | * It's possible that: |
557 | | * - Multiple pointers in the grid point to the same element in 'mi_alloc' |
558 | | * (for example, for all 4x4 blocks that belong to the same partition block). |
559 | | * - Some pointers can be NULL (for example, for blocks outside visible area). |
560 | | */ |
561 | | MB_MODE_INFO **mi_grid_base; |
562 | | /*! |
563 | | * Number of allocated elements in 'mi_grid_base' (and 'tx_type_map' also). |
564 | | */ |
565 | | int mi_grid_size; |
566 | | /*! |
567 | | * Stride for 'mi_grid_base' (and 'tx_type_map' also). |
568 | | */ |
569 | | int mi_stride; |
570 | | |
571 | | /*! |
572 | | * An array of tx types for each 4x4 block in the frame. |
573 | | * Number of allocated elements is same as 'mi_grid_size', and stride is |
574 | | * same as 'mi_grid_size'. So, indexing into 'tx_type_map' is same as that of |
575 | | * 'mi_grid_base'. |
576 | | */ |
577 | | TX_TYPE *tx_type_map; |
578 | | |
579 | | /** |
580 | | * \name Function pointers to allow separate logic for encoder and decoder. |
581 | | */ |
582 | | /**@{*/ |
583 | | /*! |
584 | | * Free the memory allocated to arrays in 'mi_params'. |
585 | | * \param[in,out] mi_params object containing common mode info parameters |
586 | | */ |
587 | | void (*free_mi)(struct CommonModeInfoParams *mi_params); |
588 | | /*! |
589 | | * Initialize / reset appropriate arrays in 'mi_params'. |
590 | | * \param[in,out] mi_params object containing common mode info parameters |
591 | | */ |
592 | | void (*setup_mi)(struct CommonModeInfoParams *mi_params); |
593 | | /*! |
594 | | * Allocate required memory for arrays in 'mi_params'. |
595 | | * \param[in,out] mi_params object containing common mode info |
596 | | * parameters |
597 | | * \param width frame width |
598 | | * \param height frame height |
599 | | * \param min_partition_size minimum partition size allowed while |
600 | | * encoding |
601 | | */ |
602 | | void (*set_mb_mi)(struct CommonModeInfoParams *mi_params, int width, |
603 | | int height, BLOCK_SIZE min_partition_size); |
604 | | /**@}*/ |
605 | | }; |
606 | | |
607 | | typedef struct CommonQuantParams CommonQuantParams; |
608 | | /*! |
609 | | * \brief Parameters related to quantization at the frame level. |
610 | | */ |
611 | | struct CommonQuantParams { |
612 | | /*! |
613 | | * Base qindex of the frame in the range 0 to 255. |
614 | | */ |
615 | | int base_qindex; |
616 | | |
617 | | /*! |
618 | | * Delta of qindex (from base_qindex) for Y plane DC coefficient. |
619 | | * Note: y_ac_delta_q is implicitly 0. |
620 | | */ |
621 | | int y_dc_delta_q; |
622 | | |
623 | | /*! |
624 | | * Delta of qindex (from base_qindex) for U plane DC coefficients. |
625 | | */ |
626 | | int u_dc_delta_q; |
627 | | /*! |
628 | | * Delta of qindex (from base_qindex) for U plane AC coefficients. |
629 | | */ |
630 | | int v_dc_delta_q; |
631 | | |
632 | | /*! |
633 | | * Delta of qindex (from base_qindex) for V plane DC coefficients. |
634 | | * Same as those for U plane if cm->seq_params->separate_uv_delta_q == 0. |
635 | | */ |
636 | | int u_ac_delta_q; |
637 | | /*! |
638 | | * Delta of qindex (from base_qindex) for V plane AC coefficients. |
639 | | * Same as those for U plane if cm->seq_params->separate_uv_delta_q == 0. |
640 | | */ |
641 | | int v_ac_delta_q; |
642 | | |
643 | | /* |
644 | | * Note: The qindex per superblock may have a delta from the qindex obtained |
645 | | * at frame level from parameters above, based on 'cm->delta_q_info'. |
646 | | */ |
647 | | |
648 | | /** |
649 | | * \name True dequantizers. |
650 | | * The dequantizers below are true dequantizers used only in the |
651 | | * dequantization process. They have the same coefficient |
652 | | * shift/scale as TX. |
653 | | */ |
654 | | /**@{*/ |
655 | | int16_t y_dequant_QTX[MAX_SEGMENTS][2]; /*!< Dequant for Y plane */ |
656 | | int16_t u_dequant_QTX[MAX_SEGMENTS][2]; /*!< Dequant for U plane */ |
657 | | int16_t v_dequant_QTX[MAX_SEGMENTS][2]; /*!< Dequant for V plane */ |
658 | | /**@}*/ |
659 | | |
660 | | /** |
661 | | * \name Global quantization matrix tables. |
662 | | */ |
663 | | /**@{*/ |
664 | | /*! |
665 | | * Global dequantization matrix table. |
666 | | */ |
667 | | const qm_val_t *giqmatrix[NUM_QM_LEVELS][3][TX_SIZES_ALL]; |
668 | | /*! |
669 | | * Global quantization matrix table. |
670 | | */ |
671 | | const qm_val_t *gqmatrix[NUM_QM_LEVELS][3][TX_SIZES_ALL]; |
672 | | /**@}*/ |
673 | | |
674 | | /** |
675 | | * \name Local dequantization matrix tables for each frame. |
676 | | */ |
677 | | /**@{*/ |
678 | | /*! |
679 | | * Local dequant matrix for Y plane. |
680 | | */ |
681 | | const qm_val_t *y_iqmatrix[MAX_SEGMENTS][TX_SIZES_ALL]; |
682 | | /*! |
683 | | * Local dequant matrix for U plane. |
684 | | */ |
685 | | const qm_val_t *u_iqmatrix[MAX_SEGMENTS][TX_SIZES_ALL]; |
686 | | /*! |
687 | | * Local dequant matrix for V plane. |
688 | | */ |
689 | | const qm_val_t *v_iqmatrix[MAX_SEGMENTS][TX_SIZES_ALL]; |
690 | | /**@}*/ |
691 | | |
692 | | /*! |
693 | | * Flag indicating whether quantization matrices are being used: |
694 | | * - If true, qm_level_y, qm_level_u and qm_level_v indicate the level |
695 | | * indices to be used to access appropriate global quant matrix tables. |
696 | | * - If false, we implicitly use level index 'NUM_QM_LEVELS - 1'. |
697 | | */ |
698 | | bool using_qmatrix; |
699 | | /** |
700 | | * \name Valid only when using_qmatrix == true |
701 | | * Indicate the level indices to be used to access appropriate global quant |
702 | | * matrix tables. |
703 | | */ |
704 | | /**@{*/ |
705 | | int qmatrix_level_y; /*!< Level index for Y plane */ |
706 | | int qmatrix_level_u; /*!< Level index for U plane */ |
707 | | int qmatrix_level_v; /*!< Level index for V plane */ |
708 | | /**@}*/ |
709 | | }; |
710 | | |
711 | | typedef struct CommonContexts CommonContexts; |
712 | | /*! |
713 | | * \brief Contexts used for transmitting various symbols in the bitstream. |
714 | | */ |
715 | | struct CommonContexts { |
716 | | /*! |
717 | | * Context used by 'FRAME_CONTEXT.partition_cdf' to transmit partition type. |
718 | | * partition[i][j] is the context for ith tile row, jth mi_col. |
719 | | */ |
720 | | PARTITION_CONTEXT **partition; |
721 | | |
722 | | /*! |
723 | | * Context used to derive context for multiple symbols: |
724 | | * - 'TXB_CTX.txb_skip_ctx' used by 'FRAME_CONTEXT.txb_skip_cdf' to transmit |
725 | | * to transmit skip_txfm flag. |
726 | | * - 'TXB_CTX.dc_sign_ctx' used by 'FRAME_CONTEXT.dc_sign_cdf' to transmit |
727 | | * sign. |
728 | | * entropy[i][j][k] is the context for ith plane, jth tile row, kth mi_col. |
729 | | */ |
730 | | ENTROPY_CONTEXT **entropy[MAX_MB_PLANE]; |
731 | | |
732 | | /*! |
733 | | * Context used to derive context for 'FRAME_CONTEXT.txfm_partition_cdf' to |
734 | | * transmit 'is_split' flag to indicate if this transform block should be |
735 | | * split into smaller sub-blocks. |
736 | | * txfm[i][j] is the context for ith tile row, jth mi_col. |
737 | | */ |
738 | | TXFM_CONTEXT **txfm; |
739 | | |
740 | | /*! |
741 | | * Dimensions that were used to allocate the arrays above. |
742 | | * If these dimensions change, the arrays may have to be re-allocated. |
743 | | */ |
744 | | int num_planes; /*!< Corresponds to av1_num_planes(cm) */ |
745 | | int num_tile_rows; /*!< Corresponds to cm->tiles.row */ |
746 | | int num_mi_cols; /*!< Corresponds to cm->mi_params.mi_cols */ |
747 | | }; |
748 | | |
749 | | /*! |
750 | | * \brief Top level common structure used by both encoder and decoder. |
751 | | */ |
752 | | typedef struct AV1Common { |
753 | | /*! |
754 | | * Information about the current frame that is being coded. |
755 | | */ |
756 | | CurrentFrame current_frame; |
757 | | /*! |
758 | | * Code and details about current error status. |
759 | | */ |
760 | | struct aom_internal_error_info *error; |
761 | | |
762 | | /*! |
763 | | * AV1 allows two types of frame scaling operations: |
764 | | * 1. Frame super-resolution: that allows coding a frame at lower resolution |
765 | | * and after decoding the frame, normatively scales and restores the frame -- |
766 | | * inside the coding loop. |
767 | | * 2. Frame resize: that allows coding frame at lower/higher resolution, and |
768 | | * then non-normatively upscale the frame at the time of rendering -- outside |
769 | | * the coding loop. |
770 | | * Hence, the need for 3 types of dimensions. |
771 | | */ |
772 | | |
773 | | /** |
774 | | * \name Coded frame dimensions. |
775 | | */ |
776 | | /**@{*/ |
777 | | int width; /*!< Coded frame width */ |
778 | | int height; /*!< Coded frame height */ |
779 | | /**@}*/ |
780 | | |
781 | | /** |
782 | | * \name Rendered frame dimensions. |
783 | | * Dimensions after applying both super-resolution and resize to the coded |
784 | | * frame. Different from coded dimensions if super-resolution and/or resize |
785 | | * are being used for this frame. |
786 | | */ |
787 | | /**@{*/ |
788 | | int render_width; /*!< Rendered frame width */ |
789 | | int render_height; /*!< Rendered frame height */ |
790 | | /**@}*/ |
791 | | |
792 | | /** |
793 | | * \name Super-resolved frame dimensions. |
794 | | * Frame dimensions after applying super-resolution to the coded frame (if |
795 | | * present), but before applying resize. |
796 | | * Larger than the coded dimensions if super-resolution is being used for |
797 | | * this frame. |
798 | | * Different from rendered dimensions if resize is being used for this frame. |
799 | | */ |
800 | | /**@{*/ |
801 | | int superres_upscaled_width; /*!< Super-resolved frame width */ |
802 | | int superres_upscaled_height; /*!< Super-resolved frame height */ |
803 | | /**@}*/ |
804 | | |
805 | | /*! |
806 | | * The denominator of the superres scale used by this frame. |
807 | | * Note: The numerator is fixed to be SCALE_NUMERATOR. |
808 | | */ |
809 | | uint8_t superres_scale_denominator; |
810 | | |
811 | | /*! |
812 | | * buffer_removal_times[op_num] specifies the frame removal time in units of |
813 | | * DecCT clock ticks counted from the removal time of the last random access |
814 | | * point for operating point op_num. |
815 | | * TODO(urvang): We probably don't need the +1 here. |
816 | | */ |
817 | | uint32_t buffer_removal_times[MAX_NUM_OPERATING_POINTS + 1]; |
818 | | /*! |
819 | | * Presentation time of the frame in clock ticks DispCT counted from the |
820 | | * removal time of the last random access point for the operating point that |
821 | | * is being decoded. |
822 | | */ |
823 | | uint32_t frame_presentation_time; |
824 | | |
825 | | /*! |
826 | | * Buffer where previous frame is stored. |
827 | | */ |
828 | | RefCntBuffer *prev_frame; |
829 | | |
830 | | /*! |
831 | | * Buffer into which the current frame will be stored and other related info. |
832 | | * TODO(hkuang): Combine this with cur_buf in macroblockd. |
833 | | */ |
834 | | RefCntBuffer *cur_frame; |
835 | | |
836 | | /*! |
837 | | * For encoder, we have a two-level mapping from reference frame type to the |
838 | | * corresponding buffer in the buffer pool: |
839 | | * * 'remapped_ref_idx[i - 1]' maps reference type 'i' (range: LAST_FRAME ... |
840 | | * EXTREF_FRAME) to a remapped index 'j' (in range: 0 ... REF_FRAMES - 1) |
841 | | * * Later, 'cm->ref_frame_map[j]' maps the remapped index 'j' to a pointer to |
842 | | * the reference counted buffer structure RefCntBuffer, taken from the buffer |
843 | | * pool cm->buffer_pool->frame_bufs. |
844 | | * |
845 | | * LAST_FRAME, ..., EXTREF_FRAME |
846 | | * | | |
847 | | * v v |
848 | | * remapped_ref_idx[LAST_FRAME - 1], ..., remapped_ref_idx[EXTREF_FRAME - 1] |
849 | | * | | |
850 | | * v v |
851 | | * ref_frame_map[], ..., ref_frame_map[] |
852 | | * |
853 | | * Note: INTRA_FRAME always refers to the current frame, so there's no need to |
854 | | * have a remapped index for the same. |
855 | | */ |
856 | | int remapped_ref_idx[REF_FRAMES]; |
857 | | |
858 | | /*! |
859 | | * Scale of the current frame with respect to itself. |
860 | | * This is currently used for intra block copy, which behaves like an inter |
861 | | * prediction mode, where the reference frame is the current frame itself. |
862 | | */ |
863 | | struct scale_factors sf_identity; |
864 | | |
865 | | /*! |
866 | | * Scale factors of the reference frame with respect to the current frame. |
867 | | * This is required for generating inter prediction and will be non-identity |
868 | | * for a reference frame, if it has different dimensions than the coded |
869 | | * dimensions of the current frame. |
870 | | */ |
871 | | struct scale_factors ref_scale_factors[REF_FRAMES]; |
872 | | |
873 | | /*! |
874 | | * For decoder, ref_frame_map[i] maps reference type 'i' to a pointer to |
875 | | * the buffer in the buffer pool 'cm->buffer_pool.frame_bufs'. |
876 | | * For encoder, ref_frame_map[j] (where j = remapped_ref_idx[i]) maps |
877 | | * remapped reference index 'j' (that is, original reference type 'i') to |
878 | | * a pointer to the buffer in the buffer pool 'cm->buffer_pool.frame_bufs'. |
879 | | */ |
880 | | RefCntBuffer *ref_frame_map[REF_FRAMES]; |
881 | | |
882 | | /*! |
883 | | * If true, this frame is actually shown after decoding. |
884 | | * If false, this frame is coded in the bitstream, but not shown. It is only |
885 | | * used as a reference for other frames coded later. |
886 | | */ |
887 | | int show_frame; |
888 | | |
889 | | /*! |
890 | | * If true, this frame can be used as a show-existing frame for other frames |
891 | | * coded later. |
892 | | * When 'show_frame' is true, this is always true for all non-keyframes. |
893 | | * When 'show_frame' is false, this value is transmitted in the bitstream. |
894 | | */ |
895 | | int showable_frame; |
896 | | |
897 | | /*! |
898 | | * If true, show an existing frame coded before, instead of actually coding a |
899 | | * frame. The existing frame comes from one of the existing reference buffers, |
900 | | * as signaled in the bitstream. |
901 | | */ |
902 | | int show_existing_frame; |
903 | | |
904 | | /*! |
905 | | * Whether some features are allowed or not. |
906 | | */ |
907 | | FeatureFlags features; |
908 | | |
909 | | /*! |
910 | | * Params related to MB_MODE_INFO arrays and related info. |
911 | | */ |
912 | | CommonModeInfoParams mi_params; |
913 | | |
914 | | #if CONFIG_ENTROPY_STATS |
915 | | /*! |
916 | | * Context type used by token CDFs, in the range 0 .. (TOKEN_CDF_Q_CTXS - 1). |
917 | | */ |
918 | | int coef_cdf_category; |
919 | | #endif // CONFIG_ENTROPY_STATS |
920 | | |
921 | | /*! |
922 | | * Quantization params. |
923 | | */ |
924 | | CommonQuantParams quant_params; |
925 | | |
926 | | /*! |
927 | | * Segmentation info for current frame. |
928 | | */ |
929 | | struct segmentation seg; |
930 | | |
931 | | /*! |
932 | | * Segmentation map for previous frame. |
933 | | */ |
934 | | uint8_t *last_frame_seg_map; |
935 | | |
936 | | /** |
937 | | * \name Deblocking filter parameters. |
938 | | */ |
939 | | /**@{*/ |
940 | | loop_filter_info_n lf_info; /*!< Loop filter info */ |
941 | | struct loopfilter lf; /*!< Loop filter parameters */ |
942 | | /**@}*/ |
943 | | |
944 | | /** |
945 | | * \name Loop Restoration filter parameters. |
946 | | */ |
947 | | /**@{*/ |
948 | | RestorationInfo rst_info[MAX_MB_PLANE]; /*!< Loop Restoration filter info */ |
949 | | int32_t *rst_tmpbuf; /*!< Scratch buffer for self-guided restoration */ |
950 | | RestorationLineBuffers *rlbs; /*!< Line buffers needed by loop restoration */ |
951 | | YV12_BUFFER_CONFIG rst_frame; /*!< Stores the output of loop restoration */ |
952 | | /**@}*/ |
953 | | |
954 | | /*! |
955 | | * CDEF (Constrained Directional Enhancement Filter) parameters. |
956 | | */ |
957 | | CdefInfo cdef_info; |
958 | | |
959 | | /*! |
960 | | * Parameters for film grain synthesis. |
961 | | */ |
962 | | aom_film_grain_t film_grain_params; |
963 | | |
964 | | /*! |
965 | | * Parameters for delta quantization and delta loop filter level. |
966 | | */ |
967 | | DeltaQInfo delta_q_info; |
968 | | |
969 | | /*! |
970 | | * Global motion parameters for each reference frame. |
971 | | */ |
972 | | WarpedMotionParams global_motion[REF_FRAMES]; |
973 | | |
974 | | /*! |
975 | | * Elements part of the sequence header, that are applicable for all the |
976 | | * frames in the video. |
977 | | */ |
978 | | SequenceHeader *seq_params; |
979 | | |
980 | | /*! |
981 | | * Current CDFs of all the symbols for the current frame. |
982 | | */ |
983 | | FRAME_CONTEXT *fc; |
984 | | /*! |
985 | | * Default CDFs used when features.primary_ref_frame = PRIMARY_REF_NONE |
986 | | * (e.g. for a keyframe). These default CDFs are defined by the bitstream and |
987 | | * copied from default CDF tables for each symbol. |
988 | | */ |
989 | | FRAME_CONTEXT *default_frame_context; |
990 | | |
991 | | /*! |
992 | | * Parameters related to tiling. |
993 | | */ |
994 | | CommonTileParams tiles; |
995 | | |
996 | | /*! |
997 | | * External BufferPool passed from outside. |
998 | | */ |
999 | | BufferPool *buffer_pool; |
1000 | | |
1001 | | /*! |
1002 | | * Above context buffers and their sizes. |
1003 | | * Note: above contexts are allocated in this struct, as their size is |
1004 | | * dependent on frame width, while left contexts are declared and allocated in |
1005 | | * MACROBLOCKD struct, as they have a fixed size. |
1006 | | */ |
1007 | | CommonContexts above_contexts; |
1008 | | |
1009 | | /** |
1010 | | * \name Signaled when cm->seq_params->frame_id_numbers_present_flag == 1 |
1011 | | */ |
1012 | | /**@{*/ |
1013 | | int current_frame_id; /*!< frame ID for the current frame. */ |
1014 | | int ref_frame_id[REF_FRAMES]; /*!< frame IDs for the reference frames. */ |
1015 | | /**@}*/ |
1016 | | |
1017 | | /*! |
1018 | | * Motion vectors provided by motion field estimation. |
1019 | | * tpl_mvs[row * stride + col] stores MV for block at [mi_row, mi_col] where: |
1020 | | * mi_row = 2 * row, |
1021 | | * mi_col = 2 * col, and |
1022 | | * stride = cm->mi_params.mi_stride / 2 |
1023 | | */ |
1024 | | TPL_MV_REF *tpl_mvs; |
1025 | | /*! |
1026 | | * Allocated size of 'tpl_mvs' array. Refer to 'ensure_mv_buffer()' function. |
1027 | | */ |
1028 | | int tpl_mvs_mem_size; |
1029 | | /*! |
1030 | | * ref_frame_sign_bias[k] is 1 if relative distance between reference 'k' and |
1031 | | * current frame is positive; and 0 otherwise. |
1032 | | */ |
1033 | | int ref_frame_sign_bias[REF_FRAMES]; |
1034 | | /*! |
1035 | | * ref_frame_side[k] is 1 if relative distance between reference 'k' and |
1036 | | * current frame is positive, -1 if relative distance is 0; and 0 otherwise. |
1037 | | * TODO(jingning): This can be combined with sign_bias later. |
1038 | | */ |
1039 | | int8_t ref_frame_side[REF_FRAMES]; |
1040 | | |
1041 | | /*! |
1042 | | * Temporal layer ID of this frame |
1043 | | * (in the range 0 ... (number_temporal_layers - 1)). |
1044 | | */ |
1045 | | int temporal_layer_id; |
1046 | | |
1047 | | /*! |
1048 | | * Spatial layer ID of this frame |
1049 | | * (in the range 0 ... (number_spatial_layers - 1)). |
1050 | | */ |
1051 | | int spatial_layer_id; |
1052 | | |
1053 | | #if TXCOEFF_TIMER |
1054 | | int64_t cum_txcoeff_timer; |
1055 | | int64_t txcoeff_timer; |
1056 | | int txb_count; |
1057 | | #endif // TXCOEFF_TIMER |
1058 | | |
1059 | | #if TXCOEFF_COST_TIMER |
1060 | | int64_t cum_txcoeff_cost_timer; |
1061 | | int64_t txcoeff_cost_timer; |
1062 | | int64_t txcoeff_cost_count; |
1063 | | #endif // TXCOEFF_COST_TIMER |
1064 | | } AV1_COMMON; |
1065 | | |
1066 | | /*!\cond */ |
1067 | | |
1068 | | // TODO(hkuang): Don't need to lock the whole pool after implementing atomic |
1069 | | // frame reference count. |
1070 | 1.91M | static void lock_buffer_pool(BufferPool *const pool) { |
1071 | 1.91M | #if CONFIG_MULTITHREAD |
1072 | 1.91M | pthread_mutex_lock(&pool->pool_mutex); |
1073 | | #else |
1074 | | (void)pool; |
1075 | | #endif |
1076 | 1.91M | } av1_dx_iface.c:lock_buffer_pool Line | Count | Source | 1070 | 548k | static void lock_buffer_pool(BufferPool *const pool) { | 1071 | 548k | #if CONFIG_MULTITHREAD | 1072 | 548k | pthread_mutex_lock(&pool->pool_mutex); | 1073 | | #else | 1074 | | (void)pool; | 1075 | | #endif | 1076 | 548k | } |
decodeframe.c:lock_buffer_pool Line | Count | Source | 1070 | 857k | static void lock_buffer_pool(BufferPool *const pool) { | 1071 | 857k | #if CONFIG_MULTITHREAD | 1072 | 857k | pthread_mutex_lock(&pool->pool_mutex); | 1073 | | #else | 1074 | | (void)pool; | 1075 | | #endif | 1076 | 857k | } |
Unexecuted instantiation: decodemv.c:lock_buffer_pool decoder.c:lock_buffer_pool Line | Count | Source | 1070 | 500k | static void lock_buffer_pool(BufferPool *const pool) { | 1071 | 500k | #if CONFIG_MULTITHREAD | 1072 | 500k | pthread_mutex_lock(&pool->pool_mutex); | 1073 | | #else | 1074 | | (void)pool; | 1075 | | #endif | 1076 | 500k | } |
Unexecuted instantiation: decodetxb.c:lock_buffer_pool Unexecuted instantiation: detokenize.c:lock_buffer_pool Unexecuted instantiation: obu.c:lock_buffer_pool Unexecuted instantiation: alloccommon.c:lock_buffer_pool Unexecuted instantiation: av1_loopfilter.c:lock_buffer_pool Unexecuted instantiation: blockd.c:lock_buffer_pool Unexecuted instantiation: cdef.c:lock_buffer_pool Unexecuted instantiation: cdef_block.c:lock_buffer_pool Unexecuted instantiation: cfl.c:lock_buffer_pool Unexecuted instantiation: convolve.c:lock_buffer_pool Unexecuted instantiation: entropy.c:lock_buffer_pool Unexecuted instantiation: entropymode.c:lock_buffer_pool Unexecuted instantiation: entropymv.c:lock_buffer_pool Unexecuted instantiation: mvref_common.c:lock_buffer_pool Unexecuted instantiation: pred_common.c:lock_buffer_pool Unexecuted instantiation: quant_common.c:lock_buffer_pool Unexecuted instantiation: reconinter.c:lock_buffer_pool Unexecuted instantiation: reconintra.c:lock_buffer_pool resize.c:lock_buffer_pool Line | Count | Source | 1070 | 6.26k | static void lock_buffer_pool(BufferPool *const pool) { | 1071 | 6.26k | #if CONFIG_MULTITHREAD | 1072 | 6.26k | pthread_mutex_lock(&pool->pool_mutex); | 1073 | | #else | 1074 | | (void)pool; | 1075 | | #endif | 1076 | 6.26k | } |
Unexecuted instantiation: restoration.c:lock_buffer_pool Unexecuted instantiation: scan.c:lock_buffer_pool Unexecuted instantiation: thread_common.c:lock_buffer_pool Unexecuted instantiation: tile_common.c:lock_buffer_pool Unexecuted instantiation: txb_common.c:lock_buffer_pool Unexecuted instantiation: cfl_sse2.c:lock_buffer_pool Unexecuted instantiation: cfl_ssse3.c:lock_buffer_pool Unexecuted instantiation: resize_ssse3.c:lock_buffer_pool Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:lock_buffer_pool Unexecuted instantiation: filterintra_sse4.c:lock_buffer_pool Unexecuted instantiation: cfl_avx2.c:lock_buffer_pool |
1077 | | |
1078 | 1.91M | static void unlock_buffer_pool(BufferPool *const pool) { |
1079 | 1.91M | #if CONFIG_MULTITHREAD |
1080 | 1.91M | pthread_mutex_unlock(&pool->pool_mutex); |
1081 | | #else |
1082 | | (void)pool; |
1083 | | #endif |
1084 | 1.91M | } av1_dx_iface.c:unlock_buffer_pool Line | Count | Source | 1078 | 548k | static void unlock_buffer_pool(BufferPool *const pool) { | 1079 | 548k | #if CONFIG_MULTITHREAD | 1080 | 548k | pthread_mutex_unlock(&pool->pool_mutex); | 1081 | | #else | 1082 | | (void)pool; | 1083 | | #endif | 1084 | 548k | } |
decodeframe.c:unlock_buffer_pool Line | Count | Source | 1078 | 857k | static void unlock_buffer_pool(BufferPool *const pool) { | 1079 | 857k | #if CONFIG_MULTITHREAD | 1080 | 857k | pthread_mutex_unlock(&pool->pool_mutex); | 1081 | | #else | 1082 | | (void)pool; | 1083 | | #endif | 1084 | 857k | } |
Unexecuted instantiation: decodemv.c:unlock_buffer_pool decoder.c:unlock_buffer_pool Line | Count | Source | 1078 | 500k | static void unlock_buffer_pool(BufferPool *const pool) { | 1079 | 500k | #if CONFIG_MULTITHREAD | 1080 | 500k | pthread_mutex_unlock(&pool->pool_mutex); | 1081 | | #else | 1082 | | (void)pool; | 1083 | | #endif | 1084 | 500k | } |
Unexecuted instantiation: decodetxb.c:unlock_buffer_pool Unexecuted instantiation: detokenize.c:unlock_buffer_pool Unexecuted instantiation: obu.c:unlock_buffer_pool Unexecuted instantiation: alloccommon.c:unlock_buffer_pool Unexecuted instantiation: av1_loopfilter.c:unlock_buffer_pool Unexecuted instantiation: blockd.c:unlock_buffer_pool Unexecuted instantiation: cdef.c:unlock_buffer_pool Unexecuted instantiation: cdef_block.c:unlock_buffer_pool Unexecuted instantiation: cfl.c:unlock_buffer_pool Unexecuted instantiation: convolve.c:unlock_buffer_pool Unexecuted instantiation: entropy.c:unlock_buffer_pool Unexecuted instantiation: entropymode.c:unlock_buffer_pool Unexecuted instantiation: entropymv.c:unlock_buffer_pool Unexecuted instantiation: mvref_common.c:unlock_buffer_pool Unexecuted instantiation: pred_common.c:unlock_buffer_pool Unexecuted instantiation: quant_common.c:unlock_buffer_pool Unexecuted instantiation: reconinter.c:unlock_buffer_pool Unexecuted instantiation: reconintra.c:unlock_buffer_pool resize.c:unlock_buffer_pool Line | Count | Source | 1078 | 6.26k | static void unlock_buffer_pool(BufferPool *const pool) { | 1079 | 6.26k | #if CONFIG_MULTITHREAD | 1080 | 6.26k | pthread_mutex_unlock(&pool->pool_mutex); | 1081 | | #else | 1082 | | (void)pool; | 1083 | | #endif | 1084 | 6.26k | } |
Unexecuted instantiation: restoration.c:unlock_buffer_pool Unexecuted instantiation: scan.c:unlock_buffer_pool Unexecuted instantiation: thread_common.c:unlock_buffer_pool Unexecuted instantiation: tile_common.c:unlock_buffer_pool Unexecuted instantiation: txb_common.c:unlock_buffer_pool Unexecuted instantiation: cfl_sse2.c:unlock_buffer_pool Unexecuted instantiation: cfl_ssse3.c:unlock_buffer_pool Unexecuted instantiation: resize_ssse3.c:unlock_buffer_pool Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:unlock_buffer_pool Unexecuted instantiation: filterintra_sse4.c:unlock_buffer_pool Unexecuted instantiation: cfl_avx2.c:unlock_buffer_pool |
1085 | | |
1086 | 0 | static INLINE YV12_BUFFER_CONFIG *get_ref_frame(AV1_COMMON *cm, int index) { |
1087 | 0 | if (index < 0 || index >= REF_FRAMES) return NULL; |
1088 | 0 | if (cm->ref_frame_map[index] == NULL) return NULL; |
1089 | 0 | return &cm->ref_frame_map[index]->buf; |
1090 | 0 | } Unexecuted instantiation: av1_dx_iface.c:get_ref_frame Unexecuted instantiation: decodeframe.c:get_ref_frame Unexecuted instantiation: decodemv.c:get_ref_frame Unexecuted instantiation: decoder.c:get_ref_frame Unexecuted instantiation: decodetxb.c:get_ref_frame Unexecuted instantiation: detokenize.c:get_ref_frame Unexecuted instantiation: obu.c:get_ref_frame Unexecuted instantiation: alloccommon.c:get_ref_frame Unexecuted instantiation: av1_loopfilter.c:get_ref_frame Unexecuted instantiation: blockd.c:get_ref_frame Unexecuted instantiation: cdef.c:get_ref_frame Unexecuted instantiation: cdef_block.c:get_ref_frame Unexecuted instantiation: cfl.c:get_ref_frame Unexecuted instantiation: convolve.c:get_ref_frame Unexecuted instantiation: entropy.c:get_ref_frame Unexecuted instantiation: entropymode.c:get_ref_frame Unexecuted instantiation: entropymv.c:get_ref_frame Unexecuted instantiation: mvref_common.c:get_ref_frame Unexecuted instantiation: pred_common.c:get_ref_frame Unexecuted instantiation: quant_common.c:get_ref_frame Unexecuted instantiation: reconinter.c:get_ref_frame Unexecuted instantiation: reconintra.c:get_ref_frame Unexecuted instantiation: resize.c:get_ref_frame Unexecuted instantiation: restoration.c:get_ref_frame Unexecuted instantiation: scan.c:get_ref_frame Unexecuted instantiation: thread_common.c:get_ref_frame Unexecuted instantiation: tile_common.c:get_ref_frame Unexecuted instantiation: txb_common.c:get_ref_frame Unexecuted instantiation: cfl_sse2.c:get_ref_frame Unexecuted instantiation: cfl_ssse3.c:get_ref_frame Unexecuted instantiation: resize_ssse3.c:get_ref_frame Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:get_ref_frame Unexecuted instantiation: filterintra_sse4.c:get_ref_frame Unexecuted instantiation: cfl_avx2.c:get_ref_frame |
1091 | | |
1092 | 551k | static INLINE int get_free_fb(AV1_COMMON *cm) { |
1093 | 551k | RefCntBuffer *const frame_bufs = cm->buffer_pool->frame_bufs; |
1094 | 551k | int i; |
1095 | | |
1096 | 551k | lock_buffer_pool(cm->buffer_pool); |
1097 | 551k | const int num_frame_bufs = cm->buffer_pool->num_frame_bufs; |
1098 | 2.04M | for (i = 0; i < num_frame_bufs; ++i) |
1099 | 2.04M | if (frame_bufs[i].ref_count == 0) break; |
1100 | | |
1101 | 551k | if (i != num_frame_bufs) { |
1102 | 551k | if (frame_bufs[i].buf.use_external_reference_buffers) { |
1103 | | // If this frame buffer's y_buffer, u_buffer, and v_buffer point to the |
1104 | | // external reference buffers. Restore the buffer pointers to point to the |
1105 | | // internally allocated memory. |
1106 | 0 | YV12_BUFFER_CONFIG *ybf = &frame_bufs[i].buf; |
1107 | 0 | ybf->y_buffer = ybf->store_buf_adr[0]; |
1108 | 0 | ybf->u_buffer = ybf->store_buf_adr[1]; |
1109 | 0 | ybf->v_buffer = ybf->store_buf_adr[2]; |
1110 | 0 | ybf->use_external_reference_buffers = 0; |
1111 | 0 | } |
1112 | | |
1113 | 551k | frame_bufs[i].ref_count = 1; |
1114 | 551k | } else { |
1115 | | // We should never run out of free buffers. If this assertion fails, there |
1116 | | // is a reference leak. |
1117 | 0 | assert(0 && "Ran out of free frame buffers. Likely a reference leak."); |
1118 | | // Reset i to be INVALID_IDX to indicate no free buffer found. |
1119 | 0 | i = INVALID_IDX; |
1120 | 0 | } |
1121 | | |
1122 | 0 | unlock_buffer_pool(cm->buffer_pool); |
1123 | 551k | return i; |
1124 | 551k | } Unexecuted instantiation: av1_dx_iface.c:get_free_fb decodeframe.c:get_free_fb Line | Count | Source | 1092 | 301k | static INLINE int get_free_fb(AV1_COMMON *cm) { | 1093 | 301k | RefCntBuffer *const frame_bufs = cm->buffer_pool->frame_bufs; | 1094 | 301k | int i; | 1095 | | | 1096 | 301k | lock_buffer_pool(cm->buffer_pool); | 1097 | 301k | const int num_frame_bufs = cm->buffer_pool->num_frame_bufs; | 1098 | 1.57M | for (i = 0; i < num_frame_bufs; ++i) | 1099 | 1.57M | if (frame_bufs[i].ref_count == 0) break; | 1100 | | | 1101 | 301k | if (i != num_frame_bufs) { | 1102 | 301k | if (frame_bufs[i].buf.use_external_reference_buffers) { | 1103 | | // If this frame buffer's y_buffer, u_buffer, and v_buffer point to the | 1104 | | // external reference buffers. Restore the buffer pointers to point to the | 1105 | | // internally allocated memory. | 1106 | 0 | YV12_BUFFER_CONFIG *ybf = &frame_bufs[i].buf; | 1107 | 0 | ybf->y_buffer = ybf->store_buf_adr[0]; | 1108 | 0 | ybf->u_buffer = ybf->store_buf_adr[1]; | 1109 | 0 | ybf->v_buffer = ybf->store_buf_adr[2]; | 1110 | 0 | ybf->use_external_reference_buffers = 0; | 1111 | 0 | } | 1112 | | | 1113 | 301k | frame_bufs[i].ref_count = 1; | 1114 | 301k | } else { | 1115 | | // We should never run out of free buffers. If this assertion fails, there | 1116 | | // is a reference leak. | 1117 | 0 | assert(0 && "Ran out of free frame buffers. Likely a reference leak."); | 1118 | | // Reset i to be INVALID_IDX to indicate no free buffer found. | 1119 | 0 | i = INVALID_IDX; | 1120 | 0 | } | 1121 | | | 1122 | 0 | unlock_buffer_pool(cm->buffer_pool); | 1123 | 301k | return i; | 1124 | 301k | } |
Unexecuted instantiation: decodemv.c:get_free_fb Line | Count | Source | 1092 | 250k | static INLINE int get_free_fb(AV1_COMMON *cm) { | 1093 | 250k | RefCntBuffer *const frame_bufs = cm->buffer_pool->frame_bufs; | 1094 | 250k | int i; | 1095 | | | 1096 | 250k | lock_buffer_pool(cm->buffer_pool); | 1097 | 250k | const int num_frame_bufs = cm->buffer_pool->num_frame_bufs; | 1098 | 466k | for (i = 0; i < num_frame_bufs; ++i) | 1099 | 466k | if (frame_bufs[i].ref_count == 0) break; | 1100 | | | 1101 | 250k | if (i != num_frame_bufs) { | 1102 | 250k | if (frame_bufs[i].buf.use_external_reference_buffers) { | 1103 | | // If this frame buffer's y_buffer, u_buffer, and v_buffer point to the | 1104 | | // external reference buffers. Restore the buffer pointers to point to the | 1105 | | // internally allocated memory. | 1106 | 0 | YV12_BUFFER_CONFIG *ybf = &frame_bufs[i].buf; | 1107 | 0 | ybf->y_buffer = ybf->store_buf_adr[0]; | 1108 | 0 | ybf->u_buffer = ybf->store_buf_adr[1]; | 1109 | 0 | ybf->v_buffer = ybf->store_buf_adr[2]; | 1110 | 0 | ybf->use_external_reference_buffers = 0; | 1111 | 0 | } | 1112 | | | 1113 | 250k | frame_bufs[i].ref_count = 1; | 1114 | 250k | } else { | 1115 | | // We should never run out of free buffers. If this assertion fails, there | 1116 | | // is a reference leak. | 1117 | 0 | assert(0 && "Ran out of free frame buffers. Likely a reference leak."); | 1118 | | // Reset i to be INVALID_IDX to indicate no free buffer found. | 1119 | 0 | i = INVALID_IDX; | 1120 | 0 | } | 1121 | | | 1122 | 0 | unlock_buffer_pool(cm->buffer_pool); | 1123 | 250k | return i; | 1124 | 250k | } |
Unexecuted instantiation: decodetxb.c:get_free_fb Unexecuted instantiation: detokenize.c:get_free_fb Unexecuted instantiation: obu.c:get_free_fb Unexecuted instantiation: alloccommon.c:get_free_fb Unexecuted instantiation: av1_loopfilter.c:get_free_fb Unexecuted instantiation: blockd.c:get_free_fb Unexecuted instantiation: cdef.c:get_free_fb Unexecuted instantiation: cdef_block.c:get_free_fb Unexecuted instantiation: cfl.c:get_free_fb Unexecuted instantiation: convolve.c:get_free_fb Unexecuted instantiation: entropy.c:get_free_fb Unexecuted instantiation: entropymode.c:get_free_fb Unexecuted instantiation: entropymv.c:get_free_fb Unexecuted instantiation: mvref_common.c:get_free_fb Unexecuted instantiation: pred_common.c:get_free_fb Unexecuted instantiation: quant_common.c:get_free_fb Unexecuted instantiation: reconinter.c:get_free_fb Unexecuted instantiation: reconintra.c:get_free_fb Unexecuted instantiation: resize.c:get_free_fb Unexecuted instantiation: restoration.c:get_free_fb Unexecuted instantiation: scan.c:get_free_fb Unexecuted instantiation: thread_common.c:get_free_fb Unexecuted instantiation: tile_common.c:get_free_fb Unexecuted instantiation: txb_common.c:get_free_fb Unexecuted instantiation: cfl_sse2.c:get_free_fb Unexecuted instantiation: cfl_ssse3.c:get_free_fb Unexecuted instantiation: resize_ssse3.c:get_free_fb Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:get_free_fb Unexecuted instantiation: filterintra_sse4.c:get_free_fb Unexecuted instantiation: cfl_avx2.c:get_free_fb |
1125 | | |
1126 | 250k | static INLINE RefCntBuffer *assign_cur_frame_new_fb(AV1_COMMON *const cm) { |
1127 | | // Release the previously-used frame-buffer |
1128 | 250k | if (cm->cur_frame != NULL) { |
1129 | 0 | --cm->cur_frame->ref_count; |
1130 | 0 | cm->cur_frame = NULL; |
1131 | 0 | } |
1132 | | |
1133 | | // Assign a new framebuffer |
1134 | 250k | const int new_fb_idx = get_free_fb(cm); |
1135 | 250k | if (new_fb_idx == INVALID_IDX) return NULL; |
1136 | | |
1137 | 250k | cm->cur_frame = &cm->buffer_pool->frame_bufs[new_fb_idx]; |
1138 | | #if CONFIG_AV1_ENCODER && !CONFIG_REALTIME_ONLY |
1139 | | aom_invalidate_pyramid(cm->cur_frame->buf.y_pyramid); |
1140 | | av1_invalidate_corner_list(cm->cur_frame->buf.corners); |
1141 | | #endif // CONFIG_AV1_ENCODER && !CONFIG_REALTIME_ONLY |
1142 | 250k | av1_zero(cm->cur_frame->interp_filter_selected); |
1143 | 250k | return cm->cur_frame; |
1144 | 250k | } Unexecuted instantiation: av1_dx_iface.c:assign_cur_frame_new_fb Unexecuted instantiation: decodeframe.c:assign_cur_frame_new_fb Unexecuted instantiation: decodemv.c:assign_cur_frame_new_fb decoder.c:assign_cur_frame_new_fb Line | Count | Source | 1126 | 250k | static INLINE RefCntBuffer *assign_cur_frame_new_fb(AV1_COMMON *const cm) { | 1127 | | // Release the previously-used frame-buffer | 1128 | 250k | if (cm->cur_frame != NULL) { | 1129 | 0 | --cm->cur_frame->ref_count; | 1130 | 0 | cm->cur_frame = NULL; | 1131 | 0 | } | 1132 | | | 1133 | | // Assign a new framebuffer | 1134 | 250k | const int new_fb_idx = get_free_fb(cm); | 1135 | 250k | if (new_fb_idx == INVALID_IDX) return NULL; | 1136 | | | 1137 | 250k | cm->cur_frame = &cm->buffer_pool->frame_bufs[new_fb_idx]; | 1138 | | #if CONFIG_AV1_ENCODER && !CONFIG_REALTIME_ONLY | 1139 | | aom_invalidate_pyramid(cm->cur_frame->buf.y_pyramid); | 1140 | | av1_invalidate_corner_list(cm->cur_frame->buf.corners); | 1141 | | #endif // CONFIG_AV1_ENCODER && !CONFIG_REALTIME_ONLY | 1142 | 250k | av1_zero(cm->cur_frame->interp_filter_selected); | 1143 | 250k | return cm->cur_frame; | 1144 | 250k | } |
Unexecuted instantiation: decodetxb.c:assign_cur_frame_new_fb Unexecuted instantiation: detokenize.c:assign_cur_frame_new_fb Unexecuted instantiation: obu.c:assign_cur_frame_new_fb Unexecuted instantiation: alloccommon.c:assign_cur_frame_new_fb Unexecuted instantiation: av1_loopfilter.c:assign_cur_frame_new_fb Unexecuted instantiation: blockd.c:assign_cur_frame_new_fb Unexecuted instantiation: cdef.c:assign_cur_frame_new_fb Unexecuted instantiation: cdef_block.c:assign_cur_frame_new_fb Unexecuted instantiation: cfl.c:assign_cur_frame_new_fb Unexecuted instantiation: convolve.c:assign_cur_frame_new_fb Unexecuted instantiation: entropy.c:assign_cur_frame_new_fb Unexecuted instantiation: entropymode.c:assign_cur_frame_new_fb Unexecuted instantiation: entropymv.c:assign_cur_frame_new_fb Unexecuted instantiation: mvref_common.c:assign_cur_frame_new_fb Unexecuted instantiation: pred_common.c:assign_cur_frame_new_fb Unexecuted instantiation: quant_common.c:assign_cur_frame_new_fb Unexecuted instantiation: reconinter.c:assign_cur_frame_new_fb Unexecuted instantiation: reconintra.c:assign_cur_frame_new_fb Unexecuted instantiation: resize.c:assign_cur_frame_new_fb Unexecuted instantiation: restoration.c:assign_cur_frame_new_fb Unexecuted instantiation: scan.c:assign_cur_frame_new_fb Unexecuted instantiation: thread_common.c:assign_cur_frame_new_fb Unexecuted instantiation: tile_common.c:assign_cur_frame_new_fb Unexecuted instantiation: txb_common.c:assign_cur_frame_new_fb Unexecuted instantiation: cfl_sse2.c:assign_cur_frame_new_fb Unexecuted instantiation: cfl_ssse3.c:assign_cur_frame_new_fb Unexecuted instantiation: resize_ssse3.c:assign_cur_frame_new_fb Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:assign_cur_frame_new_fb Unexecuted instantiation: filterintra_sse4.c:assign_cur_frame_new_fb Unexecuted instantiation: cfl_avx2.c:assign_cur_frame_new_fb |
1145 | | |
1146 | | // Modify 'lhs_ptr' to reference the buffer at 'rhs_ptr', and update the ref |
1147 | | // counts accordingly. |
1148 | | static INLINE void assign_frame_buffer_p(RefCntBuffer **lhs_ptr, |
1149 | 1.39k | RefCntBuffer *rhs_ptr) { |
1150 | 1.39k | RefCntBuffer *const old_ptr = *lhs_ptr; |
1151 | 1.39k | if (old_ptr != NULL) { |
1152 | 1.39k | assert(old_ptr->ref_count > 0); |
1153 | | // One less reference to the buffer at 'old_ptr', so decrease ref count. |
1154 | 0 | --old_ptr->ref_count; |
1155 | 1.39k | } |
1156 | | |
1157 | 0 | *lhs_ptr = rhs_ptr; |
1158 | | // One more reference to the buffer at 'rhs_ptr', so increase ref count. |
1159 | 1.39k | ++rhs_ptr->ref_count; |
1160 | 1.39k | } Unexecuted instantiation: av1_dx_iface.c:assign_frame_buffer_p decodeframe.c:assign_frame_buffer_p Line | Count | Source | 1149 | 1.39k | RefCntBuffer *rhs_ptr) { | 1150 | 1.39k | RefCntBuffer *const old_ptr = *lhs_ptr; | 1151 | 1.39k | if (old_ptr != NULL) { | 1152 | 1.39k | assert(old_ptr->ref_count > 0); | 1153 | | // One less reference to the buffer at 'old_ptr', so decrease ref count. | 1154 | 0 | --old_ptr->ref_count; | 1155 | 1.39k | } | 1156 | | | 1157 | 0 | *lhs_ptr = rhs_ptr; | 1158 | | // One more reference to the buffer at 'rhs_ptr', so increase ref count. | 1159 | 1.39k | ++rhs_ptr->ref_count; | 1160 | 1.39k | } |
Unexecuted instantiation: decodemv.c:assign_frame_buffer_p Unexecuted instantiation: decoder.c:assign_frame_buffer_p Unexecuted instantiation: decodetxb.c:assign_frame_buffer_p Unexecuted instantiation: detokenize.c:assign_frame_buffer_p Unexecuted instantiation: obu.c:assign_frame_buffer_p Unexecuted instantiation: alloccommon.c:assign_frame_buffer_p Unexecuted instantiation: av1_loopfilter.c:assign_frame_buffer_p Unexecuted instantiation: blockd.c:assign_frame_buffer_p Unexecuted instantiation: cdef.c:assign_frame_buffer_p Unexecuted instantiation: cdef_block.c:assign_frame_buffer_p Unexecuted instantiation: cfl.c:assign_frame_buffer_p Unexecuted instantiation: convolve.c:assign_frame_buffer_p Unexecuted instantiation: entropy.c:assign_frame_buffer_p Unexecuted instantiation: entropymode.c:assign_frame_buffer_p Unexecuted instantiation: entropymv.c:assign_frame_buffer_p Unexecuted instantiation: mvref_common.c:assign_frame_buffer_p Unexecuted instantiation: pred_common.c:assign_frame_buffer_p Unexecuted instantiation: quant_common.c:assign_frame_buffer_p Unexecuted instantiation: reconinter.c:assign_frame_buffer_p Unexecuted instantiation: reconintra.c:assign_frame_buffer_p Unexecuted instantiation: resize.c:assign_frame_buffer_p Unexecuted instantiation: restoration.c:assign_frame_buffer_p Unexecuted instantiation: scan.c:assign_frame_buffer_p Unexecuted instantiation: thread_common.c:assign_frame_buffer_p Unexecuted instantiation: tile_common.c:assign_frame_buffer_p Unexecuted instantiation: txb_common.c:assign_frame_buffer_p Unexecuted instantiation: cfl_sse2.c:assign_frame_buffer_p Unexecuted instantiation: cfl_ssse3.c:assign_frame_buffer_p Unexecuted instantiation: resize_ssse3.c:assign_frame_buffer_p Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:assign_frame_buffer_p Unexecuted instantiation: filterintra_sse4.c:assign_frame_buffer_p Unexecuted instantiation: cfl_avx2.c:assign_frame_buffer_p |
1161 | | |
1162 | 26.0M | static INLINE int frame_is_intra_only(const AV1_COMMON *const cm) { |
1163 | 26.0M | return cm->current_frame.frame_type == KEY_FRAME || |
1164 | 26.0M | cm->current_frame.frame_type == INTRA_ONLY_FRAME; |
1165 | 26.0M | } av1_dx_iface.c:frame_is_intra_only Line | Count | Source | 1162 | 42.2k | static INLINE int frame_is_intra_only(const AV1_COMMON *const cm) { | 1163 | 42.2k | return cm->current_frame.frame_type == KEY_FRAME || | 1164 | 42.2k | cm->current_frame.frame_type == INTRA_ONLY_FRAME; | 1165 | 42.2k | } |
decodeframe.c:frame_is_intra_only Line | Count | Source | 1162 | 849k | static INLINE int frame_is_intra_only(const AV1_COMMON *const cm) { | 1163 | 849k | return cm->current_frame.frame_type == KEY_FRAME || | 1164 | 849k | cm->current_frame.frame_type == INTRA_ONLY_FRAME; | 1165 | 849k | } |
decodemv.c:frame_is_intra_only Line | Count | Source | 1162 | 24.9M | static INLINE int frame_is_intra_only(const AV1_COMMON *const cm) { | 1163 | 24.9M | return cm->current_frame.frame_type == KEY_FRAME || | 1164 | 24.9M | cm->current_frame.frame_type == INTRA_ONLY_FRAME; | 1165 | 24.9M | } |
Unexecuted instantiation: decoder.c:frame_is_intra_only Unexecuted instantiation: decodetxb.c:frame_is_intra_only Unexecuted instantiation: detokenize.c:frame_is_intra_only Unexecuted instantiation: obu.c:frame_is_intra_only Unexecuted instantiation: alloccommon.c:frame_is_intra_only Unexecuted instantiation: av1_loopfilter.c:frame_is_intra_only Unexecuted instantiation: blockd.c:frame_is_intra_only Unexecuted instantiation: cdef.c:frame_is_intra_only Unexecuted instantiation: cdef_block.c:frame_is_intra_only Unexecuted instantiation: cfl.c:frame_is_intra_only Unexecuted instantiation: convolve.c:frame_is_intra_only Unexecuted instantiation: entropy.c:frame_is_intra_only Unexecuted instantiation: entropymode.c:frame_is_intra_only Unexecuted instantiation: entropymv.c:frame_is_intra_only mvref_common.c:frame_is_intra_only Line | Count | Source | 1162 | 117k | static INLINE int frame_is_intra_only(const AV1_COMMON *const cm) { | 1163 | 117k | return cm->current_frame.frame_type == KEY_FRAME || | 1164 | 117k | cm->current_frame.frame_type == INTRA_ONLY_FRAME; | 1165 | 117k | } |
Unexecuted instantiation: pred_common.c:frame_is_intra_only Unexecuted instantiation: quant_common.c:frame_is_intra_only Unexecuted instantiation: reconinter.c:frame_is_intra_only Unexecuted instantiation: reconintra.c:frame_is_intra_only Unexecuted instantiation: resize.c:frame_is_intra_only Unexecuted instantiation: restoration.c:frame_is_intra_only Unexecuted instantiation: scan.c:frame_is_intra_only thread_common.c:frame_is_intra_only Line | Count | Source | 1162 | 83.8k | static INLINE int frame_is_intra_only(const AV1_COMMON *const cm) { | 1163 | 83.8k | return cm->current_frame.frame_type == KEY_FRAME || | 1164 | 83.8k | cm->current_frame.frame_type == INTRA_ONLY_FRAME; | 1165 | 83.8k | } |
Unexecuted instantiation: tile_common.c:frame_is_intra_only Unexecuted instantiation: txb_common.c:frame_is_intra_only Unexecuted instantiation: cfl_sse2.c:frame_is_intra_only Unexecuted instantiation: cfl_ssse3.c:frame_is_intra_only Unexecuted instantiation: resize_ssse3.c:frame_is_intra_only Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:frame_is_intra_only Unexecuted instantiation: filterintra_sse4.c:frame_is_intra_only Unexecuted instantiation: cfl_avx2.c:frame_is_intra_only |
1166 | | |
1167 | 404k | static INLINE int frame_is_sframe(const AV1_COMMON *cm) { |
1168 | 404k | return cm->current_frame.frame_type == S_FRAME; |
1169 | 404k | } Unexecuted instantiation: av1_dx_iface.c:frame_is_sframe decodeframe.c:frame_is_sframe Line | Count | Source | 1167 | 404k | static INLINE int frame_is_sframe(const AV1_COMMON *cm) { | 1168 | 404k | return cm->current_frame.frame_type == S_FRAME; | 1169 | 404k | } |
Unexecuted instantiation: decodemv.c:frame_is_sframe Unexecuted instantiation: decoder.c:frame_is_sframe Unexecuted instantiation: decodetxb.c:frame_is_sframe Unexecuted instantiation: detokenize.c:frame_is_sframe Unexecuted instantiation: obu.c:frame_is_sframe Unexecuted instantiation: alloccommon.c:frame_is_sframe Unexecuted instantiation: av1_loopfilter.c:frame_is_sframe Unexecuted instantiation: blockd.c:frame_is_sframe Unexecuted instantiation: cdef.c:frame_is_sframe Unexecuted instantiation: cdef_block.c:frame_is_sframe Unexecuted instantiation: cfl.c:frame_is_sframe Unexecuted instantiation: convolve.c:frame_is_sframe Unexecuted instantiation: entropy.c:frame_is_sframe Unexecuted instantiation: entropymode.c:frame_is_sframe Unexecuted instantiation: entropymv.c:frame_is_sframe Unexecuted instantiation: mvref_common.c:frame_is_sframe Unexecuted instantiation: pred_common.c:frame_is_sframe Unexecuted instantiation: quant_common.c:frame_is_sframe Unexecuted instantiation: reconinter.c:frame_is_sframe Unexecuted instantiation: reconintra.c:frame_is_sframe Unexecuted instantiation: resize.c:frame_is_sframe Unexecuted instantiation: restoration.c:frame_is_sframe Unexecuted instantiation: scan.c:frame_is_sframe Unexecuted instantiation: thread_common.c:frame_is_sframe Unexecuted instantiation: tile_common.c:frame_is_sframe Unexecuted instantiation: txb_common.c:frame_is_sframe Unexecuted instantiation: cfl_sse2.c:frame_is_sframe Unexecuted instantiation: cfl_ssse3.c:frame_is_sframe Unexecuted instantiation: resize_ssse3.c:frame_is_sframe Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:frame_is_sframe Unexecuted instantiation: filterintra_sse4.c:frame_is_sframe Unexecuted instantiation: cfl_avx2.c:frame_is_sframe |
1170 | | |
1171 | | // These functions take a reference frame label between LAST_FRAME and |
1172 | | // EXTREF_FRAME inclusive. Note that this is different to the indexing |
1173 | | // previously used by the frame_refs[] array. |
1174 | | static INLINE int get_ref_frame_map_idx(const AV1_COMMON *const cm, |
1175 | 43.0M | const MV_REFERENCE_FRAME ref_frame) { |
1176 | 43.0M | return (ref_frame >= LAST_FRAME && ref_frame <= EXTREF_FRAME) |
1177 | 43.0M | ? cm->remapped_ref_idx[ref_frame - LAST_FRAME] |
1178 | 18.4E | : INVALID_IDX; |
1179 | 43.0M | } Unexecuted instantiation: av1_dx_iface.c:get_ref_frame_map_idx decodeframe.c:get_ref_frame_map_idx Line | Count | Source | 1175 | 21.8M | const MV_REFERENCE_FRAME ref_frame) { | 1176 | 21.8M | return (ref_frame >= LAST_FRAME && ref_frame <= EXTREF_FRAME) | 1177 | 21.8M | ? cm->remapped_ref_idx[ref_frame - LAST_FRAME] | 1178 | 18.4E | : INVALID_IDX; | 1179 | 21.8M | } |
decodemv.c:get_ref_frame_map_idx Line | Count | Source | 1175 | 7.81M | const MV_REFERENCE_FRAME ref_frame) { | 1176 | 7.81M | return (ref_frame >= LAST_FRAME && ref_frame <= EXTREF_FRAME) | 1177 | 7.81M | ? cm->remapped_ref_idx[ref_frame - LAST_FRAME] | 1178 | 18.4E | : INVALID_IDX; | 1179 | 7.81M | } |
Unexecuted instantiation: decoder.c:get_ref_frame_map_idx Unexecuted instantiation: decodetxb.c:get_ref_frame_map_idx Unexecuted instantiation: detokenize.c:get_ref_frame_map_idx Unexecuted instantiation: obu.c:get_ref_frame_map_idx Unexecuted instantiation: alloccommon.c:get_ref_frame_map_idx Unexecuted instantiation: av1_loopfilter.c:get_ref_frame_map_idx Unexecuted instantiation: blockd.c:get_ref_frame_map_idx Unexecuted instantiation: cdef.c:get_ref_frame_map_idx Unexecuted instantiation: cdef_block.c:get_ref_frame_map_idx Unexecuted instantiation: cfl.c:get_ref_frame_map_idx Unexecuted instantiation: convolve.c:get_ref_frame_map_idx Unexecuted instantiation: entropy.c:get_ref_frame_map_idx Unexecuted instantiation: entropymode.c:get_ref_frame_map_idx Unexecuted instantiation: entropymv.c:get_ref_frame_map_idx mvref_common.c:get_ref_frame_map_idx Line | Count | Source | 1175 | 7.60M | const MV_REFERENCE_FRAME ref_frame) { | 1176 | 7.60M | return (ref_frame >= LAST_FRAME && ref_frame <= EXTREF_FRAME) | 1177 | 7.60M | ? cm->remapped_ref_idx[ref_frame - LAST_FRAME] | 1178 | 7.60M | : INVALID_IDX; | 1179 | 7.60M | } |
Unexecuted instantiation: pred_common.c:get_ref_frame_map_idx Unexecuted instantiation: quant_common.c:get_ref_frame_map_idx reconinter.c:get_ref_frame_map_idx Line | Count | Source | 1175 | 5.72M | const MV_REFERENCE_FRAME ref_frame) { | 1176 | 5.72M | return (ref_frame >= LAST_FRAME && ref_frame <= EXTREF_FRAME) | 1177 | 5.72M | ? cm->remapped_ref_idx[ref_frame - LAST_FRAME] | 1178 | 18.4E | : INVALID_IDX; | 1179 | 5.72M | } |
Unexecuted instantiation: reconintra.c:get_ref_frame_map_idx Unexecuted instantiation: resize.c:get_ref_frame_map_idx Unexecuted instantiation: restoration.c:get_ref_frame_map_idx Unexecuted instantiation: scan.c:get_ref_frame_map_idx Unexecuted instantiation: thread_common.c:get_ref_frame_map_idx Unexecuted instantiation: tile_common.c:get_ref_frame_map_idx Unexecuted instantiation: txb_common.c:get_ref_frame_map_idx Unexecuted instantiation: cfl_sse2.c:get_ref_frame_map_idx Unexecuted instantiation: cfl_ssse3.c:get_ref_frame_map_idx Unexecuted instantiation: resize_ssse3.c:get_ref_frame_map_idx Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:get_ref_frame_map_idx Unexecuted instantiation: filterintra_sse4.c:get_ref_frame_map_idx Unexecuted instantiation: cfl_avx2.c:get_ref_frame_map_idx |
1180 | | |
1181 | | static INLINE RefCntBuffer *get_ref_frame_buf( |
1182 | 22.9M | const AV1_COMMON *const cm, const MV_REFERENCE_FRAME ref_frame) { |
1183 | 22.9M | const int map_idx = get_ref_frame_map_idx(cm, ref_frame); |
1184 | 22.9M | return (map_idx != INVALID_IDX) ? cm->ref_frame_map[map_idx] : NULL; |
1185 | 22.9M | } Unexecuted instantiation: av1_dx_iface.c:get_ref_frame_buf decodeframe.c:get_ref_frame_buf Line | Count | Source | 1182 | 11.1M | const AV1_COMMON *const cm, const MV_REFERENCE_FRAME ref_frame) { | 1183 | 11.1M | const int map_idx = get_ref_frame_map_idx(cm, ref_frame); | 1184 | 11.1M | return (map_idx != INVALID_IDX) ? cm->ref_frame_map[map_idx] : NULL; | 1185 | 11.1M | } |
decodemv.c:get_ref_frame_buf Line | Count | Source | 1182 | 677k | const AV1_COMMON *const cm, const MV_REFERENCE_FRAME ref_frame) { | 1183 | 677k | const int map_idx = get_ref_frame_map_idx(cm, ref_frame); | 1184 | 677k | return (map_idx != INVALID_IDX) ? cm->ref_frame_map[map_idx] : NULL; | 1185 | 677k | } |
Unexecuted instantiation: decoder.c:get_ref_frame_buf Unexecuted instantiation: decodetxb.c:get_ref_frame_buf Unexecuted instantiation: detokenize.c:get_ref_frame_buf Unexecuted instantiation: obu.c:get_ref_frame_buf Unexecuted instantiation: alloccommon.c:get_ref_frame_buf Unexecuted instantiation: av1_loopfilter.c:get_ref_frame_buf Unexecuted instantiation: blockd.c:get_ref_frame_buf Unexecuted instantiation: cdef.c:get_ref_frame_buf Unexecuted instantiation: cdef_block.c:get_ref_frame_buf Unexecuted instantiation: cfl.c:get_ref_frame_buf Unexecuted instantiation: convolve.c:get_ref_frame_buf Unexecuted instantiation: entropy.c:get_ref_frame_buf Unexecuted instantiation: entropymode.c:get_ref_frame_buf Unexecuted instantiation: entropymv.c:get_ref_frame_buf mvref_common.c:get_ref_frame_buf Line | Count | Source | 1182 | 7.60M | const AV1_COMMON *const cm, const MV_REFERENCE_FRAME ref_frame) { | 1183 | 7.60M | const int map_idx = get_ref_frame_map_idx(cm, ref_frame); | 1184 | 7.60M | return (map_idx != INVALID_IDX) ? cm->ref_frame_map[map_idx] : NULL; | 1185 | 7.60M | } |
Unexecuted instantiation: pred_common.c:get_ref_frame_buf Unexecuted instantiation: quant_common.c:get_ref_frame_buf reconinter.c:get_ref_frame_buf Line | Count | Source | 1182 | 3.49M | const AV1_COMMON *const cm, const MV_REFERENCE_FRAME ref_frame) { | 1183 | 3.49M | const int map_idx = get_ref_frame_map_idx(cm, ref_frame); | 1184 | 3.49M | return (map_idx != INVALID_IDX) ? cm->ref_frame_map[map_idx] : NULL; | 1185 | 3.49M | } |
Unexecuted instantiation: reconintra.c:get_ref_frame_buf Unexecuted instantiation: resize.c:get_ref_frame_buf Unexecuted instantiation: restoration.c:get_ref_frame_buf Unexecuted instantiation: scan.c:get_ref_frame_buf Unexecuted instantiation: thread_common.c:get_ref_frame_buf Unexecuted instantiation: tile_common.c:get_ref_frame_buf Unexecuted instantiation: txb_common.c:get_ref_frame_buf Unexecuted instantiation: cfl_sse2.c:get_ref_frame_buf Unexecuted instantiation: cfl_ssse3.c:get_ref_frame_buf Unexecuted instantiation: resize_ssse3.c:get_ref_frame_buf Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:get_ref_frame_buf Unexecuted instantiation: filterintra_sse4.c:get_ref_frame_buf Unexecuted instantiation: cfl_avx2.c:get_ref_frame_buf |
1186 | | |
1187 | | // Both const and non-const versions of this function are provided so that it |
1188 | | // can be used with a const AV1_COMMON if needed. |
1189 | | static INLINE const struct scale_factors *get_ref_scale_factors_const( |
1190 | 19.7M | const AV1_COMMON *const cm, const MV_REFERENCE_FRAME ref_frame) { |
1191 | 19.7M | const int map_idx = get_ref_frame_map_idx(cm, ref_frame); |
1192 | 19.7M | return (map_idx != INVALID_IDX) ? &cm->ref_scale_factors[map_idx] : NULL; |
1193 | 19.7M | } Unexecuted instantiation: av1_dx_iface.c:get_ref_scale_factors_const decodeframe.c:get_ref_scale_factors_const Line | Count | Source | 1190 | 10.3M | const AV1_COMMON *const cm, const MV_REFERENCE_FRAME ref_frame) { | 1191 | 10.3M | const int map_idx = get_ref_frame_map_idx(cm, ref_frame); | 1192 | 10.3M | return (map_idx != INVALID_IDX) ? &cm->ref_scale_factors[map_idx] : NULL; | 1193 | 10.3M | } |
decodemv.c:get_ref_scale_factors_const Line | Count | Source | 1190 | 7.13M | const AV1_COMMON *const cm, const MV_REFERENCE_FRAME ref_frame) { | 1191 | 7.13M | const int map_idx = get_ref_frame_map_idx(cm, ref_frame); | 1192 | 7.13M | return (map_idx != INVALID_IDX) ? &cm->ref_scale_factors[map_idx] : NULL; | 1193 | 7.13M | } |
Unexecuted instantiation: decoder.c:get_ref_scale_factors_const Unexecuted instantiation: decodetxb.c:get_ref_scale_factors_const Unexecuted instantiation: detokenize.c:get_ref_scale_factors_const Unexecuted instantiation: obu.c:get_ref_scale_factors_const Unexecuted instantiation: alloccommon.c:get_ref_scale_factors_const Unexecuted instantiation: av1_loopfilter.c:get_ref_scale_factors_const Unexecuted instantiation: blockd.c:get_ref_scale_factors_const Unexecuted instantiation: cdef.c:get_ref_scale_factors_const Unexecuted instantiation: cdef_block.c:get_ref_scale_factors_const Unexecuted instantiation: cfl.c:get_ref_scale_factors_const Unexecuted instantiation: convolve.c:get_ref_scale_factors_const Unexecuted instantiation: entropy.c:get_ref_scale_factors_const Unexecuted instantiation: entropymode.c:get_ref_scale_factors_const Unexecuted instantiation: entropymv.c:get_ref_scale_factors_const Unexecuted instantiation: mvref_common.c:get_ref_scale_factors_const Unexecuted instantiation: pred_common.c:get_ref_scale_factors_const Unexecuted instantiation: quant_common.c:get_ref_scale_factors_const reconinter.c:get_ref_scale_factors_const Line | Count | Source | 1190 | 2.23M | const AV1_COMMON *const cm, const MV_REFERENCE_FRAME ref_frame) { | 1191 | 2.23M | const int map_idx = get_ref_frame_map_idx(cm, ref_frame); | 1192 | 2.23M | return (map_idx != INVALID_IDX) ? &cm->ref_scale_factors[map_idx] : NULL; | 1193 | 2.23M | } |
Unexecuted instantiation: reconintra.c:get_ref_scale_factors_const Unexecuted instantiation: resize.c:get_ref_scale_factors_const Unexecuted instantiation: restoration.c:get_ref_scale_factors_const Unexecuted instantiation: scan.c:get_ref_scale_factors_const Unexecuted instantiation: thread_common.c:get_ref_scale_factors_const Unexecuted instantiation: tile_common.c:get_ref_scale_factors_const Unexecuted instantiation: txb_common.c:get_ref_scale_factors_const Unexecuted instantiation: cfl_sse2.c:get_ref_scale_factors_const Unexecuted instantiation: cfl_ssse3.c:get_ref_scale_factors_const Unexecuted instantiation: resize_ssse3.c:get_ref_scale_factors_const Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:get_ref_scale_factors_const Unexecuted instantiation: filterintra_sse4.c:get_ref_scale_factors_const Unexecuted instantiation: cfl_avx2.c:get_ref_scale_factors_const |
1194 | | |
1195 | | static INLINE struct scale_factors *get_ref_scale_factors( |
1196 | 260k | AV1_COMMON *const cm, const MV_REFERENCE_FRAME ref_frame) { |
1197 | 260k | const int map_idx = get_ref_frame_map_idx(cm, ref_frame); |
1198 | 260k | return (map_idx != INVALID_IDX) ? &cm->ref_scale_factors[map_idx] : NULL; |
1199 | 260k | } Unexecuted instantiation: av1_dx_iface.c:get_ref_scale_factors decodeframe.c:get_ref_scale_factors Line | Count | Source | 1196 | 260k | AV1_COMMON *const cm, const MV_REFERENCE_FRAME ref_frame) { | 1197 | 260k | const int map_idx = get_ref_frame_map_idx(cm, ref_frame); | 1198 | 260k | return (map_idx != INVALID_IDX) ? &cm->ref_scale_factors[map_idx] : NULL; | 1199 | 260k | } |
Unexecuted instantiation: decodemv.c:get_ref_scale_factors Unexecuted instantiation: decoder.c:get_ref_scale_factors Unexecuted instantiation: decodetxb.c:get_ref_scale_factors Unexecuted instantiation: detokenize.c:get_ref_scale_factors Unexecuted instantiation: obu.c:get_ref_scale_factors Unexecuted instantiation: alloccommon.c:get_ref_scale_factors Unexecuted instantiation: av1_loopfilter.c:get_ref_scale_factors Unexecuted instantiation: blockd.c:get_ref_scale_factors Unexecuted instantiation: cdef.c:get_ref_scale_factors Unexecuted instantiation: cdef_block.c:get_ref_scale_factors Unexecuted instantiation: cfl.c:get_ref_scale_factors Unexecuted instantiation: convolve.c:get_ref_scale_factors Unexecuted instantiation: entropy.c:get_ref_scale_factors Unexecuted instantiation: entropymode.c:get_ref_scale_factors Unexecuted instantiation: entropymv.c:get_ref_scale_factors Unexecuted instantiation: mvref_common.c:get_ref_scale_factors Unexecuted instantiation: pred_common.c:get_ref_scale_factors Unexecuted instantiation: quant_common.c:get_ref_scale_factors Unexecuted instantiation: reconinter.c:get_ref_scale_factors Unexecuted instantiation: reconintra.c:get_ref_scale_factors Unexecuted instantiation: resize.c:get_ref_scale_factors Unexecuted instantiation: restoration.c:get_ref_scale_factors Unexecuted instantiation: scan.c:get_ref_scale_factors Unexecuted instantiation: thread_common.c:get_ref_scale_factors Unexecuted instantiation: tile_common.c:get_ref_scale_factors Unexecuted instantiation: txb_common.c:get_ref_scale_factors Unexecuted instantiation: cfl_sse2.c:get_ref_scale_factors Unexecuted instantiation: cfl_ssse3.c:get_ref_scale_factors Unexecuted instantiation: resize_ssse3.c:get_ref_scale_factors Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:get_ref_scale_factors Unexecuted instantiation: filterintra_sse4.c:get_ref_scale_factors Unexecuted instantiation: cfl_avx2.c:get_ref_scale_factors |
1200 | | |
1201 | | static INLINE RefCntBuffer *get_primary_ref_frame_buf( |
1202 | 177k | const AV1_COMMON *const cm) { |
1203 | 177k | const int primary_ref_frame = cm->features.primary_ref_frame; |
1204 | 177k | if (primary_ref_frame == PRIMARY_REF_NONE) return NULL; |
1205 | 127k | const int map_idx = get_ref_frame_map_idx(cm, primary_ref_frame + 1); |
1206 | 127k | return (map_idx != INVALID_IDX) ? cm->ref_frame_map[map_idx] : NULL; |
1207 | 177k | } Unexecuted instantiation: av1_dx_iface.c:get_primary_ref_frame_buf decodeframe.c:get_primary_ref_frame_buf Line | Count | Source | 1202 | 177k | const AV1_COMMON *const cm) { | 1203 | 177k | const int primary_ref_frame = cm->features.primary_ref_frame; | 1204 | 177k | if (primary_ref_frame == PRIMARY_REF_NONE) return NULL; | 1205 | 127k | const int map_idx = get_ref_frame_map_idx(cm, primary_ref_frame + 1); | 1206 | 127k | return (map_idx != INVALID_IDX) ? cm->ref_frame_map[map_idx] : NULL; | 1207 | 177k | } |
Unexecuted instantiation: decodemv.c:get_primary_ref_frame_buf Unexecuted instantiation: decoder.c:get_primary_ref_frame_buf Unexecuted instantiation: decodetxb.c:get_primary_ref_frame_buf Unexecuted instantiation: detokenize.c:get_primary_ref_frame_buf Unexecuted instantiation: obu.c:get_primary_ref_frame_buf Unexecuted instantiation: alloccommon.c:get_primary_ref_frame_buf Unexecuted instantiation: av1_loopfilter.c:get_primary_ref_frame_buf Unexecuted instantiation: blockd.c:get_primary_ref_frame_buf Unexecuted instantiation: cdef.c:get_primary_ref_frame_buf Unexecuted instantiation: cdef_block.c:get_primary_ref_frame_buf Unexecuted instantiation: cfl.c:get_primary_ref_frame_buf Unexecuted instantiation: convolve.c:get_primary_ref_frame_buf Unexecuted instantiation: entropy.c:get_primary_ref_frame_buf Unexecuted instantiation: entropymode.c:get_primary_ref_frame_buf Unexecuted instantiation: entropymv.c:get_primary_ref_frame_buf Unexecuted instantiation: mvref_common.c:get_primary_ref_frame_buf Unexecuted instantiation: pred_common.c:get_primary_ref_frame_buf Unexecuted instantiation: quant_common.c:get_primary_ref_frame_buf Unexecuted instantiation: reconinter.c:get_primary_ref_frame_buf Unexecuted instantiation: reconintra.c:get_primary_ref_frame_buf Unexecuted instantiation: resize.c:get_primary_ref_frame_buf Unexecuted instantiation: restoration.c:get_primary_ref_frame_buf Unexecuted instantiation: scan.c:get_primary_ref_frame_buf Unexecuted instantiation: thread_common.c:get_primary_ref_frame_buf Unexecuted instantiation: tile_common.c:get_primary_ref_frame_buf Unexecuted instantiation: txb_common.c:get_primary_ref_frame_buf Unexecuted instantiation: cfl_sse2.c:get_primary_ref_frame_buf Unexecuted instantiation: cfl_ssse3.c:get_primary_ref_frame_buf Unexecuted instantiation: resize_ssse3.c:get_primary_ref_frame_buf Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:get_primary_ref_frame_buf Unexecuted instantiation: filterintra_sse4.c:get_primary_ref_frame_buf Unexecuted instantiation: cfl_avx2.c:get_primary_ref_frame_buf |
1208 | | |
1209 | | // Returns 1 if this frame might allow mvs from some reference frame. |
1210 | 55.5k | static INLINE int frame_might_allow_ref_frame_mvs(const AV1_COMMON *cm) { |
1211 | 55.5k | return !cm->features.error_resilient_mode && |
1212 | 55.5k | cm->seq_params->order_hint_info.enable_ref_frame_mvs && |
1213 | 55.5k | cm->seq_params->order_hint_info.enable_order_hint && |
1214 | 55.5k | !frame_is_intra_only(cm); |
1215 | 55.5k | } Unexecuted instantiation: av1_dx_iface.c:frame_might_allow_ref_frame_mvs decodeframe.c:frame_might_allow_ref_frame_mvs Line | Count | Source | 1210 | 55.5k | static INLINE int frame_might_allow_ref_frame_mvs(const AV1_COMMON *cm) { | 1211 | 55.5k | return !cm->features.error_resilient_mode && | 1212 | 55.5k | cm->seq_params->order_hint_info.enable_ref_frame_mvs && | 1213 | 55.5k | cm->seq_params->order_hint_info.enable_order_hint && | 1214 | 55.5k | !frame_is_intra_only(cm); | 1215 | 55.5k | } |
Unexecuted instantiation: decodemv.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: decoder.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: decodetxb.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: detokenize.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: obu.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: alloccommon.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: av1_loopfilter.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: blockd.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: cdef.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: cdef_block.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: cfl.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: convolve.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: entropy.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: entropymode.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: entropymv.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: mvref_common.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: pred_common.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: quant_common.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: reconinter.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: reconintra.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: resize.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: restoration.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: scan.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: thread_common.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: tile_common.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: txb_common.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: cfl_sse2.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: cfl_ssse3.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: resize_ssse3.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: filterintra_sse4.c:frame_might_allow_ref_frame_mvs Unexecuted instantiation: cfl_avx2.c:frame_might_allow_ref_frame_mvs |
1216 | | |
1217 | | // Returns 1 if this frame might use warped_motion |
1218 | 149k | static INLINE int frame_might_allow_warped_motion(const AV1_COMMON *cm) { |
1219 | 149k | return !cm->features.error_resilient_mode && !frame_is_intra_only(cm) && |
1220 | 149k | cm->seq_params->enable_warped_motion; |
1221 | 149k | } Unexecuted instantiation: av1_dx_iface.c:frame_might_allow_warped_motion decodeframe.c:frame_might_allow_warped_motion Line | Count | Source | 1218 | 149k | static INLINE int frame_might_allow_warped_motion(const AV1_COMMON *cm) { | 1219 | 149k | return !cm->features.error_resilient_mode && !frame_is_intra_only(cm) && | 1220 | 149k | cm->seq_params->enable_warped_motion; | 1221 | 149k | } |
Unexecuted instantiation: decodemv.c:frame_might_allow_warped_motion Unexecuted instantiation: decoder.c:frame_might_allow_warped_motion Unexecuted instantiation: decodetxb.c:frame_might_allow_warped_motion Unexecuted instantiation: detokenize.c:frame_might_allow_warped_motion Unexecuted instantiation: obu.c:frame_might_allow_warped_motion Unexecuted instantiation: alloccommon.c:frame_might_allow_warped_motion Unexecuted instantiation: av1_loopfilter.c:frame_might_allow_warped_motion Unexecuted instantiation: blockd.c:frame_might_allow_warped_motion Unexecuted instantiation: cdef.c:frame_might_allow_warped_motion Unexecuted instantiation: cdef_block.c:frame_might_allow_warped_motion Unexecuted instantiation: cfl.c:frame_might_allow_warped_motion Unexecuted instantiation: convolve.c:frame_might_allow_warped_motion Unexecuted instantiation: entropy.c:frame_might_allow_warped_motion Unexecuted instantiation: entropymode.c:frame_might_allow_warped_motion Unexecuted instantiation: entropymv.c:frame_might_allow_warped_motion Unexecuted instantiation: mvref_common.c:frame_might_allow_warped_motion Unexecuted instantiation: pred_common.c:frame_might_allow_warped_motion Unexecuted instantiation: quant_common.c:frame_might_allow_warped_motion Unexecuted instantiation: reconinter.c:frame_might_allow_warped_motion Unexecuted instantiation: reconintra.c:frame_might_allow_warped_motion Unexecuted instantiation: resize.c:frame_might_allow_warped_motion Unexecuted instantiation: restoration.c:frame_might_allow_warped_motion Unexecuted instantiation: scan.c:frame_might_allow_warped_motion Unexecuted instantiation: thread_common.c:frame_might_allow_warped_motion Unexecuted instantiation: tile_common.c:frame_might_allow_warped_motion Unexecuted instantiation: txb_common.c:frame_might_allow_warped_motion Unexecuted instantiation: cfl_sse2.c:frame_might_allow_warped_motion Unexecuted instantiation: cfl_ssse3.c:frame_might_allow_warped_motion Unexecuted instantiation: resize_ssse3.c:frame_might_allow_warped_motion Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:frame_might_allow_warped_motion Unexecuted instantiation: filterintra_sse4.c:frame_might_allow_warped_motion Unexecuted instantiation: cfl_avx2.c:frame_might_allow_warped_motion |
1222 | | |
1223 | 177k | static INLINE void ensure_mv_buffer(RefCntBuffer *buf, AV1_COMMON *cm) { |
1224 | 177k | const int buf_rows = buf->mi_rows; |
1225 | 177k | const int buf_cols = buf->mi_cols; |
1226 | 177k | const CommonModeInfoParams *const mi_params = &cm->mi_params; |
1227 | | |
1228 | 177k | if (buf->mvs == NULL || buf_rows != mi_params->mi_rows || |
1229 | 177k | buf_cols != mi_params->mi_cols) { |
1230 | 91.8k | aom_free(buf->mvs); |
1231 | 91.8k | buf->mi_rows = mi_params->mi_rows; |
1232 | 91.8k | buf->mi_cols = mi_params->mi_cols; |
1233 | 91.8k | CHECK_MEM_ERROR(cm, buf->mvs, |
1234 | 91.8k | (MV_REF *)aom_calloc(((mi_params->mi_rows + 1) >> 1) * |
1235 | 91.8k | ((mi_params->mi_cols + 1) >> 1), |
1236 | 91.8k | sizeof(*buf->mvs))); |
1237 | 91.8k | aom_free(buf->seg_map); |
1238 | 91.8k | CHECK_MEM_ERROR( |
1239 | 91.8k | cm, buf->seg_map, |
1240 | 91.8k | (uint8_t *)aom_calloc(mi_params->mi_rows * mi_params->mi_cols, |
1241 | 91.8k | sizeof(*buf->seg_map))); |
1242 | 91.8k | } |
1243 | | |
1244 | 177k | const int mem_size = |
1245 | 177k | ((mi_params->mi_rows + MAX_MIB_SIZE) >> 1) * (mi_params->mi_stride >> 1); |
1246 | | |
1247 | 177k | if (cm->tpl_mvs == NULL || cm->tpl_mvs_mem_size < mem_size) { |
1248 | 17.3k | aom_free(cm->tpl_mvs); |
1249 | 17.3k | CHECK_MEM_ERROR(cm, cm->tpl_mvs, |
1250 | 17.3k | (TPL_MV_REF *)aom_calloc(mem_size, sizeof(*cm->tpl_mvs))); |
1251 | 17.3k | cm->tpl_mvs_mem_size = mem_size; |
1252 | 17.3k | } |
1253 | 177k | } Unexecuted instantiation: av1_dx_iface.c:ensure_mv_buffer decodeframe.c:ensure_mv_buffer Line | Count | Source | 1223 | 177k | static INLINE void ensure_mv_buffer(RefCntBuffer *buf, AV1_COMMON *cm) { | 1224 | 177k | const int buf_rows = buf->mi_rows; | 1225 | 177k | const int buf_cols = buf->mi_cols; | 1226 | 177k | const CommonModeInfoParams *const mi_params = &cm->mi_params; | 1227 | | | 1228 | 177k | if (buf->mvs == NULL || buf_rows != mi_params->mi_rows || | 1229 | 177k | buf_cols != mi_params->mi_cols) { | 1230 | 91.8k | aom_free(buf->mvs); | 1231 | 91.8k | buf->mi_rows = mi_params->mi_rows; | 1232 | 91.8k | buf->mi_cols = mi_params->mi_cols; | 1233 | 91.8k | CHECK_MEM_ERROR(cm, buf->mvs, | 1234 | 91.8k | (MV_REF *)aom_calloc(((mi_params->mi_rows + 1) >> 1) * | 1235 | 91.8k | ((mi_params->mi_cols + 1) >> 1), | 1236 | 91.8k | sizeof(*buf->mvs))); | 1237 | 91.8k | aom_free(buf->seg_map); | 1238 | 91.8k | CHECK_MEM_ERROR( | 1239 | 91.8k | cm, buf->seg_map, | 1240 | 91.8k | (uint8_t *)aom_calloc(mi_params->mi_rows * mi_params->mi_cols, | 1241 | 91.8k | sizeof(*buf->seg_map))); | 1242 | 91.8k | } | 1243 | | | 1244 | 177k | const int mem_size = | 1245 | 177k | ((mi_params->mi_rows + MAX_MIB_SIZE) >> 1) * (mi_params->mi_stride >> 1); | 1246 | | | 1247 | 177k | if (cm->tpl_mvs == NULL || cm->tpl_mvs_mem_size < mem_size) { | 1248 | 17.3k | aom_free(cm->tpl_mvs); | 1249 | 17.3k | CHECK_MEM_ERROR(cm, cm->tpl_mvs, | 1250 | 17.3k | (TPL_MV_REF *)aom_calloc(mem_size, sizeof(*cm->tpl_mvs))); | 1251 | 17.3k | cm->tpl_mvs_mem_size = mem_size; | 1252 | 17.3k | } | 1253 | 177k | } |
Unexecuted instantiation: decodemv.c:ensure_mv_buffer Unexecuted instantiation: decoder.c:ensure_mv_buffer Unexecuted instantiation: decodetxb.c:ensure_mv_buffer Unexecuted instantiation: detokenize.c:ensure_mv_buffer Unexecuted instantiation: obu.c:ensure_mv_buffer Unexecuted instantiation: alloccommon.c:ensure_mv_buffer Unexecuted instantiation: av1_loopfilter.c:ensure_mv_buffer Unexecuted instantiation: blockd.c:ensure_mv_buffer Unexecuted instantiation: cdef.c:ensure_mv_buffer Unexecuted instantiation: cdef_block.c:ensure_mv_buffer Unexecuted instantiation: cfl.c:ensure_mv_buffer Unexecuted instantiation: convolve.c:ensure_mv_buffer Unexecuted instantiation: entropy.c:ensure_mv_buffer Unexecuted instantiation: entropymode.c:ensure_mv_buffer Unexecuted instantiation: entropymv.c:ensure_mv_buffer Unexecuted instantiation: mvref_common.c:ensure_mv_buffer Unexecuted instantiation: pred_common.c:ensure_mv_buffer Unexecuted instantiation: quant_common.c:ensure_mv_buffer Unexecuted instantiation: reconinter.c:ensure_mv_buffer Unexecuted instantiation: reconintra.c:ensure_mv_buffer Unexecuted instantiation: resize.c:ensure_mv_buffer Unexecuted instantiation: restoration.c:ensure_mv_buffer Unexecuted instantiation: scan.c:ensure_mv_buffer Unexecuted instantiation: thread_common.c:ensure_mv_buffer Unexecuted instantiation: tile_common.c:ensure_mv_buffer Unexecuted instantiation: txb_common.c:ensure_mv_buffer Unexecuted instantiation: cfl_sse2.c:ensure_mv_buffer Unexecuted instantiation: cfl_ssse3.c:ensure_mv_buffer Unexecuted instantiation: resize_ssse3.c:ensure_mv_buffer Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:ensure_mv_buffer Unexecuted instantiation: filterintra_sse4.c:ensure_mv_buffer Unexecuted instantiation: cfl_avx2.c:ensure_mv_buffer |
1254 | | |
1255 | | void cfl_init(CFL_CTX *cfl, const SequenceHeader *seq_params); |
1256 | | |
1257 | 175M | static INLINE int av1_num_planes(const AV1_COMMON *cm) { |
1258 | 175M | return cm->seq_params->monochrome ? 1 : MAX_MB_PLANE; |
1259 | 175M | } av1_dx_iface.c:av1_num_planes Line | Count | Source | 1257 | 55.0k | static INLINE int av1_num_planes(const AV1_COMMON *cm) { | 1258 | 55.0k | return cm->seq_params->monochrome ? 1 : MAX_MB_PLANE; | 1259 | 55.0k | } |
decodeframe.c:av1_num_planes Line | Count | Source | 1257 | 93.5M | static INLINE int av1_num_planes(const AV1_COMMON *cm) { | 1258 | 93.5M | return cm->seq_params->monochrome ? 1 : MAX_MB_PLANE; | 1259 | 93.5M | } |
decodemv.c:av1_num_planes Line | Count | Source | 1257 | 2.85M | static INLINE int av1_num_planes(const AV1_COMMON *cm) { | 1258 | 2.85M | return cm->seq_params->monochrome ? 1 : MAX_MB_PLANE; | 1259 | 2.85M | } |
Line | Count | Source | 1257 | 71.3M | static INLINE int av1_num_planes(const AV1_COMMON *cm) { | 1258 | 71.3M | return cm->seq_params->monochrome ? 1 : MAX_MB_PLANE; | 1259 | 71.3M | } |
Unexecuted instantiation: decodetxb.c:av1_num_planes Unexecuted instantiation: detokenize.c:av1_num_planes Unexecuted instantiation: obu.c:av1_num_planes alloccommon.c:av1_num_planes Line | Count | Source | 1257 | 109k | static INLINE int av1_num_planes(const AV1_COMMON *cm) { | 1258 | 109k | return cm->seq_params->monochrome ? 1 : MAX_MB_PLANE; | 1259 | 109k | } |
Unexecuted instantiation: av1_loopfilter.c:av1_num_planes Unexecuted instantiation: blockd.c:av1_num_planes Line | Count | Source | 1257 | 639k | static INLINE int av1_num_planes(const AV1_COMMON *cm) { | 1258 | 639k | return cm->seq_params->monochrome ? 1 : MAX_MB_PLANE; | 1259 | 639k | } |
Unexecuted instantiation: cdef_block.c:av1_num_planes Unexecuted instantiation: cfl.c:av1_num_planes Unexecuted instantiation: convolve.c:av1_num_planes Unexecuted instantiation: entropy.c:av1_num_planes Unexecuted instantiation: entropymode.c:av1_num_planes Unexecuted instantiation: entropymv.c:av1_num_planes Unexecuted instantiation: mvref_common.c:av1_num_planes Unexecuted instantiation: pred_common.c:av1_num_planes Unexecuted instantiation: quant_common.c:av1_num_planes reconinter.c:av1_num_planes Line | Count | Source | 1257 | 6.63M | static INLINE int av1_num_planes(const AV1_COMMON *cm) { | 1258 | 6.63M | return cm->seq_params->monochrome ? 1 : MAX_MB_PLANE; | 1259 | 6.63M | } |
Unexecuted instantiation: reconintra.c:av1_num_planes Line | Count | Source | 1257 | 12.5k | static INLINE int av1_num_planes(const AV1_COMMON *cm) { | 1258 | 12.5k | return cm->seq_params->monochrome ? 1 : MAX_MB_PLANE; | 1259 | 12.5k | } |
restoration.c:av1_num_planes Line | Count | Source | 1257 | 30.3k | static INLINE int av1_num_planes(const AV1_COMMON *cm) { | 1258 | 30.3k | return cm->seq_params->monochrome ? 1 : MAX_MB_PLANE; | 1259 | 30.3k | } |
Unexecuted instantiation: scan.c:av1_num_planes thread_common.c:av1_num_planes Line | Count | Source | 1257 | 428k | static INLINE int av1_num_planes(const AV1_COMMON *cm) { | 1258 | 428k | return cm->seq_params->monochrome ? 1 : MAX_MB_PLANE; | 1259 | 428k | } |
Unexecuted instantiation: tile_common.c:av1_num_planes Unexecuted instantiation: txb_common.c:av1_num_planes Unexecuted instantiation: cfl_sse2.c:av1_num_planes Unexecuted instantiation: cfl_ssse3.c:av1_num_planes Unexecuted instantiation: resize_ssse3.c:av1_num_planes Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:av1_num_planes Unexecuted instantiation: filterintra_sse4.c:av1_num_planes Unexecuted instantiation: cfl_avx2.c:av1_num_planes |
1260 | | |
1261 | | static INLINE void av1_init_above_context(CommonContexts *above_contexts, |
1262 | | int num_planes, int tile_row, |
1263 | 140k | MACROBLOCKD *xd) { |
1264 | 545k | for (int i = 0; i < num_planes; ++i) { |
1265 | 404k | xd->above_entropy_context[i] = above_contexts->entropy[i][tile_row]; |
1266 | 404k | } |
1267 | 140k | xd->above_partition_context = above_contexts->partition[tile_row]; |
1268 | 140k | xd->above_txfm_context = above_contexts->txfm[tile_row]; |
1269 | 140k | } Unexecuted instantiation: av1_dx_iface.c:av1_init_above_context decodeframe.c:av1_init_above_context Line | Count | Source | 1263 | 140k | MACROBLOCKD *xd) { | 1264 | 545k | for (int i = 0; i < num_planes; ++i) { | 1265 | 404k | xd->above_entropy_context[i] = above_contexts->entropy[i][tile_row]; | 1266 | 404k | } | 1267 | 140k | xd->above_partition_context = above_contexts->partition[tile_row]; | 1268 | 140k | xd->above_txfm_context = above_contexts->txfm[tile_row]; | 1269 | 140k | } |
Unexecuted instantiation: decodemv.c:av1_init_above_context Unexecuted instantiation: decoder.c:av1_init_above_context Unexecuted instantiation: decodetxb.c:av1_init_above_context Unexecuted instantiation: detokenize.c:av1_init_above_context Unexecuted instantiation: obu.c:av1_init_above_context Unexecuted instantiation: alloccommon.c:av1_init_above_context Unexecuted instantiation: av1_loopfilter.c:av1_init_above_context Unexecuted instantiation: blockd.c:av1_init_above_context Unexecuted instantiation: cdef.c:av1_init_above_context Unexecuted instantiation: cdef_block.c:av1_init_above_context Unexecuted instantiation: cfl.c:av1_init_above_context Unexecuted instantiation: convolve.c:av1_init_above_context Unexecuted instantiation: entropy.c:av1_init_above_context Unexecuted instantiation: entropymode.c:av1_init_above_context Unexecuted instantiation: entropymv.c:av1_init_above_context Unexecuted instantiation: mvref_common.c:av1_init_above_context Unexecuted instantiation: pred_common.c:av1_init_above_context Unexecuted instantiation: quant_common.c:av1_init_above_context Unexecuted instantiation: reconinter.c:av1_init_above_context Unexecuted instantiation: reconintra.c:av1_init_above_context Unexecuted instantiation: resize.c:av1_init_above_context Unexecuted instantiation: restoration.c:av1_init_above_context Unexecuted instantiation: scan.c:av1_init_above_context Unexecuted instantiation: thread_common.c:av1_init_above_context Unexecuted instantiation: tile_common.c:av1_init_above_context Unexecuted instantiation: txb_common.c:av1_init_above_context Unexecuted instantiation: cfl_sse2.c:av1_init_above_context Unexecuted instantiation: cfl_ssse3.c:av1_init_above_context Unexecuted instantiation: resize_ssse3.c:av1_init_above_context Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:av1_init_above_context Unexecuted instantiation: filterintra_sse4.c:av1_init_above_context Unexecuted instantiation: cfl_avx2.c:av1_init_above_context |
1270 | | |
1271 | 265k | static INLINE void av1_init_macroblockd(AV1_COMMON *cm, MACROBLOCKD *xd) { |
1272 | 265k | const int num_planes = av1_num_planes(cm); |
1273 | 265k | const CommonQuantParams *const quant_params = &cm->quant_params; |
1274 | | |
1275 | 1.02M | for (int i = 0; i < num_planes; ++i) { |
1276 | 758k | if (xd->plane[i].plane_type == PLANE_TYPE_Y) { |
1277 | 265k | memcpy(xd->plane[i].seg_dequant_QTX, quant_params->y_dequant_QTX, |
1278 | 265k | sizeof(quant_params->y_dequant_QTX)); |
1279 | 265k | memcpy(xd->plane[i].seg_iqmatrix, quant_params->y_iqmatrix, |
1280 | 265k | sizeof(quant_params->y_iqmatrix)); |
1281 | | |
1282 | 492k | } else { |
1283 | 492k | if (i == AOM_PLANE_U) { |
1284 | 247k | memcpy(xd->plane[i].seg_dequant_QTX, quant_params->u_dequant_QTX, |
1285 | 247k | sizeof(quant_params->u_dequant_QTX)); |
1286 | 247k | memcpy(xd->plane[i].seg_iqmatrix, quant_params->u_iqmatrix, |
1287 | 247k | sizeof(quant_params->u_iqmatrix)); |
1288 | 247k | } else { |
1289 | 245k | memcpy(xd->plane[i].seg_dequant_QTX, quant_params->v_dequant_QTX, |
1290 | 245k | sizeof(quant_params->v_dequant_QTX)); |
1291 | 245k | memcpy(xd->plane[i].seg_iqmatrix, quant_params->v_iqmatrix, |
1292 | 245k | sizeof(quant_params->v_iqmatrix)); |
1293 | 245k | } |
1294 | 492k | } |
1295 | 758k | } |
1296 | 265k | xd->mi_stride = cm->mi_params.mi_stride; |
1297 | 265k | xd->error_info = cm->error; |
1298 | 265k | cfl_init(&xd->cfl, cm->seq_params); |
1299 | 265k | } Unexecuted instantiation: av1_dx_iface.c:av1_init_macroblockd decodeframe.c:av1_init_macroblockd Line | Count | Source | 1271 | 265k | static INLINE void av1_init_macroblockd(AV1_COMMON *cm, MACROBLOCKD *xd) { | 1272 | 265k | const int num_planes = av1_num_planes(cm); | 1273 | 265k | const CommonQuantParams *const quant_params = &cm->quant_params; | 1274 | | | 1275 | 1.02M | for (int i = 0; i < num_planes; ++i) { | 1276 | 758k | if (xd->plane[i].plane_type == PLANE_TYPE_Y) { | 1277 | 265k | memcpy(xd->plane[i].seg_dequant_QTX, quant_params->y_dequant_QTX, | 1278 | 265k | sizeof(quant_params->y_dequant_QTX)); | 1279 | 265k | memcpy(xd->plane[i].seg_iqmatrix, quant_params->y_iqmatrix, | 1280 | 265k | sizeof(quant_params->y_iqmatrix)); | 1281 | | | 1282 | 492k | } else { | 1283 | 492k | if (i == AOM_PLANE_U) { | 1284 | 247k | memcpy(xd->plane[i].seg_dequant_QTX, quant_params->u_dequant_QTX, | 1285 | 247k | sizeof(quant_params->u_dequant_QTX)); | 1286 | 247k | memcpy(xd->plane[i].seg_iqmatrix, quant_params->u_iqmatrix, | 1287 | 247k | sizeof(quant_params->u_iqmatrix)); | 1288 | 247k | } else { | 1289 | 245k | memcpy(xd->plane[i].seg_dequant_QTX, quant_params->v_dequant_QTX, | 1290 | 245k | sizeof(quant_params->v_dequant_QTX)); | 1291 | 245k | memcpy(xd->plane[i].seg_iqmatrix, quant_params->v_iqmatrix, | 1292 | 245k | sizeof(quant_params->v_iqmatrix)); | 1293 | 245k | } | 1294 | 492k | } | 1295 | 758k | } | 1296 | 265k | xd->mi_stride = cm->mi_params.mi_stride; | 1297 | 265k | xd->error_info = cm->error; | 1298 | 265k | cfl_init(&xd->cfl, cm->seq_params); | 1299 | 265k | } |
Unexecuted instantiation: decodemv.c:av1_init_macroblockd Unexecuted instantiation: decoder.c:av1_init_macroblockd Unexecuted instantiation: decodetxb.c:av1_init_macroblockd Unexecuted instantiation: detokenize.c:av1_init_macroblockd Unexecuted instantiation: obu.c:av1_init_macroblockd Unexecuted instantiation: alloccommon.c:av1_init_macroblockd Unexecuted instantiation: av1_loopfilter.c:av1_init_macroblockd Unexecuted instantiation: blockd.c:av1_init_macroblockd Unexecuted instantiation: cdef.c:av1_init_macroblockd Unexecuted instantiation: cdef_block.c:av1_init_macroblockd Unexecuted instantiation: cfl.c:av1_init_macroblockd Unexecuted instantiation: convolve.c:av1_init_macroblockd Unexecuted instantiation: entropy.c:av1_init_macroblockd Unexecuted instantiation: entropymode.c:av1_init_macroblockd Unexecuted instantiation: entropymv.c:av1_init_macroblockd Unexecuted instantiation: mvref_common.c:av1_init_macroblockd Unexecuted instantiation: pred_common.c:av1_init_macroblockd Unexecuted instantiation: quant_common.c:av1_init_macroblockd Unexecuted instantiation: reconinter.c:av1_init_macroblockd Unexecuted instantiation: reconintra.c:av1_init_macroblockd Unexecuted instantiation: resize.c:av1_init_macroblockd Unexecuted instantiation: restoration.c:av1_init_macroblockd Unexecuted instantiation: scan.c:av1_init_macroblockd Unexecuted instantiation: thread_common.c:av1_init_macroblockd Unexecuted instantiation: tile_common.c:av1_init_macroblockd Unexecuted instantiation: txb_common.c:av1_init_macroblockd Unexecuted instantiation: cfl_sse2.c:av1_init_macroblockd Unexecuted instantiation: cfl_ssse3.c:av1_init_macroblockd Unexecuted instantiation: resize_ssse3.c:av1_init_macroblockd Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:av1_init_macroblockd Unexecuted instantiation: filterintra_sse4.c:av1_init_macroblockd Unexecuted instantiation: cfl_avx2.c:av1_init_macroblockd |
1300 | | |
1301 | | static INLINE void set_entropy_context(MACROBLOCKD *xd, int mi_row, int mi_col, |
1302 | 16.5M | const int num_planes) { |
1303 | 16.5M | int i; |
1304 | 16.5M | int row_offset = mi_row; |
1305 | 16.5M | int col_offset = mi_col; |
1306 | 65.9M | for (i = 0; i < num_planes; ++i) { |
1307 | 49.3M | struct macroblockd_plane *const pd = &xd->plane[i]; |
1308 | | // Offset the buffer pointer |
1309 | 49.3M | const BLOCK_SIZE bsize = xd->mi[0]->bsize; |
1310 | 49.3M | if (pd->subsampling_y && (mi_row & 0x01) && (mi_size_high[bsize] == 1)) |
1311 | 2.08M | row_offset = mi_row - 1; |
1312 | 49.3M | if (pd->subsampling_x && (mi_col & 0x01) && (mi_size_wide[bsize] == 1)) |
1313 | 1.88M | col_offset = mi_col - 1; |
1314 | 49.3M | int above_idx = col_offset; |
1315 | 49.3M | int left_idx = row_offset & MAX_MIB_MASK; |
1316 | 49.3M | pd->above_entropy_context = |
1317 | 49.3M | &xd->above_entropy_context[i][above_idx >> pd->subsampling_x]; |
1318 | 49.3M | pd->left_entropy_context = |
1319 | 49.3M | &xd->left_entropy_context[i][left_idx >> pd->subsampling_y]; |
1320 | 49.3M | } |
1321 | 16.5M | } Unexecuted instantiation: av1_dx_iface.c:set_entropy_context decodeframe.c:set_entropy_context Line | Count | Source | 1302 | 16.5M | const int num_planes) { | 1303 | 16.5M | int i; | 1304 | 16.5M | int row_offset = mi_row; | 1305 | 16.5M | int col_offset = mi_col; | 1306 | 65.9M | for (i = 0; i < num_planes; ++i) { | 1307 | 49.3M | struct macroblockd_plane *const pd = &xd->plane[i]; | 1308 | | // Offset the buffer pointer | 1309 | 49.3M | const BLOCK_SIZE bsize = xd->mi[0]->bsize; | 1310 | 49.3M | if (pd->subsampling_y && (mi_row & 0x01) && (mi_size_high[bsize] == 1)) | 1311 | 2.08M | row_offset = mi_row - 1; | 1312 | 49.3M | if (pd->subsampling_x && (mi_col & 0x01) && (mi_size_wide[bsize] == 1)) | 1313 | 1.88M | col_offset = mi_col - 1; | 1314 | 49.3M | int above_idx = col_offset; | 1315 | 49.3M | int left_idx = row_offset & MAX_MIB_MASK; | 1316 | 49.3M | pd->above_entropy_context = | 1317 | 49.3M | &xd->above_entropy_context[i][above_idx >> pd->subsampling_x]; | 1318 | 49.3M | pd->left_entropy_context = | 1319 | 49.3M | &xd->left_entropy_context[i][left_idx >> pd->subsampling_y]; | 1320 | 49.3M | } | 1321 | 16.5M | } |
Unexecuted instantiation: decodemv.c:set_entropy_context Unexecuted instantiation: decoder.c:set_entropy_context Unexecuted instantiation: decodetxb.c:set_entropy_context Unexecuted instantiation: detokenize.c:set_entropy_context Unexecuted instantiation: obu.c:set_entropy_context Unexecuted instantiation: alloccommon.c:set_entropy_context Unexecuted instantiation: av1_loopfilter.c:set_entropy_context Unexecuted instantiation: blockd.c:set_entropy_context Unexecuted instantiation: cdef.c:set_entropy_context Unexecuted instantiation: cdef_block.c:set_entropy_context Unexecuted instantiation: cfl.c:set_entropy_context Unexecuted instantiation: convolve.c:set_entropy_context Unexecuted instantiation: entropy.c:set_entropy_context Unexecuted instantiation: entropymode.c:set_entropy_context Unexecuted instantiation: entropymv.c:set_entropy_context Unexecuted instantiation: mvref_common.c:set_entropy_context Unexecuted instantiation: pred_common.c:set_entropy_context Unexecuted instantiation: quant_common.c:set_entropy_context Unexecuted instantiation: reconinter.c:set_entropy_context Unexecuted instantiation: reconintra.c:set_entropy_context Unexecuted instantiation: resize.c:set_entropy_context Unexecuted instantiation: restoration.c:set_entropy_context Unexecuted instantiation: scan.c:set_entropy_context Unexecuted instantiation: thread_common.c:set_entropy_context Unexecuted instantiation: tile_common.c:set_entropy_context Unexecuted instantiation: txb_common.c:set_entropy_context Unexecuted instantiation: cfl_sse2.c:set_entropy_context Unexecuted instantiation: cfl_ssse3.c:set_entropy_context Unexecuted instantiation: resize_ssse3.c:set_entropy_context Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:set_entropy_context Unexecuted instantiation: filterintra_sse4.c:set_entropy_context Unexecuted instantiation: cfl_avx2.c:set_entropy_context |
1322 | | |
1323 | 379k | static INLINE int calc_mi_size(int len) { |
1324 | | // len is in mi units. Align to a multiple of SBs. |
1325 | 379k | return ALIGN_POWER_OF_TWO(len, MAX_MIB_SIZE_LOG2); |
1326 | 379k | } Unexecuted instantiation: av1_dx_iface.c:calc_mi_size Unexecuted instantiation: decodeframe.c:calc_mi_size Unexecuted instantiation: decodemv.c:calc_mi_size Line | Count | Source | 1323 | 326k | static INLINE int calc_mi_size(int len) { | 1324 | | // len is in mi units. Align to a multiple of SBs. | 1325 | 326k | return ALIGN_POWER_OF_TWO(len, MAX_MIB_SIZE_LOG2); | 1326 | 326k | } |
Unexecuted instantiation: decodetxb.c:calc_mi_size Unexecuted instantiation: detokenize.c:calc_mi_size Unexecuted instantiation: obu.c:calc_mi_size alloccommon.c:calc_mi_size Line | Count | Source | 1323 | 52.8k | static INLINE int calc_mi_size(int len) { | 1324 | | // len is in mi units. Align to a multiple of SBs. | 1325 | 52.8k | return ALIGN_POWER_OF_TWO(len, MAX_MIB_SIZE_LOG2); | 1326 | 52.8k | } |
Unexecuted instantiation: av1_loopfilter.c:calc_mi_size Unexecuted instantiation: blockd.c:calc_mi_size Unexecuted instantiation: cdef.c:calc_mi_size Unexecuted instantiation: cdef_block.c:calc_mi_size Unexecuted instantiation: cfl.c:calc_mi_size Unexecuted instantiation: convolve.c:calc_mi_size Unexecuted instantiation: entropy.c:calc_mi_size Unexecuted instantiation: entropymode.c:calc_mi_size Unexecuted instantiation: entropymv.c:calc_mi_size Unexecuted instantiation: mvref_common.c:calc_mi_size Unexecuted instantiation: pred_common.c:calc_mi_size Unexecuted instantiation: quant_common.c:calc_mi_size Unexecuted instantiation: reconinter.c:calc_mi_size Unexecuted instantiation: reconintra.c:calc_mi_size Unexecuted instantiation: resize.c:calc_mi_size Unexecuted instantiation: restoration.c:calc_mi_size Unexecuted instantiation: scan.c:calc_mi_size Unexecuted instantiation: thread_common.c:calc_mi_size Unexecuted instantiation: tile_common.c:calc_mi_size Unexecuted instantiation: txb_common.c:calc_mi_size Unexecuted instantiation: cfl_sse2.c:calc_mi_size Unexecuted instantiation: cfl_ssse3.c:calc_mi_size Unexecuted instantiation: resize_ssse3.c:calc_mi_size Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:calc_mi_size Unexecuted instantiation: filterintra_sse4.c:calc_mi_size Unexecuted instantiation: cfl_avx2.c:calc_mi_size |
1327 | | |
1328 | | static INLINE void set_plane_n4(MACROBLOCKD *const xd, int bw, int bh, |
1329 | 25.4M | const int num_planes) { |
1330 | 25.4M | int i; |
1331 | 100M | for (i = 0; i < num_planes; i++) { |
1332 | 75.4M | xd->plane[i].width = (bw * MI_SIZE) >> xd->plane[i].subsampling_x; |
1333 | 75.4M | xd->plane[i].height = (bh * MI_SIZE) >> xd->plane[i].subsampling_y; |
1334 | | |
1335 | 75.4M | xd->plane[i].width = AOMMAX(xd->plane[i].width, 4); |
1336 | 75.4M | xd->plane[i].height = AOMMAX(xd->plane[i].height, 4); |
1337 | 75.4M | } |
1338 | 25.4M | } Unexecuted instantiation: av1_dx_iface.c:set_plane_n4 decodeframe.c:set_plane_n4 Line | Count | Source | 1329 | 25.4M | const int num_planes) { | 1330 | 25.4M | int i; | 1331 | 100M | for (i = 0; i < num_planes; i++) { | 1332 | 75.4M | xd->plane[i].width = (bw * MI_SIZE) >> xd->plane[i].subsampling_x; | 1333 | 75.4M | xd->plane[i].height = (bh * MI_SIZE) >> xd->plane[i].subsampling_y; | 1334 | | | 1335 | 75.4M | xd->plane[i].width = AOMMAX(xd->plane[i].width, 4); | 1336 | 75.4M | xd->plane[i].height = AOMMAX(xd->plane[i].height, 4); | 1337 | 75.4M | } | 1338 | 25.4M | } |
Unexecuted instantiation: decodemv.c:set_plane_n4 Unexecuted instantiation: decoder.c:set_plane_n4 Unexecuted instantiation: decodetxb.c:set_plane_n4 Unexecuted instantiation: detokenize.c:set_plane_n4 Unexecuted instantiation: obu.c:set_plane_n4 Unexecuted instantiation: alloccommon.c:set_plane_n4 Unexecuted instantiation: av1_loopfilter.c:set_plane_n4 Unexecuted instantiation: blockd.c:set_plane_n4 Unexecuted instantiation: cdef.c:set_plane_n4 Unexecuted instantiation: cdef_block.c:set_plane_n4 Unexecuted instantiation: cfl.c:set_plane_n4 Unexecuted instantiation: convolve.c:set_plane_n4 Unexecuted instantiation: entropy.c:set_plane_n4 Unexecuted instantiation: entropymode.c:set_plane_n4 Unexecuted instantiation: entropymv.c:set_plane_n4 Unexecuted instantiation: mvref_common.c:set_plane_n4 Unexecuted instantiation: pred_common.c:set_plane_n4 Unexecuted instantiation: quant_common.c:set_plane_n4 Unexecuted instantiation: reconinter.c:set_plane_n4 Unexecuted instantiation: reconintra.c:set_plane_n4 Unexecuted instantiation: resize.c:set_plane_n4 Unexecuted instantiation: restoration.c:set_plane_n4 Unexecuted instantiation: scan.c:set_plane_n4 Unexecuted instantiation: thread_common.c:set_plane_n4 Unexecuted instantiation: tile_common.c:set_plane_n4 Unexecuted instantiation: txb_common.c:set_plane_n4 Unexecuted instantiation: cfl_sse2.c:set_plane_n4 Unexecuted instantiation: cfl_ssse3.c:set_plane_n4 Unexecuted instantiation: resize_ssse3.c:set_plane_n4 Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:set_plane_n4 Unexecuted instantiation: filterintra_sse4.c:set_plane_n4 Unexecuted instantiation: cfl_avx2.c:set_plane_n4 |
1339 | | |
1340 | | static INLINE void set_mi_row_col(MACROBLOCKD *xd, const TileInfo *const tile, |
1341 | | int mi_row, int bh, int mi_col, int bw, |
1342 | 25.4M | int mi_rows, int mi_cols) { |
1343 | 25.4M | xd->mb_to_top_edge = -GET_MV_SUBPEL(mi_row * MI_SIZE); |
1344 | 25.4M | xd->mb_to_bottom_edge = GET_MV_SUBPEL((mi_rows - bh - mi_row) * MI_SIZE); |
1345 | 25.4M | xd->mb_to_left_edge = -GET_MV_SUBPEL((mi_col * MI_SIZE)); |
1346 | 25.4M | xd->mb_to_right_edge = GET_MV_SUBPEL((mi_cols - bw - mi_col) * MI_SIZE); |
1347 | | |
1348 | 25.4M | xd->mi_row = mi_row; |
1349 | 25.4M | xd->mi_col = mi_col; |
1350 | | |
1351 | | // Are edges available for intra prediction? |
1352 | 25.4M | xd->up_available = (mi_row > tile->mi_row_start); |
1353 | | |
1354 | 25.4M | const int ss_x = xd->plane[1].subsampling_x; |
1355 | 25.4M | const int ss_y = xd->plane[1].subsampling_y; |
1356 | | |
1357 | 25.4M | xd->left_available = (mi_col > tile->mi_col_start); |
1358 | 25.4M | xd->chroma_up_available = xd->up_available; |
1359 | 25.4M | xd->chroma_left_available = xd->left_available; |
1360 | 25.4M | if (ss_x && bw < mi_size_wide[BLOCK_8X8]) |
1361 | 3.38M | xd->chroma_left_available = (mi_col - 1) > tile->mi_col_start; |
1362 | 25.4M | if (ss_y && bh < mi_size_high[BLOCK_8X8]) |
1363 | 3.71M | xd->chroma_up_available = (mi_row - 1) > tile->mi_row_start; |
1364 | 25.4M | if (xd->up_available) { |
1365 | 24.5M | xd->above_mbmi = xd->mi[-xd->mi_stride]; |
1366 | 24.5M | } else { |
1367 | 878k | xd->above_mbmi = NULL; |
1368 | 878k | } |
1369 | | |
1370 | 25.4M | if (xd->left_available) { |
1371 | 24.7M | xd->left_mbmi = xd->mi[-1]; |
1372 | 24.7M | } else { |
1373 | 646k | xd->left_mbmi = NULL; |
1374 | 646k | } |
1375 | | |
1376 | 25.4M | const int chroma_ref = ((mi_row & 0x01) || !(bh & 0x01) || !ss_y) && |
1377 | 25.4M | ((mi_col & 0x01) || !(bw & 0x01) || !ss_x); |
1378 | 25.4M | xd->is_chroma_ref = chroma_ref; |
1379 | 25.4M | if (chroma_ref) { |
1380 | | // To help calculate the "above" and "left" chroma blocks, note that the |
1381 | | // current block may cover multiple luma blocks (e.g., if partitioned into |
1382 | | // 4x4 luma blocks). |
1383 | | // First, find the top-left-most luma block covered by this chroma block |
1384 | 22.2M | MB_MODE_INFO **base_mi = |
1385 | 22.2M | &xd->mi[-(mi_row & ss_y) * xd->mi_stride - (mi_col & ss_x)]; |
1386 | | |
1387 | | // Then, we consider the luma region covered by the left or above 4x4 chroma |
1388 | | // prediction. We want to point to the chroma reference block in that |
1389 | | // region, which is the bottom-right-most mi unit. |
1390 | | // This leads to the following offsets: |
1391 | 22.2M | MB_MODE_INFO *chroma_above_mi = |
1392 | 22.2M | xd->chroma_up_available ? base_mi[-xd->mi_stride + ss_x] : NULL; |
1393 | 22.2M | xd->chroma_above_mbmi = chroma_above_mi; |
1394 | | |
1395 | 22.2M | MB_MODE_INFO *chroma_left_mi = |
1396 | 22.2M | xd->chroma_left_available ? base_mi[ss_y * xd->mi_stride - 1] : NULL; |
1397 | 22.2M | xd->chroma_left_mbmi = chroma_left_mi; |
1398 | 22.2M | } |
1399 | | |
1400 | 25.4M | xd->height = bh; |
1401 | 25.4M | xd->width = bw; |
1402 | | |
1403 | 25.4M | xd->is_last_vertical_rect = 0; |
1404 | 25.4M | if (xd->width < xd->height) { |
1405 | 6.05M | if (!((mi_col + xd->width) & (xd->height - 1))) { |
1406 | 2.24M | xd->is_last_vertical_rect = 1; |
1407 | 2.24M | } |
1408 | 6.05M | } |
1409 | | |
1410 | 25.4M | xd->is_first_horizontal_rect = 0; |
1411 | 25.4M | if (xd->width > xd->height) |
1412 | 9.08M | if (!(mi_row & (xd->width - 1))) xd->is_first_horizontal_rect = 1; |
1413 | 25.4M | } Unexecuted instantiation: av1_dx_iface.c:set_mi_row_col decodeframe.c:set_mi_row_col Line | Count | Source | 1342 | 25.4M | int mi_rows, int mi_cols) { | 1343 | 25.4M | xd->mb_to_top_edge = -GET_MV_SUBPEL(mi_row * MI_SIZE); | 1344 | 25.4M | xd->mb_to_bottom_edge = GET_MV_SUBPEL((mi_rows - bh - mi_row) * MI_SIZE); | 1345 | 25.4M | xd->mb_to_left_edge = -GET_MV_SUBPEL((mi_col * MI_SIZE)); | 1346 | 25.4M | xd->mb_to_right_edge = GET_MV_SUBPEL((mi_cols - bw - mi_col) * MI_SIZE); | 1347 | | | 1348 | 25.4M | xd->mi_row = mi_row; | 1349 | 25.4M | xd->mi_col = mi_col; | 1350 | | | 1351 | | // Are edges available for intra prediction? | 1352 | 25.4M | xd->up_available = (mi_row > tile->mi_row_start); | 1353 | | | 1354 | 25.4M | const int ss_x = xd->plane[1].subsampling_x; | 1355 | 25.4M | const int ss_y = xd->plane[1].subsampling_y; | 1356 | | | 1357 | 25.4M | xd->left_available = (mi_col > tile->mi_col_start); | 1358 | 25.4M | xd->chroma_up_available = xd->up_available; | 1359 | 25.4M | xd->chroma_left_available = xd->left_available; | 1360 | 25.4M | if (ss_x && bw < mi_size_wide[BLOCK_8X8]) | 1361 | 3.38M | xd->chroma_left_available = (mi_col - 1) > tile->mi_col_start; | 1362 | 25.4M | if (ss_y && bh < mi_size_high[BLOCK_8X8]) | 1363 | 3.71M | xd->chroma_up_available = (mi_row - 1) > tile->mi_row_start; | 1364 | 25.4M | if (xd->up_available) { | 1365 | 24.5M | xd->above_mbmi = xd->mi[-xd->mi_stride]; | 1366 | 24.5M | } else { | 1367 | 878k | xd->above_mbmi = NULL; | 1368 | 878k | } | 1369 | | | 1370 | 25.4M | if (xd->left_available) { | 1371 | 24.7M | xd->left_mbmi = xd->mi[-1]; | 1372 | 24.7M | } else { | 1373 | 646k | xd->left_mbmi = NULL; | 1374 | 646k | } | 1375 | | | 1376 | 25.4M | const int chroma_ref = ((mi_row & 0x01) || !(bh & 0x01) || !ss_y) && | 1377 | 25.4M | ((mi_col & 0x01) || !(bw & 0x01) || !ss_x); | 1378 | 25.4M | xd->is_chroma_ref = chroma_ref; | 1379 | 25.4M | if (chroma_ref) { | 1380 | | // To help calculate the "above" and "left" chroma blocks, note that the | 1381 | | // current block may cover multiple luma blocks (e.g., if partitioned into | 1382 | | // 4x4 luma blocks). | 1383 | | // First, find the top-left-most luma block covered by this chroma block | 1384 | 22.2M | MB_MODE_INFO **base_mi = | 1385 | 22.2M | &xd->mi[-(mi_row & ss_y) * xd->mi_stride - (mi_col & ss_x)]; | 1386 | | | 1387 | | // Then, we consider the luma region covered by the left or above 4x4 chroma | 1388 | | // prediction. We want to point to the chroma reference block in that | 1389 | | // region, which is the bottom-right-most mi unit. | 1390 | | // This leads to the following offsets: | 1391 | 22.2M | MB_MODE_INFO *chroma_above_mi = | 1392 | 22.2M | xd->chroma_up_available ? base_mi[-xd->mi_stride + ss_x] : NULL; | 1393 | 22.2M | xd->chroma_above_mbmi = chroma_above_mi; | 1394 | | | 1395 | 22.2M | MB_MODE_INFO *chroma_left_mi = | 1396 | 22.2M | xd->chroma_left_available ? base_mi[ss_y * xd->mi_stride - 1] : NULL; | 1397 | 22.2M | xd->chroma_left_mbmi = chroma_left_mi; | 1398 | 22.2M | } | 1399 | | | 1400 | 25.4M | xd->height = bh; | 1401 | 25.4M | xd->width = bw; | 1402 | | | 1403 | 25.4M | xd->is_last_vertical_rect = 0; | 1404 | 25.4M | if (xd->width < xd->height) { | 1405 | 6.05M | if (!((mi_col + xd->width) & (xd->height - 1))) { | 1406 | 2.24M | xd->is_last_vertical_rect = 1; | 1407 | 2.24M | } | 1408 | 6.05M | } | 1409 | | | 1410 | 25.4M | xd->is_first_horizontal_rect = 0; | 1411 | 25.4M | if (xd->width > xd->height) | 1412 | 9.08M | if (!(mi_row & (xd->width - 1))) xd->is_first_horizontal_rect = 1; | 1413 | 25.4M | } |
Unexecuted instantiation: decodemv.c:set_mi_row_col Unexecuted instantiation: decoder.c:set_mi_row_col Unexecuted instantiation: decodetxb.c:set_mi_row_col Unexecuted instantiation: detokenize.c:set_mi_row_col Unexecuted instantiation: obu.c:set_mi_row_col Unexecuted instantiation: alloccommon.c:set_mi_row_col Unexecuted instantiation: av1_loopfilter.c:set_mi_row_col Unexecuted instantiation: blockd.c:set_mi_row_col Unexecuted instantiation: cdef.c:set_mi_row_col Unexecuted instantiation: cdef_block.c:set_mi_row_col Unexecuted instantiation: cfl.c:set_mi_row_col Unexecuted instantiation: convolve.c:set_mi_row_col Unexecuted instantiation: entropy.c:set_mi_row_col Unexecuted instantiation: entropymode.c:set_mi_row_col Unexecuted instantiation: entropymv.c:set_mi_row_col Unexecuted instantiation: mvref_common.c:set_mi_row_col Unexecuted instantiation: pred_common.c:set_mi_row_col Unexecuted instantiation: quant_common.c:set_mi_row_col Unexecuted instantiation: reconinter.c:set_mi_row_col Unexecuted instantiation: reconintra.c:set_mi_row_col Unexecuted instantiation: resize.c:set_mi_row_col Unexecuted instantiation: restoration.c:set_mi_row_col Unexecuted instantiation: scan.c:set_mi_row_col Unexecuted instantiation: thread_common.c:set_mi_row_col Unexecuted instantiation: tile_common.c:set_mi_row_col Unexecuted instantiation: txb_common.c:set_mi_row_col Unexecuted instantiation: cfl_sse2.c:set_mi_row_col Unexecuted instantiation: cfl_ssse3.c:set_mi_row_col Unexecuted instantiation: resize_ssse3.c:set_mi_row_col Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:set_mi_row_col Unexecuted instantiation: filterintra_sse4.c:set_mi_row_col Unexecuted instantiation: cfl_avx2.c:set_mi_row_col |
1414 | | |
1415 | | static INLINE aom_cdf_prob *get_y_mode_cdf(FRAME_CONTEXT *tile_ctx, |
1416 | | const MB_MODE_INFO *above_mi, |
1417 | 8.36M | const MB_MODE_INFO *left_mi) { |
1418 | 8.36M | const PREDICTION_MODE above = av1_above_block_mode(above_mi); |
1419 | 8.36M | const PREDICTION_MODE left = av1_left_block_mode(left_mi); |
1420 | 8.36M | const int above_ctx = intra_mode_context[above]; |
1421 | 8.36M | const int left_ctx = intra_mode_context[left]; |
1422 | 8.36M | return tile_ctx->kf_y_cdf[above_ctx][left_ctx]; |
1423 | 8.36M | } Unexecuted instantiation: av1_dx_iface.c:get_y_mode_cdf Unexecuted instantiation: decodeframe.c:get_y_mode_cdf decodemv.c:get_y_mode_cdf Line | Count | Source | 1417 | 8.36M | const MB_MODE_INFO *left_mi) { | 1418 | 8.36M | const PREDICTION_MODE above = av1_above_block_mode(above_mi); | 1419 | 8.36M | const PREDICTION_MODE left = av1_left_block_mode(left_mi); | 1420 | 8.36M | const int above_ctx = intra_mode_context[above]; | 1421 | 8.36M | const int left_ctx = intra_mode_context[left]; | 1422 | 8.36M | return tile_ctx->kf_y_cdf[above_ctx][left_ctx]; | 1423 | 8.36M | } |
Unexecuted instantiation: decoder.c:get_y_mode_cdf Unexecuted instantiation: decodetxb.c:get_y_mode_cdf Unexecuted instantiation: detokenize.c:get_y_mode_cdf Unexecuted instantiation: obu.c:get_y_mode_cdf Unexecuted instantiation: alloccommon.c:get_y_mode_cdf Unexecuted instantiation: av1_loopfilter.c:get_y_mode_cdf Unexecuted instantiation: blockd.c:get_y_mode_cdf Unexecuted instantiation: cdef.c:get_y_mode_cdf Unexecuted instantiation: cdef_block.c:get_y_mode_cdf Unexecuted instantiation: cfl.c:get_y_mode_cdf Unexecuted instantiation: convolve.c:get_y_mode_cdf Unexecuted instantiation: entropy.c:get_y_mode_cdf Unexecuted instantiation: entropymode.c:get_y_mode_cdf Unexecuted instantiation: entropymv.c:get_y_mode_cdf Unexecuted instantiation: mvref_common.c:get_y_mode_cdf Unexecuted instantiation: pred_common.c:get_y_mode_cdf Unexecuted instantiation: quant_common.c:get_y_mode_cdf Unexecuted instantiation: reconinter.c:get_y_mode_cdf Unexecuted instantiation: reconintra.c:get_y_mode_cdf Unexecuted instantiation: resize.c:get_y_mode_cdf Unexecuted instantiation: restoration.c:get_y_mode_cdf Unexecuted instantiation: scan.c:get_y_mode_cdf Unexecuted instantiation: thread_common.c:get_y_mode_cdf Unexecuted instantiation: tile_common.c:get_y_mode_cdf Unexecuted instantiation: txb_common.c:get_y_mode_cdf Unexecuted instantiation: cfl_sse2.c:get_y_mode_cdf Unexecuted instantiation: cfl_ssse3.c:get_y_mode_cdf Unexecuted instantiation: resize_ssse3.c:get_y_mode_cdf Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:get_y_mode_cdf Unexecuted instantiation: filterintra_sse4.c:get_y_mode_cdf Unexecuted instantiation: cfl_avx2.c:get_y_mode_cdf |
1424 | | |
1425 | | static INLINE void update_partition_context(MACROBLOCKD *xd, int mi_row, |
1426 | | int mi_col, BLOCK_SIZE subsize, |
1427 | 9.33M | BLOCK_SIZE bsize) { |
1428 | 9.33M | PARTITION_CONTEXT *const above_ctx = xd->above_partition_context + mi_col; |
1429 | 9.33M | PARTITION_CONTEXT *const left_ctx = |
1430 | 9.33M | xd->left_partition_context + (mi_row & MAX_MIB_MASK); |
1431 | | |
1432 | 9.33M | const int bw = mi_size_wide[bsize]; |
1433 | 9.33M | const int bh = mi_size_high[bsize]; |
1434 | 9.33M | memset(above_ctx, partition_context_lookup[subsize].above, bw); |
1435 | 9.33M | memset(left_ctx, partition_context_lookup[subsize].left, bh); |
1436 | 9.33M | } Unexecuted instantiation: av1_dx_iface.c:update_partition_context decodeframe.c:update_partition_context Line | Count | Source | 1427 | 9.33M | BLOCK_SIZE bsize) { | 1428 | 9.33M | PARTITION_CONTEXT *const above_ctx = xd->above_partition_context + mi_col; | 1429 | 9.33M | PARTITION_CONTEXT *const left_ctx = | 1430 | 9.33M | xd->left_partition_context + (mi_row & MAX_MIB_MASK); | 1431 | | | 1432 | 9.33M | const int bw = mi_size_wide[bsize]; | 1433 | 9.33M | const int bh = mi_size_high[bsize]; | 1434 | 9.33M | memset(above_ctx, partition_context_lookup[subsize].above, bw); | 1435 | 9.33M | memset(left_ctx, partition_context_lookup[subsize].left, bh); | 1436 | 9.33M | } |
Unexecuted instantiation: decodemv.c:update_partition_context Unexecuted instantiation: decoder.c:update_partition_context Unexecuted instantiation: decodetxb.c:update_partition_context Unexecuted instantiation: detokenize.c:update_partition_context Unexecuted instantiation: obu.c:update_partition_context Unexecuted instantiation: alloccommon.c:update_partition_context Unexecuted instantiation: av1_loopfilter.c:update_partition_context Unexecuted instantiation: blockd.c:update_partition_context Unexecuted instantiation: cdef.c:update_partition_context Unexecuted instantiation: cdef_block.c:update_partition_context Unexecuted instantiation: cfl.c:update_partition_context Unexecuted instantiation: convolve.c:update_partition_context Unexecuted instantiation: entropy.c:update_partition_context Unexecuted instantiation: entropymode.c:update_partition_context Unexecuted instantiation: entropymv.c:update_partition_context Unexecuted instantiation: mvref_common.c:update_partition_context Unexecuted instantiation: pred_common.c:update_partition_context Unexecuted instantiation: quant_common.c:update_partition_context Unexecuted instantiation: reconinter.c:update_partition_context Unexecuted instantiation: reconintra.c:update_partition_context Unexecuted instantiation: resize.c:update_partition_context Unexecuted instantiation: restoration.c:update_partition_context Unexecuted instantiation: scan.c:update_partition_context Unexecuted instantiation: thread_common.c:update_partition_context Unexecuted instantiation: tile_common.c:update_partition_context Unexecuted instantiation: txb_common.c:update_partition_context Unexecuted instantiation: cfl_sse2.c:update_partition_context Unexecuted instantiation: cfl_ssse3.c:update_partition_context Unexecuted instantiation: resize_ssse3.c:update_partition_context Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:update_partition_context Unexecuted instantiation: filterintra_sse4.c:update_partition_context Unexecuted instantiation: cfl_avx2.c:update_partition_context |
1437 | | |
1438 | | static INLINE int is_chroma_reference(int mi_row, int mi_col, BLOCK_SIZE bsize, |
1439 | 0 | int subsampling_x, int subsampling_y) { |
1440 | 0 | assert(bsize < BLOCK_SIZES_ALL); |
1441 | 0 | const int bw = mi_size_wide[bsize]; |
1442 | 0 | const int bh = mi_size_high[bsize]; |
1443 | 0 | int ref_pos = ((mi_row & 0x01) || !(bh & 0x01) || !subsampling_y) && |
1444 | 0 | ((mi_col & 0x01) || !(bw & 0x01) || !subsampling_x); |
1445 | 0 | return ref_pos; |
1446 | 0 | } Unexecuted instantiation: av1_dx_iface.c:is_chroma_reference Unexecuted instantiation: decodeframe.c:is_chroma_reference Unexecuted instantiation: decodemv.c:is_chroma_reference Unexecuted instantiation: decoder.c:is_chroma_reference Unexecuted instantiation: decodetxb.c:is_chroma_reference Unexecuted instantiation: detokenize.c:is_chroma_reference Unexecuted instantiation: obu.c:is_chroma_reference Unexecuted instantiation: alloccommon.c:is_chroma_reference Unexecuted instantiation: av1_loopfilter.c:is_chroma_reference Unexecuted instantiation: blockd.c:is_chroma_reference Unexecuted instantiation: cdef.c:is_chroma_reference Unexecuted instantiation: cdef_block.c:is_chroma_reference Unexecuted instantiation: cfl.c:is_chroma_reference Unexecuted instantiation: convolve.c:is_chroma_reference Unexecuted instantiation: entropy.c:is_chroma_reference Unexecuted instantiation: entropymode.c:is_chroma_reference Unexecuted instantiation: entropymv.c:is_chroma_reference Unexecuted instantiation: mvref_common.c:is_chroma_reference Unexecuted instantiation: pred_common.c:is_chroma_reference Unexecuted instantiation: quant_common.c:is_chroma_reference Unexecuted instantiation: reconinter.c:is_chroma_reference Unexecuted instantiation: reconintra.c:is_chroma_reference Unexecuted instantiation: resize.c:is_chroma_reference Unexecuted instantiation: restoration.c:is_chroma_reference Unexecuted instantiation: scan.c:is_chroma_reference Unexecuted instantiation: thread_common.c:is_chroma_reference Unexecuted instantiation: tile_common.c:is_chroma_reference Unexecuted instantiation: txb_common.c:is_chroma_reference Unexecuted instantiation: cfl_sse2.c:is_chroma_reference Unexecuted instantiation: cfl_ssse3.c:is_chroma_reference Unexecuted instantiation: resize_ssse3.c:is_chroma_reference Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:is_chroma_reference Unexecuted instantiation: filterintra_sse4.c:is_chroma_reference Unexecuted instantiation: cfl_avx2.c:is_chroma_reference |
1447 | | |
1448 | | static INLINE aom_cdf_prob cdf_element_prob(const aom_cdf_prob *cdf, |
1449 | 1.53M | size_t element) { |
1450 | 1.53M | assert(cdf != NULL); |
1451 | 1.53M | return (element > 0 ? cdf[element - 1] : CDF_PROB_TOP) - cdf[element]; |
1452 | 1.53M | } Unexecuted instantiation: av1_dx_iface.c:cdf_element_prob decodeframe.c:cdf_element_prob Line | Count | Source | 1449 | 1.53M | size_t element) { | 1450 | 1.53M | assert(cdf != NULL); | 1451 | 1.53M | return (element > 0 ? cdf[element - 1] : CDF_PROB_TOP) - cdf[element]; | 1452 | 1.53M | } |
Unexecuted instantiation: decodemv.c:cdf_element_prob Unexecuted instantiation: decoder.c:cdf_element_prob Unexecuted instantiation: decodetxb.c:cdf_element_prob Unexecuted instantiation: detokenize.c:cdf_element_prob Unexecuted instantiation: obu.c:cdf_element_prob Unexecuted instantiation: alloccommon.c:cdf_element_prob Unexecuted instantiation: av1_loopfilter.c:cdf_element_prob Unexecuted instantiation: blockd.c:cdf_element_prob Unexecuted instantiation: cdef.c:cdf_element_prob Unexecuted instantiation: cdef_block.c:cdf_element_prob Unexecuted instantiation: cfl.c:cdf_element_prob Unexecuted instantiation: convolve.c:cdf_element_prob Unexecuted instantiation: entropy.c:cdf_element_prob Unexecuted instantiation: entropymode.c:cdf_element_prob Unexecuted instantiation: entropymv.c:cdf_element_prob Unexecuted instantiation: mvref_common.c:cdf_element_prob Unexecuted instantiation: pred_common.c:cdf_element_prob Unexecuted instantiation: quant_common.c:cdf_element_prob Unexecuted instantiation: reconinter.c:cdf_element_prob Unexecuted instantiation: reconintra.c:cdf_element_prob Unexecuted instantiation: resize.c:cdf_element_prob Unexecuted instantiation: restoration.c:cdf_element_prob Unexecuted instantiation: scan.c:cdf_element_prob Unexecuted instantiation: thread_common.c:cdf_element_prob Unexecuted instantiation: tile_common.c:cdf_element_prob Unexecuted instantiation: txb_common.c:cdf_element_prob Unexecuted instantiation: cfl_sse2.c:cdf_element_prob Unexecuted instantiation: cfl_ssse3.c:cdf_element_prob Unexecuted instantiation: resize_ssse3.c:cdf_element_prob Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:cdf_element_prob Unexecuted instantiation: filterintra_sse4.c:cdf_element_prob Unexecuted instantiation: cfl_avx2.c:cdf_element_prob |
1453 | | |
1454 | | static INLINE void partition_gather_horz_alike(aom_cdf_prob *out, |
1455 | | const aom_cdf_prob *const in, |
1456 | 155k | BLOCK_SIZE bsize) { |
1457 | 155k | (void)bsize; |
1458 | 155k | out[0] = CDF_PROB_TOP; |
1459 | 155k | out[0] -= cdf_element_prob(in, PARTITION_HORZ); |
1460 | 155k | out[0] -= cdf_element_prob(in, PARTITION_SPLIT); |
1461 | 155k | out[0] -= cdf_element_prob(in, PARTITION_HORZ_A); |
1462 | 155k | out[0] -= cdf_element_prob(in, PARTITION_HORZ_B); |
1463 | 155k | out[0] -= cdf_element_prob(in, PARTITION_VERT_A); |
1464 | 155k | if (bsize != BLOCK_128X128) out[0] -= cdf_element_prob(in, PARTITION_HORZ_4); |
1465 | 155k | out[0] = AOM_ICDF(out[0]); |
1466 | 155k | out[1] = AOM_ICDF(CDF_PROB_TOP); |
1467 | 155k | } Unexecuted instantiation: av1_dx_iface.c:partition_gather_horz_alike decodeframe.c:partition_gather_horz_alike Line | Count | Source | 1456 | 155k | BLOCK_SIZE bsize) { | 1457 | 155k | (void)bsize; | 1458 | 155k | out[0] = CDF_PROB_TOP; | 1459 | 155k | out[0] -= cdf_element_prob(in, PARTITION_HORZ); | 1460 | 155k | out[0] -= cdf_element_prob(in, PARTITION_SPLIT); | 1461 | 155k | out[0] -= cdf_element_prob(in, PARTITION_HORZ_A); | 1462 | 155k | out[0] -= cdf_element_prob(in, PARTITION_HORZ_B); | 1463 | 155k | out[0] -= cdf_element_prob(in, PARTITION_VERT_A); | 1464 | 155k | if (bsize != BLOCK_128X128) out[0] -= cdf_element_prob(in, PARTITION_HORZ_4); | 1465 | 155k | out[0] = AOM_ICDF(out[0]); | 1466 | 155k | out[1] = AOM_ICDF(CDF_PROB_TOP); | 1467 | 155k | } |
Unexecuted instantiation: decodemv.c:partition_gather_horz_alike Unexecuted instantiation: decoder.c:partition_gather_horz_alike Unexecuted instantiation: decodetxb.c:partition_gather_horz_alike Unexecuted instantiation: detokenize.c:partition_gather_horz_alike Unexecuted instantiation: obu.c:partition_gather_horz_alike Unexecuted instantiation: alloccommon.c:partition_gather_horz_alike Unexecuted instantiation: av1_loopfilter.c:partition_gather_horz_alike Unexecuted instantiation: blockd.c:partition_gather_horz_alike Unexecuted instantiation: cdef.c:partition_gather_horz_alike Unexecuted instantiation: cdef_block.c:partition_gather_horz_alike Unexecuted instantiation: cfl.c:partition_gather_horz_alike Unexecuted instantiation: convolve.c:partition_gather_horz_alike Unexecuted instantiation: entropy.c:partition_gather_horz_alike Unexecuted instantiation: entropymode.c:partition_gather_horz_alike Unexecuted instantiation: entropymv.c:partition_gather_horz_alike Unexecuted instantiation: mvref_common.c:partition_gather_horz_alike Unexecuted instantiation: pred_common.c:partition_gather_horz_alike Unexecuted instantiation: quant_common.c:partition_gather_horz_alike Unexecuted instantiation: reconinter.c:partition_gather_horz_alike Unexecuted instantiation: reconintra.c:partition_gather_horz_alike Unexecuted instantiation: resize.c:partition_gather_horz_alike Unexecuted instantiation: restoration.c:partition_gather_horz_alike Unexecuted instantiation: scan.c:partition_gather_horz_alike Unexecuted instantiation: thread_common.c:partition_gather_horz_alike Unexecuted instantiation: tile_common.c:partition_gather_horz_alike Unexecuted instantiation: txb_common.c:partition_gather_horz_alike Unexecuted instantiation: cfl_sse2.c:partition_gather_horz_alike Unexecuted instantiation: cfl_ssse3.c:partition_gather_horz_alike Unexecuted instantiation: resize_ssse3.c:partition_gather_horz_alike Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:partition_gather_horz_alike Unexecuted instantiation: filterintra_sse4.c:partition_gather_horz_alike Unexecuted instantiation: cfl_avx2.c:partition_gather_horz_alike |
1468 | | |
1469 | | static INLINE void partition_gather_vert_alike(aom_cdf_prob *out, |
1470 | | const aom_cdf_prob *const in, |
1471 | 111k | BLOCK_SIZE bsize) { |
1472 | 111k | (void)bsize; |
1473 | 111k | out[0] = CDF_PROB_TOP; |
1474 | 111k | out[0] -= cdf_element_prob(in, PARTITION_VERT); |
1475 | 111k | out[0] -= cdf_element_prob(in, PARTITION_SPLIT); |
1476 | 111k | out[0] -= cdf_element_prob(in, PARTITION_HORZ_A); |
1477 | 111k | out[0] -= cdf_element_prob(in, PARTITION_VERT_A); |
1478 | 111k | out[0] -= cdf_element_prob(in, PARTITION_VERT_B); |
1479 | 111k | if (bsize != BLOCK_128X128) out[0] -= cdf_element_prob(in, PARTITION_VERT_4); |
1480 | 111k | out[0] = AOM_ICDF(out[0]); |
1481 | 111k | out[1] = AOM_ICDF(CDF_PROB_TOP); |
1482 | 111k | } Unexecuted instantiation: av1_dx_iface.c:partition_gather_vert_alike decodeframe.c:partition_gather_vert_alike Line | Count | Source | 1471 | 111k | BLOCK_SIZE bsize) { | 1472 | 111k | (void)bsize; | 1473 | 111k | out[0] = CDF_PROB_TOP; | 1474 | 111k | out[0] -= cdf_element_prob(in, PARTITION_VERT); | 1475 | 111k | out[0] -= cdf_element_prob(in, PARTITION_SPLIT); | 1476 | 111k | out[0] -= cdf_element_prob(in, PARTITION_HORZ_A); | 1477 | 111k | out[0] -= cdf_element_prob(in, PARTITION_VERT_A); | 1478 | 111k | out[0] -= cdf_element_prob(in, PARTITION_VERT_B); | 1479 | 111k | if (bsize != BLOCK_128X128) out[0] -= cdf_element_prob(in, PARTITION_VERT_4); | 1480 | 111k | out[0] = AOM_ICDF(out[0]); | 1481 | 111k | out[1] = AOM_ICDF(CDF_PROB_TOP); | 1482 | 111k | } |
Unexecuted instantiation: decodemv.c:partition_gather_vert_alike Unexecuted instantiation: decoder.c:partition_gather_vert_alike Unexecuted instantiation: decodetxb.c:partition_gather_vert_alike Unexecuted instantiation: detokenize.c:partition_gather_vert_alike Unexecuted instantiation: obu.c:partition_gather_vert_alike Unexecuted instantiation: alloccommon.c:partition_gather_vert_alike Unexecuted instantiation: av1_loopfilter.c:partition_gather_vert_alike Unexecuted instantiation: blockd.c:partition_gather_vert_alike Unexecuted instantiation: cdef.c:partition_gather_vert_alike Unexecuted instantiation: cdef_block.c:partition_gather_vert_alike Unexecuted instantiation: cfl.c:partition_gather_vert_alike Unexecuted instantiation: convolve.c:partition_gather_vert_alike Unexecuted instantiation: entropy.c:partition_gather_vert_alike Unexecuted instantiation: entropymode.c:partition_gather_vert_alike Unexecuted instantiation: entropymv.c:partition_gather_vert_alike Unexecuted instantiation: mvref_common.c:partition_gather_vert_alike Unexecuted instantiation: pred_common.c:partition_gather_vert_alike Unexecuted instantiation: quant_common.c:partition_gather_vert_alike Unexecuted instantiation: reconinter.c:partition_gather_vert_alike Unexecuted instantiation: reconintra.c:partition_gather_vert_alike Unexecuted instantiation: resize.c:partition_gather_vert_alike Unexecuted instantiation: restoration.c:partition_gather_vert_alike Unexecuted instantiation: scan.c:partition_gather_vert_alike Unexecuted instantiation: thread_common.c:partition_gather_vert_alike Unexecuted instantiation: tile_common.c:partition_gather_vert_alike Unexecuted instantiation: txb_common.c:partition_gather_vert_alike Unexecuted instantiation: cfl_sse2.c:partition_gather_vert_alike Unexecuted instantiation: cfl_ssse3.c:partition_gather_vert_alike Unexecuted instantiation: resize_ssse3.c:partition_gather_vert_alike Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:partition_gather_vert_alike Unexecuted instantiation: filterintra_sse4.c:partition_gather_vert_alike Unexecuted instantiation: cfl_avx2.c:partition_gather_vert_alike |
1483 | | |
1484 | | static INLINE void update_ext_partition_context(MACROBLOCKD *xd, int mi_row, |
1485 | | int mi_col, BLOCK_SIZE subsize, |
1486 | | BLOCK_SIZE bsize, |
1487 | 12.1M | PARTITION_TYPE partition) { |
1488 | 12.1M | if (bsize >= BLOCK_8X8) { |
1489 | 11.1M | const int hbs = mi_size_wide[bsize] / 2; |
1490 | 11.1M | BLOCK_SIZE bsize2 = get_partition_subsize(bsize, PARTITION_SPLIT); |
1491 | 11.1M | switch (partition) { |
1492 | 2.94M | case PARTITION_SPLIT: |
1493 | 2.94M | if (bsize != BLOCK_8X8) break; |
1494 | 238k | AOM_FALLTHROUGH_INTENDED; |
1495 | 4.18M | case PARTITION_NONE: |
1496 | 5.49M | case PARTITION_HORZ: |
1497 | 6.40M | case PARTITION_VERT: |
1498 | 7.07M | case PARTITION_HORZ_4: |
1499 | 7.60M | case PARTITION_VERT_4: |
1500 | 7.60M | update_partition_context(xd, mi_row, mi_col, subsize, bsize); |
1501 | 7.60M | break; |
1502 | 257k | case PARTITION_HORZ_A: |
1503 | 257k | update_partition_context(xd, mi_row, mi_col, bsize2, subsize); |
1504 | 257k | update_partition_context(xd, mi_row + hbs, mi_col, subsize, subsize); |
1505 | 257k | break; |
1506 | 262k | case PARTITION_HORZ_B: |
1507 | 262k | update_partition_context(xd, mi_row, mi_col, subsize, subsize); |
1508 | 262k | update_partition_context(xd, mi_row + hbs, mi_col, bsize2, subsize); |
1509 | 262k | break; |
1510 | 157k | case PARTITION_VERT_A: |
1511 | 157k | update_partition_context(xd, mi_row, mi_col, bsize2, subsize); |
1512 | 157k | update_partition_context(xd, mi_row, mi_col + hbs, subsize, subsize); |
1513 | 157k | break; |
1514 | 189k | case PARTITION_VERT_B: |
1515 | 189k | update_partition_context(xd, mi_row, mi_col, subsize, subsize); |
1516 | 189k | update_partition_context(xd, mi_row, mi_col + hbs, bsize2, subsize); |
1517 | 189k | break; |
1518 | 0 | default: assert(0 && "Invalid partition type"); |
1519 | 11.1M | } |
1520 | 11.1M | } |
1521 | 12.1M | } Unexecuted instantiation: av1_dx_iface.c:update_ext_partition_context decodeframe.c:update_ext_partition_context Line | Count | Source | 1487 | 12.1M | PARTITION_TYPE partition) { | 1488 | 12.1M | if (bsize >= BLOCK_8X8) { | 1489 | 11.1M | const int hbs = mi_size_wide[bsize] / 2; | 1490 | 11.1M | BLOCK_SIZE bsize2 = get_partition_subsize(bsize, PARTITION_SPLIT); | 1491 | 11.1M | switch (partition) { | 1492 | 2.94M | case PARTITION_SPLIT: | 1493 | 2.94M | if (bsize != BLOCK_8X8) break; | 1494 | 238k | AOM_FALLTHROUGH_INTENDED; | 1495 | 4.18M | case PARTITION_NONE: | 1496 | 5.49M | case PARTITION_HORZ: | 1497 | 6.40M | case PARTITION_VERT: | 1498 | 7.07M | case PARTITION_HORZ_4: | 1499 | 7.60M | case PARTITION_VERT_4: | 1500 | 7.60M | update_partition_context(xd, mi_row, mi_col, subsize, bsize); | 1501 | 7.60M | break; | 1502 | 257k | case PARTITION_HORZ_A: | 1503 | 257k | update_partition_context(xd, mi_row, mi_col, bsize2, subsize); | 1504 | 257k | update_partition_context(xd, mi_row + hbs, mi_col, subsize, subsize); | 1505 | 257k | break; | 1506 | 262k | case PARTITION_HORZ_B: | 1507 | 262k | update_partition_context(xd, mi_row, mi_col, subsize, subsize); | 1508 | 262k | update_partition_context(xd, mi_row + hbs, mi_col, bsize2, subsize); | 1509 | 262k | break; | 1510 | 157k | case PARTITION_VERT_A: | 1511 | 157k | update_partition_context(xd, mi_row, mi_col, bsize2, subsize); | 1512 | 157k | update_partition_context(xd, mi_row, mi_col + hbs, subsize, subsize); | 1513 | 157k | break; | 1514 | 189k | case PARTITION_VERT_B: | 1515 | 189k | update_partition_context(xd, mi_row, mi_col, subsize, subsize); | 1516 | 189k | update_partition_context(xd, mi_row, mi_col + hbs, bsize2, subsize); | 1517 | 189k | break; | 1518 | 0 | default: assert(0 && "Invalid partition type"); | 1519 | 11.1M | } | 1520 | 11.1M | } | 1521 | 12.1M | } |
Unexecuted instantiation: decodemv.c:update_ext_partition_context Unexecuted instantiation: decoder.c:update_ext_partition_context Unexecuted instantiation: decodetxb.c:update_ext_partition_context Unexecuted instantiation: detokenize.c:update_ext_partition_context Unexecuted instantiation: obu.c:update_ext_partition_context Unexecuted instantiation: alloccommon.c:update_ext_partition_context Unexecuted instantiation: av1_loopfilter.c:update_ext_partition_context Unexecuted instantiation: blockd.c:update_ext_partition_context Unexecuted instantiation: cdef.c:update_ext_partition_context Unexecuted instantiation: cdef_block.c:update_ext_partition_context Unexecuted instantiation: cfl.c:update_ext_partition_context Unexecuted instantiation: convolve.c:update_ext_partition_context Unexecuted instantiation: entropy.c:update_ext_partition_context Unexecuted instantiation: entropymode.c:update_ext_partition_context Unexecuted instantiation: entropymv.c:update_ext_partition_context Unexecuted instantiation: mvref_common.c:update_ext_partition_context Unexecuted instantiation: pred_common.c:update_ext_partition_context Unexecuted instantiation: quant_common.c:update_ext_partition_context Unexecuted instantiation: reconinter.c:update_ext_partition_context Unexecuted instantiation: reconintra.c:update_ext_partition_context Unexecuted instantiation: resize.c:update_ext_partition_context Unexecuted instantiation: restoration.c:update_ext_partition_context Unexecuted instantiation: scan.c:update_ext_partition_context Unexecuted instantiation: thread_common.c:update_ext_partition_context Unexecuted instantiation: tile_common.c:update_ext_partition_context Unexecuted instantiation: txb_common.c:update_ext_partition_context Unexecuted instantiation: cfl_sse2.c:update_ext_partition_context Unexecuted instantiation: cfl_ssse3.c:update_ext_partition_context Unexecuted instantiation: resize_ssse3.c:update_ext_partition_context Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:update_ext_partition_context Unexecuted instantiation: filterintra_sse4.c:update_ext_partition_context Unexecuted instantiation: cfl_avx2.c:update_ext_partition_context |
1522 | | |
1523 | | static INLINE int partition_plane_context(const MACROBLOCKD *xd, int mi_row, |
1524 | 11.1M | int mi_col, BLOCK_SIZE bsize) { |
1525 | 11.1M | const PARTITION_CONTEXT *above_ctx = xd->above_partition_context + mi_col; |
1526 | 11.1M | const PARTITION_CONTEXT *left_ctx = |
1527 | 11.1M | xd->left_partition_context + (mi_row & MAX_MIB_MASK); |
1528 | | // Minimum partition point is 8x8. Offset the bsl accordingly. |
1529 | 11.1M | const int bsl = mi_size_wide_log2[bsize] - mi_size_wide_log2[BLOCK_8X8]; |
1530 | 11.1M | int above = (*above_ctx >> bsl) & 1, left = (*left_ctx >> bsl) & 1; |
1531 | | |
1532 | 11.1M | assert(mi_size_wide_log2[bsize] == mi_size_high_log2[bsize]); |
1533 | 0 | assert(bsl >= 0); |
1534 | | |
1535 | 11.1M | return (left * 2 + above) + bsl * PARTITION_PLOFFSET; |
1536 | 11.1M | } Unexecuted instantiation: av1_dx_iface.c:partition_plane_context decodeframe.c:partition_plane_context Line | Count | Source | 1524 | 11.1M | int mi_col, BLOCK_SIZE bsize) { | 1525 | 11.1M | const PARTITION_CONTEXT *above_ctx = xd->above_partition_context + mi_col; | 1526 | 11.1M | const PARTITION_CONTEXT *left_ctx = | 1527 | 11.1M | xd->left_partition_context + (mi_row & MAX_MIB_MASK); | 1528 | | // Minimum partition point is 8x8. Offset the bsl accordingly. | 1529 | 11.1M | const int bsl = mi_size_wide_log2[bsize] - mi_size_wide_log2[BLOCK_8X8]; | 1530 | 11.1M | int above = (*above_ctx >> bsl) & 1, left = (*left_ctx >> bsl) & 1; | 1531 | | | 1532 | 11.1M | assert(mi_size_wide_log2[bsize] == mi_size_high_log2[bsize]); | 1533 | 0 | assert(bsl >= 0); | 1534 | | | 1535 | 11.1M | return (left * 2 + above) + bsl * PARTITION_PLOFFSET; | 1536 | 11.1M | } |
Unexecuted instantiation: decodemv.c:partition_plane_context Unexecuted instantiation: decoder.c:partition_plane_context Unexecuted instantiation: decodetxb.c:partition_plane_context Unexecuted instantiation: detokenize.c:partition_plane_context Unexecuted instantiation: obu.c:partition_plane_context Unexecuted instantiation: alloccommon.c:partition_plane_context Unexecuted instantiation: av1_loopfilter.c:partition_plane_context Unexecuted instantiation: blockd.c:partition_plane_context Unexecuted instantiation: cdef.c:partition_plane_context Unexecuted instantiation: cdef_block.c:partition_plane_context Unexecuted instantiation: cfl.c:partition_plane_context Unexecuted instantiation: convolve.c:partition_plane_context Unexecuted instantiation: entropy.c:partition_plane_context Unexecuted instantiation: entropymode.c:partition_plane_context Unexecuted instantiation: entropymv.c:partition_plane_context Unexecuted instantiation: mvref_common.c:partition_plane_context Unexecuted instantiation: pred_common.c:partition_plane_context Unexecuted instantiation: quant_common.c:partition_plane_context Unexecuted instantiation: reconinter.c:partition_plane_context Unexecuted instantiation: reconintra.c:partition_plane_context Unexecuted instantiation: resize.c:partition_plane_context Unexecuted instantiation: restoration.c:partition_plane_context Unexecuted instantiation: scan.c:partition_plane_context Unexecuted instantiation: thread_common.c:partition_plane_context Unexecuted instantiation: tile_common.c:partition_plane_context Unexecuted instantiation: txb_common.c:partition_plane_context Unexecuted instantiation: cfl_sse2.c:partition_plane_context Unexecuted instantiation: cfl_ssse3.c:partition_plane_context Unexecuted instantiation: resize_ssse3.c:partition_plane_context Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:partition_plane_context Unexecuted instantiation: filterintra_sse4.c:partition_plane_context Unexecuted instantiation: cfl_avx2.c:partition_plane_context |
1537 | | |
1538 | | // Return the number of elements in the partition CDF when |
1539 | | // partitioning the (square) block with luma block size of bsize. |
1540 | 10.7M | static INLINE int partition_cdf_length(BLOCK_SIZE bsize) { |
1541 | 10.7M | if (bsize <= BLOCK_8X8) |
1542 | 2.38M | return PARTITION_TYPES; |
1543 | 8.37M | else if (bsize == BLOCK_128X128) |
1544 | 405k | return EXT_PARTITION_TYPES - 2; |
1545 | 7.96M | else |
1546 | 7.96M | return EXT_PARTITION_TYPES; |
1547 | 10.7M | } Unexecuted instantiation: av1_dx_iface.c:partition_cdf_length decodeframe.c:partition_cdf_length Line | Count | Source | 1540 | 10.7M | static INLINE int partition_cdf_length(BLOCK_SIZE bsize) { | 1541 | 10.7M | if (bsize <= BLOCK_8X8) | 1542 | 2.38M | return PARTITION_TYPES; | 1543 | 8.37M | else if (bsize == BLOCK_128X128) | 1544 | 405k | return EXT_PARTITION_TYPES - 2; | 1545 | 7.96M | else | 1546 | 7.96M | return EXT_PARTITION_TYPES; | 1547 | 10.7M | } |
Unexecuted instantiation: decodemv.c:partition_cdf_length Unexecuted instantiation: decoder.c:partition_cdf_length Unexecuted instantiation: decodetxb.c:partition_cdf_length Unexecuted instantiation: detokenize.c:partition_cdf_length Unexecuted instantiation: obu.c:partition_cdf_length Unexecuted instantiation: alloccommon.c:partition_cdf_length Unexecuted instantiation: av1_loopfilter.c:partition_cdf_length Unexecuted instantiation: blockd.c:partition_cdf_length Unexecuted instantiation: cdef.c:partition_cdf_length Unexecuted instantiation: cdef_block.c:partition_cdf_length Unexecuted instantiation: cfl.c:partition_cdf_length Unexecuted instantiation: convolve.c:partition_cdf_length Unexecuted instantiation: entropy.c:partition_cdf_length Unexecuted instantiation: entropymode.c:partition_cdf_length Unexecuted instantiation: entropymv.c:partition_cdf_length Unexecuted instantiation: mvref_common.c:partition_cdf_length Unexecuted instantiation: pred_common.c:partition_cdf_length Unexecuted instantiation: quant_common.c:partition_cdf_length Unexecuted instantiation: reconinter.c:partition_cdf_length Unexecuted instantiation: reconintra.c:partition_cdf_length Unexecuted instantiation: resize.c:partition_cdf_length Unexecuted instantiation: restoration.c:partition_cdf_length Unexecuted instantiation: scan.c:partition_cdf_length Unexecuted instantiation: thread_common.c:partition_cdf_length Unexecuted instantiation: tile_common.c:partition_cdf_length Unexecuted instantiation: txb_common.c:partition_cdf_length Unexecuted instantiation: cfl_sse2.c:partition_cdf_length Unexecuted instantiation: cfl_ssse3.c:partition_cdf_length Unexecuted instantiation: resize_ssse3.c:partition_cdf_length Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:partition_cdf_length Unexecuted instantiation: filterintra_sse4.c:partition_cdf_length Unexecuted instantiation: cfl_avx2.c:partition_cdf_length |
1548 | | |
1549 | | static INLINE int max_block_wide(const MACROBLOCKD *xd, BLOCK_SIZE bsize, |
1550 | 43.6M | int plane) { |
1551 | 43.6M | assert(bsize < BLOCK_SIZES_ALL); |
1552 | 0 | int max_blocks_wide = block_size_wide[bsize]; |
1553 | | |
1554 | 43.6M | if (xd->mb_to_right_edge < 0) { |
1555 | 1.42M | const struct macroblockd_plane *const pd = &xd->plane[plane]; |
1556 | 1.42M | max_blocks_wide += xd->mb_to_right_edge >> (3 + pd->subsampling_x); |
1557 | 1.42M | } |
1558 | | |
1559 | | // Scale the width in the transform block unit. |
1560 | 43.6M | return max_blocks_wide >> MI_SIZE_LOG2; |
1561 | 43.6M | } Unexecuted instantiation: av1_dx_iface.c:max_block_wide decodeframe.c:max_block_wide Line | Count | Source | 1550 | 41.3M | int plane) { | 1551 | 41.3M | assert(bsize < BLOCK_SIZES_ALL); | 1552 | 0 | int max_blocks_wide = block_size_wide[bsize]; | 1553 | | | 1554 | 41.3M | if (xd->mb_to_right_edge < 0) { | 1555 | 290k | const struct macroblockd_plane *const pd = &xd->plane[plane]; | 1556 | 290k | max_blocks_wide += xd->mb_to_right_edge >> (3 + pd->subsampling_x); | 1557 | 290k | } | 1558 | | | 1559 | | // Scale the width in the transform block unit. | 1560 | 41.3M | return max_blocks_wide >> MI_SIZE_LOG2; | 1561 | 41.3M | } |
Unexecuted instantiation: decodemv.c:max_block_wide Unexecuted instantiation: decoder.c:max_block_wide Unexecuted instantiation: decodetxb.c:max_block_wide Unexecuted instantiation: detokenize.c:max_block_wide Unexecuted instantiation: obu.c:max_block_wide Unexecuted instantiation: alloccommon.c:max_block_wide Unexecuted instantiation: av1_loopfilter.c:max_block_wide Line | Count | Source | 1550 | 1.13M | int plane) { | 1551 | 1.13M | assert(bsize < BLOCK_SIZES_ALL); | 1552 | 0 | int max_blocks_wide = block_size_wide[bsize]; | 1553 | | | 1554 | 1.13M | if (xd->mb_to_right_edge < 0) { | 1555 | 1.13M | const struct macroblockd_plane *const pd = &xd->plane[plane]; | 1556 | 1.13M | max_blocks_wide += xd->mb_to_right_edge >> (3 + pd->subsampling_x); | 1557 | 1.13M | } | 1558 | | | 1559 | | // Scale the width in the transform block unit. | 1560 | 1.13M | return max_blocks_wide >> MI_SIZE_LOG2; | 1561 | 1.13M | } |
Unexecuted instantiation: cdef.c:max_block_wide Unexecuted instantiation: cdef_block.c:max_block_wide Line | Count | Source | 1550 | 1.17M | int plane) { | 1551 | 1.17M | assert(bsize < BLOCK_SIZES_ALL); | 1552 | 0 | int max_blocks_wide = block_size_wide[bsize]; | 1553 | | | 1554 | 1.17M | if (xd->mb_to_right_edge < 0) { | 1555 | 0 | const struct macroblockd_plane *const pd = &xd->plane[plane]; | 1556 | 0 | max_blocks_wide += xd->mb_to_right_edge >> (3 + pd->subsampling_x); | 1557 | 0 | } | 1558 | | | 1559 | | // Scale the width in the transform block unit. | 1560 | 1.17M | return max_blocks_wide >> MI_SIZE_LOG2; | 1561 | 1.17M | } |
Unexecuted instantiation: convolve.c:max_block_wide Unexecuted instantiation: entropy.c:max_block_wide Unexecuted instantiation: entropymode.c:max_block_wide Unexecuted instantiation: entropymv.c:max_block_wide Unexecuted instantiation: mvref_common.c:max_block_wide Unexecuted instantiation: pred_common.c:max_block_wide Unexecuted instantiation: quant_common.c:max_block_wide Unexecuted instantiation: reconinter.c:max_block_wide Unexecuted instantiation: reconintra.c:max_block_wide Unexecuted instantiation: resize.c:max_block_wide Unexecuted instantiation: restoration.c:max_block_wide Unexecuted instantiation: scan.c:max_block_wide Unexecuted instantiation: thread_common.c:max_block_wide Unexecuted instantiation: tile_common.c:max_block_wide Unexecuted instantiation: txb_common.c:max_block_wide Unexecuted instantiation: cfl_sse2.c:max_block_wide Unexecuted instantiation: cfl_ssse3.c:max_block_wide Unexecuted instantiation: resize_ssse3.c:max_block_wide Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:max_block_wide Unexecuted instantiation: filterintra_sse4.c:max_block_wide Unexecuted instantiation: cfl_avx2.c:max_block_wide |
1562 | | |
1563 | | static INLINE int max_block_high(const MACROBLOCKD *xd, BLOCK_SIZE bsize, |
1564 | 42.9M | int plane) { |
1565 | 42.9M | int max_blocks_high = block_size_high[bsize]; |
1566 | | |
1567 | 42.9M | if (xd->mb_to_bottom_edge < 0) { |
1568 | 656k | const struct macroblockd_plane *const pd = &xd->plane[plane]; |
1569 | 656k | max_blocks_high += xd->mb_to_bottom_edge >> (3 + pd->subsampling_y); |
1570 | 656k | } |
1571 | | |
1572 | | // Scale the height in the transform block unit. |
1573 | 42.9M | return max_blocks_high >> MI_SIZE_LOG2; |
1574 | 42.9M | } Unexecuted instantiation: av1_dx_iface.c:max_block_high decodeframe.c:max_block_high Line | Count | Source | 1564 | 41.3M | int plane) { | 1565 | 41.3M | int max_blocks_high = block_size_high[bsize]; | 1566 | | | 1567 | 41.3M | if (xd->mb_to_bottom_edge < 0) { | 1568 | 249k | const struct macroblockd_plane *const pd = &xd->plane[plane]; | 1569 | 249k | max_blocks_high += xd->mb_to_bottom_edge >> (3 + pd->subsampling_y); | 1570 | 249k | } | 1571 | | | 1572 | | // Scale the height in the transform block unit. | 1573 | 41.3M | return max_blocks_high >> MI_SIZE_LOG2; | 1574 | 41.3M | } |
Unexecuted instantiation: decodemv.c:max_block_high Unexecuted instantiation: decoder.c:max_block_high Unexecuted instantiation: decodetxb.c:max_block_high Unexecuted instantiation: detokenize.c:max_block_high Unexecuted instantiation: obu.c:max_block_high Unexecuted instantiation: alloccommon.c:max_block_high Unexecuted instantiation: av1_loopfilter.c:max_block_high Line | Count | Source | 1564 | 407k | int plane) { | 1565 | 407k | int max_blocks_high = block_size_high[bsize]; | 1566 | | | 1567 | 407k | if (xd->mb_to_bottom_edge < 0) { | 1568 | 407k | const struct macroblockd_plane *const pd = &xd->plane[plane]; | 1569 | 407k | max_blocks_high += xd->mb_to_bottom_edge >> (3 + pd->subsampling_y); | 1570 | 407k | } | 1571 | | | 1572 | | // Scale the height in the transform block unit. | 1573 | 407k | return max_blocks_high >> MI_SIZE_LOG2; | 1574 | 407k | } |
Unexecuted instantiation: cdef.c:max_block_high Unexecuted instantiation: cdef_block.c:max_block_high Line | Count | Source | 1564 | 1.17M | int plane) { | 1565 | 1.17M | int max_blocks_high = block_size_high[bsize]; | 1566 | | | 1567 | 1.17M | if (xd->mb_to_bottom_edge < 0) { | 1568 | 0 | const struct macroblockd_plane *const pd = &xd->plane[plane]; | 1569 | 0 | max_blocks_high += xd->mb_to_bottom_edge >> (3 + pd->subsampling_y); | 1570 | 0 | } | 1571 | | | 1572 | | // Scale the height in the transform block unit. | 1573 | 1.17M | return max_blocks_high >> MI_SIZE_LOG2; | 1574 | 1.17M | } |
Unexecuted instantiation: convolve.c:max_block_high Unexecuted instantiation: entropy.c:max_block_high Unexecuted instantiation: entropymode.c:max_block_high Unexecuted instantiation: entropymv.c:max_block_high Unexecuted instantiation: mvref_common.c:max_block_high Unexecuted instantiation: pred_common.c:max_block_high Unexecuted instantiation: quant_common.c:max_block_high Unexecuted instantiation: reconinter.c:max_block_high Unexecuted instantiation: reconintra.c:max_block_high Unexecuted instantiation: resize.c:max_block_high Unexecuted instantiation: restoration.c:max_block_high Unexecuted instantiation: scan.c:max_block_high Unexecuted instantiation: thread_common.c:max_block_high Unexecuted instantiation: tile_common.c:max_block_high Unexecuted instantiation: txb_common.c:max_block_high Unexecuted instantiation: cfl_sse2.c:max_block_high Unexecuted instantiation: cfl_ssse3.c:max_block_high Unexecuted instantiation: resize_ssse3.c:max_block_high Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:max_block_high Unexecuted instantiation: filterintra_sse4.c:max_block_high Unexecuted instantiation: cfl_avx2.c:max_block_high |
1575 | | |
1576 | | static INLINE void av1_zero_above_context(AV1_COMMON *const cm, |
1577 | | const MACROBLOCKD *xd, |
1578 | | int mi_col_start, int mi_col_end, |
1579 | 140k | const int tile_row) { |
1580 | 140k | const SequenceHeader *const seq_params = cm->seq_params; |
1581 | 140k | const int num_planes = av1_num_planes(cm); |
1582 | 140k | const int width = mi_col_end - mi_col_start; |
1583 | 140k | const int aligned_width = |
1584 | 140k | ALIGN_POWER_OF_TWO(width, seq_params->mib_size_log2); |
1585 | 140k | const int offset_y = mi_col_start; |
1586 | 140k | const int width_y = aligned_width; |
1587 | 140k | const int offset_uv = offset_y >> seq_params->subsampling_x; |
1588 | 140k | const int width_uv = width_y >> seq_params->subsampling_x; |
1589 | 140k | CommonContexts *const above_contexts = &cm->above_contexts; |
1590 | | |
1591 | 140k | av1_zero_array(above_contexts->entropy[0][tile_row] + offset_y, width_y); |
1592 | 140k | if (num_planes > 1) { |
1593 | 132k | if (above_contexts->entropy[1][tile_row] && |
1594 | 132k | above_contexts->entropy[2][tile_row]) { |
1595 | 132k | av1_zero_array(above_contexts->entropy[1][tile_row] + offset_uv, |
1596 | 132k | width_uv); |
1597 | 132k | av1_zero_array(above_contexts->entropy[2][tile_row] + offset_uv, |
1598 | 132k | width_uv); |
1599 | 132k | } else { |
1600 | 0 | aom_internal_error(xd->error_info, AOM_CODEC_CORRUPT_FRAME, |
1601 | 0 | "Invalid value of planes"); |
1602 | 0 | } |
1603 | 132k | } |
1604 | | |
1605 | 140k | av1_zero_array(above_contexts->partition[tile_row] + mi_col_start, |
1606 | 140k | aligned_width); |
1607 | | |
1608 | 140k | memset(above_contexts->txfm[tile_row] + mi_col_start, |
1609 | 140k | tx_size_wide[TX_SIZES_LARGEST], aligned_width * sizeof(TXFM_CONTEXT)); |
1610 | 140k | } Unexecuted instantiation: av1_dx_iface.c:av1_zero_above_context decodeframe.c:av1_zero_above_context Line | Count | Source | 1579 | 140k | const int tile_row) { | 1580 | 140k | const SequenceHeader *const seq_params = cm->seq_params; | 1581 | 140k | const int num_planes = av1_num_planes(cm); | 1582 | 140k | const int width = mi_col_end - mi_col_start; | 1583 | 140k | const int aligned_width = | 1584 | 140k | ALIGN_POWER_OF_TWO(width, seq_params->mib_size_log2); | 1585 | 140k | const int offset_y = mi_col_start; | 1586 | 140k | const int width_y = aligned_width; | 1587 | 140k | const int offset_uv = offset_y >> seq_params->subsampling_x; | 1588 | 140k | const int width_uv = width_y >> seq_params->subsampling_x; | 1589 | 140k | CommonContexts *const above_contexts = &cm->above_contexts; | 1590 | | | 1591 | 140k | av1_zero_array(above_contexts->entropy[0][tile_row] + offset_y, width_y); | 1592 | 140k | if (num_planes > 1) { | 1593 | 132k | if (above_contexts->entropy[1][tile_row] && | 1594 | 132k | above_contexts->entropy[2][tile_row]) { | 1595 | 132k | av1_zero_array(above_contexts->entropy[1][tile_row] + offset_uv, | 1596 | 132k | width_uv); | 1597 | 132k | av1_zero_array(above_contexts->entropy[2][tile_row] + offset_uv, | 1598 | 132k | width_uv); | 1599 | 132k | } else { | 1600 | 0 | aom_internal_error(xd->error_info, AOM_CODEC_CORRUPT_FRAME, | 1601 | 0 | "Invalid value of planes"); | 1602 | 0 | } | 1603 | 132k | } | 1604 | | | 1605 | 140k | av1_zero_array(above_contexts->partition[tile_row] + mi_col_start, | 1606 | 140k | aligned_width); | 1607 | | | 1608 | 140k | memset(above_contexts->txfm[tile_row] + mi_col_start, | 1609 | 140k | tx_size_wide[TX_SIZES_LARGEST], aligned_width * sizeof(TXFM_CONTEXT)); | 1610 | 140k | } |
Unexecuted instantiation: decodemv.c:av1_zero_above_context Unexecuted instantiation: decoder.c:av1_zero_above_context Unexecuted instantiation: decodetxb.c:av1_zero_above_context Unexecuted instantiation: detokenize.c:av1_zero_above_context Unexecuted instantiation: obu.c:av1_zero_above_context Unexecuted instantiation: alloccommon.c:av1_zero_above_context Unexecuted instantiation: av1_loopfilter.c:av1_zero_above_context Unexecuted instantiation: blockd.c:av1_zero_above_context Unexecuted instantiation: cdef.c:av1_zero_above_context Unexecuted instantiation: cdef_block.c:av1_zero_above_context Unexecuted instantiation: cfl.c:av1_zero_above_context Unexecuted instantiation: convolve.c:av1_zero_above_context Unexecuted instantiation: entropy.c:av1_zero_above_context Unexecuted instantiation: entropymode.c:av1_zero_above_context Unexecuted instantiation: entropymv.c:av1_zero_above_context Unexecuted instantiation: mvref_common.c:av1_zero_above_context Unexecuted instantiation: pred_common.c:av1_zero_above_context Unexecuted instantiation: quant_common.c:av1_zero_above_context Unexecuted instantiation: reconinter.c:av1_zero_above_context Unexecuted instantiation: reconintra.c:av1_zero_above_context Unexecuted instantiation: resize.c:av1_zero_above_context Unexecuted instantiation: restoration.c:av1_zero_above_context Unexecuted instantiation: scan.c:av1_zero_above_context Unexecuted instantiation: thread_common.c:av1_zero_above_context Unexecuted instantiation: tile_common.c:av1_zero_above_context Unexecuted instantiation: txb_common.c:av1_zero_above_context Unexecuted instantiation: cfl_sse2.c:av1_zero_above_context Unexecuted instantiation: cfl_ssse3.c:av1_zero_above_context Unexecuted instantiation: resize_ssse3.c:av1_zero_above_context Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:av1_zero_above_context Unexecuted instantiation: filterintra_sse4.c:av1_zero_above_context Unexecuted instantiation: cfl_avx2.c:av1_zero_above_context |
1611 | | |
1612 | 258k | static INLINE void av1_zero_left_context(MACROBLOCKD *const xd) { |
1613 | 258k | av1_zero(xd->left_entropy_context); |
1614 | 258k | av1_zero(xd->left_partition_context); |
1615 | | |
1616 | 258k | memset(xd->left_txfm_context_buffer, tx_size_high[TX_SIZES_LARGEST], |
1617 | 258k | sizeof(xd->left_txfm_context_buffer)); |
1618 | 258k | } Unexecuted instantiation: av1_dx_iface.c:av1_zero_left_context decodeframe.c:av1_zero_left_context Line | Count | Source | 1612 | 258k | static INLINE void av1_zero_left_context(MACROBLOCKD *const xd) { | 1613 | 258k | av1_zero(xd->left_entropy_context); | 1614 | 258k | av1_zero(xd->left_partition_context); | 1615 | | | 1616 | 258k | memset(xd->left_txfm_context_buffer, tx_size_high[TX_SIZES_LARGEST], | 1617 | 258k | sizeof(xd->left_txfm_context_buffer)); | 1618 | 258k | } |
Unexecuted instantiation: decodemv.c:av1_zero_left_context Unexecuted instantiation: decoder.c:av1_zero_left_context Unexecuted instantiation: decodetxb.c:av1_zero_left_context Unexecuted instantiation: detokenize.c:av1_zero_left_context Unexecuted instantiation: obu.c:av1_zero_left_context Unexecuted instantiation: alloccommon.c:av1_zero_left_context Unexecuted instantiation: av1_loopfilter.c:av1_zero_left_context Unexecuted instantiation: blockd.c:av1_zero_left_context Unexecuted instantiation: cdef.c:av1_zero_left_context Unexecuted instantiation: cdef_block.c:av1_zero_left_context Unexecuted instantiation: cfl.c:av1_zero_left_context Unexecuted instantiation: convolve.c:av1_zero_left_context Unexecuted instantiation: entropy.c:av1_zero_left_context Unexecuted instantiation: entropymode.c:av1_zero_left_context Unexecuted instantiation: entropymv.c:av1_zero_left_context Unexecuted instantiation: mvref_common.c:av1_zero_left_context Unexecuted instantiation: pred_common.c:av1_zero_left_context Unexecuted instantiation: quant_common.c:av1_zero_left_context Unexecuted instantiation: reconinter.c:av1_zero_left_context Unexecuted instantiation: reconintra.c:av1_zero_left_context Unexecuted instantiation: resize.c:av1_zero_left_context Unexecuted instantiation: restoration.c:av1_zero_left_context Unexecuted instantiation: scan.c:av1_zero_left_context Unexecuted instantiation: thread_common.c:av1_zero_left_context Unexecuted instantiation: tile_common.c:av1_zero_left_context Unexecuted instantiation: txb_common.c:av1_zero_left_context Unexecuted instantiation: cfl_sse2.c:av1_zero_left_context Unexecuted instantiation: cfl_ssse3.c:av1_zero_left_context Unexecuted instantiation: resize_ssse3.c:av1_zero_left_context Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:av1_zero_left_context Unexecuted instantiation: filterintra_sse4.c:av1_zero_left_context Unexecuted instantiation: cfl_avx2.c:av1_zero_left_context |
1619 | | |
1620 | 31.5M | static INLINE void set_txfm_ctx(TXFM_CONTEXT *txfm_ctx, uint8_t txs, int len) { |
1621 | 31.5M | int i; |
1622 | 176M | for (i = 0; i < len; ++i) txfm_ctx[i] = txs; |
1623 | 31.5M | } Unexecuted instantiation: av1_dx_iface.c:set_txfm_ctx decodeframe.c:set_txfm_ctx Line | Count | Source | 1620 | 31.5M | static INLINE void set_txfm_ctx(TXFM_CONTEXT *txfm_ctx, uint8_t txs, int len) { | 1621 | 31.5M | int i; | 1622 | 176M | for (i = 0; i < len; ++i) txfm_ctx[i] = txs; | 1623 | 31.5M | } |
Unexecuted instantiation: decodemv.c:set_txfm_ctx Unexecuted instantiation: decoder.c:set_txfm_ctx Unexecuted instantiation: decodetxb.c:set_txfm_ctx Unexecuted instantiation: detokenize.c:set_txfm_ctx Unexecuted instantiation: obu.c:set_txfm_ctx Unexecuted instantiation: alloccommon.c:set_txfm_ctx Unexecuted instantiation: av1_loopfilter.c:set_txfm_ctx Unexecuted instantiation: blockd.c:set_txfm_ctx Unexecuted instantiation: cdef.c:set_txfm_ctx Unexecuted instantiation: cdef_block.c:set_txfm_ctx Unexecuted instantiation: cfl.c:set_txfm_ctx Unexecuted instantiation: convolve.c:set_txfm_ctx Unexecuted instantiation: entropy.c:set_txfm_ctx Unexecuted instantiation: entropymode.c:set_txfm_ctx Unexecuted instantiation: entropymv.c:set_txfm_ctx Unexecuted instantiation: mvref_common.c:set_txfm_ctx Unexecuted instantiation: pred_common.c:set_txfm_ctx Unexecuted instantiation: quant_common.c:set_txfm_ctx Unexecuted instantiation: reconinter.c:set_txfm_ctx Unexecuted instantiation: reconintra.c:set_txfm_ctx Unexecuted instantiation: resize.c:set_txfm_ctx Unexecuted instantiation: restoration.c:set_txfm_ctx Unexecuted instantiation: scan.c:set_txfm_ctx Unexecuted instantiation: thread_common.c:set_txfm_ctx Unexecuted instantiation: tile_common.c:set_txfm_ctx Unexecuted instantiation: txb_common.c:set_txfm_ctx Unexecuted instantiation: cfl_sse2.c:set_txfm_ctx Unexecuted instantiation: cfl_ssse3.c:set_txfm_ctx Unexecuted instantiation: resize_ssse3.c:set_txfm_ctx Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:set_txfm_ctx Unexecuted instantiation: filterintra_sse4.c:set_txfm_ctx Unexecuted instantiation: cfl_avx2.c:set_txfm_ctx |
1624 | | |
1625 | | static INLINE void set_txfm_ctxs(TX_SIZE tx_size, int n4_w, int n4_h, int skip, |
1626 | 15.7M | const MACROBLOCKD *xd) { |
1627 | 15.7M | uint8_t bw = tx_size_wide[tx_size]; |
1628 | 15.7M | uint8_t bh = tx_size_high[tx_size]; |
1629 | | |
1630 | 15.7M | if (skip) { |
1631 | 2.65M | bw = n4_w * MI_SIZE; |
1632 | 2.65M | bh = n4_h * MI_SIZE; |
1633 | 2.65M | } |
1634 | | |
1635 | 15.7M | set_txfm_ctx(xd->above_txfm_context, bw, n4_w); |
1636 | 15.7M | set_txfm_ctx(xd->left_txfm_context, bh, n4_h); |
1637 | 15.7M | } Unexecuted instantiation: av1_dx_iface.c:set_txfm_ctxs decodeframe.c:set_txfm_ctxs Line | Count | Source | 1626 | 15.7M | const MACROBLOCKD *xd) { | 1627 | 15.7M | uint8_t bw = tx_size_wide[tx_size]; | 1628 | 15.7M | uint8_t bh = tx_size_high[tx_size]; | 1629 | | | 1630 | 15.7M | if (skip) { | 1631 | 2.65M | bw = n4_w * MI_SIZE; | 1632 | 2.65M | bh = n4_h * MI_SIZE; | 1633 | 2.65M | } | 1634 | | | 1635 | 15.7M | set_txfm_ctx(xd->above_txfm_context, bw, n4_w); | 1636 | 15.7M | set_txfm_ctx(xd->left_txfm_context, bh, n4_h); | 1637 | 15.7M | } |
Unexecuted instantiation: decodemv.c:set_txfm_ctxs Unexecuted instantiation: decoder.c:set_txfm_ctxs Unexecuted instantiation: decodetxb.c:set_txfm_ctxs Unexecuted instantiation: detokenize.c:set_txfm_ctxs Unexecuted instantiation: obu.c:set_txfm_ctxs Unexecuted instantiation: alloccommon.c:set_txfm_ctxs Unexecuted instantiation: av1_loopfilter.c:set_txfm_ctxs Unexecuted instantiation: blockd.c:set_txfm_ctxs Unexecuted instantiation: cdef.c:set_txfm_ctxs Unexecuted instantiation: cdef_block.c:set_txfm_ctxs Unexecuted instantiation: cfl.c:set_txfm_ctxs Unexecuted instantiation: convolve.c:set_txfm_ctxs Unexecuted instantiation: entropy.c:set_txfm_ctxs Unexecuted instantiation: entropymode.c:set_txfm_ctxs Unexecuted instantiation: entropymv.c:set_txfm_ctxs Unexecuted instantiation: mvref_common.c:set_txfm_ctxs Unexecuted instantiation: pred_common.c:set_txfm_ctxs Unexecuted instantiation: quant_common.c:set_txfm_ctxs Unexecuted instantiation: reconinter.c:set_txfm_ctxs Unexecuted instantiation: reconintra.c:set_txfm_ctxs Unexecuted instantiation: resize.c:set_txfm_ctxs Unexecuted instantiation: restoration.c:set_txfm_ctxs Unexecuted instantiation: scan.c:set_txfm_ctxs Unexecuted instantiation: thread_common.c:set_txfm_ctxs Unexecuted instantiation: tile_common.c:set_txfm_ctxs Unexecuted instantiation: txb_common.c:set_txfm_ctxs Unexecuted instantiation: cfl_sse2.c:set_txfm_ctxs Unexecuted instantiation: cfl_ssse3.c:set_txfm_ctxs Unexecuted instantiation: resize_ssse3.c:set_txfm_ctxs Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:set_txfm_ctxs Unexecuted instantiation: filterintra_sse4.c:set_txfm_ctxs Unexecuted instantiation: cfl_avx2.c:set_txfm_ctxs |
1638 | | |
1639 | | static INLINE int get_mi_grid_idx(const CommonModeInfoParams *const mi_params, |
1640 | 17.4M | int mi_row, int mi_col) { |
1641 | 17.4M | return mi_row * mi_params->mi_stride + mi_col; |
1642 | 17.4M | } Unexecuted instantiation: av1_dx_iface.c:get_mi_grid_idx decodeframe.c:get_mi_grid_idx Line | Count | Source | 1640 | 16.5M | int mi_row, int mi_col) { | 1641 | 16.5M | return mi_row * mi_params->mi_stride + mi_col; | 1642 | 16.5M | } |
decodemv.c:get_mi_grid_idx Line | Count | Source | 1640 | 892k | int mi_row, int mi_col) { | 1641 | 892k | return mi_row * mi_params->mi_stride + mi_col; | 1642 | 892k | } |
Unexecuted instantiation: decoder.c:get_mi_grid_idx Unexecuted instantiation: decodetxb.c:get_mi_grid_idx Unexecuted instantiation: detokenize.c:get_mi_grid_idx Unexecuted instantiation: obu.c:get_mi_grid_idx Unexecuted instantiation: alloccommon.c:get_mi_grid_idx Unexecuted instantiation: av1_loopfilter.c:get_mi_grid_idx Unexecuted instantiation: blockd.c:get_mi_grid_idx Unexecuted instantiation: cdef.c:get_mi_grid_idx Unexecuted instantiation: cdef_block.c:get_mi_grid_idx Unexecuted instantiation: cfl.c:get_mi_grid_idx Unexecuted instantiation: convolve.c:get_mi_grid_idx Unexecuted instantiation: entropy.c:get_mi_grid_idx Unexecuted instantiation: entropymode.c:get_mi_grid_idx Unexecuted instantiation: entropymv.c:get_mi_grid_idx Unexecuted instantiation: mvref_common.c:get_mi_grid_idx Unexecuted instantiation: pred_common.c:get_mi_grid_idx Unexecuted instantiation: quant_common.c:get_mi_grid_idx Unexecuted instantiation: reconinter.c:get_mi_grid_idx Unexecuted instantiation: reconintra.c:get_mi_grid_idx Unexecuted instantiation: resize.c:get_mi_grid_idx Unexecuted instantiation: restoration.c:get_mi_grid_idx Unexecuted instantiation: scan.c:get_mi_grid_idx Unexecuted instantiation: thread_common.c:get_mi_grid_idx Unexecuted instantiation: tile_common.c:get_mi_grid_idx Unexecuted instantiation: txb_common.c:get_mi_grid_idx Unexecuted instantiation: cfl_sse2.c:get_mi_grid_idx Unexecuted instantiation: cfl_ssse3.c:get_mi_grid_idx Unexecuted instantiation: resize_ssse3.c:get_mi_grid_idx Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:get_mi_grid_idx Unexecuted instantiation: filterintra_sse4.c:get_mi_grid_idx Unexecuted instantiation: cfl_avx2.c:get_mi_grid_idx |
1643 | | |
1644 | | static INLINE int get_alloc_mi_idx(const CommonModeInfoParams *const mi_params, |
1645 | 16.5M | int mi_row, int mi_col) { |
1646 | 16.5M | const int mi_alloc_size_1d = mi_size_wide[mi_params->mi_alloc_bsize]; |
1647 | 16.5M | const int mi_alloc_row = mi_row / mi_alloc_size_1d; |
1648 | 16.5M | const int mi_alloc_col = mi_col / mi_alloc_size_1d; |
1649 | | |
1650 | 16.5M | return mi_alloc_row * mi_params->mi_alloc_stride + mi_alloc_col; |
1651 | 16.5M | } Unexecuted instantiation: av1_dx_iface.c:get_alloc_mi_idx decodeframe.c:get_alloc_mi_idx Line | Count | Source | 1645 | 16.5M | int mi_row, int mi_col) { | 1646 | 16.5M | const int mi_alloc_size_1d = mi_size_wide[mi_params->mi_alloc_bsize]; | 1647 | 16.5M | const int mi_alloc_row = mi_row / mi_alloc_size_1d; | 1648 | 16.5M | const int mi_alloc_col = mi_col / mi_alloc_size_1d; | 1649 | | | 1650 | 16.5M | return mi_alloc_row * mi_params->mi_alloc_stride + mi_alloc_col; | 1651 | 16.5M | } |
Unexecuted instantiation: decodemv.c:get_alloc_mi_idx Unexecuted instantiation: decoder.c:get_alloc_mi_idx Unexecuted instantiation: decodetxb.c:get_alloc_mi_idx Unexecuted instantiation: detokenize.c:get_alloc_mi_idx Unexecuted instantiation: obu.c:get_alloc_mi_idx Unexecuted instantiation: alloccommon.c:get_alloc_mi_idx Unexecuted instantiation: av1_loopfilter.c:get_alloc_mi_idx Unexecuted instantiation: blockd.c:get_alloc_mi_idx Unexecuted instantiation: cdef.c:get_alloc_mi_idx Unexecuted instantiation: cdef_block.c:get_alloc_mi_idx Unexecuted instantiation: cfl.c:get_alloc_mi_idx Unexecuted instantiation: convolve.c:get_alloc_mi_idx Unexecuted instantiation: entropy.c:get_alloc_mi_idx Unexecuted instantiation: entropymode.c:get_alloc_mi_idx Unexecuted instantiation: entropymv.c:get_alloc_mi_idx Unexecuted instantiation: mvref_common.c:get_alloc_mi_idx Unexecuted instantiation: pred_common.c:get_alloc_mi_idx Unexecuted instantiation: quant_common.c:get_alloc_mi_idx Unexecuted instantiation: reconinter.c:get_alloc_mi_idx Unexecuted instantiation: reconintra.c:get_alloc_mi_idx Unexecuted instantiation: resize.c:get_alloc_mi_idx Unexecuted instantiation: restoration.c:get_alloc_mi_idx Unexecuted instantiation: scan.c:get_alloc_mi_idx Unexecuted instantiation: thread_common.c:get_alloc_mi_idx Unexecuted instantiation: tile_common.c:get_alloc_mi_idx Unexecuted instantiation: txb_common.c:get_alloc_mi_idx Unexecuted instantiation: cfl_sse2.c:get_alloc_mi_idx Unexecuted instantiation: cfl_ssse3.c:get_alloc_mi_idx Unexecuted instantiation: resize_ssse3.c:get_alloc_mi_idx Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:get_alloc_mi_idx Unexecuted instantiation: filterintra_sse4.c:get_alloc_mi_idx Unexecuted instantiation: cfl_avx2.c:get_alloc_mi_idx |
1652 | | |
1653 | | // For this partition block, set pointers in mi_params->mi_grid_base and xd->mi. |
1654 | | static INLINE void set_mi_offsets(const CommonModeInfoParams *const mi_params, |
1655 | | MACROBLOCKD *const xd, int mi_row, |
1656 | 16.5M | int mi_col) { |
1657 | | // 'mi_grid_base' should point to appropriate memory in 'mi'. |
1658 | 16.5M | const int mi_grid_idx = get_mi_grid_idx(mi_params, mi_row, mi_col); |
1659 | 16.5M | const int mi_alloc_idx = get_alloc_mi_idx(mi_params, mi_row, mi_col); |
1660 | 16.5M | mi_params->mi_grid_base[mi_grid_idx] = &mi_params->mi_alloc[mi_alloc_idx]; |
1661 | | // 'xd->mi' should point to an offset in 'mi_grid_base'; |
1662 | 16.5M | xd->mi = mi_params->mi_grid_base + mi_grid_idx; |
1663 | | // 'xd->tx_type_map' should point to an offset in 'mi_params->tx_type_map'. |
1664 | 16.5M | xd->tx_type_map = mi_params->tx_type_map + mi_grid_idx; |
1665 | 16.5M | xd->tx_type_map_stride = mi_params->mi_stride; |
1666 | 16.5M | } Unexecuted instantiation: av1_dx_iface.c:set_mi_offsets decodeframe.c:set_mi_offsets Line | Count | Source | 1656 | 16.5M | int mi_col) { | 1657 | | // 'mi_grid_base' should point to appropriate memory in 'mi'. | 1658 | 16.5M | const int mi_grid_idx = get_mi_grid_idx(mi_params, mi_row, mi_col); | 1659 | 16.5M | const int mi_alloc_idx = get_alloc_mi_idx(mi_params, mi_row, mi_col); | 1660 | 16.5M | mi_params->mi_grid_base[mi_grid_idx] = &mi_params->mi_alloc[mi_alloc_idx]; | 1661 | | // 'xd->mi' should point to an offset in 'mi_grid_base'; | 1662 | 16.5M | xd->mi = mi_params->mi_grid_base + mi_grid_idx; | 1663 | | // 'xd->tx_type_map' should point to an offset in 'mi_params->tx_type_map'. | 1664 | 16.5M | xd->tx_type_map = mi_params->tx_type_map + mi_grid_idx; | 1665 | 16.5M | xd->tx_type_map_stride = mi_params->mi_stride; | 1666 | 16.5M | } |
Unexecuted instantiation: decodemv.c:set_mi_offsets Unexecuted instantiation: decoder.c:set_mi_offsets Unexecuted instantiation: decodetxb.c:set_mi_offsets Unexecuted instantiation: detokenize.c:set_mi_offsets Unexecuted instantiation: obu.c:set_mi_offsets Unexecuted instantiation: alloccommon.c:set_mi_offsets Unexecuted instantiation: av1_loopfilter.c:set_mi_offsets Unexecuted instantiation: blockd.c:set_mi_offsets Unexecuted instantiation: cdef.c:set_mi_offsets Unexecuted instantiation: cdef_block.c:set_mi_offsets Unexecuted instantiation: cfl.c:set_mi_offsets Unexecuted instantiation: convolve.c:set_mi_offsets Unexecuted instantiation: entropy.c:set_mi_offsets Unexecuted instantiation: entropymode.c:set_mi_offsets Unexecuted instantiation: entropymv.c:set_mi_offsets Unexecuted instantiation: mvref_common.c:set_mi_offsets Unexecuted instantiation: pred_common.c:set_mi_offsets Unexecuted instantiation: quant_common.c:set_mi_offsets Unexecuted instantiation: reconinter.c:set_mi_offsets Unexecuted instantiation: reconintra.c:set_mi_offsets Unexecuted instantiation: resize.c:set_mi_offsets Unexecuted instantiation: restoration.c:set_mi_offsets Unexecuted instantiation: scan.c:set_mi_offsets Unexecuted instantiation: thread_common.c:set_mi_offsets Unexecuted instantiation: tile_common.c:set_mi_offsets Unexecuted instantiation: txb_common.c:set_mi_offsets Unexecuted instantiation: cfl_sse2.c:set_mi_offsets Unexecuted instantiation: cfl_ssse3.c:set_mi_offsets Unexecuted instantiation: resize_ssse3.c:set_mi_offsets Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:set_mi_offsets Unexecuted instantiation: filterintra_sse4.c:set_mi_offsets Unexecuted instantiation: cfl_avx2.c:set_mi_offsets |
1667 | | |
1668 | | static INLINE void txfm_partition_update(TXFM_CONTEXT *above_ctx, |
1669 | | TXFM_CONTEXT *left_ctx, |
1670 | 1.21M | TX_SIZE tx_size, TX_SIZE txb_size) { |
1671 | 1.21M | BLOCK_SIZE bsize = txsize_to_bsize[txb_size]; |
1672 | 1.21M | int bh = mi_size_high[bsize]; |
1673 | 1.21M | int bw = mi_size_wide[bsize]; |
1674 | 1.21M | uint8_t txw = tx_size_wide[tx_size]; |
1675 | 1.21M | uint8_t txh = tx_size_high[tx_size]; |
1676 | 1.21M | int i; |
1677 | 5.33M | for (i = 0; i < bh; ++i) left_ctx[i] = txh; |
1678 | 5.57M | for (i = 0; i < bw; ++i) above_ctx[i] = txw; |
1679 | 1.21M | } Unexecuted instantiation: av1_dx_iface.c:txfm_partition_update decodeframe.c:txfm_partition_update Line | Count | Source | 1670 | 1.21M | TX_SIZE tx_size, TX_SIZE txb_size) { | 1671 | 1.21M | BLOCK_SIZE bsize = txsize_to_bsize[txb_size]; | 1672 | 1.21M | int bh = mi_size_high[bsize]; | 1673 | 1.21M | int bw = mi_size_wide[bsize]; | 1674 | 1.21M | uint8_t txw = tx_size_wide[tx_size]; | 1675 | 1.21M | uint8_t txh = tx_size_high[tx_size]; | 1676 | 1.21M | int i; | 1677 | 5.33M | for (i = 0; i < bh; ++i) left_ctx[i] = txh; | 1678 | 5.57M | for (i = 0; i < bw; ++i) above_ctx[i] = txw; | 1679 | 1.21M | } |
Unexecuted instantiation: decodemv.c:txfm_partition_update Unexecuted instantiation: decoder.c:txfm_partition_update Unexecuted instantiation: decodetxb.c:txfm_partition_update Unexecuted instantiation: detokenize.c:txfm_partition_update Unexecuted instantiation: obu.c:txfm_partition_update Unexecuted instantiation: alloccommon.c:txfm_partition_update Unexecuted instantiation: av1_loopfilter.c:txfm_partition_update Unexecuted instantiation: blockd.c:txfm_partition_update Unexecuted instantiation: cdef.c:txfm_partition_update Unexecuted instantiation: cdef_block.c:txfm_partition_update Unexecuted instantiation: cfl.c:txfm_partition_update Unexecuted instantiation: convolve.c:txfm_partition_update Unexecuted instantiation: entropy.c:txfm_partition_update Unexecuted instantiation: entropymode.c:txfm_partition_update Unexecuted instantiation: entropymv.c:txfm_partition_update Unexecuted instantiation: mvref_common.c:txfm_partition_update Unexecuted instantiation: pred_common.c:txfm_partition_update Unexecuted instantiation: quant_common.c:txfm_partition_update Unexecuted instantiation: reconinter.c:txfm_partition_update Unexecuted instantiation: reconintra.c:txfm_partition_update Unexecuted instantiation: resize.c:txfm_partition_update Unexecuted instantiation: restoration.c:txfm_partition_update Unexecuted instantiation: scan.c:txfm_partition_update Unexecuted instantiation: thread_common.c:txfm_partition_update Unexecuted instantiation: tile_common.c:txfm_partition_update Unexecuted instantiation: txb_common.c:txfm_partition_update Unexecuted instantiation: cfl_sse2.c:txfm_partition_update Unexecuted instantiation: cfl_ssse3.c:txfm_partition_update Unexecuted instantiation: resize_ssse3.c:txfm_partition_update Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:txfm_partition_update Unexecuted instantiation: filterintra_sse4.c:txfm_partition_update Unexecuted instantiation: cfl_avx2.c:txfm_partition_update |
1680 | | |
1681 | 1.59M | static INLINE TX_SIZE get_sqr_tx_size(int tx_dim) { |
1682 | 1.59M | switch (tx_dim) { |
1683 | 54.6k | case 128: |
1684 | 111k | case 64: return TX_64X64; break; |
1685 | 324k | case 32: return TX_32X32; break; |
1686 | 505k | case 16: return TX_16X16; break; |
1687 | 293k | case 8: return TX_8X8; break; |
1688 | 364k | default: return TX_4X4; |
1689 | 1.59M | } |
1690 | 1.59M | } Unexecuted instantiation: av1_dx_iface.c:get_sqr_tx_size decodeframe.c:get_sqr_tx_size Line | Count | Source | 1681 | 1.23M | static INLINE TX_SIZE get_sqr_tx_size(int tx_dim) { | 1682 | 1.23M | switch (tx_dim) { | 1683 | 54.6k | case 128: | 1684 | 111k | case 64: return TX_64X64; break; | 1685 | 324k | case 32: return TX_32X32; break; | 1686 | 505k | case 16: return TX_16X16; break; | 1687 | 293k | case 8: return TX_8X8; break; | 1688 | 0 | default: return TX_4X4; | 1689 | 1.23M | } | 1690 | 1.23M | } |
Unexecuted instantiation: decodemv.c:get_sqr_tx_size Unexecuted instantiation: decoder.c:get_sqr_tx_size Unexecuted instantiation: decodetxb.c:get_sqr_tx_size Unexecuted instantiation: detokenize.c:get_sqr_tx_size Unexecuted instantiation: obu.c:get_sqr_tx_size Unexecuted instantiation: alloccommon.c:get_sqr_tx_size Unexecuted instantiation: av1_loopfilter.c:get_sqr_tx_size Unexecuted instantiation: blockd.c:get_sqr_tx_size Unexecuted instantiation: cdef.c:get_sqr_tx_size Unexecuted instantiation: cdef_block.c:get_sqr_tx_size Line | Count | Source | 1681 | 364k | static INLINE TX_SIZE get_sqr_tx_size(int tx_dim) { | 1682 | 364k | switch (tx_dim) { | 1683 | 0 | case 128: | 1684 | 0 | case 64: return TX_64X64; break; | 1685 | 0 | case 32: return TX_32X32; break; | 1686 | 0 | case 16: return TX_16X16; break; | 1687 | 0 | case 8: return TX_8X8; break; | 1688 | 364k | default: return TX_4X4; | 1689 | 364k | } | 1690 | 364k | } |
Unexecuted instantiation: convolve.c:get_sqr_tx_size Unexecuted instantiation: entropy.c:get_sqr_tx_size Unexecuted instantiation: entropymode.c:get_sqr_tx_size Unexecuted instantiation: entropymv.c:get_sqr_tx_size Unexecuted instantiation: mvref_common.c:get_sqr_tx_size Unexecuted instantiation: pred_common.c:get_sqr_tx_size Unexecuted instantiation: quant_common.c:get_sqr_tx_size Unexecuted instantiation: reconinter.c:get_sqr_tx_size Unexecuted instantiation: reconintra.c:get_sqr_tx_size Unexecuted instantiation: resize.c:get_sqr_tx_size Unexecuted instantiation: restoration.c:get_sqr_tx_size Unexecuted instantiation: scan.c:get_sqr_tx_size Unexecuted instantiation: thread_common.c:get_sqr_tx_size Unexecuted instantiation: tile_common.c:get_sqr_tx_size Unexecuted instantiation: txb_common.c:get_sqr_tx_size Unexecuted instantiation: cfl_sse2.c:get_sqr_tx_size Unexecuted instantiation: cfl_ssse3.c:get_sqr_tx_size Unexecuted instantiation: resize_ssse3.c:get_sqr_tx_size Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:get_sqr_tx_size Unexecuted instantiation: filterintra_sse4.c:get_sqr_tx_size Unexecuted instantiation: cfl_avx2.c:get_sqr_tx_size |
1691 | | |
1692 | 1.17M | static INLINE TX_SIZE get_tx_size(int width, int height) { |
1693 | 1.17M | if (width == height) { |
1694 | 364k | return get_sqr_tx_size(width); |
1695 | 364k | } |
1696 | 812k | if (width < height) { |
1697 | 366k | if (width + width == height) { |
1698 | 191k | switch (width) { |
1699 | 191k | case 4: return TX_4X8; break; |
1700 | 0 | case 8: return TX_8X16; break; |
1701 | 0 | case 16: return TX_16X32; break; |
1702 | 0 | case 32: return TX_32X64; break; |
1703 | 191k | } |
1704 | 191k | } else { |
1705 | 175k | switch (width) { |
1706 | 175k | case 4: return TX_4X16; break; |
1707 | 0 | case 8: return TX_8X32; break; |
1708 | 0 | case 16: return TX_16X64; break; |
1709 | 175k | } |
1710 | 175k | } |
1711 | 445k | } else { |
1712 | 445k | if (height + height == width) { |
1713 | 225k | switch (height) { |
1714 | 225k | case 4: return TX_8X4; break; |
1715 | 0 | case 8: return TX_16X8; break; |
1716 | 0 | case 16: return TX_32X16; break; |
1717 | 0 | case 32: return TX_64X32; break; |
1718 | 225k | } |
1719 | 225k | } else { |
1720 | 220k | switch (height) { |
1721 | 220k | case 4: return TX_16X4; break; |
1722 | 0 | case 8: return TX_32X8; break; |
1723 | 0 | case 16: return TX_64X16; break; |
1724 | 220k | } |
1725 | 220k | } |
1726 | 445k | } |
1727 | 0 | assert(0); |
1728 | 0 | return TX_4X4; |
1729 | 812k | } Unexecuted instantiation: av1_dx_iface.c:get_tx_size Unexecuted instantiation: decodeframe.c:get_tx_size Unexecuted instantiation: decodemv.c:get_tx_size Unexecuted instantiation: decoder.c:get_tx_size Unexecuted instantiation: decodetxb.c:get_tx_size Unexecuted instantiation: detokenize.c:get_tx_size Unexecuted instantiation: obu.c:get_tx_size Unexecuted instantiation: alloccommon.c:get_tx_size Unexecuted instantiation: av1_loopfilter.c:get_tx_size Unexecuted instantiation: blockd.c:get_tx_size Unexecuted instantiation: cdef.c:get_tx_size Unexecuted instantiation: cdef_block.c:get_tx_size Line | Count | Source | 1692 | 1.17M | static INLINE TX_SIZE get_tx_size(int width, int height) { | 1693 | 1.17M | if (width == height) { | 1694 | 364k | return get_sqr_tx_size(width); | 1695 | 364k | } | 1696 | 812k | if (width < height) { | 1697 | 366k | if (width + width == height) { | 1698 | 191k | switch (width) { | 1699 | 191k | case 4: return TX_4X8; break; | 1700 | 0 | case 8: return TX_8X16; break; | 1701 | 0 | case 16: return TX_16X32; break; | 1702 | 0 | case 32: return TX_32X64; break; | 1703 | 191k | } | 1704 | 191k | } else { | 1705 | 175k | switch (width) { | 1706 | 175k | case 4: return TX_4X16; break; | 1707 | 0 | case 8: return TX_8X32; break; | 1708 | 0 | case 16: return TX_16X64; break; | 1709 | 175k | } | 1710 | 175k | } | 1711 | 445k | } else { | 1712 | 445k | if (height + height == width) { | 1713 | 225k | switch (height) { | 1714 | 225k | case 4: return TX_8X4; break; | 1715 | 0 | case 8: return TX_16X8; break; | 1716 | 0 | case 16: return TX_32X16; break; | 1717 | 0 | case 32: return TX_64X32; break; | 1718 | 225k | } | 1719 | 225k | } else { | 1720 | 220k | switch (height) { | 1721 | 220k | case 4: return TX_16X4; break; | 1722 | 0 | case 8: return TX_32X8; break; | 1723 | 0 | case 16: return TX_64X16; break; | 1724 | 220k | } | 1725 | 220k | } | 1726 | 445k | } | 1727 | 0 | assert(0); | 1728 | 0 | return TX_4X4; | 1729 | 812k | } |
Unexecuted instantiation: convolve.c:get_tx_size Unexecuted instantiation: entropy.c:get_tx_size Unexecuted instantiation: entropymode.c:get_tx_size Unexecuted instantiation: entropymv.c:get_tx_size Unexecuted instantiation: mvref_common.c:get_tx_size Unexecuted instantiation: pred_common.c:get_tx_size Unexecuted instantiation: quant_common.c:get_tx_size Unexecuted instantiation: reconinter.c:get_tx_size Unexecuted instantiation: reconintra.c:get_tx_size Unexecuted instantiation: resize.c:get_tx_size Unexecuted instantiation: restoration.c:get_tx_size Unexecuted instantiation: scan.c:get_tx_size Unexecuted instantiation: thread_common.c:get_tx_size Unexecuted instantiation: tile_common.c:get_tx_size Unexecuted instantiation: txb_common.c:get_tx_size Unexecuted instantiation: cfl_sse2.c:get_tx_size Unexecuted instantiation: cfl_ssse3.c:get_tx_size Unexecuted instantiation: resize_ssse3.c:get_tx_size Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:get_tx_size Unexecuted instantiation: filterintra_sse4.c:get_tx_size Unexecuted instantiation: cfl_avx2.c:get_tx_size |
1730 | | |
1731 | | static INLINE int txfm_partition_context(const TXFM_CONTEXT *const above_ctx, |
1732 | | const TXFM_CONTEXT *const left_ctx, |
1733 | 1.23M | BLOCK_SIZE bsize, TX_SIZE tx_size) { |
1734 | 1.23M | const uint8_t txw = tx_size_wide[tx_size]; |
1735 | 1.23M | const uint8_t txh = tx_size_high[tx_size]; |
1736 | 1.23M | const int above = *above_ctx < txw; |
1737 | 1.23M | const int left = *left_ctx < txh; |
1738 | 1.23M | int category = TXFM_PARTITION_CONTEXTS; |
1739 | | |
1740 | | // dummy return, not used by others. |
1741 | 1.23M | if (tx_size <= TX_4X4) return 0; |
1742 | | |
1743 | 1.23M | TX_SIZE max_tx_size = |
1744 | 1.23M | get_sqr_tx_size(AOMMAX(block_size_wide[bsize], block_size_high[bsize])); |
1745 | | |
1746 | 1.23M | if (max_tx_size >= TX_8X8) { |
1747 | 1.23M | category = |
1748 | 1.23M | (txsize_sqr_up_map[tx_size] != max_tx_size && max_tx_size > TX_8X8) + |
1749 | 1.23M | (TX_SIZES - 1 - max_tx_size) * 2; |
1750 | 1.23M | } |
1751 | 1.23M | assert(category != TXFM_PARTITION_CONTEXTS); |
1752 | 0 | return category * 3 + above + left; |
1753 | 1.23M | } Unexecuted instantiation: av1_dx_iface.c:txfm_partition_context decodeframe.c:txfm_partition_context Line | Count | Source | 1733 | 1.23M | BLOCK_SIZE bsize, TX_SIZE tx_size) { | 1734 | 1.23M | const uint8_t txw = tx_size_wide[tx_size]; | 1735 | 1.23M | const uint8_t txh = tx_size_high[tx_size]; | 1736 | 1.23M | const int above = *above_ctx < txw; | 1737 | 1.23M | const int left = *left_ctx < txh; | 1738 | 1.23M | int category = TXFM_PARTITION_CONTEXTS; | 1739 | | | 1740 | | // dummy return, not used by others. | 1741 | 1.23M | if (tx_size <= TX_4X4) return 0; | 1742 | | | 1743 | 1.23M | TX_SIZE max_tx_size = | 1744 | 1.23M | get_sqr_tx_size(AOMMAX(block_size_wide[bsize], block_size_high[bsize])); | 1745 | | | 1746 | 1.23M | if (max_tx_size >= TX_8X8) { | 1747 | 1.23M | category = | 1748 | 1.23M | (txsize_sqr_up_map[tx_size] != max_tx_size && max_tx_size > TX_8X8) + | 1749 | 1.23M | (TX_SIZES - 1 - max_tx_size) * 2; | 1750 | 1.23M | } | 1751 | 1.23M | assert(category != TXFM_PARTITION_CONTEXTS); | 1752 | 0 | return category * 3 + above + left; | 1753 | 1.23M | } |
Unexecuted instantiation: decodemv.c:txfm_partition_context Unexecuted instantiation: decoder.c:txfm_partition_context Unexecuted instantiation: decodetxb.c:txfm_partition_context Unexecuted instantiation: detokenize.c:txfm_partition_context Unexecuted instantiation: obu.c:txfm_partition_context Unexecuted instantiation: alloccommon.c:txfm_partition_context Unexecuted instantiation: av1_loopfilter.c:txfm_partition_context Unexecuted instantiation: blockd.c:txfm_partition_context Unexecuted instantiation: cdef.c:txfm_partition_context Unexecuted instantiation: cdef_block.c:txfm_partition_context Unexecuted instantiation: cfl.c:txfm_partition_context Unexecuted instantiation: convolve.c:txfm_partition_context Unexecuted instantiation: entropy.c:txfm_partition_context Unexecuted instantiation: entropymode.c:txfm_partition_context Unexecuted instantiation: entropymv.c:txfm_partition_context Unexecuted instantiation: mvref_common.c:txfm_partition_context Unexecuted instantiation: pred_common.c:txfm_partition_context Unexecuted instantiation: quant_common.c:txfm_partition_context Unexecuted instantiation: reconinter.c:txfm_partition_context Unexecuted instantiation: reconintra.c:txfm_partition_context Unexecuted instantiation: resize.c:txfm_partition_context Unexecuted instantiation: restoration.c:txfm_partition_context Unexecuted instantiation: scan.c:txfm_partition_context Unexecuted instantiation: thread_common.c:txfm_partition_context Unexecuted instantiation: tile_common.c:txfm_partition_context Unexecuted instantiation: txb_common.c:txfm_partition_context Unexecuted instantiation: cfl_sse2.c:txfm_partition_context Unexecuted instantiation: cfl_ssse3.c:txfm_partition_context Unexecuted instantiation: resize_ssse3.c:txfm_partition_context Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:txfm_partition_context Unexecuted instantiation: filterintra_sse4.c:txfm_partition_context Unexecuted instantiation: cfl_avx2.c:txfm_partition_context |
1754 | | |
1755 | | // Compute the next partition in the direction of the sb_type stored in the mi |
1756 | | // array, starting with bsize. |
1757 | | static INLINE PARTITION_TYPE get_partition(const AV1_COMMON *const cm, |
1758 | | int mi_row, int mi_col, |
1759 | 6.94M | BLOCK_SIZE bsize) { |
1760 | 6.94M | const CommonModeInfoParams *const mi_params = &cm->mi_params; |
1761 | 6.94M | if (mi_row >= mi_params->mi_rows || mi_col >= mi_params->mi_cols) |
1762 | 0 | return PARTITION_INVALID; |
1763 | | |
1764 | 6.94M | const int offset = mi_row * mi_params->mi_stride + mi_col; |
1765 | 6.94M | MB_MODE_INFO **mi = mi_params->mi_grid_base + offset; |
1766 | 6.94M | const BLOCK_SIZE subsize = mi[0]->bsize; |
1767 | | |
1768 | 6.94M | assert(bsize < BLOCK_SIZES_ALL); |
1769 | | |
1770 | 6.94M | if (subsize == bsize) return PARTITION_NONE; |
1771 | | |
1772 | 4.06M | const int bhigh = mi_size_high[bsize]; |
1773 | 4.06M | const int bwide = mi_size_wide[bsize]; |
1774 | 4.06M | const int sshigh = mi_size_high[subsize]; |
1775 | 4.06M | const int sswide = mi_size_wide[subsize]; |
1776 | | |
1777 | 4.06M | if (bsize > BLOCK_8X8 && mi_row + bwide / 2 < mi_params->mi_rows && |
1778 | 4.06M | mi_col + bhigh / 2 < mi_params->mi_cols) { |
1779 | | // In this case, the block might be using an extended partition |
1780 | | // type. |
1781 | 3.17M | const MB_MODE_INFO *const mbmi_right = mi[bwide / 2]; |
1782 | 3.17M | const MB_MODE_INFO *const mbmi_below = mi[bhigh / 2 * mi_params->mi_stride]; |
1783 | | |
1784 | 3.17M | if (sswide == bwide) { |
1785 | | // Smaller height but same width. Is PARTITION_HORZ_4, PARTITION_HORZ or |
1786 | | // PARTITION_HORZ_B. To distinguish the latter two, check if the lower |
1787 | | // half was split. |
1788 | 1.00M | if (sshigh * 4 == bhigh) return PARTITION_HORZ_4; |
1789 | 579k | assert(sshigh * 2 == bhigh); |
1790 | | |
1791 | 579k | if (mbmi_below->bsize == subsize) |
1792 | 407k | return PARTITION_HORZ; |
1793 | 172k | else |
1794 | 172k | return PARTITION_HORZ_B; |
1795 | 2.17M | } else if (sshigh == bhigh) { |
1796 | | // Smaller width but same height. Is PARTITION_VERT_4, PARTITION_VERT or |
1797 | | // PARTITION_VERT_B. To distinguish the latter two, check if the right |
1798 | | // half was split. |
1799 | 502k | if (sswide * 4 == bwide) return PARTITION_VERT_4; |
1800 | 332k | assert(sswide * 2 == bhigh); |
1801 | | |
1802 | 332k | if (mbmi_right->bsize == subsize) |
1803 | 227k | return PARTITION_VERT; |
1804 | 105k | else |
1805 | 105k | return PARTITION_VERT_B; |
1806 | 1.66M | } else { |
1807 | | // Smaller width and smaller height. Might be PARTITION_SPLIT or could be |
1808 | | // PARTITION_HORZ_A or PARTITION_VERT_A. If subsize isn't halved in both |
1809 | | // dimensions, we immediately know this is a split (which will recurse to |
1810 | | // get to subsize). Otherwise look down and to the right. With |
1811 | | // PARTITION_VERT_A, the right block will have height bhigh; with |
1812 | | // PARTITION_HORZ_A, the lower block with have width bwide. Otherwise |
1813 | | // it's PARTITION_SPLIT. |
1814 | 1.66M | if (sswide * 2 != bwide || sshigh * 2 != bhigh) return PARTITION_SPLIT; |
1815 | | |
1816 | 805k | if (mi_size_wide[mbmi_below->bsize] == bwide) return PARTITION_HORZ_A; |
1817 | 650k | if (mi_size_high[mbmi_right->bsize] == bhigh) return PARTITION_VERT_A; |
1818 | | |
1819 | 565k | return PARTITION_SPLIT; |
1820 | 650k | } |
1821 | 3.17M | } |
1822 | 890k | const int vert_split = sswide < bwide; |
1823 | 890k | const int horz_split = sshigh < bhigh; |
1824 | 890k | const int split_idx = (vert_split << 1) | horz_split; |
1825 | 890k | assert(split_idx != 0); |
1826 | | |
1827 | 0 | static const PARTITION_TYPE base_partitions[4] = { |
1828 | 890k | PARTITION_INVALID, PARTITION_HORZ, PARTITION_VERT, PARTITION_SPLIT |
1829 | 890k | }; |
1830 | | |
1831 | 890k | return base_partitions[split_idx]; |
1832 | 4.06M | } Unexecuted instantiation: av1_dx_iface.c:get_partition decodeframe.c:get_partition Line | Count | Source | 1759 | 6.94M | BLOCK_SIZE bsize) { | 1760 | 6.94M | const CommonModeInfoParams *const mi_params = &cm->mi_params; | 1761 | 6.94M | if (mi_row >= mi_params->mi_rows || mi_col >= mi_params->mi_cols) | 1762 | 0 | return PARTITION_INVALID; | 1763 | | | 1764 | 6.94M | const int offset = mi_row * mi_params->mi_stride + mi_col; | 1765 | 6.94M | MB_MODE_INFO **mi = mi_params->mi_grid_base + offset; | 1766 | 6.94M | const BLOCK_SIZE subsize = mi[0]->bsize; | 1767 | | | 1768 | 6.94M | assert(bsize < BLOCK_SIZES_ALL); | 1769 | | | 1770 | 6.94M | if (subsize == bsize) return PARTITION_NONE; | 1771 | | | 1772 | 4.06M | const int bhigh = mi_size_high[bsize]; | 1773 | 4.06M | const int bwide = mi_size_wide[bsize]; | 1774 | 4.06M | const int sshigh = mi_size_high[subsize]; | 1775 | 4.06M | const int sswide = mi_size_wide[subsize]; | 1776 | | | 1777 | 4.06M | if (bsize > BLOCK_8X8 && mi_row + bwide / 2 < mi_params->mi_rows && | 1778 | 4.06M | mi_col + bhigh / 2 < mi_params->mi_cols) { | 1779 | | // In this case, the block might be using an extended partition | 1780 | | // type. | 1781 | 3.17M | const MB_MODE_INFO *const mbmi_right = mi[bwide / 2]; | 1782 | 3.17M | const MB_MODE_INFO *const mbmi_below = mi[bhigh / 2 * mi_params->mi_stride]; | 1783 | | | 1784 | 3.17M | if (sswide == bwide) { | 1785 | | // Smaller height but same width. Is PARTITION_HORZ_4, PARTITION_HORZ or | 1786 | | // PARTITION_HORZ_B. To distinguish the latter two, check if the lower | 1787 | | // half was split. | 1788 | 1.00M | if (sshigh * 4 == bhigh) return PARTITION_HORZ_4; | 1789 | 579k | assert(sshigh * 2 == bhigh); | 1790 | | | 1791 | 579k | if (mbmi_below->bsize == subsize) | 1792 | 407k | return PARTITION_HORZ; | 1793 | 172k | else | 1794 | 172k | return PARTITION_HORZ_B; | 1795 | 2.17M | } else if (sshigh == bhigh) { | 1796 | | // Smaller width but same height. Is PARTITION_VERT_4, PARTITION_VERT or | 1797 | | // PARTITION_VERT_B. To distinguish the latter two, check if the right | 1798 | | // half was split. | 1799 | 502k | if (sswide * 4 == bwide) return PARTITION_VERT_4; | 1800 | 332k | assert(sswide * 2 == bhigh); | 1801 | | | 1802 | 332k | if (mbmi_right->bsize == subsize) | 1803 | 227k | return PARTITION_VERT; | 1804 | 105k | else | 1805 | 105k | return PARTITION_VERT_B; | 1806 | 1.66M | } else { | 1807 | | // Smaller width and smaller height. Might be PARTITION_SPLIT or could be | 1808 | | // PARTITION_HORZ_A or PARTITION_VERT_A. If subsize isn't halved in both | 1809 | | // dimensions, we immediately know this is a split (which will recurse to | 1810 | | // get to subsize). Otherwise look down and to the right. With | 1811 | | // PARTITION_VERT_A, the right block will have height bhigh; with | 1812 | | // PARTITION_HORZ_A, the lower block with have width bwide. Otherwise | 1813 | | // it's PARTITION_SPLIT. | 1814 | 1.66M | if (sswide * 2 != bwide || sshigh * 2 != bhigh) return PARTITION_SPLIT; | 1815 | | | 1816 | 805k | if (mi_size_wide[mbmi_below->bsize] == bwide) return PARTITION_HORZ_A; | 1817 | 650k | if (mi_size_high[mbmi_right->bsize] == bhigh) return PARTITION_VERT_A; | 1818 | | | 1819 | 565k | return PARTITION_SPLIT; | 1820 | 650k | } | 1821 | 3.17M | } | 1822 | 890k | const int vert_split = sswide < bwide; | 1823 | 890k | const int horz_split = sshigh < bhigh; | 1824 | 890k | const int split_idx = (vert_split << 1) | horz_split; | 1825 | 890k | assert(split_idx != 0); | 1826 | | | 1827 | 0 | static const PARTITION_TYPE base_partitions[4] = { | 1828 | 890k | PARTITION_INVALID, PARTITION_HORZ, PARTITION_VERT, PARTITION_SPLIT | 1829 | 890k | }; | 1830 | | | 1831 | 890k | return base_partitions[split_idx]; | 1832 | 4.06M | } |
Unexecuted instantiation: decodemv.c:get_partition Unexecuted instantiation: decoder.c:get_partition Unexecuted instantiation: decodetxb.c:get_partition Unexecuted instantiation: detokenize.c:get_partition Unexecuted instantiation: obu.c:get_partition Unexecuted instantiation: alloccommon.c:get_partition Unexecuted instantiation: av1_loopfilter.c:get_partition Unexecuted instantiation: blockd.c:get_partition Unexecuted instantiation: cdef.c:get_partition Unexecuted instantiation: cdef_block.c:get_partition Unexecuted instantiation: cfl.c:get_partition Unexecuted instantiation: convolve.c:get_partition Unexecuted instantiation: entropy.c:get_partition Unexecuted instantiation: entropymode.c:get_partition Unexecuted instantiation: entropymv.c:get_partition Unexecuted instantiation: mvref_common.c:get_partition Unexecuted instantiation: pred_common.c:get_partition Unexecuted instantiation: quant_common.c:get_partition Unexecuted instantiation: reconinter.c:get_partition Unexecuted instantiation: reconintra.c:get_partition Unexecuted instantiation: resize.c:get_partition Unexecuted instantiation: restoration.c:get_partition Unexecuted instantiation: scan.c:get_partition Unexecuted instantiation: thread_common.c:get_partition Unexecuted instantiation: tile_common.c:get_partition Unexecuted instantiation: txb_common.c:get_partition Unexecuted instantiation: cfl_sse2.c:get_partition Unexecuted instantiation: cfl_ssse3.c:get_partition Unexecuted instantiation: resize_ssse3.c:get_partition Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:get_partition Unexecuted instantiation: filterintra_sse4.c:get_partition Unexecuted instantiation: cfl_avx2.c:get_partition |
1833 | | |
1834 | | static INLINE void set_sb_size(SequenceHeader *const seq_params, |
1835 | 62.2k | BLOCK_SIZE sb_size) { |
1836 | 62.2k | seq_params->sb_size = sb_size; |
1837 | 62.2k | seq_params->mib_size = mi_size_wide[seq_params->sb_size]; |
1838 | 62.2k | seq_params->mib_size_log2 = mi_size_wide_log2[seq_params->sb_size]; |
1839 | 62.2k | } Unexecuted instantiation: av1_dx_iface.c:set_sb_size decodeframe.c:set_sb_size Line | Count | Source | 1835 | 62.2k | BLOCK_SIZE sb_size) { | 1836 | 62.2k | seq_params->sb_size = sb_size; | 1837 | 62.2k | seq_params->mib_size = mi_size_wide[seq_params->sb_size]; | 1838 | 62.2k | seq_params->mib_size_log2 = mi_size_wide_log2[seq_params->sb_size]; | 1839 | 62.2k | } |
Unexecuted instantiation: decodemv.c:set_sb_size Unexecuted instantiation: decoder.c:set_sb_size Unexecuted instantiation: decodetxb.c:set_sb_size Unexecuted instantiation: detokenize.c:set_sb_size Unexecuted instantiation: obu.c:set_sb_size Unexecuted instantiation: alloccommon.c:set_sb_size Unexecuted instantiation: av1_loopfilter.c:set_sb_size Unexecuted instantiation: blockd.c:set_sb_size Unexecuted instantiation: cdef.c:set_sb_size Unexecuted instantiation: cdef_block.c:set_sb_size Unexecuted instantiation: cfl.c:set_sb_size Unexecuted instantiation: convolve.c:set_sb_size Unexecuted instantiation: entropy.c:set_sb_size Unexecuted instantiation: entropymode.c:set_sb_size Unexecuted instantiation: entropymv.c:set_sb_size Unexecuted instantiation: mvref_common.c:set_sb_size Unexecuted instantiation: pred_common.c:set_sb_size Unexecuted instantiation: quant_common.c:set_sb_size Unexecuted instantiation: reconinter.c:set_sb_size Unexecuted instantiation: reconintra.c:set_sb_size Unexecuted instantiation: resize.c:set_sb_size Unexecuted instantiation: restoration.c:set_sb_size Unexecuted instantiation: scan.c:set_sb_size Unexecuted instantiation: thread_common.c:set_sb_size Unexecuted instantiation: tile_common.c:set_sb_size Unexecuted instantiation: txb_common.c:set_sb_size Unexecuted instantiation: cfl_sse2.c:set_sb_size Unexecuted instantiation: cfl_ssse3.c:set_sb_size Unexecuted instantiation: resize_ssse3.c:set_sb_size Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:set_sb_size Unexecuted instantiation: filterintra_sse4.c:set_sb_size Unexecuted instantiation: cfl_avx2.c:set_sb_size |
1840 | | |
1841 | | // Returns true if the frame is fully lossless at the coded resolution. |
1842 | | // Note: If super-resolution is used, such a frame will still NOT be lossless at |
1843 | | // the upscaled resolution. |
1844 | | static INLINE int is_coded_lossless(const AV1_COMMON *cm, |
1845 | 153k | const MACROBLOCKD *xd) { |
1846 | 153k | int coded_lossless = 1; |
1847 | 153k | if (cm->seg.enabled) { |
1848 | 30.5k | for (int i = 0; i < MAX_SEGMENTS; ++i) { |
1849 | 29.7k | if (!xd->lossless[i]) { |
1850 | 19.1k | coded_lossless = 0; |
1851 | 19.1k | break; |
1852 | 19.1k | } |
1853 | 29.7k | } |
1854 | 133k | } else { |
1855 | 133k | coded_lossless = xd->lossless[0]; |
1856 | 133k | } |
1857 | 153k | return coded_lossless; |
1858 | 153k | } Unexecuted instantiation: av1_dx_iface.c:is_coded_lossless decodeframe.c:is_coded_lossless Line | Count | Source | 1845 | 153k | const MACROBLOCKD *xd) { | 1846 | 153k | int coded_lossless = 1; | 1847 | 153k | if (cm->seg.enabled) { | 1848 | 30.5k | for (int i = 0; i < MAX_SEGMENTS; ++i) { | 1849 | 29.7k | if (!xd->lossless[i]) { | 1850 | 19.1k | coded_lossless = 0; | 1851 | 19.1k | break; | 1852 | 19.1k | } | 1853 | 29.7k | } | 1854 | 133k | } else { | 1855 | 133k | coded_lossless = xd->lossless[0]; | 1856 | 133k | } | 1857 | 153k | return coded_lossless; | 1858 | 153k | } |
Unexecuted instantiation: decodemv.c:is_coded_lossless Unexecuted instantiation: decoder.c:is_coded_lossless Unexecuted instantiation: decodetxb.c:is_coded_lossless Unexecuted instantiation: detokenize.c:is_coded_lossless Unexecuted instantiation: obu.c:is_coded_lossless Unexecuted instantiation: alloccommon.c:is_coded_lossless Unexecuted instantiation: av1_loopfilter.c:is_coded_lossless Unexecuted instantiation: blockd.c:is_coded_lossless Unexecuted instantiation: cdef.c:is_coded_lossless Unexecuted instantiation: cdef_block.c:is_coded_lossless Unexecuted instantiation: cfl.c:is_coded_lossless Unexecuted instantiation: convolve.c:is_coded_lossless Unexecuted instantiation: entropy.c:is_coded_lossless Unexecuted instantiation: entropymode.c:is_coded_lossless Unexecuted instantiation: entropymv.c:is_coded_lossless Unexecuted instantiation: mvref_common.c:is_coded_lossless Unexecuted instantiation: pred_common.c:is_coded_lossless Unexecuted instantiation: quant_common.c:is_coded_lossless Unexecuted instantiation: reconinter.c:is_coded_lossless Unexecuted instantiation: reconintra.c:is_coded_lossless Unexecuted instantiation: resize.c:is_coded_lossless Unexecuted instantiation: restoration.c:is_coded_lossless Unexecuted instantiation: scan.c:is_coded_lossless Unexecuted instantiation: thread_common.c:is_coded_lossless Unexecuted instantiation: tile_common.c:is_coded_lossless Unexecuted instantiation: txb_common.c:is_coded_lossless Unexecuted instantiation: cfl_sse2.c:is_coded_lossless Unexecuted instantiation: cfl_ssse3.c:is_coded_lossless Unexecuted instantiation: resize_ssse3.c:is_coded_lossless Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:is_coded_lossless Unexecuted instantiation: filterintra_sse4.c:is_coded_lossless Unexecuted instantiation: cfl_avx2.c:is_coded_lossless |
1859 | | |
1860 | 69.4k | static INLINE int is_valid_seq_level_idx(AV1_LEVEL seq_level_idx) { |
1861 | 69.4k | return seq_level_idx == SEQ_LEVEL_MAX || |
1862 | 69.4k | (seq_level_idx < SEQ_LEVELS && |
1863 | | // The following levels are currently undefined. |
1864 | 67.6k | seq_level_idx != SEQ_LEVEL_2_2 && seq_level_idx != SEQ_LEVEL_2_3 && |
1865 | 67.6k | seq_level_idx != SEQ_LEVEL_3_2 && seq_level_idx != SEQ_LEVEL_3_3 && |
1866 | 67.6k | seq_level_idx != SEQ_LEVEL_4_2 && seq_level_idx != SEQ_LEVEL_4_3 |
1867 | 67.6k | #if !CONFIG_CWG_C013 |
1868 | 67.6k | && seq_level_idx != SEQ_LEVEL_7_0 && seq_level_idx != SEQ_LEVEL_7_1 && |
1869 | 67.6k | seq_level_idx != SEQ_LEVEL_7_2 && seq_level_idx != SEQ_LEVEL_7_3 && |
1870 | 67.6k | seq_level_idx != SEQ_LEVEL_8_0 && seq_level_idx != SEQ_LEVEL_8_1 && |
1871 | 67.6k | seq_level_idx != SEQ_LEVEL_8_2 && seq_level_idx != SEQ_LEVEL_8_3 |
1872 | 67.6k | #endif |
1873 | 67.6k | ); |
1874 | 69.4k | } Unexecuted instantiation: av1_dx_iface.c:is_valid_seq_level_idx Unexecuted instantiation: decodeframe.c:is_valid_seq_level_idx Unexecuted instantiation: decodemv.c:is_valid_seq_level_idx Unexecuted instantiation: decoder.c:is_valid_seq_level_idx Unexecuted instantiation: decodetxb.c:is_valid_seq_level_idx Unexecuted instantiation: detokenize.c:is_valid_seq_level_idx obu.c:is_valid_seq_level_idx Line | Count | Source | 1860 | 69.4k | static INLINE int is_valid_seq_level_idx(AV1_LEVEL seq_level_idx) { | 1861 | 69.4k | return seq_level_idx == SEQ_LEVEL_MAX || | 1862 | 69.4k | (seq_level_idx < SEQ_LEVELS && | 1863 | | // The following levels are currently undefined. | 1864 | 67.6k | seq_level_idx != SEQ_LEVEL_2_2 && seq_level_idx != SEQ_LEVEL_2_3 && | 1865 | 67.6k | seq_level_idx != SEQ_LEVEL_3_2 && seq_level_idx != SEQ_LEVEL_3_3 && | 1866 | 67.6k | seq_level_idx != SEQ_LEVEL_4_2 && seq_level_idx != SEQ_LEVEL_4_3 | 1867 | 67.6k | #if !CONFIG_CWG_C013 | 1868 | 67.6k | && seq_level_idx != SEQ_LEVEL_7_0 && seq_level_idx != SEQ_LEVEL_7_1 && | 1869 | 67.6k | seq_level_idx != SEQ_LEVEL_7_2 && seq_level_idx != SEQ_LEVEL_7_3 && | 1870 | 67.6k | seq_level_idx != SEQ_LEVEL_8_0 && seq_level_idx != SEQ_LEVEL_8_1 && | 1871 | 67.6k | seq_level_idx != SEQ_LEVEL_8_2 && seq_level_idx != SEQ_LEVEL_8_3 | 1872 | 67.6k | #endif | 1873 | 67.6k | ); | 1874 | 69.4k | } |
Unexecuted instantiation: alloccommon.c:is_valid_seq_level_idx Unexecuted instantiation: av1_loopfilter.c:is_valid_seq_level_idx Unexecuted instantiation: blockd.c:is_valid_seq_level_idx Unexecuted instantiation: cdef.c:is_valid_seq_level_idx Unexecuted instantiation: cdef_block.c:is_valid_seq_level_idx Unexecuted instantiation: cfl.c:is_valid_seq_level_idx Unexecuted instantiation: convolve.c:is_valid_seq_level_idx Unexecuted instantiation: entropy.c:is_valid_seq_level_idx Unexecuted instantiation: entropymode.c:is_valid_seq_level_idx Unexecuted instantiation: entropymv.c:is_valid_seq_level_idx Unexecuted instantiation: mvref_common.c:is_valid_seq_level_idx Unexecuted instantiation: pred_common.c:is_valid_seq_level_idx Unexecuted instantiation: quant_common.c:is_valid_seq_level_idx Unexecuted instantiation: reconinter.c:is_valid_seq_level_idx Unexecuted instantiation: reconintra.c:is_valid_seq_level_idx Unexecuted instantiation: resize.c:is_valid_seq_level_idx Unexecuted instantiation: restoration.c:is_valid_seq_level_idx Unexecuted instantiation: scan.c:is_valid_seq_level_idx Unexecuted instantiation: thread_common.c:is_valid_seq_level_idx Unexecuted instantiation: tile_common.c:is_valid_seq_level_idx Unexecuted instantiation: txb_common.c:is_valid_seq_level_idx Unexecuted instantiation: cfl_sse2.c:is_valid_seq_level_idx Unexecuted instantiation: cfl_ssse3.c:is_valid_seq_level_idx Unexecuted instantiation: resize_ssse3.c:is_valid_seq_level_idx Unexecuted instantiation: av1_convolve_horiz_rs_sse4.c:is_valid_seq_level_idx Unexecuted instantiation: filterintra_sse4.c:is_valid_seq_level_idx Unexecuted instantiation: cfl_avx2.c:is_valid_seq_level_idx |
1875 | | |
1876 | | /*!\endcond */ |
1877 | | |
1878 | | #ifdef __cplusplus |
1879 | | } // extern "C" |
1880 | | #endif |
1881 | | |
1882 | | #endif // AOM_AV1_COMMON_AV1_COMMON_INT_H_ |