/src/aom/av1/encoder/tokenize.h
Line | Count | Source (jump to first uncovered line) |
1 | | /* |
2 | | * Copyright (c) 2016, Alliance for Open Media. All rights reserved. |
3 | | * |
4 | | * This source code is subject to the terms of the BSD 2 Clause License and |
5 | | * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License |
6 | | * was not distributed with this source code in the LICENSE file, you can |
7 | | * obtain it at www.aomedia.org/license/software. If the Alliance for Open |
8 | | * Media Patent License 1.0 was not distributed with this source code in the |
9 | | * PATENTS file, you can obtain it at www.aomedia.org/license/patent. |
10 | | */ |
11 | | |
12 | | #ifndef AOM_AV1_ENCODER_TOKENIZE_H_ |
13 | | #define AOM_AV1_ENCODER_TOKENIZE_H_ |
14 | | |
15 | | #include "av1/common/entropy.h" |
16 | | #include "av1/encoder/block.h" |
17 | | #include "aom_dsp/bitwriter.h" |
18 | | |
19 | | #ifdef __cplusplus |
20 | | extern "C" { |
21 | | #endif |
22 | | |
23 | | // The token and color_ctx members of the TokenExtra structure are used |
24 | | // to store the indices of color and color context of each pixel in |
25 | | // case of palette mode. |
26 | | // 1) token can take values in the range of [0, 7] as maximum number of possible |
27 | | // colors is 8 (PALETTE_COLORS). Hence token requires 3 bits (unsigned). |
28 | | // 2) The reserved field (1-bit) is positioned such that color_ctx occupies the |
29 | | // most significant bits and token occupies the least significant bits of the |
30 | | // byte. Thus accesses to token and color_ctx are optimal. If TokenExtra is |
31 | | // defined as: |
32 | | // typedef struct { |
33 | | // int8_t color_ctx : 4; |
34 | | // uint8_t token : 3; |
35 | | // } TokenExtra; |
36 | | // then read of color_ctx requires an extra left shift to facilitate sign |
37 | | // extension and write of token requires an extra masking. |
38 | | // 3) color_ctx can take 5 (PALETTE_COLOR_INDEX_CONTEXTS) valid values, i.e., |
39 | | // from 0 to 4. As per the current implementation it can take values in the |
40 | | // range of [-1, 4]. Here -1 corresponds to invalid color index context and is |
41 | | // used for default initialization. Hence color_ctx requires 4 bits (signed). |
42 | | typedef struct { |
43 | | uint8_t token : 3; |
44 | | uint8_t reserved : 1; |
45 | | int8_t color_ctx : 4; |
46 | | } TokenExtra; |
47 | | |
48 | | typedef struct { |
49 | | TokenExtra *start; |
50 | | unsigned int count; |
51 | | } TokenList; |
52 | | |
53 | | typedef struct { |
54 | | // Number of tile tokens for which memory is allocated. |
55 | | unsigned int tokens_allocated; |
56 | | // tile_tok[i][j] is a pointer to the buffer storing palette tokens of the ith |
57 | | // tile row, jth tile column. |
58 | | TokenExtra *tile_tok[MAX_TILE_ROWS][MAX_TILE_COLS]; |
59 | | // tplist[i][j][k] holds the start pointer of tile_tok[i][j] and the count of |
60 | | // palette tokens for the kth superblock row of the ith tile row, jth tile |
61 | | // column. |
62 | | TokenList *tplist[MAX_TILE_ROWS][MAX_TILE_COLS]; |
63 | | } TokenInfo; |
64 | | |
65 | | struct AV1_COMP; |
66 | | struct ThreadData; |
67 | | struct FRAME_COUNTS; |
68 | | |
69 | | enum { |
70 | | OUTPUT_ENABLED = 0, |
71 | | DRY_RUN_NORMAL, |
72 | | DRY_RUN_COSTCOEFFS, |
73 | | } UENUM1BYTE(RUN_TYPE); |
74 | | |
75 | | struct tokenize_b_args { |
76 | | const struct AV1_COMP *cpi; |
77 | | struct ThreadData *td; |
78 | | int this_rate; |
79 | | uint8_t allow_update_cdf; |
80 | | RUN_TYPE dry_run; |
81 | | }; |
82 | | |
83 | | // Note in all the tokenize functions rate if non NULL is incremented |
84 | | // with the coefficient token cost only if dry_run = DRY_RUN_COSTCOEFS, |
85 | | // otherwise rate is not incremented. |
86 | | void av1_tokenize_sb_vartx(const struct AV1_COMP *cpi, struct ThreadData *td, |
87 | | RUN_TYPE dry_run, BLOCK_SIZE bsize, int *rate, |
88 | | uint8_t allow_update_cdf); |
89 | | |
90 | | int av1_cost_color_map(const MACROBLOCK *const x, int plane, BLOCK_SIZE bsize, |
91 | | TX_SIZE tx_size, COLOR_MAP_TYPE type); |
92 | | |
93 | | void av1_tokenize_color_map(const MACROBLOCK *const x, int plane, |
94 | | TokenExtra **t, BLOCK_SIZE bsize, TX_SIZE tx_size, |
95 | | COLOR_MAP_TYPE type, int allow_update_cdf, |
96 | | struct FRAME_COUNTS *counts); |
97 | | |
98 | | static inline int av1_get_tx_eob(const struct segmentation *seg, int segment_id, |
99 | 0 | TX_SIZE tx_size) { |
100 | 0 | const int eob_max = av1_get_max_eob(tx_size); |
101 | 0 | return segfeature_active(seg, segment_id, SEG_LVL_SKIP) ? 0 : eob_max; |
102 | 0 | } Unexecuted instantiation: av1_cx_iface.c:av1_get_tx_eob Unexecuted instantiation: allintra_vis.c:av1_get_tx_eob Unexecuted instantiation: av1_quantize.c:av1_get_tx_eob Unexecuted instantiation: bitstream.c:av1_get_tx_eob Unexecuted instantiation: context_tree.c:av1_get_tx_eob Unexecuted instantiation: encodeframe.c:av1_get_tx_eob Unexecuted instantiation: encodeframe_utils.c:av1_get_tx_eob Unexecuted instantiation: encodemb.c:av1_get_tx_eob Unexecuted instantiation: encodemv.c:av1_get_tx_eob Unexecuted instantiation: encoder.c:av1_get_tx_eob Unexecuted instantiation: encoder_utils.c:av1_get_tx_eob Unexecuted instantiation: encodetxb.c:av1_get_tx_eob Unexecuted instantiation: ethread.c:av1_get_tx_eob Unexecuted instantiation: firstpass.c:av1_get_tx_eob Unexecuted instantiation: global_motion_facade.c:av1_get_tx_eob Unexecuted instantiation: level.c:av1_get_tx_eob Unexecuted instantiation: lookahead.c:av1_get_tx_eob Unexecuted instantiation: mcomp.c:av1_get_tx_eob Unexecuted instantiation: mv_prec.c:av1_get_tx_eob Unexecuted instantiation: palette.c:av1_get_tx_eob Unexecuted instantiation: partition_search.c:av1_get_tx_eob Unexecuted instantiation: partition_strategy.c:av1_get_tx_eob Unexecuted instantiation: pass2_strategy.c:av1_get_tx_eob Unexecuted instantiation: pickcdef.c:av1_get_tx_eob Unexecuted instantiation: picklpf.c:av1_get_tx_eob Unexecuted instantiation: pickrst.c:av1_get_tx_eob Unexecuted instantiation: ratectrl.c:av1_get_tx_eob Unexecuted instantiation: rd.c:av1_get_tx_eob Unexecuted instantiation: rdopt.c:av1_get_tx_eob Unexecuted instantiation: nonrd_pickmode.c:av1_get_tx_eob Unexecuted instantiation: nonrd_opt.c:av1_get_tx_eob Unexecuted instantiation: segmentation.c:av1_get_tx_eob Unexecuted instantiation: speed_features.c:av1_get_tx_eob Unexecuted instantiation: superres_scale.c:av1_get_tx_eob Unexecuted instantiation: svc_layercontext.c:av1_get_tx_eob Unexecuted instantiation: temporal_filter.c:av1_get_tx_eob Unexecuted instantiation: tokenize.c:av1_get_tx_eob Unexecuted instantiation: tpl_model.c:av1_get_tx_eob Unexecuted instantiation: tx_search.c:av1_get_tx_eob Unexecuted instantiation: txb_rdopt.c:av1_get_tx_eob Unexecuted instantiation: intra_mode_search.c:av1_get_tx_eob Unexecuted instantiation: var_based_part.c:av1_get_tx_eob Unexecuted instantiation: av1_noise_estimate.c:av1_get_tx_eob Unexecuted instantiation: aq_complexity.c:av1_get_tx_eob Unexecuted instantiation: aq_cyclicrefresh.c:av1_get_tx_eob Unexecuted instantiation: aq_variance.c:av1_get_tx_eob Unexecuted instantiation: compound_type.c:av1_get_tx_eob Unexecuted instantiation: encode_strategy.c:av1_get_tx_eob Unexecuted instantiation: global_motion.c:av1_get_tx_eob Unexecuted instantiation: gop_structure.c:av1_get_tx_eob Unexecuted instantiation: interp_search.c:av1_get_tx_eob Unexecuted instantiation: motion_search_facade.c:av1_get_tx_eob |
103 | | |
104 | | // Token buffer is only used for palette tokens. |
105 | | static inline unsigned int get_token_alloc(int mb_rows, int mb_cols, |
106 | | int sb_size_log2, |
107 | 0 | const int num_planes) { |
108 | | // Calculate the maximum number of max superblocks in the image. |
109 | 0 | const int shift = sb_size_log2 - 4; |
110 | 0 | const int sb_size = 1 << sb_size_log2; |
111 | 0 | const int sb_size_square = sb_size * sb_size; |
112 | 0 | const int sb_rows = CEIL_POWER_OF_TWO(mb_rows, shift); |
113 | 0 | const int sb_cols = CEIL_POWER_OF_TWO(mb_cols, shift); |
114 | | |
115 | | // One palette token for each pixel. There can be palettes on two planes. |
116 | 0 | const int sb_palette_toks = AOMMIN(2, num_planes) * sb_size_square; |
117 | |
|
118 | 0 | return sb_rows * sb_cols * sb_palette_toks; |
119 | 0 | } Unexecuted instantiation: av1_cx_iface.c:get_token_alloc Unexecuted instantiation: allintra_vis.c:get_token_alloc Unexecuted instantiation: av1_quantize.c:get_token_alloc Unexecuted instantiation: bitstream.c:get_token_alloc Unexecuted instantiation: context_tree.c:get_token_alloc Unexecuted instantiation: encodeframe.c:get_token_alloc Unexecuted instantiation: encodeframe_utils.c:get_token_alloc Unexecuted instantiation: encodemb.c:get_token_alloc Unexecuted instantiation: encodemv.c:get_token_alloc Unexecuted instantiation: encoder.c:get_token_alloc Unexecuted instantiation: encoder_utils.c:get_token_alloc Unexecuted instantiation: encodetxb.c:get_token_alloc Unexecuted instantiation: ethread.c:get_token_alloc Unexecuted instantiation: firstpass.c:get_token_alloc Unexecuted instantiation: global_motion_facade.c:get_token_alloc Unexecuted instantiation: level.c:get_token_alloc Unexecuted instantiation: lookahead.c:get_token_alloc Unexecuted instantiation: mcomp.c:get_token_alloc Unexecuted instantiation: mv_prec.c:get_token_alloc Unexecuted instantiation: palette.c:get_token_alloc Unexecuted instantiation: partition_search.c:get_token_alloc Unexecuted instantiation: partition_strategy.c:get_token_alloc Unexecuted instantiation: pass2_strategy.c:get_token_alloc Unexecuted instantiation: pickcdef.c:get_token_alloc Unexecuted instantiation: picklpf.c:get_token_alloc Unexecuted instantiation: pickrst.c:get_token_alloc Unexecuted instantiation: ratectrl.c:get_token_alloc Unexecuted instantiation: rd.c:get_token_alloc Unexecuted instantiation: rdopt.c:get_token_alloc Unexecuted instantiation: nonrd_pickmode.c:get_token_alloc Unexecuted instantiation: nonrd_opt.c:get_token_alloc Unexecuted instantiation: segmentation.c:get_token_alloc Unexecuted instantiation: speed_features.c:get_token_alloc Unexecuted instantiation: superres_scale.c:get_token_alloc Unexecuted instantiation: svc_layercontext.c:get_token_alloc Unexecuted instantiation: temporal_filter.c:get_token_alloc Unexecuted instantiation: tokenize.c:get_token_alloc Unexecuted instantiation: tpl_model.c:get_token_alloc Unexecuted instantiation: tx_search.c:get_token_alloc Unexecuted instantiation: txb_rdopt.c:get_token_alloc Unexecuted instantiation: intra_mode_search.c:get_token_alloc Unexecuted instantiation: var_based_part.c:get_token_alloc Unexecuted instantiation: av1_noise_estimate.c:get_token_alloc Unexecuted instantiation: aq_complexity.c:get_token_alloc Unexecuted instantiation: aq_cyclicrefresh.c:get_token_alloc Unexecuted instantiation: aq_variance.c:get_token_alloc Unexecuted instantiation: compound_type.c:get_token_alloc Unexecuted instantiation: encode_strategy.c:get_token_alloc Unexecuted instantiation: global_motion.c:get_token_alloc Unexecuted instantiation: gop_structure.c:get_token_alloc Unexecuted instantiation: interp_search.c:get_token_alloc Unexecuted instantiation: motion_search_facade.c:get_token_alloc |
120 | | |
121 | | // Allocate memory for token related info. |
122 | | static inline void alloc_token_info(AV1_COMMON *cm, TokenInfo *token_info, |
123 | 0 | unsigned int tokens_required) { |
124 | 0 | int sb_rows = |
125 | 0 | CEIL_POWER_OF_TWO(cm->mi_params.mi_rows, cm->seq_params->mib_size_log2); |
126 | 0 | token_info->tokens_allocated = tokens_required; |
127 | |
|
128 | 0 | CHECK_MEM_ERROR(cm, token_info->tile_tok[0][0], |
129 | 0 | (TokenExtra *)aom_calloc( |
130 | 0 | tokens_required, sizeof(*token_info->tile_tok[0][0]))); |
131 | |
|
132 | 0 | CHECK_MEM_ERROR( |
133 | 0 | cm, token_info->tplist[0][0], |
134 | 0 | (TokenList *)aom_calloc(sb_rows * MAX_TILE_ROWS * MAX_TILE_COLS, |
135 | 0 | sizeof(*token_info->tplist[0][0]))); |
136 | 0 | } Unexecuted instantiation: av1_cx_iface.c:alloc_token_info Unexecuted instantiation: allintra_vis.c:alloc_token_info Unexecuted instantiation: av1_quantize.c:alloc_token_info Unexecuted instantiation: bitstream.c:alloc_token_info Unexecuted instantiation: context_tree.c:alloc_token_info Unexecuted instantiation: encodeframe.c:alloc_token_info Unexecuted instantiation: encodeframe_utils.c:alloc_token_info Unexecuted instantiation: encodemb.c:alloc_token_info Unexecuted instantiation: encodemv.c:alloc_token_info Unexecuted instantiation: encoder.c:alloc_token_info Unexecuted instantiation: encoder_utils.c:alloc_token_info Unexecuted instantiation: encodetxb.c:alloc_token_info Unexecuted instantiation: ethread.c:alloc_token_info Unexecuted instantiation: firstpass.c:alloc_token_info Unexecuted instantiation: global_motion_facade.c:alloc_token_info Unexecuted instantiation: level.c:alloc_token_info Unexecuted instantiation: lookahead.c:alloc_token_info Unexecuted instantiation: mcomp.c:alloc_token_info Unexecuted instantiation: mv_prec.c:alloc_token_info Unexecuted instantiation: palette.c:alloc_token_info Unexecuted instantiation: partition_search.c:alloc_token_info Unexecuted instantiation: partition_strategy.c:alloc_token_info Unexecuted instantiation: pass2_strategy.c:alloc_token_info Unexecuted instantiation: pickcdef.c:alloc_token_info Unexecuted instantiation: picklpf.c:alloc_token_info Unexecuted instantiation: pickrst.c:alloc_token_info Unexecuted instantiation: ratectrl.c:alloc_token_info Unexecuted instantiation: rd.c:alloc_token_info Unexecuted instantiation: rdopt.c:alloc_token_info Unexecuted instantiation: nonrd_pickmode.c:alloc_token_info Unexecuted instantiation: nonrd_opt.c:alloc_token_info Unexecuted instantiation: segmentation.c:alloc_token_info Unexecuted instantiation: speed_features.c:alloc_token_info Unexecuted instantiation: superres_scale.c:alloc_token_info Unexecuted instantiation: svc_layercontext.c:alloc_token_info Unexecuted instantiation: temporal_filter.c:alloc_token_info Unexecuted instantiation: tokenize.c:alloc_token_info Unexecuted instantiation: tpl_model.c:alloc_token_info Unexecuted instantiation: tx_search.c:alloc_token_info Unexecuted instantiation: txb_rdopt.c:alloc_token_info Unexecuted instantiation: intra_mode_search.c:alloc_token_info Unexecuted instantiation: var_based_part.c:alloc_token_info Unexecuted instantiation: av1_noise_estimate.c:alloc_token_info Unexecuted instantiation: aq_complexity.c:alloc_token_info Unexecuted instantiation: aq_cyclicrefresh.c:alloc_token_info Unexecuted instantiation: aq_variance.c:alloc_token_info Unexecuted instantiation: compound_type.c:alloc_token_info Unexecuted instantiation: encode_strategy.c:alloc_token_info Unexecuted instantiation: global_motion.c:alloc_token_info Unexecuted instantiation: gop_structure.c:alloc_token_info Unexecuted instantiation: interp_search.c:alloc_token_info Unexecuted instantiation: motion_search_facade.c:alloc_token_info |
137 | | |
138 | | // Check if memory allocation has been done for token related info. |
139 | 0 | static inline bool is_token_info_allocated(const TokenInfo *token_info) { |
140 | 0 | return ((token_info->tile_tok[0][0] != NULL) && |
141 | 0 | (token_info->tplist[0][0] != NULL)); |
142 | 0 | } Unexecuted instantiation: av1_cx_iface.c:is_token_info_allocated Unexecuted instantiation: allintra_vis.c:is_token_info_allocated Unexecuted instantiation: av1_quantize.c:is_token_info_allocated Unexecuted instantiation: bitstream.c:is_token_info_allocated Unexecuted instantiation: context_tree.c:is_token_info_allocated Unexecuted instantiation: encodeframe.c:is_token_info_allocated Unexecuted instantiation: encodeframe_utils.c:is_token_info_allocated Unexecuted instantiation: encodemb.c:is_token_info_allocated Unexecuted instantiation: encodemv.c:is_token_info_allocated Unexecuted instantiation: encoder.c:is_token_info_allocated Unexecuted instantiation: encoder_utils.c:is_token_info_allocated Unexecuted instantiation: encodetxb.c:is_token_info_allocated Unexecuted instantiation: ethread.c:is_token_info_allocated Unexecuted instantiation: firstpass.c:is_token_info_allocated Unexecuted instantiation: global_motion_facade.c:is_token_info_allocated Unexecuted instantiation: level.c:is_token_info_allocated Unexecuted instantiation: lookahead.c:is_token_info_allocated Unexecuted instantiation: mcomp.c:is_token_info_allocated Unexecuted instantiation: mv_prec.c:is_token_info_allocated Unexecuted instantiation: palette.c:is_token_info_allocated Unexecuted instantiation: partition_search.c:is_token_info_allocated Unexecuted instantiation: partition_strategy.c:is_token_info_allocated Unexecuted instantiation: pass2_strategy.c:is_token_info_allocated Unexecuted instantiation: pickcdef.c:is_token_info_allocated Unexecuted instantiation: picklpf.c:is_token_info_allocated Unexecuted instantiation: pickrst.c:is_token_info_allocated Unexecuted instantiation: ratectrl.c:is_token_info_allocated Unexecuted instantiation: rd.c:is_token_info_allocated Unexecuted instantiation: rdopt.c:is_token_info_allocated Unexecuted instantiation: nonrd_pickmode.c:is_token_info_allocated Unexecuted instantiation: nonrd_opt.c:is_token_info_allocated Unexecuted instantiation: segmentation.c:is_token_info_allocated Unexecuted instantiation: speed_features.c:is_token_info_allocated Unexecuted instantiation: superres_scale.c:is_token_info_allocated Unexecuted instantiation: svc_layercontext.c:is_token_info_allocated Unexecuted instantiation: temporal_filter.c:is_token_info_allocated Unexecuted instantiation: tokenize.c:is_token_info_allocated Unexecuted instantiation: tpl_model.c:is_token_info_allocated Unexecuted instantiation: tx_search.c:is_token_info_allocated Unexecuted instantiation: txb_rdopt.c:is_token_info_allocated Unexecuted instantiation: intra_mode_search.c:is_token_info_allocated Unexecuted instantiation: var_based_part.c:is_token_info_allocated Unexecuted instantiation: av1_noise_estimate.c:is_token_info_allocated Unexecuted instantiation: aq_complexity.c:is_token_info_allocated Unexecuted instantiation: aq_cyclicrefresh.c:is_token_info_allocated Unexecuted instantiation: aq_variance.c:is_token_info_allocated Unexecuted instantiation: compound_type.c:is_token_info_allocated Unexecuted instantiation: encode_strategy.c:is_token_info_allocated Unexecuted instantiation: global_motion.c:is_token_info_allocated Unexecuted instantiation: gop_structure.c:is_token_info_allocated Unexecuted instantiation: interp_search.c:is_token_info_allocated Unexecuted instantiation: motion_search_facade.c:is_token_info_allocated |
143 | | |
144 | | // Free memory from token related variables. |
145 | 0 | static inline void free_token_info(TokenInfo *token_info) { |
146 | 0 | aom_free(token_info->tile_tok[0][0]); |
147 | 0 | token_info->tile_tok[0][0] = NULL; |
148 | |
|
149 | 0 | aom_free(token_info->tplist[0][0]); |
150 | 0 | token_info->tplist[0][0] = NULL; |
151 | |
|
152 | 0 | token_info->tokens_allocated = 0; |
153 | 0 | } Unexecuted instantiation: av1_cx_iface.c:free_token_info Unexecuted instantiation: allintra_vis.c:free_token_info Unexecuted instantiation: av1_quantize.c:free_token_info Unexecuted instantiation: bitstream.c:free_token_info Unexecuted instantiation: context_tree.c:free_token_info Unexecuted instantiation: encodeframe.c:free_token_info Unexecuted instantiation: encodeframe_utils.c:free_token_info Unexecuted instantiation: encodemb.c:free_token_info Unexecuted instantiation: encodemv.c:free_token_info Unexecuted instantiation: encoder.c:free_token_info Unexecuted instantiation: encoder_utils.c:free_token_info Unexecuted instantiation: encodetxb.c:free_token_info Unexecuted instantiation: ethread.c:free_token_info Unexecuted instantiation: firstpass.c:free_token_info Unexecuted instantiation: global_motion_facade.c:free_token_info Unexecuted instantiation: level.c:free_token_info Unexecuted instantiation: lookahead.c:free_token_info Unexecuted instantiation: mcomp.c:free_token_info Unexecuted instantiation: mv_prec.c:free_token_info Unexecuted instantiation: palette.c:free_token_info Unexecuted instantiation: partition_search.c:free_token_info Unexecuted instantiation: partition_strategy.c:free_token_info Unexecuted instantiation: pass2_strategy.c:free_token_info Unexecuted instantiation: pickcdef.c:free_token_info Unexecuted instantiation: picklpf.c:free_token_info Unexecuted instantiation: pickrst.c:free_token_info Unexecuted instantiation: ratectrl.c:free_token_info Unexecuted instantiation: rd.c:free_token_info Unexecuted instantiation: rdopt.c:free_token_info Unexecuted instantiation: nonrd_pickmode.c:free_token_info Unexecuted instantiation: nonrd_opt.c:free_token_info Unexecuted instantiation: segmentation.c:free_token_info Unexecuted instantiation: speed_features.c:free_token_info Unexecuted instantiation: superres_scale.c:free_token_info Unexecuted instantiation: svc_layercontext.c:free_token_info Unexecuted instantiation: temporal_filter.c:free_token_info Unexecuted instantiation: tokenize.c:free_token_info Unexecuted instantiation: tpl_model.c:free_token_info Unexecuted instantiation: tx_search.c:free_token_info Unexecuted instantiation: txb_rdopt.c:free_token_info Unexecuted instantiation: intra_mode_search.c:free_token_info Unexecuted instantiation: var_based_part.c:free_token_info Unexecuted instantiation: av1_noise_estimate.c:free_token_info Unexecuted instantiation: aq_complexity.c:free_token_info Unexecuted instantiation: aq_cyclicrefresh.c:free_token_info Unexecuted instantiation: aq_variance.c:free_token_info Unexecuted instantiation: compound_type.c:free_token_info Unexecuted instantiation: encode_strategy.c:free_token_info Unexecuted instantiation: global_motion.c:free_token_info Unexecuted instantiation: gop_structure.c:free_token_info Unexecuted instantiation: interp_search.c:free_token_info Unexecuted instantiation: motion_search_facade.c:free_token_info |
154 | | |
155 | | #ifdef __cplusplus |
156 | | } // extern "C" |
157 | | #endif |
158 | | |
159 | | #endif // AOM_AV1_ENCODER_TOKENIZE_H_ |