blob: 5c5a692142ba79ead27d6655a09afb4a9caa2716 [file] [log] [blame]
Yaowu Xuc27fc142016-08-22 16:08:15 -07001/*
Yaowu Xu2ab7ff02016-09-02 12:04:54 -07002 * Copyright (c) 2016, Alliance for Open Media. All rights reserved
Yaowu Xuc27fc142016-08-22 16:08:15 -07003 *
Yaowu Xu2ab7ff02016-09-02 12:04:54 -07004 * 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.
Yaowu Xuc27fc142016-08-22 16:08:15 -070010 */
11
12#include "av1/common/onyxc_int.h"
13#include "av1/common/entropymv.h"
14
15// Integer pel reference mv threshold for use of high-precision 1/8 mv
16#define COMPANDED_MVREF_THRESH 8
17
Yaowu Xuf883b422016-08-30 14:01:10 -070018const aom_tree_index av1_mv_joint_tree[TREE_SIZE(MV_JOINTS)] = {
Yaowu Xuc27fc142016-08-22 16:08:15 -070019 -MV_JOINT_ZERO, 2, -MV_JOINT_HNZVZ, 4, -MV_JOINT_HZVNZ, -MV_JOINT_HNZVNZ
20};
21
22/* clang-format off */
Yaowu Xuf883b422016-08-30 14:01:10 -070023const aom_tree_index av1_mv_class_tree[TREE_SIZE(MV_CLASSES)] = {
Yaowu Xuc27fc142016-08-22 16:08:15 -070024 -MV_CLASS_0, 2,
25 -MV_CLASS_1, 4,
26 6, 8,
27 -MV_CLASS_2, -MV_CLASS_3,
28 10, 12,
29 -MV_CLASS_4, -MV_CLASS_5,
30 -MV_CLASS_6, 14,
31 16, 18,
32 -MV_CLASS_7, -MV_CLASS_8,
33 -MV_CLASS_9, -MV_CLASS_10,
34};
35/* clang-format on */
36
Yaowu Xuf883b422016-08-30 14:01:10 -070037const aom_tree_index av1_mv_class0_tree[TREE_SIZE(CLASS0_SIZE)] = {
Yaowu Xuc27fc142016-08-22 16:08:15 -070038 -0, -1,
39};
40
Yaowu Xuf883b422016-08-30 14:01:10 -070041const aom_tree_index av1_mv_fp_tree[TREE_SIZE(MV_FP_SIZE)] = { -0, 2, -1,
42 4, -2, -3 };
Yaowu Xuc27fc142016-08-22 16:08:15 -070043
44static const nmv_context default_nmv_context = {
Nathan E. Egge5f7fd7a2016-09-08 11:22:03 -040045 { 32, 64, 96 }, // joints
Alex Converseaca9feb2016-10-10 11:08:10 -070046#if CONFIG_EC_MULTISYMBOL
Nathan E. Egge5f7fd7a2016-09-08 11:22:03 -040047 { 0, 0, 0, 0 }, // joint_cdf is computed from joints in av1_init_mv_probs()
48#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -070049 { {
50 // Vertical component
51 128, // sign
52 { 224, 144, 192, 168, 192, 176, 192, 198, 198, 245 }, // class
Alex Converseaca9feb2016-10-10 11:08:10 -070053#if CONFIG_EC_MULTISYMBOL
Nathan E. Egged7b893c2016-09-08 15:08:48 -040054 { 0 }, // class_cdf is computed from class in av1_init_mv_probs()
55#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -070056 { 216 }, // class0
57 { 136, 140, 148, 160, 176, 192, 224, 234, 234, 240 }, // bits
58 { { 128, 128, 64 }, { 96, 112, 64 } }, // class0_fp
59 { 64, 96, 64 }, // fp
Alex Converseaca9feb2016-10-10 11:08:10 -070060#if CONFIG_EC_MULTISYMBOL
Nathan E. Egge5f34b612016-09-08 15:59:53 -040061 { { 0 }, { 0 } }, // class0_fp_cdf is computed in av1_init_mv_probs()
62 { 0 }, // fp_cdf is computed from fp in av1_init_mv_probs()
63#endif
Angie Chianga1a753c2016-10-21 17:13:59 -070064 160, // class0_hp bit
65 128, // hp
Yaowu Xuc27fc142016-08-22 16:08:15 -070066 },
67 {
68 // Horizontal component
69 128, // sign
70 { 216, 128, 176, 160, 176, 176, 192, 198, 198, 208 }, // class
Alex Converseaca9feb2016-10-10 11:08:10 -070071#if CONFIG_EC_MULTISYMBOL
Nathan E. Egged7b893c2016-09-08 15:08:48 -040072 { 0 }, // class_cdf is computed from class in av1_init_mv_probs()
73#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -070074 { 208 }, // class0
75 { 136, 140, 148, 160, 176, 192, 224, 234, 234, 240 }, // bits
76 { { 128, 128, 64 }, { 96, 112, 64 } }, // class0_fp
77 { 64, 96, 64 }, // fp
Alex Converseaca9feb2016-10-10 11:08:10 -070078#if CONFIG_EC_MULTISYMBOL
Nathan E. Egge5f34b612016-09-08 15:59:53 -040079 { { 0 }, { 0 } }, // class0_fp_cdf is computed in av1_init_mv_probs()
80 { 0 }, // fp_cdf is computed from fp in av1_init_mv_probs()
81#endif
Angie Chianga1a753c2016-10-21 17:13:59 -070082 160, // class0_hp bit
83 128, // hp
Yaowu Xuc27fc142016-08-22 16:08:15 -070084 } },
85};
86
87static const uint8_t log_in_base_2[] = {
88 0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
89 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
90 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
91 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
92 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7,
93 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
94 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
95 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
96 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
97 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8,
98 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
99 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
100 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
101 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
102 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
103 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
104 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
105 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
106 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
107 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9,
108 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
109 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
110 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
111 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
112 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
113 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
114 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
115 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
116 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
117 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
118 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
119 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
120 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
121 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
122 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
123 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
124 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
125 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
126 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
127 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10
128};
129
130#if CONFIG_GLOBAL_MOTION
Yaowu Xuf883b422016-08-30 14:01:10 -0700131const aom_tree_index
132 av1_global_motion_types_tree[TREE_SIZE(GLOBAL_MOTION_TYPES)] = {
Yaowu Xuc27fc142016-08-22 16:08:15 -0700133 -GLOBAL_ZERO, 2, -GLOBAL_TRANSLATION, 4, -GLOBAL_ROTZOOM, -GLOBAL_AFFINE
134 };
135
Yaowu Xuf883b422016-08-30 14:01:10 -0700136static const aom_prob default_global_motion_types_prob[GLOBAL_MOTION_TYPES -
Yaowu Xuc27fc142016-08-22 16:08:15 -0700137 1] = { 224, 128, 128 };
138#endif // CONFIG_GLOBAL_MOTION
139
140static INLINE int mv_class_base(MV_CLASS_TYPE c) {
141 return c ? CLASS0_SIZE << (c + 2) : 0;
142}
143
Yaowu Xuf883b422016-08-30 14:01:10 -0700144MV_CLASS_TYPE av1_get_mv_class(int z, int *offset) {
Yaowu Xuc27fc142016-08-22 16:08:15 -0700145 const MV_CLASS_TYPE c = (z >= CLASS0_SIZE * 4096)
146 ? MV_CLASS_10
147 : (MV_CLASS_TYPE)log_in_base_2[z >> 3];
148 if (offset) *offset = z - mv_class_base(c);
149 return c;
150}
151
Yaowu Xuc27fc142016-08-22 16:08:15 -0700152static void inc_mv_component(int v, nmv_component_counts *comp_counts, int incr,
153 int usehp) {
154 int s, z, c, o, d, e, f;
155 assert(v != 0); /* should not be zero */
156 s = v < 0;
157 comp_counts->sign[s] += incr;
158 z = (s ? -v : v) - 1; /* magnitude - 1 */
159
Yaowu Xuf883b422016-08-30 14:01:10 -0700160 c = av1_get_mv_class(z, &o);
Yaowu Xuc27fc142016-08-22 16:08:15 -0700161 comp_counts->classes[c] += incr;
162
163 d = (o >> 3); /* int mv data */
164 f = (o >> 1) & 3; /* fractional pel mv data */
165 e = (o & 1); /* high precision mv data */
166
167 if (c == MV_CLASS_0) {
168 comp_counts->class0[d] += incr;
169 comp_counts->class0_fp[d][f] += incr;
170 if (usehp) comp_counts->class0_hp[e] += incr;
171 } else {
172 int i;
173 int b = c + CLASS0_BITS - 1; // number of bits
174 for (i = 0; i < b; ++i) comp_counts->bits[i][((d >> i) & 1)] += incr;
175 comp_counts->fp[f] += incr;
176 if (usehp) comp_counts->hp[e] += incr;
177 }
178}
179
Yaowu Xuf883b422016-08-30 14:01:10 -0700180void av1_inc_mv(const MV *mv, nmv_context_counts *counts, const int usehp) {
Yaowu Xuc27fc142016-08-22 16:08:15 -0700181 if (counts != NULL) {
Yaowu Xuf883b422016-08-30 14:01:10 -0700182 const MV_JOINT_TYPE j = av1_get_mv_joint(mv);
Yaowu Xuc27fc142016-08-22 16:08:15 -0700183 ++counts->joints[j];
184
185 if (mv_joint_vertical(j))
186 inc_mv_component(mv->row, &counts->comps[0], 1, usehp);
187
188 if (mv_joint_horizontal(j))
189 inc_mv_component(mv->col, &counts->comps[1], 1, usehp);
190 }
191}
192
Yaowu Xuf883b422016-08-30 14:01:10 -0700193void av1_adapt_mv_probs(AV1_COMMON *cm, int allow_hp) {
Yaowu Xuc27fc142016-08-22 16:08:15 -0700194 int i, j;
195#if CONFIG_REF_MV
196 int idx;
197 for (idx = 0; idx < NMV_CONTEXTS; ++idx) {
198 nmv_context *fc = &cm->fc->nmvc[idx];
199 const nmv_context *pre_fc =
200 &cm->frame_contexts[cm->frame_context_idx].nmvc[idx];
201 const nmv_context_counts *counts = &cm->counts.mv[idx];
202
Yaowu Xuf883b422016-08-30 14:01:10 -0700203 aom_tree_merge_probs(av1_mv_joint_tree, pre_fc->joints, counts->joints,
Yaowu Xuc27fc142016-08-22 16:08:15 -0700204 fc->joints);
Yaowu Xuc27fc142016-08-22 16:08:15 -0700205 for (i = 0; i < 2; ++i) {
206 nmv_component *comp = &fc->comps[i];
207 const nmv_component *pre_comp = &pre_fc->comps[i];
208 const nmv_component_counts *c = &counts->comps[i];
209
Yaowu Xuf883b422016-08-30 14:01:10 -0700210 comp->sign = av1_mode_mv_merge_probs(pre_comp->sign, c->sign);
211 aom_tree_merge_probs(av1_mv_class_tree, pre_comp->classes, c->classes,
Yaowu Xuc27fc142016-08-22 16:08:15 -0700212 comp->classes);
Yaowu Xuf883b422016-08-30 14:01:10 -0700213 aom_tree_merge_probs(av1_mv_class0_tree, pre_comp->class0, c->class0,
Yaowu Xuc27fc142016-08-22 16:08:15 -0700214 comp->class0);
215
216 for (j = 0; j < MV_OFFSET_BITS; ++j)
Yaowu Xuf883b422016-08-30 14:01:10 -0700217 comp->bits[j] = av1_mode_mv_merge_probs(pre_comp->bits[j], c->bits[j]);
Yaowu Xuc27fc142016-08-22 16:08:15 -0700218
219 for (j = 0; j < CLASS0_SIZE; ++j)
Yaowu Xuf883b422016-08-30 14:01:10 -0700220 aom_tree_merge_probs(av1_mv_fp_tree, pre_comp->class0_fp[j],
Yaowu Xuc27fc142016-08-22 16:08:15 -0700221 c->class0_fp[j], comp->class0_fp[j]);
222
Yaowu Xuf883b422016-08-30 14:01:10 -0700223 aom_tree_merge_probs(av1_mv_fp_tree, pre_comp->fp, c->fp, comp->fp);
Yaowu Xuc27fc142016-08-22 16:08:15 -0700224
225 if (allow_hp) {
226 comp->class0_hp =
Yaowu Xuf883b422016-08-30 14:01:10 -0700227 av1_mode_mv_merge_probs(pre_comp->class0_hp, c->class0_hp);
228 comp->hp = av1_mode_mv_merge_probs(pre_comp->hp, c->hp);
Yaowu Xuc27fc142016-08-22 16:08:15 -0700229 }
230 }
231 }
232#else
233 nmv_context *fc = &cm->fc->nmvc;
234 const nmv_context *pre_fc = &cm->frame_contexts[cm->frame_context_idx].nmvc;
235 const nmv_context_counts *counts = &cm->counts.mv;
236
Yaowu Xuf883b422016-08-30 14:01:10 -0700237 aom_tree_merge_probs(av1_mv_joint_tree, pre_fc->joints, counts->joints,
Yaowu Xuc27fc142016-08-22 16:08:15 -0700238 fc->joints);
239
240 for (i = 0; i < 2; ++i) {
241 nmv_component *comp = &fc->comps[i];
242 const nmv_component *pre_comp = &pre_fc->comps[i];
243 const nmv_component_counts *c = &counts->comps[i];
244
Yaowu Xuf883b422016-08-30 14:01:10 -0700245 comp->sign = av1_mode_mv_merge_probs(pre_comp->sign, c->sign);
246 aom_tree_merge_probs(av1_mv_class_tree, pre_comp->classes, c->classes,
Yaowu Xuc27fc142016-08-22 16:08:15 -0700247 comp->classes);
Yaowu Xuf883b422016-08-30 14:01:10 -0700248 aom_tree_merge_probs(av1_mv_class0_tree, pre_comp->class0, c->class0,
Yaowu Xuc27fc142016-08-22 16:08:15 -0700249 comp->class0);
250
251 for (j = 0; j < MV_OFFSET_BITS; ++j)
Yaowu Xuf883b422016-08-30 14:01:10 -0700252 comp->bits[j] = av1_mode_mv_merge_probs(pre_comp->bits[j], c->bits[j]);
Yaowu Xuc27fc142016-08-22 16:08:15 -0700253
254 for (j = 0; j < CLASS0_SIZE; ++j)
Yaowu Xuf883b422016-08-30 14:01:10 -0700255 aom_tree_merge_probs(av1_mv_fp_tree, pre_comp->class0_fp[j],
Yaowu Xuc27fc142016-08-22 16:08:15 -0700256 c->class0_fp[j], comp->class0_fp[j]);
257
Yaowu Xuf883b422016-08-30 14:01:10 -0700258 aom_tree_merge_probs(av1_mv_fp_tree, pre_comp->fp, c->fp, comp->fp);
Yaowu Xuc27fc142016-08-22 16:08:15 -0700259
260 if (allow_hp) {
261 comp->class0_hp =
Yaowu Xuf883b422016-08-30 14:01:10 -0700262 av1_mode_mv_merge_probs(pre_comp->class0_hp, c->class0_hp);
263 comp->hp = av1_mode_mv_merge_probs(pre_comp->hp, c->hp);
Yaowu Xuc27fc142016-08-22 16:08:15 -0700264 }
265 }
266#endif
267}
268
Yaowu Xuf883b422016-08-30 14:01:10 -0700269void av1_init_mv_probs(AV1_COMMON *cm) {
Yaowu Xuc27fc142016-08-22 16:08:15 -0700270#if CONFIG_REF_MV
271 int i;
272 for (i = 0; i < NMV_CONTEXTS; ++i) cm->fc->nmvc[i] = default_nmv_context;
273#else
274 cm->fc->nmvc = default_nmv_context;
Alex Converseaca9feb2016-10-10 11:08:10 -0700275#if CONFIG_EC_MULTISYMBOL
Nathan E. Egge5f34b612016-09-08 15:59:53 -0400276 {
277 int i, j;
278 av1_tree_to_cdf(av1_mv_joint_tree, cm->fc->nmvc.joints,
279 cm->fc->nmvc.joint_cdf);
280 for (i = 0; i < 2; i++) {
281 av1_tree_to_cdf(av1_mv_class_tree, cm->fc->nmvc.comps[i].classes,
282 cm->fc->nmvc.comps[i].class_cdf);
283 av1_tree_to_cdf(av1_mv_fp_tree, cm->fc->nmvc.comps[i].fp,
284 cm->fc->nmvc.comps[i].fp_cdf);
285 for (j = 0; j < CLASS0_SIZE; j++) {
286 av1_tree_to_cdf(av1_mv_fp_tree, cm->fc->nmvc.comps[i].class0_fp[j],
287 cm->fc->nmvc.comps[i].class0_fp_cdf[j]);
288 }
289 }
290 }
Nathan E. Egge5f7fd7a2016-09-08 11:22:03 -0400291#endif
Yaowu Xuc27fc142016-08-22 16:08:15 -0700292#endif
293#if CONFIG_GLOBAL_MOTION
Yaowu Xuf883b422016-08-30 14:01:10 -0700294 av1_copy(cm->fc->global_motion_types_prob, default_global_motion_types_prob);
Yaowu Xuc27fc142016-08-22 16:08:15 -0700295#endif // CONFIG_GLOBAL_MOTION
296}