/src/aom/av1/common/entropymode.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_ENTROPYMODE_H_ |
13 | | #define AOM_AV1_COMMON_ENTROPYMODE_H_ |
14 | | |
15 | | #include "aom_ports/bitops.h" |
16 | | #include "av1/common/entropy.h" |
17 | | #include "av1/common/entropymv.h" |
18 | | #include "av1/common/filter.h" |
19 | | #include "av1/common/seg_common.h" |
20 | | |
21 | | #ifdef __cplusplus |
22 | | extern "C" { |
23 | | #endif |
24 | | |
25 | 0 | #define BLOCK_SIZE_GROUPS 4 |
26 | | |
27 | 0 | #define TX_SIZE_CONTEXTS 3 |
28 | | |
29 | 0 | #define INTER_OFFSET(mode) ((mode)-NEARESTMV) |
30 | 0 | #define INTER_COMPOUND_OFFSET(mode) (uint8_t)((mode)-NEAREST_NEARESTMV) |
31 | | |
32 | | // Number of possible contexts for a color index. |
33 | | // As can be seen from av1_get_palette_color_index_context(), the possible |
34 | | // contexts are (2,0,0), (2,2,1), (3,2,0), (4,1,0), (5,0,0). These are mapped to |
35 | | // a value from 0 to 4 using 'av1_palette_color_index_context_lookup' table. |
36 | 0 | #define PALETTE_COLOR_INDEX_CONTEXTS 5 |
37 | | |
38 | | // Palette Y mode context for a block is determined by number of neighboring |
39 | | // blocks (top and/or left) using a palette for Y plane. So, possible Y mode' |
40 | | // context values are: |
41 | | // 0 if neither left nor top block uses palette for Y plane, |
42 | | // 1 if exactly one of left or top block uses palette for Y plane, and |
43 | | // 2 if both left and top blocks use palette for Y plane. |
44 | 0 | #define PALETTE_Y_MODE_CONTEXTS 3 |
45 | | |
46 | | // Palette UV mode context for a block is determined by whether this block uses |
47 | | // palette for the Y plane. So, possible values are: |
48 | | // 0 if this block doesn't use palette for Y plane. |
49 | | // 1 if this block uses palette for Y plane (i.e. Y palette size > 0). |
50 | 0 | #define PALETTE_UV_MODE_CONTEXTS 2 |
51 | | |
52 | | // Map the number of pixels in a block size to a context |
53 | | // 64(BLOCK_8X8, BLOCK_4x16, BLOCK_16X4) -> 0 |
54 | | // 128(BLOCK_8X16, BLOCK_16x8) -> 1 |
55 | | // ... |
56 | | // 4096(BLOCK_64X64) -> 6 |
57 | 0 | #define PALATTE_BSIZE_CTXS 7 |
58 | | |
59 | | #define MAX_COLOR_CONTEXT_HASH 8 |
60 | | |
61 | 2.07G | #define NUM_PALETTE_NEIGHBORS 3 // left, top-left and top. |
62 | | |
63 | 0 | #define KF_MODE_CONTEXTS 5 |
64 | | |
65 | | struct AV1Common; |
66 | | |
67 | | typedef struct { |
68 | | const int16_t *scan; |
69 | | const int16_t *iscan; |
70 | | } SCAN_ORDER; |
71 | | |
72 | | typedef struct frame_contexts { |
73 | | aom_cdf_prob txb_skip_cdf[TX_SIZES][TXB_SKIP_CONTEXTS][CDF_SIZE(2)]; |
74 | | aom_cdf_prob eob_extra_cdf[TX_SIZES][PLANE_TYPES][EOB_COEF_CONTEXTS] |
75 | | [CDF_SIZE(2)]; |
76 | | aom_cdf_prob dc_sign_cdf[PLANE_TYPES][DC_SIGN_CONTEXTS][CDF_SIZE(2)]; |
77 | | aom_cdf_prob eob_flag_cdf16[PLANE_TYPES][2][CDF_SIZE(5)]; |
78 | | aom_cdf_prob eob_flag_cdf32[PLANE_TYPES][2][CDF_SIZE(6)]; |
79 | | aom_cdf_prob eob_flag_cdf64[PLANE_TYPES][2][CDF_SIZE(7)]; |
80 | | aom_cdf_prob eob_flag_cdf128[PLANE_TYPES][2][CDF_SIZE(8)]; |
81 | | aom_cdf_prob eob_flag_cdf256[PLANE_TYPES][2][CDF_SIZE(9)]; |
82 | | aom_cdf_prob eob_flag_cdf512[PLANE_TYPES][2][CDF_SIZE(10)]; |
83 | | aom_cdf_prob eob_flag_cdf1024[PLANE_TYPES][2][CDF_SIZE(11)]; |
84 | | aom_cdf_prob coeff_base_eob_cdf[TX_SIZES][PLANE_TYPES][SIG_COEF_CONTEXTS_EOB] |
85 | | [CDF_SIZE(3)]; |
86 | | aom_cdf_prob coeff_base_cdf[TX_SIZES][PLANE_TYPES][SIG_COEF_CONTEXTS] |
87 | | [CDF_SIZE(4)]; |
88 | | aom_cdf_prob coeff_br_cdf[TX_SIZES][PLANE_TYPES][LEVEL_CONTEXTS] |
89 | | [CDF_SIZE(BR_CDF_SIZE)]; |
90 | | |
91 | | aom_cdf_prob newmv_cdf[NEWMV_MODE_CONTEXTS][CDF_SIZE(2)]; |
92 | | aom_cdf_prob zeromv_cdf[GLOBALMV_MODE_CONTEXTS][CDF_SIZE(2)]; |
93 | | aom_cdf_prob refmv_cdf[REFMV_MODE_CONTEXTS][CDF_SIZE(2)]; |
94 | | aom_cdf_prob drl_cdf[DRL_MODE_CONTEXTS][CDF_SIZE(2)]; |
95 | | |
96 | | aom_cdf_prob inter_compound_mode_cdf[INTER_MODE_CONTEXTS] |
97 | | [CDF_SIZE(INTER_COMPOUND_MODES)]; |
98 | | aom_cdf_prob compound_type_cdf[BLOCK_SIZES_ALL] |
99 | | [CDF_SIZE(MASKED_COMPOUND_TYPES)]; |
100 | | aom_cdf_prob wedge_idx_cdf[BLOCK_SIZES_ALL][CDF_SIZE(16)]; |
101 | | aom_cdf_prob interintra_cdf[BLOCK_SIZE_GROUPS][CDF_SIZE(2)]; |
102 | | aom_cdf_prob wedge_interintra_cdf[BLOCK_SIZES_ALL][CDF_SIZE(2)]; |
103 | | aom_cdf_prob interintra_mode_cdf[BLOCK_SIZE_GROUPS] |
104 | | [CDF_SIZE(INTERINTRA_MODES)]; |
105 | | aom_cdf_prob motion_mode_cdf[BLOCK_SIZES_ALL][CDF_SIZE(MOTION_MODES)]; |
106 | | aom_cdf_prob obmc_cdf[BLOCK_SIZES_ALL][CDF_SIZE(2)]; |
107 | | aom_cdf_prob palette_y_size_cdf[PALATTE_BSIZE_CTXS][CDF_SIZE(PALETTE_SIZES)]; |
108 | | aom_cdf_prob palette_uv_size_cdf[PALATTE_BSIZE_CTXS][CDF_SIZE(PALETTE_SIZES)]; |
109 | | aom_cdf_prob palette_y_color_index_cdf[PALETTE_SIZES] |
110 | | [PALETTE_COLOR_INDEX_CONTEXTS] |
111 | | [CDF_SIZE(PALETTE_COLORS)]; |
112 | | aom_cdf_prob palette_uv_color_index_cdf[PALETTE_SIZES] |
113 | | [PALETTE_COLOR_INDEX_CONTEXTS] |
114 | | [CDF_SIZE(PALETTE_COLORS)]; |
115 | | aom_cdf_prob palette_y_mode_cdf[PALATTE_BSIZE_CTXS][PALETTE_Y_MODE_CONTEXTS] |
116 | | [CDF_SIZE(2)]; |
117 | | aom_cdf_prob palette_uv_mode_cdf[PALETTE_UV_MODE_CONTEXTS][CDF_SIZE(2)]; |
118 | | aom_cdf_prob comp_inter_cdf[COMP_INTER_CONTEXTS][CDF_SIZE(2)]; |
119 | | aom_cdf_prob single_ref_cdf[REF_CONTEXTS][SINGLE_REFS - 1][CDF_SIZE(2)]; |
120 | | aom_cdf_prob comp_ref_type_cdf[COMP_REF_TYPE_CONTEXTS][CDF_SIZE(2)]; |
121 | | aom_cdf_prob uni_comp_ref_cdf[UNI_COMP_REF_CONTEXTS][UNIDIR_COMP_REFS - 1] |
122 | | [CDF_SIZE(2)]; |
123 | | aom_cdf_prob comp_ref_cdf[REF_CONTEXTS][FWD_REFS - 1][CDF_SIZE(2)]; |
124 | | aom_cdf_prob comp_bwdref_cdf[REF_CONTEXTS][BWD_REFS - 1][CDF_SIZE(2)]; |
125 | | aom_cdf_prob txfm_partition_cdf[TXFM_PARTITION_CONTEXTS][CDF_SIZE(2)]; |
126 | | aom_cdf_prob compound_index_cdf[COMP_INDEX_CONTEXTS][CDF_SIZE(2)]; |
127 | | aom_cdf_prob comp_group_idx_cdf[COMP_GROUP_IDX_CONTEXTS][CDF_SIZE(2)]; |
128 | | aom_cdf_prob skip_mode_cdfs[SKIP_MODE_CONTEXTS][CDF_SIZE(2)]; |
129 | | aom_cdf_prob skip_txfm_cdfs[SKIP_CONTEXTS][CDF_SIZE(2)]; |
130 | | aom_cdf_prob intra_inter_cdf[INTRA_INTER_CONTEXTS][CDF_SIZE(2)]; |
131 | | nmv_context nmvc; |
132 | | nmv_context ndvc; |
133 | | aom_cdf_prob intrabc_cdf[CDF_SIZE(2)]; |
134 | | struct segmentation_probs seg; |
135 | | aom_cdf_prob filter_intra_cdfs[BLOCK_SIZES_ALL][CDF_SIZE(2)]; |
136 | | aom_cdf_prob filter_intra_mode_cdf[CDF_SIZE(FILTER_INTRA_MODES)]; |
137 | | aom_cdf_prob switchable_restore_cdf[CDF_SIZE(RESTORE_SWITCHABLE_TYPES)]; |
138 | | aom_cdf_prob wiener_restore_cdf[CDF_SIZE(2)]; |
139 | | aom_cdf_prob sgrproj_restore_cdf[CDF_SIZE(2)]; |
140 | | aom_cdf_prob y_mode_cdf[BLOCK_SIZE_GROUPS][CDF_SIZE(INTRA_MODES)]; |
141 | | aom_cdf_prob uv_mode_cdf[CFL_ALLOWED_TYPES][INTRA_MODES] |
142 | | [CDF_SIZE(UV_INTRA_MODES)]; |
143 | | aom_cdf_prob partition_cdf[PARTITION_CONTEXTS][CDF_SIZE(EXT_PARTITION_TYPES)]; |
144 | | aom_cdf_prob switchable_interp_cdf[SWITCHABLE_FILTER_CONTEXTS] |
145 | | [CDF_SIZE(SWITCHABLE_FILTERS)]; |
146 | | /* kf_y_cdf is discarded after use, so does not require persistent storage. |
147 | | However, we keep it with the other CDFs in this struct since it needs to |
148 | | be copied to each tile to support parallelism just like the others. |
149 | | */ |
150 | | aom_cdf_prob kf_y_cdf[KF_MODE_CONTEXTS][KF_MODE_CONTEXTS] |
151 | | [CDF_SIZE(INTRA_MODES)]; |
152 | | |
153 | | aom_cdf_prob angle_delta_cdf[DIRECTIONAL_MODES] |
154 | | [CDF_SIZE(2 * MAX_ANGLE_DELTA + 1)]; |
155 | | |
156 | | aom_cdf_prob tx_size_cdf[MAX_TX_CATS][TX_SIZE_CONTEXTS] |
157 | | [CDF_SIZE(MAX_TX_DEPTH + 1)]; |
158 | | aom_cdf_prob delta_q_cdf[CDF_SIZE(DELTA_Q_PROBS + 1)]; |
159 | | aom_cdf_prob delta_lf_multi_cdf[FRAME_LF_COUNT][CDF_SIZE(DELTA_LF_PROBS + 1)]; |
160 | | aom_cdf_prob delta_lf_cdf[CDF_SIZE(DELTA_LF_PROBS + 1)]; |
161 | | aom_cdf_prob intra_ext_tx_cdf[EXT_TX_SETS_INTRA][EXT_TX_SIZES][INTRA_MODES] |
162 | | [CDF_SIZE(TX_TYPES)]; |
163 | | aom_cdf_prob inter_ext_tx_cdf[EXT_TX_SETS_INTER][EXT_TX_SIZES] |
164 | | [CDF_SIZE(TX_TYPES)]; |
165 | | aom_cdf_prob cfl_sign_cdf[CDF_SIZE(CFL_JOINT_SIGNS)]; |
166 | | aom_cdf_prob cfl_alpha_cdf[CFL_ALPHA_CONTEXTS][CDF_SIZE(CFL_ALPHABET_SIZE)]; |
167 | | int initialized; |
168 | | } FRAME_CONTEXT; |
169 | | |
170 | | static const int av1_ext_tx_ind[EXT_TX_SET_TYPES][TX_TYPES] = { |
171 | | { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, |
172 | | { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, |
173 | | { 1, 3, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, |
174 | | { 1, 5, 6, 4, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0 }, |
175 | | { 3, 4, 5, 8, 6, 7, 9, 10, 11, 0, 1, 2, 0, 0, 0, 0 }, |
176 | | { 7, 8, 9, 12, 10, 11, 13, 14, 15, 0, 1, 2, 3, 4, 5, 6 }, |
177 | | }; |
178 | | |
179 | | static const int av1_ext_tx_inv[EXT_TX_SET_TYPES][TX_TYPES] = { |
180 | | { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, |
181 | | { 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, |
182 | | { 9, 0, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, |
183 | | { 9, 0, 10, 11, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, |
184 | | { 9, 10, 11, 0, 1, 2, 4, 5, 3, 6, 7, 8, 0, 0, 0, 0 }, |
185 | | { 9, 10, 11, 12, 13, 14, 15, 0, 1, 2, 4, 5, 3, 6, 7, 8 }, |
186 | | }; |
187 | | |
188 | | void av1_set_default_ref_deltas(int8_t *ref_deltas); |
189 | | void av1_set_default_mode_deltas(int8_t *mode_deltas); |
190 | | void av1_setup_frame_contexts(struct AV1Common *cm); |
191 | | void av1_setup_past_independence(struct AV1Common *cm); |
192 | | |
193 | | // Returns (int)ceil(log2(n)). |
194 | 2.89M | static inline int av1_ceil_log2(int n) { |
195 | 2.89M | if (n < 2) return 0; |
196 | 1.63M | return get_msb(n - 1) + 1; |
197 | 2.89M | } Unexecuted instantiation: av1_dx_iface.c:av1_ceil_log2 Unexecuted instantiation: decodeframe.c:av1_ceil_log2 Line | Count | Source | 194 | 2.89M | static inline int av1_ceil_log2(int n) { | 195 | 2.89M | if (n < 2) return 0; | 196 | 1.63M | return get_msb(n - 1) + 1; | 197 | 2.89M | } |
Unexecuted instantiation: decoder.c:av1_ceil_log2 Unexecuted instantiation: decodetxb.c:av1_ceil_log2 Unexecuted instantiation: detokenize.c:av1_ceil_log2 Unexecuted instantiation: obu.c:av1_ceil_log2 Unexecuted instantiation: av1_cx_iface.c:av1_ceil_log2 Unexecuted instantiation: allintra_vis.c:av1_ceil_log2 Unexecuted instantiation: av1_quantize.c:av1_ceil_log2 Unexecuted instantiation: bitstream.c:av1_ceil_log2 Unexecuted instantiation: context_tree.c:av1_ceil_log2 Unexecuted instantiation: encodeframe.c:av1_ceil_log2 Unexecuted instantiation: encodeframe_utils.c:av1_ceil_log2 Unexecuted instantiation: encodemb.c:av1_ceil_log2 Unexecuted instantiation: encodemv.c:av1_ceil_log2 Unexecuted instantiation: encoder.c:av1_ceil_log2 Unexecuted instantiation: encoder_utils.c:av1_ceil_log2 Unexecuted instantiation: encodetxb.c:av1_ceil_log2 Unexecuted instantiation: ethread.c:av1_ceil_log2 Unexecuted instantiation: firstpass.c:av1_ceil_log2 Unexecuted instantiation: global_motion_facade.c:av1_ceil_log2 Unexecuted instantiation: hash.c:av1_ceil_log2 Unexecuted instantiation: hash_motion.c:av1_ceil_log2 Unexecuted instantiation: hybrid_fwd_txfm.c:av1_ceil_log2 Unexecuted instantiation: level.c:av1_ceil_log2 Unexecuted instantiation: lookahead.c:av1_ceil_log2 Unexecuted instantiation: mcomp.c:av1_ceil_log2 Unexecuted instantiation: mv_prec.c:av1_ceil_log2 Unexecuted instantiation: palette.c:av1_ceil_log2 Unexecuted instantiation: partition_search.c:av1_ceil_log2 Unexecuted instantiation: partition_strategy.c:av1_ceil_log2 Unexecuted instantiation: pass2_strategy.c:av1_ceil_log2 Unexecuted instantiation: pickcdef.c:av1_ceil_log2 Unexecuted instantiation: picklpf.c:av1_ceil_log2 Unexecuted instantiation: pickrst.c:av1_ceil_log2 Unexecuted instantiation: ratectrl.c:av1_ceil_log2 Unexecuted instantiation: rd.c:av1_ceil_log2 Unexecuted instantiation: rdopt.c:av1_ceil_log2 Unexecuted instantiation: nonrd_pickmode.c:av1_ceil_log2 Unexecuted instantiation: nonrd_opt.c:av1_ceil_log2 Unexecuted instantiation: reconinter_enc.c:av1_ceil_log2 Unexecuted instantiation: segmentation.c:av1_ceil_log2 Unexecuted instantiation: speed_features.c:av1_ceil_log2 Unexecuted instantiation: superres_scale.c:av1_ceil_log2 Unexecuted instantiation: svc_layercontext.c:av1_ceil_log2 Unexecuted instantiation: temporal_filter.c:av1_ceil_log2 Unexecuted instantiation: tokenize.c:av1_ceil_log2 Unexecuted instantiation: tpl_model.c:av1_ceil_log2 Unexecuted instantiation: tx_search.c:av1_ceil_log2 Unexecuted instantiation: txb_rdopt.c:av1_ceil_log2 Unexecuted instantiation: intra_mode_search.c:av1_ceil_log2 Unexecuted instantiation: var_based_part.c:av1_ceil_log2 Unexecuted instantiation: av1_noise_estimate.c:av1_ceil_log2 Unexecuted instantiation: dwt.c:av1_ceil_log2 Unexecuted instantiation: aom_dsp_rtcd.c:av1_ceil_log2 Unexecuted instantiation: av1_rtcd.c:av1_ceil_log2 Unexecuted instantiation: aom_convolve.c:av1_ceil_log2 Unexecuted instantiation: blend_a64_mask.c:av1_ceil_log2 Unexecuted instantiation: avg.c:av1_ceil_log2 Unexecuted instantiation: blk_sse_sum.c:av1_ceil_log2 Unexecuted instantiation: fwd_txfm.c:av1_ceil_log2 Unexecuted instantiation: psnr.c:av1_ceil_log2 Unexecuted instantiation: quantize.c:av1_ceil_log2 Unexecuted instantiation: sad.c:av1_ceil_log2 Unexecuted instantiation: sad_av1.c:av1_ceil_log2 Unexecuted instantiation: subtract.c:av1_ceil_log2 Unexecuted instantiation: sse.c:av1_ceil_log2 Unexecuted instantiation: sum_squares.c:av1_ceil_log2 Unexecuted instantiation: variance.c:av1_ceil_log2 Unexecuted instantiation: pyramid.c:av1_ceil_log2 Unexecuted instantiation: noise_util.c:av1_ceil_log2 Unexecuted instantiation: alloccommon.c:av1_ceil_log2 Unexecuted instantiation: av1_loopfilter.c:av1_ceil_log2 Unexecuted instantiation: blockd.c:av1_ceil_log2 Unexecuted instantiation: cdef.c:av1_ceil_log2 Unexecuted instantiation: cdef_block.c:av1_ceil_log2 Unexecuted instantiation: cfl.c:av1_ceil_log2 Unexecuted instantiation: debugmodes.c:av1_ceil_log2 Unexecuted instantiation: entropy.c:av1_ceil_log2 Unexecuted instantiation: entropymode.c:av1_ceil_log2 Unexecuted instantiation: entropymv.c:av1_ceil_log2 Unexecuted instantiation: idct.c:av1_ceil_log2 Unexecuted instantiation: mvref_common.c:av1_ceil_log2 Unexecuted instantiation: pred_common.c:av1_ceil_log2 Unexecuted instantiation: quant_common.c:av1_ceil_log2 Unexecuted instantiation: reconinter.c:av1_ceil_log2 Unexecuted instantiation: reconintra.c:av1_ceil_log2 Unexecuted instantiation: resize.c:av1_ceil_log2 Unexecuted instantiation: restoration.c:av1_ceil_log2 Unexecuted instantiation: scale.c:av1_ceil_log2 Unexecuted instantiation: scan.c:av1_ceil_log2 Unexecuted instantiation: seg_common.c:av1_ceil_log2 Unexecuted instantiation: thread_common.c:av1_ceil_log2 Unexecuted instantiation: tile_common.c:av1_ceil_log2 Unexecuted instantiation: txb_common.c:av1_ceil_log2 Unexecuted instantiation: warped_motion.c:av1_ceil_log2 Unexecuted instantiation: aq_complexity.c:av1_ceil_log2 Unexecuted instantiation: aq_cyclicrefresh.c:av1_ceil_log2 Unexecuted instantiation: aq_variance.c:av1_ceil_log2 Unexecuted instantiation: av1_fwd_txfm2d.c:av1_ceil_log2 Unexecuted instantiation: cnn.c:av1_ceil_log2 Unexecuted instantiation: compound_type.c:av1_ceil_log2 Unexecuted instantiation: encode_strategy.c:av1_ceil_log2 Unexecuted instantiation: global_motion.c:av1_ceil_log2 Unexecuted instantiation: gop_structure.c:av1_ceil_log2 Unexecuted instantiation: interp_search.c:av1_ceil_log2 Unexecuted instantiation: ml.c:av1_ceil_log2 Unexecuted instantiation: motion_search_facade.c:av1_ceil_log2 Unexecuted instantiation: wedge_utils.c:av1_ceil_log2 Unexecuted instantiation: blend_a64_hmask.c:av1_ceil_log2 Unexecuted instantiation: blend_a64_vmask.c:av1_ceil_log2 Unexecuted instantiation: intrapred.c:av1_ceil_log2 Unexecuted instantiation: loopfilter.c:av1_ceil_log2 Unexecuted instantiation: fft.c:av1_ceil_log2 Unexecuted instantiation: corner_match.c:av1_ceil_log2 Unexecuted instantiation: disflow.c:av1_ceil_log2 Unexecuted instantiation: av1_inv_txfm2d.c:av1_ceil_log2 Unexecuted instantiation: av1_txfm.c:av1_ceil_log2 Unexecuted instantiation: convolve.c:av1_ceil_log2 Unexecuted instantiation: av1_fwd_txfm1d.c:av1_ceil_log2 Unexecuted instantiation: av1_inv_txfm1d.c:av1_ceil_log2 |
198 | | |
199 | | // Returns the context for palette color index at row 'r' and column 'c', |
200 | | // along with the 'color_order' of neighbors and the 'color_idx'. |
201 | | // The 'color_map' is a 2D array with the given 'stride'. |
202 | | int av1_get_palette_color_index_context(const uint8_t *color_map, int stride, |
203 | | int r, int c, int palette_size, |
204 | | uint8_t *color_order, int *color_idx); |
205 | | |
206 | | extern const int |
207 | | av1_palette_color_index_context_lookup[MAX_COLOR_CONTEXT_HASH + 1]; |
208 | | |
209 | | #ifdef __cplusplus |
210 | | } // extern "C" |
211 | | #endif |
212 | | |
213 | | #endif // AOM_AV1_COMMON_ENTROPYMODE_H_ |