History

Make global data const

Removes all runtime initialization of global data. This commit is a squashed version of the following series cherry-picked from master. This is necessary because of a change that was merged to the tester that depends on the scaler being moved to the RTCD framework, which is a worthwhile thing to include in Eider anyway. - a91b42f02 Makes all global data in entropy.c const - b35a0db0e Makes all global data in tokenize.c const - 441cac8ea Makes all mode token tables const - 5948a0210 Ports vpx_xcaler to new RTCD method - 317d4244c Makes all mode token tables const part 2

Attila Nagy committed 14 years ago

Commit f039a851 parent 9f9cc8f36 files · +1542 −728Browse files

Unified · Split

36 files
  1. vp8/common/alloccommon.c +1 −11
  2. vp8/common/entropy.c +73 −54
  3. vp8/common/entropy.h +3 −3
  4. vp8/common/entropymode.c +10 −98
  5. vp8/common/entropymode.h +8 −10
  6. vp8/common/modecontext.c +0 −146
  7. vp8/common/onyxc_int.h +0 −4
  8. vp8/common/postproc.c +2 −6
  9. vp8/common/rtcd_defs.sh +36 −0
  10. vp8/common/vp8_entropymodedata.h +242 −0
  11. vp8/decoder/decodframe.c +1 −2
  12. vp8/decoder/onyxd_if.c +4 −20
  13. vp8/encoder/bitstream.c +3 −3
  14. vp8/encoder/bitstream.h +6 −6
  15. vp8/encoder/dct_value_cost.h +358 −0
  16. vp8/encoder/dct_value_tokens.h +699 −0
  17. vp8/encoder/firstpass.c +7 −7
  18. vp8/encoder/onyx_if.c +19 −33
  19. vp8/encoder/picklpf.c +3 −4
  20. vp8/encoder/temporal_filter.c +0 −1
  21. vp8/encoder/tokenize.c +15 −14
  22. vp8/encoder/tokenize.h +2 −2
  23. vp8/encoder/x86/vp8_enc_stubs_mmx.c +2 −2
  24. vp8/vp8_common.mk +1 −1
  25. vp8/vp8_cx_iface.c +0 −2
  26. vp8/vp8_dx_iface.c +0 −2
  27. vp8/vp8cx.mk +2 −0
  28. vpx_scale/arm/scalesystemdependent.c +0 −30
  29. vpx_scale/arm/yv12extend_arm.h +0 −28
  30. vpx_scale/generic/gen_scalers.c +40 −40
  31. vpx_scale/generic/scalesystemdependent.c +0 −74
  32. vpx_scale/generic/vpxscale.c +1 −27
  33. vpx_scale/generic/yv12extend.c +4 −4
  34. vpx_scale/vpx_scale.mk +0 −6
  35. vpx_scale/vpxscale.h +0 −48
  36. vpx_scale/yv12extend.h +0 −40
vp8/common/alloccommon.c+1−11
@@ -208,7 +208,7 @@ void vp8_create_common(VP8_COMMON *oci) · 207 unmodified lines
208 oci->clr_type = REG_YUV;208 oci->clr_type = REG_YUV;
209 oci->clamp_type = RECON_CLAMP_REQUIRED;209 oci->clamp_type = RECON_CLAMP_REQUIRED;
210 210
211 /* Initialise reference frame sign bias structure to defaults */211 /* Initialize reference frame sign bias structure to defaults */
212 vpx_memset(oci->ref_frame_sign_bias, 0, sizeof(oci->ref_frame_sign_bias));212 vpx_memset(oci->ref_frame_sign_bias, 0, sizeof(oci->ref_frame_sign_bias));
213 213
214 /* Default disable buffer to buffer copying */214 /* Default disable buffer to buffer copying */
@@ -220,13 +220,3 @@ void vp8_remove_common(VP8_COMMON *oci) · 5 unmodified lines
220{220{
221 vp8_de_alloc_frame_buffers(oci);221 vp8_de_alloc_frame_buffers(oci);
222}222}
223
224void vp8_initialize_common()
225{
226 vp8_coef_tree_initialize();
227
228 vp8_entropy_mode_init();
229
230 vp8_init_scan_order_mask();
231
232}
vp8/common/entropy.c+73−54
@@ -8,23 +8,11 @@ · 7 unmodified lines
8 * be found in the AUTHORS file in the root of the source tree.8 * be found in the AUTHORS file in the root of the source tree.
9 */9 */
10 10
11
12#include <stdio.h>
13
14#include "entropy.h"11#include "entropy.h"
15#include "string.h"
16#include "blockd.h"12#include "blockd.h"
17#include "onyxc_int.h"13#include "onyxc_int.h"
18#include "vpx_mem/vpx_mem.h"14#include "vpx_mem/vpx_mem.h"
19 15
20#define uchar unsigned char /* typedefs can clash */
21#define uint unsigned int
22
23typedef const uchar cuchar;
24typedef const uint cuint;
25
26typedef vp8_prob Prob;
27
28#include "coefupdateprobs.h"16#include "coefupdateprobs.h"
29 17
30DECLARE_ALIGNED(16, const unsigned char, vp8_norm[256]) =18DECLARE_ALIGNED(16, const unsigned char, vp8_norm[256]) =
@@ -47,10 +35,11 @@ DECLARE_ALIGNED(16, const unsigned char, vp8_norm[256]) = · 16 unmodified lines
47 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 035 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
48};36};
49 37
50DECLARE_ALIGNED(16, cuchar, vp8_coef_bands[16]) =38DECLARE_ALIGNED(16, const unsigned char, vp8_coef_bands[16]) =
51{ 0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7};39{ 0, 1, 2, 3, 6, 4, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7};
52 40
53DECLARE_ALIGNED(16, cuchar, vp8_prev_token_class[MAX_ENTROPY_TOKENS]) =41DECLARE_ALIGNED(16, const unsigned char,
42 vp8_prev_token_class[MAX_ENTROPY_TOKENS]) =
54{ 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0};43{ 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0};
55 44
56DECLARE_ALIGNED(16, const int, vp8_default_zig_zag1d[16]) =45DECLARE_ALIGNED(16, const int, vp8_default_zig_zag1d[16]) =
@@ -69,7 +58,26 @@ DECLARE_ALIGNED(16, const short, vp8_default_inv_zig_zag[16]) = · 12 unmodified lines
69 10, 11, 15, 1658 10, 11, 15, 16
70};59};
71 60
72DECLARE_ALIGNED(16, short, vp8_default_zig_zag_mask[16]);61/* vp8_default_zig_zag_mask generated with:
62
63 void vp8_init_scan_order_mask()
64 {
65 int i;
66
67 for (i = 0; i < 16; i++)
68 {
69 vp8_default_zig_zag_mask[vp8_default_zig_zag1d[i]] = 1 << i;
70 }
71
72 }
73*/
74DECLARE_ALIGNED(16, const short, vp8_default_zig_zag_mask[16]) =
75{
76 1, 2, 32, 64,
77 4, 16, 128, 4096,
78 8, 256, 2048, 8192,
79 512, 1024, 16384, -32768
80};
73 81
74const int vp8_mb_feature_data_bits[MB_LVL_MAX] = {7, 6};82const int vp8_mb_feature_data_bits[MB_LVL_MAX] = {7, 6};
75 83
@@ -90,56 +98,72 @@ const vp8_tree_index vp8_coef_tree[ 22] = /* corresponding _CONTEXT_NODEs */ · 14 unmodified lines
90 -DCT_VAL_CATEGORY5, -DCT_VAL_CATEGORY6 /* 10 = CAT_FIVE */98 -DCT_VAL_CATEGORY5, -DCT_VAL_CATEGORY6 /* 10 = CAT_FIVE */
91};99};
92 100
93struct vp8_token_struct vp8_coef_encodings[MAX_ENTROPY_TOKENS];101/* vp8_coef_encodings generated with:
102 vp8_tokens_from_tree(vp8_coef_encodings, vp8_coef_tree);
103*/
104const vp8_token vp8_coef_encodings[MAX_ENTROPY_TOKENS] =
105{
106 {2, 2},
107 {6, 3},
108 {28, 5},
109 {58, 6},
110 {59, 6},
111 {60, 6},
112 {61, 6},
113 {124, 7},
114 {125, 7},
115 {126, 7},
116 {127, 7},
117 {0, 1}
118};
94 119
95/* Trees for extra bits. Probabilities are constant and120/* Trees for extra bits. Probabilities are constant and
96 do not depend on previously encoded bits */121 do not depend on previously encoded bits */
97 122
98static const Prob Pcat1[] = { 159};123static const vp8_prob Pcat1[] = { 159};
99static const Prob Pcat2[] = { 165, 145};124static const vp8_prob Pcat2[] = { 165, 145};
100static const Prob Pcat3[] = { 173, 148, 140};125static const vp8_prob Pcat3[] = { 173, 148, 140};
101static const Prob Pcat4[] = { 176, 155, 140, 135};126static const vp8_prob Pcat4[] = { 176, 155, 140, 135};
102static const Prob Pcat5[] = { 180, 157, 141, 134, 130};127static const vp8_prob Pcat5[] = { 180, 157, 141, 134, 130};
103static const Prob Pcat6[] =128static const vp8_prob Pcat6[] =
104{ 254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129};129{ 254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129};
105 130
106static vp8_tree_index cat1[2], cat2[4], cat3[6], cat4[8], cat5[10], cat6[22];
107 131
108void vp8_init_scan_order_mask()132/* tree index tables generated with:
109{
110 int i;
111 133
112 for (i = 0; i < 16; i++)134 void init_bit_tree(vp8_tree_index *p, int n)
113 {135 {
114 vp8_default_zig_zag_mask[vp8_default_zig_zag1d[i]] = 1 << i;136 int i = 0;
115 }
116 137
117}138 while (++i < n)
139 {
140 p[0] = p[1] = i << 1;
141 p += 2;
142 }
118 143
119static void init_bit_tree(vp8_tree_index *p, int n)144 p[0] = p[1] = 0;
120{145 }
121 int i = 0;
122 146
123 while (++i < n)147 void init_bit_trees()
124 {148 {
125 p[0] = p[1] = i << 1;149 init_bit_tree(cat1, 1);
126 p += 2;150 init_bit_tree(cat2, 2);
151 init_bit_tree(cat3, 3);
152 init_bit_tree(cat4, 4);
153 init_bit_tree(cat5, 5);
154 init_bit_tree(cat6, 11);
127 }155 }
156*/
128 157
129 p[0] = p[1] = 0;158static const vp8_tree_index cat1[2] = { 0, 0 };
130}159static const vp8_tree_index cat2[4] = { 2, 2, 0, 0 };
160static const vp8_tree_index cat3[6] = { 2, 2, 4, 4, 0, 0 };
161static const vp8_tree_index cat4[8] = { 2, 2, 4, 4, 6, 6, 0, 0 };
162static const vp8_tree_index cat5[10] = { 2, 2, 4, 4, 6, 6, 8, 8, 0, 0 };
163static const vp8_tree_index cat6[22] = { 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12,
164 14, 14, 16, 16, 18, 18, 20, 20, 0, 0 };
131 165
132static void init_bit_trees()166const vp8_extra_bit_struct vp8_extra_bits[12] =
133{
134 init_bit_tree(cat1, 1);
135 init_bit_tree(cat2, 2);
136 init_bit_tree(cat3, 3);
137 init_bit_tree(cat4, 4);
138 init_bit_tree(cat5, 5);
139 init_bit_tree(cat6, 11);
140}
141
142vp8_extra_bit_struct vp8_extra_bits[12] =
143{167{
144 { 0, 0, 0, 0},168 { 0, 0, 0, 0},
145 { 0, 0, 0, 1},169 { 0, 0, 0, 1},
@@ -163,8 +187,3 @@ void vp8_default_coef_probs(VP8_COMMON *pc) · 17 unmodified lines
163 sizeof(default_coef_probs));187 sizeof(default_coef_probs));
164}188}
165 189
166void vp8_coef_tree_initialize()
167{
168 init_bit_trees();
169 vp8_tokens_from_tree(vp8_coef_encodings, vp8_coef_tree);
170}
vp8/common/entropy.h+3−3
@@ -35,7 +35,7 @@ · 34 unmodified lines
35 35
36extern const vp8_tree_index vp8_coef_tree[];36extern const vp8_tree_index vp8_coef_tree[];
37 37
38extern struct vp8_token_struct vp8_coef_encodings[MAX_ENTROPY_TOKENS];38extern const struct vp8_token_struct vp8_coef_encodings[MAX_ENTROPY_TOKENS];
39 39
40typedef struct40typedef struct
41{41{
@@ -45,7 +45,7 @@ typedef struct · 3 unmodified lines
45 int base_val;45 int base_val;
46} vp8_extra_bit_struct;46} vp8_extra_bit_struct;
47 47
48extern vp8_extra_bit_struct vp8_extra_bits[12]; /* indexed by token value */48extern const vp8_extra_bit_struct vp8_extra_bits[12]; /* indexed by token value */
49 49
50#define PROB_UPDATE_BASELINE_COST 750#define PROB_UPDATE_BASELINE_COST 7
51 51
@@ -94,7 +94,7 @@ void vp8_default_coef_probs(struct VP8Common *); · 42 unmodified lines
94 94
95extern DECLARE_ALIGNED(16, const int, vp8_default_zig_zag1d[16]);95extern DECLARE_ALIGNED(16, const int, vp8_default_zig_zag1d[16]);
96extern DECLARE_ALIGNED(16, const short, vp8_default_inv_zig_zag[16]);96extern DECLARE_ALIGNED(16, const short, vp8_default_inv_zig_zag[16]);
97extern short vp8_default_zig_zag_mask[16];97extern DECLARE_ALIGNED(16, const short, vp8_default_zig_zag_mask[16]);
98extern const int vp8_mb_feature_data_bits[MB_LVL_MAX];98extern const int vp8_mb_feature_data_bits[MB_LVL_MAX];
99 99
100void vp8_coef_tree_initialize(void);100void vp8_coef_tree_initialize(void);
vp8/common/entropymode.c+10−98
@@ -8,22 +8,13 @@ · 7 unmodified lines
8 * be found in the AUTHORS file in the root of the source tree.8 * be found in the AUTHORS file in the root of the source tree.
9 */9 */
10 10
11#define USE_PREBUILT_TABLES
11 12
12#include "entropymode.h"13#include "entropymode.h"
13#include "entropy.h"14#include "entropy.h"
14#include "vpx_mem/vpx_mem.h"15#include "vpx_mem/vpx_mem.h"
15 16
16static const unsigned int kf_y_mode_cts[VP8_YMODES] = { 1607, 915, 812, 811, 5455};17#include "vp8_entropymodedata.h"
17static const unsigned int y_mode_cts [VP8_YMODES] = { 8080, 1908, 1582, 1007, 5874};
18
19static const unsigned int uv_mode_cts [VP8_UV_MODES] = { 59483, 13605, 16492, 4230};
20static const unsigned int kf_uv_mode_cts[VP8_UV_MODES] = { 5319, 1904, 1703, 674};
21
22static const unsigned int bmode_cts[VP8_BINTRAMODES] =
23{
24 43891, 17694, 10036, 3920, 3363, 2546, 5119, 3221, 2471, 1723
25};
26
27 18
28int vp8_mv_cont(const int_mv *l, const int_mv *a)19int vp8_mv_cont(const int_mv *l, const int_mv *a)
29{20{
@@ -59,7 +50,7 @@ const vp8_prob vp8_sub_mv_ref_prob2 [SUBMVREF_COUNT][VP8_SUBMVREFS-1] = · 29 unmodified lines
59 50
60 51
61 52
62vp8_mbsplit vp8_mbsplits [VP8_NUMMBSPLITS] =53const vp8_mbsplit vp8_mbsplits [VP8_NUMMBSPLITS] =
63{54{
64 {55 {
65 0, 0, 0, 0,56 0, 0, 0, 0,
@@ -84,7 +75,7 @@ vp8_mbsplit vp8_mbsplits [VP8_NUMMBSPLITS] = · 18 unmodified lines
84 4, 5, 6, 7,75 4, 5, 6, 7,
85 8, 9, 10, 11,76 8, 9, 10, 11,
86 12, 13, 14, 15,77 12, 13, 14, 15,
87 },78 }
88};79};
89 80
90const int vp8_mbsplit_count [VP8_NUMMBSPLITS] = { 2, 2, 4, 16};81const int vp8_mbsplit_count [VP8_NUMMBSPLITS] = { 2, 2, 4, 16};
@@ -155,17 +146,6 @@ const vp8_tree_index vp8_sub_mv_ref_tree[6] = · 64 unmodified lines
155 -ZERO4X4, -NEW4X4146 -ZERO4X4, -NEW4X4
156};147};
157 148
158
159struct vp8_token_struct vp8_bmode_encodings [VP8_BINTRAMODES];
160struct vp8_token_struct vp8_ymode_encodings [VP8_YMODES];
161struct vp8_token_struct vp8_kf_ymode_encodings [VP8_YMODES];
162struct vp8_token_struct vp8_uv_mode_encodings [VP8_UV_MODES];
163struct vp8_token_struct vp8_mbsplit_encodings [VP8_NUMMBSPLITS];
164
165struct vp8_token_struct vp8_mv_ref_encoding_array [VP8_MVREFS];
166struct vp8_token_struct vp8_sub_mv_ref_encoding_array [VP8_SUBMVREFS];
167
168
169const vp8_tree_index vp8_small_mvtree [14] =149const vp8_tree_index vp8_small_mvtree [14] =
170{150{
171 2, 8,151 2, 8,
@@ -177,89 +157,21 @@ const vp8_tree_index vp8_small_mvtree [14] = · 5 unmodified lines
177 -6, -7157 -6, -7
178};158};
179 159
180struct vp8_token_struct vp8_small_mvencodings [8];
181
182void vp8_init_mbmode_probs(VP8_COMMON *x)160void vp8_init_mbmode_probs(VP8_COMMON *x)
183{161{
184 unsigned int bct [VP8_YMODES] [2]; /* num Ymodes > num UV modes */162 vpx_memcpy(x->fc.ymode_prob, vp8_ymode_prob, sizeof(vp8_ymode_prob));
185 163 vpx_memcpy(x->kf_ymode_prob, kf_ymode_prob, sizeof(kf_ymode_prob));
186 vp8_tree_probs_from_distribution(164 vpx_memcpy(x->fc.uv_mode_prob, vp8_uv_mode_prob, sizeof(vp8_uv_mode_prob));
187 VP8_YMODES, vp8_ymode_encodings, vp8_ymode_tree,165 vpx_memcpy(x->kf_uv_mode_prob, vp8_kf_uv_mode_prob, sizeof(vp8_kf_uv_mode_prob));
188 x->fc.ymode_prob, bct, y_mode_cts,
189 256, 1
190 );
191 vp8_tree_probs_from_distribution(
192 VP8_YMODES, vp8_kf_ymode_encodings, vp8_kf_ymode_tree,
193 x->kf_ymode_prob, bct, kf_y_mode_cts,
194 256, 1
195 );
196 vp8_tree_probs_from_distribution(
197 VP8_UV_MODES, vp8_uv_mode_encodings, vp8_uv_mode_tree,
198 x->fc.uv_mode_prob, bct, uv_mode_cts,
199 256, 1
200 );
201 vp8_tree_probs_from_distribution(
202 VP8_UV_MODES, vp8_uv_mode_encodings, vp8_uv_mode_tree,
203 x->kf_uv_mode_prob, bct, kf_uv_mode_cts,
204 256, 1
205 );
206 vpx_memcpy(x->fc.sub_mv_ref_prob, sub_mv_ref_prob, sizeof(sub_mv_ref_prob));166 vpx_memcpy(x->fc.sub_mv_ref_prob, sub_mv_ref_prob, sizeof(sub_mv_ref_prob));
207}167}
208 168
209
210static void intra_bmode_probs_from_distribution(
211 vp8_prob p [VP8_BINTRAMODES-1],
212 unsigned int branch_ct [VP8_BINTRAMODES-1] [2],
213 const unsigned int events [VP8_BINTRAMODES]
214)
215{
216 vp8_tree_probs_from_distribution(
217 VP8_BINTRAMODES, vp8_bmode_encodings, vp8_bmode_tree,
218 p, branch_ct, events,
219 256, 1
220 );
221}
222
223void vp8_default_bmode_probs(vp8_prob p [VP8_BINTRAMODES-1])169void vp8_default_bmode_probs(vp8_prob p [VP8_BINTRAMODES-1])
224{170{
225 unsigned int branch_ct [VP8_BINTRAMODES-1] [2];171 vpx_memcpy(p, vp8_bmode_prob, sizeof(vp8_bmode_prob));
226 intra_bmode_probs_from_distribution(p, branch_ct, bmode_cts);
227}172}
228 173
229void vp8_kf_default_bmode_probs(vp8_prob p [VP8_BINTRAMODES] [VP8_BINTRAMODES] [VP8_BINTRAMODES-1])174void vp8_kf_default_bmode_probs(vp8_prob p [VP8_BINTRAMODES] [VP8_BINTRAMODES] [VP8_BINTRAMODES-1])
230{175{
231 unsigned int branch_ct [VP8_BINTRAMODES-1] [2];176 vpx_memcpy(p, vp8_kf_bmode_prob, sizeof(vp8_kf_bmode_prob));
232
233 int i = 0;
234
235 do
236 {
237 int j = 0;
238
239 do
240 {
241 intra_bmode_probs_from_distribution(
242 p[i][j], branch_ct, vp8_kf_default_bmode_counts[i][j]);
243
244 }
245 while (++j < VP8_BINTRAMODES);
246 }
247 while (++i < VP8_BINTRAMODES);
248}
249
250
251void vp8_entropy_mode_init()
252{
253 vp8_tokens_from_tree(vp8_bmode_encodings, vp8_bmode_tree);
254 vp8_tokens_from_tree(vp8_ymode_encodings, vp8_ymode_tree);
255 vp8_tokens_from_tree(vp8_kf_ymode_encodings, vp8_kf_ymode_tree);
256 vp8_tokens_from_tree(vp8_uv_mode_encodings, vp8_uv_mode_tree);
257 vp8_tokens_from_tree(vp8_mbsplit_encodings, vp8_mbsplit_tree);
258
259 vp8_tokens_from_tree_offset(vp8_mv_ref_encoding_array,
260 vp8_mv_ref_tree, NEARESTMV);
261 vp8_tokens_from_tree_offset(vp8_sub_mv_ref_encoding_array,
262 vp8_sub_mv_ref_tree, LEFT4X4);
263
264 vp8_tokens_from_tree(vp8_small_mvencodings, vp8_small_mvtree);
265}177}
vp8/common/entropymode.h+8−10
@@ -52,22 +52,20 @@ extern const vp8_tree_index vp8_mbsplit_tree[]; · 51 unmodified lines
52extern const vp8_tree_index vp8_mv_ref_tree[];52extern const vp8_tree_index vp8_mv_ref_tree[];
53extern const vp8_tree_index vp8_sub_mv_ref_tree[];53extern const vp8_tree_index vp8_sub_mv_ref_tree[];
54 54
55extern struct vp8_token_struct vp8_bmode_encodings [VP8_BINTRAMODES];55extern const struct vp8_token_struct vp8_bmode_encodings[VP8_BINTRAMODES];
56extern struct vp8_token_struct vp8_ymode_encodings [VP8_YMODES];56extern const struct vp8_token_struct vp8_ymode_encodings[VP8_YMODES];
57extern struct vp8_token_struct vp8_kf_ymode_encodings [VP8_YMODES];57extern const struct vp8_token_struct vp8_kf_ymode_encodings[VP8_YMODES];
58extern struct vp8_token_struct vp8_uv_mode_encodings [VP8_UV_MODES];58extern const struct vp8_token_struct vp8_uv_mode_encodings[VP8_UV_MODES];
59extern struct vp8_token_struct vp8_mbsplit_encodings [VP8_NUMMBSPLITS];59extern const struct vp8_token_struct vp8_mbsplit_encodings[VP8_NUMMBSPLITS];
60 60
61/* Inter mode values do not start at zero */61/* Inter mode values do not start at zero */
62 62
63extern struct vp8_token_struct vp8_mv_ref_encoding_array [VP8_MVREFS];63extern const struct vp8_token_struct vp8_mv_ref_encoding_array[VP8_MVREFS];
64extern struct vp8_token_struct vp8_sub_mv_ref_encoding_array [VP8_SUBMVREFS];64extern const struct vp8_token_struct vp8_sub_mv_ref_encoding_array[VP8_SUBMVREFS];
65 65
66extern const vp8_tree_index vp8_small_mvtree[];66extern const vp8_tree_index vp8_small_mvtree[];
67 67
68extern struct vp8_token_struct vp8_small_mvencodings [8];68extern const struct vp8_token_struct vp8_small_mvencodings[8];
69
70void vp8_entropy_mode_init(void);
71 69
72void vp8_init_mbmode_probs(VP8_COMMON *x);70void vp8_init_mbmode_probs(VP8_COMMON *x);
73 71
vp8/common/modecontext.c+0−146
@@ -1,146 +0,0 @@
1/*
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11
12#include "entropymode.h"
13
14const unsigned int vp8_kf_default_bmode_counts [VP8_BINTRAMODES] [VP8_BINTRAMODES] [VP8_BINTRAMODES] =
15{
16 {
17 /*Above Mode : 0*/
18 { 43438, 2195, 470, 316, 615, 171, 217, 412, 124, 160, }, /* left_mode 0 */
19 { 5722, 2751, 296, 291, 81, 68, 80, 101, 100, 170, }, /* left_mode 1 */
20 { 1629, 201, 307, 25, 47, 16, 34, 72, 19, 28, }, /* left_mode 2 */
21 { 332, 266, 36, 500, 20, 65, 23, 14, 154, 106, }, /* left_mode 3 */
22 { 450, 97, 10, 24, 117, 10, 2, 12, 8, 71, }, /* left_mode 4 */
23 { 384, 49, 29, 44, 12, 162, 51, 5, 87, 42, }, /* left_mode 5 */
24 { 495, 53, 157, 27, 14, 57, 180, 17, 17, 34, }, /* left_mode 6 */
25 { 695, 64, 62, 9, 27, 5, 3, 147, 10, 26, }, /* left_mode 7 */
26 { 230, 54, 20, 124, 16, 125, 29, 12, 283, 37, }, /* left_mode 8 */
27 { 260, 87, 21, 120, 32, 16, 33, 16, 33, 203, }, /* left_mode 9 */
28 },
29 {
30 /*Above Mode : 1*/
31 { 3934, 2573, 355, 137, 128, 87, 133, 117, 37, 27, }, /* left_mode 0 */
32 { 1036, 1929, 278, 135, 27, 37, 48, 55, 41, 91, }, /* left_mode 1 */
33 { 223, 256, 253, 15, 13, 9, 28, 64, 3, 3, }, /* left_mode 2 */
34 { 120, 129, 17, 316, 15, 11, 9, 4, 53, 74, }, /* left_mode 3 */
35 { 129, 58, 6, 11, 38, 2, 0, 5, 2, 67, }, /* left_mode 4 */
36 { 53, 22, 11, 16, 8, 26, 14, 3, 19, 12, }, /* left_mode 5 */
37 { 59, 26, 61, 11, 4, 9, 35, 13, 8, 8, }, /* left_mode 6 */
38 { 101, 52, 40, 8, 5, 2, 8, 59, 2, 20, }, /* left_mode 7 */
39 { 48, 34, 10, 52, 8, 15, 6, 6, 63, 20, }, /* left_mode 8 */
40 { 96, 48, 22, 63, 11, 14, 5, 8, 9, 96, }, /* left_mode 9 */
41 },
42 {
43 /*Above Mode : 2*/
44 { 709, 461, 506, 36, 27, 33, 151, 98, 24, 6, }, /* left_mode 0 */
45 { 201, 375, 442, 27, 13, 8, 46, 58, 6, 19, }, /* left_mode 1 */
46 { 122, 140, 417, 4, 13, 3, 33, 59, 4, 2, }, /* left_mode 2 */
47 { 36, 17, 22, 16, 6, 8, 12, 17, 9, 21, }, /* left_mode 3 */
48 { 51, 15, 7, 1, 14, 0, 4, 5, 3, 22, }, /* left_mode 4 */
49 { 18, 11, 30, 9, 7, 20, 11, 5, 2, 6, }, /* left_mode 5 */
50 { 38, 21, 103, 9, 4, 12, 79, 13, 2, 5, }, /* left_mode 6 */
51 { 64, 17, 66, 2, 12, 4, 2, 65, 4, 5, }, /* left_mode 7 */
52 { 14, 7, 7, 16, 3, 11, 4, 13, 15, 16, }, /* left_mode 8 */
53 { 36, 8, 32, 9, 9, 4, 14, 7, 6, 24, }, /* left_mode 9 */
54 },
55 {
56 /*Above Mode : 3*/
57 { 1340, 173, 36, 119, 30, 10, 13, 10, 20, 26, }, /* left_mode 0 */
58 { 156, 293, 26, 108, 5, 16, 2, 4, 23, 30, }, /* left_mode 1 */
59 { 60, 34, 13, 7, 3, 3, 0, 8, 4, 5, }, /* left_mode 2 */
60 { 72, 64, 1, 235, 3, 9, 2, 7, 28, 38, }, /* left_mode 3 */
61 { 29, 14, 1, 3, 5, 0, 2, 2, 5, 13, }, /* left_mode 4 */
62 { 22, 7, 4, 11, 2, 5, 1, 2, 6, 4, }, /* left_mode 5 */
63 { 18, 14, 5, 6, 4, 3, 14, 0, 9, 2, }, /* left_mode 6 */
64 { 41, 10, 7, 1, 2, 0, 0, 10, 2, 1, }, /* left_mode 7 */
65 { 23, 19, 2, 33, 1, 5, 2, 0, 51, 8, }, /* left_mode 8 */
66 { 33, 26, 7, 53, 3, 9, 3, 3, 9, 19, }, /* left_mode 9 */
67 },
68 {
69 /*Above Mode : 4*/
70 { 410, 165, 43, 31, 66, 15, 30, 54, 8, 17, }, /* left_mode 0 */
71 { 115, 64, 27, 18, 30, 7, 11, 15, 4, 19, }, /* left_mode 1 */
72 { 31, 23, 25, 1, 7, 2, 2, 10, 0, 5, }, /* left_mode 2 */
73 { 17, 4, 1, 6, 8, 2, 7, 5, 5, 21, }, /* left_mode 3 */
74 { 120, 12, 1, 2, 83, 3, 0, 4, 1, 40, }, /* left_mode 4 */
75 { 4, 3, 1, 2, 1, 2, 5, 0, 3, 6, }, /* left_mode 5 */
76 { 10, 2, 13, 6, 6, 6, 8, 2, 4, 5, }, /* left_mode 6 */
77 { 58, 10, 5, 1, 28, 1, 1, 33, 1, 9, }, /* left_mode 7 */
78 { 8, 2, 1, 4, 2, 5, 1, 1, 2, 10, }, /* left_mode 8 */
79 { 76, 7, 5, 7, 18, 2, 2, 0, 5, 45, }, /* left_mode 9 */
80 },
81 {
82 /*Above Mode : 5*/
83 { 444, 46, 47, 20, 14, 110, 60, 14, 60, 7, }, /* left_mode 0 */
84 { 59, 57, 25, 18, 3, 17, 21, 6, 14, 6, }, /* left_mode 1 */
85 { 24, 17, 20, 6, 4, 13, 7, 2, 3, 2, }, /* left_mode 2 */
86 { 13, 11, 5, 14, 4, 9, 2, 4, 15, 7, }, /* left_mode 3 */
87 { 8, 5, 2, 1, 4, 0, 1, 1, 2, 12, }, /* left_mode 4 */
88 { 19, 5, 5, 7, 4, 40, 6, 3, 10, 4, }, /* left_mode 5 */
89 { 16, 5, 9, 1, 1, 16, 26, 2, 10, 4, }, /* left_mode 6 */
90 { 11, 4, 8, 1, 1, 4, 4, 5, 4, 1, }, /* left_mode 7 */
91 { 15, 1, 3, 7, 3, 21, 7, 1, 34, 5, }, /* left_mode 8 */
92 { 18, 5, 1, 3, 4, 3, 7, 1, 2, 9, }, /* left_mode 9 */
93 },
94 {
95 /*Above Mode : 6*/
96 { 476, 149, 94, 13, 14, 77, 291, 27, 23, 3, }, /* left_mode 0 */
97 { 79, 83, 42, 14, 2, 12, 63, 2, 4, 14, }, /* left_mode 1 */
98 { 43, 36, 55, 1, 3, 8, 42, 11, 5, 1, }, /* left_mode 2 */
99 { 9, 9, 6, 16, 1, 5, 6, 3, 11, 10, }, /* left_mode 3 */
100 { 10, 3, 1, 3, 10, 1, 0, 1, 1, 4, }, /* left_mode 4 */
101 { 14, 6, 15, 5, 1, 20, 25, 2, 5, 0, }, /* left_mode 5 */
102 { 28, 7, 51, 1, 0, 8, 127, 6, 2, 5, }, /* left_mode 6 */
103 { 13, 3, 3, 2, 3, 1, 2, 8, 1, 2, }, /* left_mode 7 */
104 { 10, 3, 3, 3, 3, 8, 2, 2, 9, 3, }, /* left_mode 8 */
105 { 13, 7, 11, 4, 0, 4, 6, 2, 5, 8, }, /* left_mode 9 */
106 },
107 {
108 /*Above Mode : 7*/
109 { 376, 135, 119, 6, 32, 8, 31, 224, 9, 3, }, /* left_mode 0 */
110 { 93, 60, 54, 6, 13, 7, 8, 92, 2, 12, }, /* left_mode 1 */
111 { 74, 36, 84, 0, 3, 2, 9, 67, 2, 1, }, /* left_mode 2 */
112 { 19, 4, 4, 8, 8, 2, 4, 7, 6, 16, }, /* left_mode 3 */
113 { 51, 7, 4, 1, 77, 3, 0, 14, 1, 15, }, /* left_mode 4 */
114 { 7, 7, 5, 7, 4, 7, 4, 5, 0, 3, }, /* left_mode 5 */
115 { 18, 2, 19, 2, 2, 4, 12, 11, 1, 2, }, /* left_mode 6 */
116 { 129, 6, 27, 1, 21, 3, 0, 189, 0, 6, }, /* left_mode 7 */
117 { 9, 1, 2, 8, 3, 7, 0, 5, 3, 3, }, /* left_mode 8 */
118 { 20, 4, 5, 10, 4, 2, 7, 17, 3, 16, }, /* left_mode 9 */
119 },
120 {
121 /*Above Mode : 8*/
122 { 617, 68, 34, 79, 11, 27, 25, 14, 75, 13, }, /* left_mode 0 */
123 { 51, 82, 21, 26, 6, 12, 13, 1, 26, 16, }, /* left_mode 1 */
124 { 29, 9, 12, 11, 3, 7, 1, 10, 2, 2, }, /* left_mode 2 */
125 { 17, 19, 11, 74, 4, 3, 2, 0, 58, 13, }, /* left_mode 3 */
126 { 10, 1, 1, 3, 4, 1, 0, 2, 1, 8, }, /* left_mode 4 */
127 { 14, 4, 5, 5, 1, 13, 2, 0, 27, 8, }, /* left_mode 5 */
128 { 10, 3, 5, 4, 1, 7, 6, 4, 5, 1, }, /* left_mode 6 */
129 { 10, 2, 6, 2, 1, 1, 1, 4, 2, 1, }, /* left_mode 7 */
130 { 14, 8, 5, 23, 2, 12, 6, 2, 117, 5, }, /* left_mode 8 */
131 { 9, 6, 2, 19, 1, 6, 3, 2, 9, 9, }, /* left_mode 9 */
132 },
133 {
134 /*Above Mode : 9*/
135 { 680, 73, 22, 38, 42, 5, 11, 9, 6, 28, }, /* left_mode 0 */
136 { 113, 112, 21, 22, 10, 2, 8, 4, 6, 42, }, /* left_mode 1 */
137 { 44, 20, 24, 6, 5, 4, 3, 3, 1, 2, }, /* left_mode 2 */
138 { 40, 23, 7, 71, 5, 2, 4, 1, 7, 22, }, /* left_mode 3 */
139 { 85, 9, 4, 4, 17, 2, 0, 3, 2, 23, }, /* left_mode 4 */
140 { 13, 4, 2, 6, 1, 7, 0, 1, 7, 6, }, /* left_mode 5 */
141 { 26, 6, 8, 3, 2, 3, 8, 1, 5, 4, }, /* left_mode 6 */
142 { 54, 8, 9, 6, 7, 0, 1, 11, 1, 3, }, /* left_mode 7 */
143 { 9, 10, 4, 13, 2, 5, 4, 2, 14, 8, }, /* left_mode 8 */
144 { 92, 9, 5, 19, 15, 3, 3, 1, 6, 58, }, /* left_mode 9 */
145 },
146};
vp8/common/onyxc_int.h+0−4
@@ -26,10 +26,6 @@ · 25 unmodified lines
26#include "header.h"26#include "header.h"
27/*#endif*/27/*#endif*/
28 28
29/* Create/destroy static data structures. */
30
31void vp8_initialize_common(void);
32
33#define MINQ 029#define MINQ 0
34#define MAXQ 12730#define MAXQ 127
35#define QINDEX_RANGE (MAXQ + 1)31#define QINDEX_RANGE (MAXQ + 1)
vp8/common/postproc.c+2−6
@@ -14,7 +14,6 @@ · 13 unmodified lines
14#include "vpx_scale/yv12config.h"14#include "vpx_scale/yv12config.h"
15#include "postproc.h"15#include "postproc.h"
16#include "common.h"16#include "common.h"
17#include "vpx_scale/yv12extend.h"
18#include "vpx_scale/vpxscale.h"17#include "vpx_scale/vpxscale.h"
19#include "systemdependent.h"18#include "systemdependent.h"
20 19
@@ -405,9 +404,6 @@ double vp8_gaussian(double sigma, double mu, double x) · 384 unmodified lines
405 (exp(-(x - mu) * (x - mu) / (2 * sigma * sigma)));404 (exp(-(x - mu) * (x - mu) / (2 * sigma * sigma)));
406}405}
407 406
408extern void (*vp8_clear_system_state)(void);
409
410
411static void fillrd(struct postproc_state *state, int q, int a)407static void fillrd(struct postproc_state *state, int q, int a)
412{408{
413 char char_dist[300];409 char char_dist[300];
@@ -755,7 +751,7 @@ int vp8_post_proc_frame(VP8_COMMON *oci, YV12_BUFFER_CONFIG *dest, vp8_ppflags_t · 341 unmodified lines
755 if (((flags & VP8D_DEBLOCK) || (flags & VP8D_DEMACROBLOCK)) &&751 if (((flags & VP8D_DEBLOCK) || (flags & VP8D_DEMACROBLOCK)) &&
756 oci->post_proc_buffer_int_used)752 oci->post_proc_buffer_int_used)
757 {753 {
758 vp8_yv12_copy_frame_ptr(&oci->post_proc_buffer, &oci->post_proc_buffer_int);754 vp8_yv12_copy_frame(&oci->post_proc_buffer, &oci->post_proc_buffer_int);
759 if (flags & VP8D_DEMACROBLOCK)755 if (flags & VP8D_DEMACROBLOCK)
760 {756 {
761 vp8_deblock_and_de_macro_block(&oci->post_proc_buffer_int, &oci->post_proc_buffer,757 vp8_deblock_and_de_macro_block(&oci->post_proc_buffer_int, &oci->post_proc_buffer,
@@ -784,7 +780,7 @@ int vp8_post_proc_frame(VP8_COMMON *oci, YV12_BUFFER_CONFIG *dest, vp8_ppflags_t · 22 unmodified lines
784 }780 }
785 else781 else
786 {782 {
787 vp8_yv12_copy_frame_ptr(oci->frame_to_show, &oci->post_proc_buffer);783 vp8_yv12_copy_frame(oci->frame_to_show, &oci->post_proc_buffer);
788 oci->postproc_state.last_base_qindex = oci->base_qindex;784 oci->postproc_state.last_base_qindex = oci->base_qindex;
789 }785 }
790 oci->postproc_state.last_frame_valid = 1;786 oci->postproc_state.last_frame_valid = 1;
vp8/common/rtcd_defs.sh+36−0
@@ -503,3 +503,39 @@ specialize vp8_yv12_copy_partial_frame neon · 502 unmodified lines
503 503
504# End of encoder only functions504# End of encoder only functions
505fi505fi
506
507# Scaler functions
508if [ "CONFIG_SPATIAL_RESAMPLING" != "yes" ]; then
509 prototype void vp8_horizontal_line_4_5_scale "const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width"
510 prototype void vp8_vertical_band_4_5_scale "unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width"
511 prototype void vp8_last_vertical_band_4_5_scale "unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width"
512 prototype void vp8_horizontal_line_2_3_scale "const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width"
513 prototype void vp8_vertical_band_2_3_scale "unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width"
514 prototype void vp8_last_vertical_band_2_3_scale "unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width"
515 prototype void vp8_horizontal_line_3_5_scale "const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width"
516 prototype void vp8_vertical_band_3_5_scale "unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width"
517 prototype void vp8_last_vertical_band_3_5_scale "unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width"
518 prototype void vp8_horizontal_line_3_4_scale "const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width"
519 prototype void vp8_vertical_band_3_4_scale "unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width"
520 prototype void vp8_last_vertical_band_3_4_scale "unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width"
521 prototype void vp8_horizontal_line_1_2_scale "const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width"
522 prototype void vp8_vertical_band_1_2_scale "unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width"
523 prototype void vp8_last_vertical_band_1_2_scale "unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width"
524 prototype void vp8_horizontal_line_5_4_scale "const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width"
525 prototype void vp8_vertical_band_5_4_scale "unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width"
526 prototype void vp8_horizontal_line_5_3_scale "const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width"
527 prototype void vp8_vertical_band_5_3_scale "unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width"
528 prototype void vp8_horizontal_line_2_1_scale "const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width"
529 prototype void vp8_vertical_band_2_1_scale "unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width"
530 prototype void vp8_vertical_band_2_1_scale_i "unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width"
531fi
532
533prototype void vp8_yv12_extend_frame_borders "struct yv12_buffer_config *ybf"
534specialize vp8_yv12_extend_frame_borders neon
535
536prototype void vp8_yv12_copy_frame "struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc"
537specialize vp8_yv12_copy_frame neon
538
539prototype void vp8_yv12_copy_y "struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc"
540specialize vp8_yv12_copy_y neon
541
vp8/common/vp8_entropymodedata.h+242−0
@@ -0,0 +1,242 @@
1/*
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9*/
10
11
12/*Generated file, included by entropymode.c*/
13
14
15const struct vp8_token_struct vp8_bmode_encodings[VP8_BINTRAMODES] =
16{
17 { 0, 1 },
18 { 2, 2 },
19 { 6, 3 },
20 { 28, 5 },
21 { 30, 5 },
22 { 58, 6 },
23 { 59, 6 },
24 { 62, 6 },
25 { 126, 7 },
26 { 127, 7 }
27};
28
29const struct vp8_token_struct vp8_ymode_encodings[VP8_YMODES] =
30{
31 { 0, 1 },
32 { 4, 3 },
33 { 5, 3 },
34 { 6, 3 },
35 { 7, 3 }
36};
37
38const struct vp8_token_struct vp8_kf_ymode_encodings[VP8_YMODES] =
39{
40 { 4, 3 },
41 { 5, 3 },
42 { 6, 3 },
43 { 7, 3 },
44 { 0, 1 }
45};
46
47const struct vp8_token_struct vp8_uv_mode_encodings[VP8_UV_MODES] =
48{
49 { 0, 1 },
50 { 2, 2 },
51 { 6, 3 },
52 { 7, 3 }
53};
54
55const struct vp8_token_struct vp8_mbsplit_encodings[VP8_NUMMBSPLITS] =
56{
57 { 6, 3 },
58 { 7, 3 },
59 { 2, 2 },
60 { 0, 1 }
61};
62
63const struct vp8_token_struct vp8_mv_ref_encoding_array[VP8_MVREFS] =
64{
65 { 2, 2 },
66 { 6, 3 },
67 { 0, 1 },
68 { 14, 4 },
69 { 15, 4 }
70};
71
72const struct vp8_token_struct vp8_sub_mv_ref_encoding_array[VP8_SUBMVREFS] =
73{
74 { 0, 1 },
75 { 2, 2 },
76 { 6, 3 },
77 { 7, 3 }
78};
79
80const struct vp8_token_struct vp8_small_mvencodings[8] =
81{
82 { 0, 3 },
83 { 1, 3 },
84 { 2, 3 },
85 { 3, 3 },
86 { 4, 3 },
87 { 5, 3 },
88 { 6, 3 },
89 { 7, 3 }
90};
91
92const vp8_prob vp8_ymode_prob[VP8_YMODES-1] =
93{
94 112, 86, 140, 37
95};
96
97const vp8_prob kf_ymode_prob[VP8_YMODES-1] =
98{
99 145, 156, 163, 128
100};
101
102const vp8_prob vp8_uv_mode_prob[VP8_UV_MODES-1] =
103{
104 162, 101, 204
105};
106
107const vp8_prob vp8_kf_uv_mode_prob[VP8_UV_MODES-1] =
108{
109 142, 114, 183
110};
111
112const vp8_prob vp8_bmode_prob[VP8_BINTRAMODES-1] =
113{
114 120, 90, 79, 133, 87, 85, 80, 111, 151
115};
116
117
118
119const vp8_prob vp8_kf_bmode_prob
120[VP8_BINTRAMODES] [VP8_BINTRAMODES] [VP8_BINTRAMODES-1] =
121{
122 {
123 { 231, 120, 48, 89, 115, 113, 120, 152, 112 },
124 { 152, 179, 64, 126, 170, 118, 46, 70, 95 },
125 { 175, 69, 143, 80, 85, 82, 72, 155, 103 },
126 { 56, 58, 10, 171, 218, 189, 17, 13, 152 },
127 { 144, 71, 10, 38, 171, 213, 144, 34, 26 },
128 { 114, 26, 17, 163, 44, 195, 21, 10, 173 },
129 { 121, 24, 80, 195, 26, 62, 44, 64, 85 },
130 { 170, 46, 55, 19, 136, 160, 33, 206, 71 },
131 { 63, 20, 8, 114, 114, 208, 12, 9, 226 },
132 { 81, 40, 11, 96, 182, 84, 29, 16, 36 }
133 },
134 {
135 { 134, 183, 89, 137, 98, 101, 106, 165, 148 },
136 { 72, 187, 100, 130, 157, 111, 32, 75, 80 },
137 { 66, 102, 167, 99, 74, 62, 40, 234, 128 },
138 { 41, 53, 9, 178, 241, 141, 26, 8, 107 },
139 { 104, 79, 12, 27, 217, 255, 87, 17, 7 },
140 { 74, 43, 26, 146, 73, 166, 49, 23, 157 },
141 { 65, 38, 105, 160, 51, 52, 31, 115, 128 },
142 { 87, 68, 71, 44, 114, 51, 15, 186, 23 },
143 { 47, 41, 14, 110, 182, 183, 21, 17, 194 },
144 { 66, 45, 25, 102, 197, 189, 23, 18, 22 }
145 },
146 {
147 { 88, 88, 147, 150, 42, 46, 45, 196, 205 },
148 { 43, 97, 183, 117, 85, 38, 35, 179, 61 },
149 { 39, 53, 200, 87, 26, 21, 43, 232, 171 },
150 { 56, 34, 51, 104, 114, 102, 29, 93, 77 },
151 { 107, 54, 32, 26, 51, 1, 81, 43, 31 },
152 { 39, 28, 85, 171, 58, 165, 90, 98, 64 },
153 { 34, 22, 116, 206, 23, 34, 43, 166, 73 },
154 { 68, 25, 106, 22, 64, 171, 36, 225, 114 },
155 { 34, 19, 21, 102, 132, 188, 16, 76, 124 },
156 { 62, 18, 78, 95, 85, 57, 50, 48, 51 }
157 },
158 {
159 { 193, 101, 35, 159, 215, 111, 89, 46, 111 },
160 { 60, 148, 31, 172, 219, 228, 21, 18, 111 },
161 { 112, 113, 77, 85, 179, 255, 38, 120, 114 },
162 { 40, 42, 1, 196, 245, 209, 10, 25, 109 },
163 { 100, 80, 8, 43, 154, 1, 51, 26, 71 },
164 { 88, 43, 29, 140, 166, 213, 37, 43, 154 },
165 { 61, 63, 30, 155, 67, 45, 68, 1, 209 },
166 { 142, 78, 78, 16, 255, 128, 34, 197, 171 },
167 { 41, 40, 5, 102, 211, 183, 4, 1, 221 },
168 { 51, 50, 17, 168, 209, 192, 23, 25, 82 }
169 },
170 {
171 { 125, 98, 42, 88, 104, 85, 117, 175, 82 },
172 { 95, 84, 53, 89, 128, 100, 113, 101, 45 },
173 { 75, 79, 123, 47, 51, 128, 81, 171, 1 },
174 { 57, 17, 5, 71, 102, 57, 53, 41, 49 },
175 { 115, 21, 2, 10, 102, 255, 166, 23, 6 },
176 { 38, 33, 13, 121, 57, 73, 26, 1, 85 },
177 { 41, 10, 67, 138, 77, 110, 90, 47, 114 },
178 { 101, 29, 16, 10, 85, 128, 101, 196, 26 },
179 { 57, 18, 10, 102, 102, 213, 34, 20, 43 },
180 { 117, 20, 15, 36, 163, 128, 68, 1, 26 }
181 },
182 {
183 { 138, 31, 36, 171, 27, 166, 38, 44, 229 },
184 { 67, 87, 58, 169, 82, 115, 26, 59, 179 },
185 { 63, 59, 90, 180, 59, 166, 93, 73, 154 },
186 { 40, 40, 21, 116, 143, 209, 34, 39, 175 },
187 { 57, 46, 22, 24, 128, 1, 54, 17, 37 },
188 { 47, 15, 16, 183, 34, 223, 49, 45, 183 },
189 { 46, 17, 33, 183, 6, 98, 15, 32, 183 },
190 { 65, 32, 73, 115, 28, 128, 23, 128, 205 },
191 { 40, 3, 9, 115, 51, 192, 18, 6, 223 },
192 { 87, 37, 9, 115, 59, 77, 64, 21, 47 }
193 },
194 {
195 { 104, 55, 44, 218, 9, 54, 53, 130, 226 },
196 { 64, 90, 70, 205, 40, 41, 23, 26, 57 },
197 { 54, 57, 112, 184, 5, 41, 38, 166, 213 },
198 { 30, 34, 26, 133, 152, 116, 10, 32, 134 },
199 { 75, 32, 12, 51, 192, 255, 160, 43, 51 },
200 { 39, 19, 53, 221, 26, 114, 32, 73, 255 },
201 { 31, 9, 65, 234, 2, 15, 1, 118, 73 },
202 { 88, 31, 35, 67, 102, 85, 55, 186, 85 },
203 { 56, 21, 23, 111, 59, 205, 45, 37, 192 },
204 { 55, 38, 70, 124, 73, 102, 1, 34, 98 }
205 },
206 {
207 { 102, 61, 71, 37, 34, 53, 31, 243, 192 },
208 { 69, 60, 71, 38, 73, 119, 28, 222, 37 },
209 { 68, 45, 128, 34, 1, 47, 11, 245, 171 },
210 { 62, 17, 19, 70, 146, 85, 55, 62, 70 },
211 { 75, 15, 9, 9, 64, 255, 184, 119, 16 },
212 { 37, 43, 37, 154, 100, 163, 85, 160, 1 },
213 { 63, 9, 92, 136, 28, 64, 32, 201, 85 },
214 { 86, 6, 28, 5, 64, 255, 25, 248, 1 },
215 { 56, 8, 17, 132, 137, 255, 55, 116, 128 },
216 { 58, 15, 20, 82, 135, 57, 26, 121, 40 }
217 },
218 {
219 { 164, 50, 31, 137, 154, 133, 25, 35, 218 },
220 { 51, 103, 44, 131, 131, 123, 31, 6, 158 },
221 { 86, 40, 64, 135, 148, 224, 45, 183, 128 },
222 { 22, 26, 17, 131, 240, 154, 14, 1, 209 },
223 { 83, 12, 13, 54, 192, 255, 68, 47, 28 },
224 { 45, 16, 21, 91, 64, 222, 7, 1, 197 },
225 { 56, 21, 39, 155, 60, 138, 23, 102, 213 },
226 { 85, 26, 85, 85, 128, 128, 32, 146, 171 },
227 { 18, 11, 7, 63, 144, 171, 4, 4, 246 },
228 { 35, 27, 10, 146, 174, 171, 12, 26, 128 }
229 },
230 {
231 { 190, 80, 35, 99, 180, 80, 126, 54, 45 },
232 { 85, 126, 47, 87, 176, 51, 41, 20, 32 },
233 { 101, 75, 128, 139, 118, 146, 116, 128, 85 },
234 { 56, 41, 15, 176, 236, 85, 37, 9, 62 },
235 { 146, 36, 19, 30, 171, 255, 97, 27, 20 },
236 { 71, 30, 17, 119, 118, 255, 17, 18, 138 },
237 { 101, 38, 60, 138, 55, 70, 43, 26, 142 },
238 { 138, 45, 61, 62, 219, 1, 81, 188, 64 },
239 { 32, 41, 20, 117, 151, 142, 20, 21, 163 },
240 { 112, 19, 12, 61, 195, 128, 48, 4, 24 }
241 }
242};
vp8/decoder/decodframe.c+1−2
@@ -21,7 +21,6 @@ · 20 unmodified lines
21#include "vp8/common/entropymode.h"21#include "vp8/common/entropymode.h"
22#include "vp8/common/quant_common.h"22#include "vp8/common/quant_common.h"
23#include "vpx_scale/vpxscale.h"23#include "vpx_scale/vpxscale.h"
24#include "vpx_scale/yv12extend.h"
25#include "vp8/common/setupintrarecon.h"24#include "vp8/common/setupintrarecon.h"
26 25
27#include "decodemv.h"26#include "decodemv.h"
@@ -1135,7 +1134,7 @@ int vp8_decode_frame(VP8D_COMP *pbi) · 1107 unmodified lines
1135 {1134 {
1136 int i;1135 int i;
1137 vp8mt_decode_mb_rows(pbi, xd);1136 vp8mt_decode_mb_rows(pbi, xd);
1138 vp8_yv12_extend_frame_borders_ptr(&pc->yv12_fb[pc->new_fb_idx]); /*cm->frame_to_show);*/1137 vp8_yv12_extend_frame_borders(&pc->yv12_fb[pc->new_fb_idx]); /*cm->frame_to_show);*/
1139 for (i = 0; i < pbi->decoding_thread_count; ++i)1138 for (i = 0; i < pbi->decoding_thread_count; ++i)
1140 corrupt_tokens |= pbi->mb_row_di[i].mbd.corrupted;1139 corrupt_tokens |= pbi->mb_row_di[i].mbd.corrupted;
1141 }1140 }
vp8/decoder/onyxd_if.c+4−20
@@ -17,7 +17,6 @@ · 16 unmodified lines
17#include "onyxd_int.h"17#include "onyxd_int.h"
18#include "vpx_mem/vpx_mem.h"18#include "vpx_mem/vpx_mem.h"
19#include "vp8/common/alloccommon.h"19#include "vp8/common/alloccommon.h"
20#include "vpx_scale/yv12extend.h"
21#include "vp8/common/loopfilter.h"20#include "vp8/common/loopfilter.h"
22#include "vp8/common/swapyv12buffer.h"21#include "vp8/common/swapyv12buffer.h"
23#include "vp8/common/threading.h"22#include "vp8/common/threading.h"
@@ -42,20 +41,6 @@ extern void vp8cx_init_de_quantizer(VP8D_COMP *pbi); · 18 unmodified lines
42static int get_free_fb (VP8_COMMON *cm);41static int get_free_fb (VP8_COMMON *cm);
43static void ref_cnt_fb (int *buf, int *idx, int new_idx);42static void ref_cnt_fb (int *buf, int *idx, int new_idx);
44 43
45
46void vp8dx_initialize()
47{
48 static int init_done = 0;
49
50 if (!init_done)
51 {
52 vp8_initialize_common();
53 vp8_scale_machine_specific_config();
54 init_done = 1;
55 }
56}
57
58
59struct VP8D_COMP * vp8dx_create_decompressor(VP8D_CONFIG *oxcf)44struct VP8D_COMP * vp8dx_create_decompressor(VP8D_CONFIG *oxcf)
60{45{
61 VP8D_COMP *pbi = vpx_memalign(32, sizeof(VP8D_COMP));46 VP8D_COMP *pbi = vpx_memalign(32, sizeof(VP8D_COMP));
@@ -73,7 +58,6 @@ struct VP8D_COMP * vp8dx_create_decompressor(VP8D_CONFIG *oxcf) · 11 unmodified lines
73 }58 }
74 59
75 pbi->common.error.setjmp = 1;60 pbi->common.error.setjmp = 1;
76 vp8dx_initialize();
77 61
78 vp8_create_common(&pbi->common);62 vp8_create_common(&pbi->common);
79 63
@@ -163,7 +147,7 @@ vpx_codec_err_t vp8dx_get_reference(VP8D_COMP *pbi, VP8_REFFRAME ref_frame_flag, · 83 unmodified lines
163 "Incorrect buffer dimensions");147 "Incorrect buffer dimensions");
164 }148 }
165 else149 else
166 vp8_yv12_copy_frame_ptr(&cm->yv12_fb[ref_fb_idx], sd);150 vp8_yv12_copy_frame(&cm->yv12_fb[ref_fb_idx], sd);
167 151
168 return pbi->common.error.error_code;152 return pbi->common.error.error_code;
169}153}
@@ -203,7 +187,7 @@ vpx_codec_err_t vp8dx_set_reference(VP8D_COMP *pbi, VP8_REFFRAME ref_frame_flag, · 33 unmodified lines
203 187
204 /* Manage the reference counters and copy image. */188 /* Manage the reference counters and copy image. */
205 ref_cnt_fb (cm->fb_idx_ref_cnt, ref_fb_ptr, free_fb);189 ref_cnt_fb (cm->fb_idx_ref_cnt, ref_fb_ptr, free_fb);
206 vp8_yv12_copy_frame_ptr(sd, &cm->yv12_fb[*ref_fb_ptr]);190 vp8_yv12_copy_frame(sd, &cm->yv12_fb[*ref_fb_ptr]);
207 }191 }
208 192
209 return pbi->common.error.error_code;193 return pbi->common.error.error_code;
@@ -367,7 +351,7 @@ int vp8dx_receive_compressed_data(VP8D_COMP *pbi, unsigned long size, const unsi · 157 unmodified lines
367 const int prev_idx = cm->lst_fb_idx;351 const int prev_idx = cm->lst_fb_idx;
368 cm->fb_idx_ref_cnt[prev_idx]--;352 cm->fb_idx_ref_cnt[prev_idx]--;
369 cm->lst_fb_idx = get_free_fb(cm);353 cm->lst_fb_idx = get_free_fb(cm);
370 vp8_yv12_copy_frame_ptr(&cm->yv12_fb[prev_idx],354 vp8_yv12_copy_frame(&cm->yv12_fb[prev_idx],
371 &cm->yv12_fb[cm->lst_fb_idx]);355 &cm->yv12_fb[cm->lst_fb_idx]);
372 }356 }
373 /* This is used to signal that we are missing frames.357 /* This is used to signal that we are missing frames.
@@ -486,7 +470,7 @@ int vp8dx_receive_compressed_data(VP8D_COMP *pbi, unsigned long size, const unsi · 112 unmodified lines
486 /* Apply the loop filter if appropriate. */470 /* Apply the loop filter if appropriate. */
487 vp8_loop_filter_frame(cm, &pbi->mb);471 vp8_loop_filter_frame(cm, &pbi->mb);
488 }472 }
489 vp8_yv12_extend_frame_borders_ptr(cm->frame_to_show);473 vp8_yv12_extend_frame_borders(cm->frame_to_show);
490 }474 }
491 475
492 476
vp8/encoder/bitstream.c+3−3
@@ -162,7 +162,7 @@ static void write_split(vp8_writer *bc, int x) · 161 unmodified lines
162 162
163void vp8_pack_tokens_c(vp8_writer *w, const TOKENEXTRA *p, int xcount)163void vp8_pack_tokens_c(vp8_writer *w, const TOKENEXTRA *p, int xcount)
164{164{
165 const TOKENEXTRA *const stop = p + xcount;165 const TOKENEXTRA *stop = p + xcount;
166 unsigned int split;166 unsigned int split;
167 unsigned int shift;167 unsigned int shift;
168 int count = w->count;168 int count = w->count;
@@ -172,8 +172,8 @@ void vp8_pack_tokens_c(vp8_writer *w, const TOKENEXTRA *p, int xcount) · 3 unmodified lines
172 while (p < stop)172 while (p < stop)
173 {173 {
174 const int t = p->Token;174 const int t = p->Token;
175 vp8_token *const a = vp8_coef_encodings + t;175 const vp8_token *a = vp8_coef_encodings + t;
176 const vp8_extra_bit_struct *const b = vp8_extra_bits + t;176 const vp8_extra_bit_struct *b = vp8_extra_bits + t;
177 int i = 0;177 int i = 0;
178 const unsigned char *pp = p->context_tree;178 const unsigned char *pp = p->context_tree;
179 int v = a->value;179 int v = a->value;
vp8/encoder/bitstream.h+6−6
@@ -14,19 +14,19 @@ · 13 unmodified lines
14 14
15#if HAVE_EDSP15#if HAVE_EDSP
16void vp8cx_pack_tokens_armv5(vp8_writer *w, const TOKENEXTRA *p, int xcount,16void vp8cx_pack_tokens_armv5(vp8_writer *w, const TOKENEXTRA *p, int xcount,
17 vp8_token *,17 const vp8_token *,
18 vp8_extra_bit_struct *,18 const vp8_extra_bit_struct *,
19 const vp8_tree_index *);19 const vp8_tree_index *);
20void vp8cx_pack_tokens_into_partitions_armv5(VP8_COMP *,20void vp8cx_pack_tokens_into_partitions_armv5(VP8_COMP *,
21 unsigned char * cx_data,21 unsigned char * cx_data,
22 const unsigned char *cx_data_end,22 const unsigned char *cx_data_end,
23 int num_parts,23 int num_parts,
24 vp8_token *,24 const vp8_token *,
25 vp8_extra_bit_struct *,25 const vp8_extra_bit_struct *,
26 const vp8_tree_index *);26 const vp8_tree_index *);
27void vp8cx_pack_mb_row_tokens_armv5(VP8_COMP *cpi, vp8_writer *w,27void vp8cx_pack_mb_row_tokens_armv5(VP8_COMP *cpi, vp8_writer *w,
28 vp8_token *,28 const vp8_token *,
29 vp8_extra_bit_struct *,29 const vp8_extra_bit_struct *,
30 const vp8_tree_index *);30 const vp8_tree_index *);
31# define pack_tokens(a,b,c) \31# define pack_tokens(a,b,c) \
32 vp8cx_pack_tokens_armv5(a,b,c,vp8_coef_encodings,vp8_extra_bits,vp8_coef_tree)32 vp8cx_pack_tokens_armv5(a,b,c,vp8_coef_encodings,vp8_extra_bits,vp8_coef_tree)
vp8/encoder/dct_value_cost.h+358−0
@@ -0,0 +1,358 @@
1/*
2 * Copyright (c) 2012 The WebM project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11/* Generated file, included by tokenize.c */
12/* Values generated by fill_value_tokens() */
13
14static const short dct_value_cost[2048*2] =
15{
16 8285, 8277, 8267, 8259, 8253, 8245, 8226, 8218, 8212, 8204, 8194, 8186,
17 8180, 8172, 8150, 8142, 8136, 8128, 8118, 8110, 8104, 8096, 8077, 8069,
18 8063, 8055, 8045, 8037, 8031, 8023, 7997, 7989, 7983, 7975, 7965, 7957,
19 7951, 7943, 7924, 7916, 7910, 7902, 7892, 7884, 7878, 7870, 7848, 7840,
20 7834, 7826, 7816, 7808, 7802, 7794, 7775, 7767, 7761, 7753, 7743, 7735,
21 7729, 7721, 7923, 7915, 7909, 7901, 7891, 7883, 7877, 7869, 7850, 7842,
22 7836, 7828, 7818, 7810, 7804, 7796, 7774, 7766, 7760, 7752, 7742, 7734,
23 7728, 7720, 7701, 7693, 7687, 7679, 7669, 7661, 7655, 7647, 7621, 7613,
24 7607, 7599, 7589, 7581, 7575, 7567, 7548, 7540, 7534, 7526, 7516, 7508,
25 7502, 7494, 7472, 7464, 7458, 7450, 7440, 7432, 7426, 7418, 7399, 7391,
26 7385, 7377, 7367, 7359, 7353, 7345, 7479, 7471, 7465, 7457, 7447, 7439,
27 7433, 7425, 7406, 7398, 7392, 7384, 7374, 7366, 7360, 7352, 7330, 7322,
28 7316, 7308, 7298, 7290, 7284, 7276, 7257, 7249, 7243, 7235, 7225, 7217,
29 7211, 7203, 7177, 7169, 7163, 7155, 7145, 7137, 7131, 7123, 7104, 7096,
30 7090, 7082, 7072, 7064, 7058, 7050, 7028, 7020, 7014, 7006, 6996, 6988,
31 6982, 6974, 6955, 6947, 6941, 6933, 6923, 6915, 6909, 6901, 7632, 7624,
32 7618, 7610, 7600, 7592, 7586, 7578, 7559, 7551, 7545, 7537, 7527, 7519,
33 7513, 7505, 7483, 7475, 7469, 7461, 7451, 7443, 7437, 7429, 7410, 7402,
34 7396, 7388, 7378, 7370, 7364, 7356, 7330, 7322, 7316, 7308, 7298, 7290,
35 7284, 7276, 7257, 7249, 7243, 7235, 7225, 7217, 7211, 7203, 7181, 7173,
36 7167, 7159, 7149, 7141, 7135, 7127, 7108, 7100, 7094, 7086, 7076, 7068,
37 7062, 7054, 7188, 7180, 7174, 7166, 7156, 7148, 7142, 7134, 7115, 7107,
38 7101, 7093, 7083, 7075, 7069, 7061, 7039, 7031, 7025, 7017, 7007, 6999,
39 6993, 6985, 6966, 6958, 6952, 6944, 6934, 6926, 6920, 6912, 6886, 6878,
40 6872, 6864, 6854, 6846, 6840, 6832, 6813, 6805, 6799, 6791, 6781, 6773,
41 6767, 6759, 6737, 6729, 6723, 6715, 6705, 6697, 6691, 6683, 6664, 6656,
42 6650, 6642, 6632, 6624, 6618, 6610, 6812, 6804, 6798, 6790, 6780, 6772,
43 6766, 6758, 6739, 6731, 6725, 6717, 6707, 6699, 6693, 6685, 6663, 6655,
44 6649, 6641, 6631, 6623, 6617, 6609, 6590, 6582, 6576, 6568, 6558, 6550,
45 6544, 6536, 6510, 6502, 6496, 6488, 6478, 6470, 6464, 6456, 6437, 6429,
46 6423, 6415, 6405, 6397, 6391, 6383, 6361, 6353, 6347, 6339, 6329, 6321,
47 6315, 6307, 6288, 6280, 6274, 6266, 6256, 6248, 6242, 6234, 6368, 6360,
48 6354, 6346, 6336, 6328, 6322, 6314, 6295, 6287, 6281, 6273, 6263, 6255,
49 6249, 6241, 6219, 6211, 6205, 6197, 6187, 6179, 6173, 6165, 6146, 6138,
50 6132, 6124, 6114, 6106, 6100, 6092, 6066, 6058, 6052, 6044, 6034, 6026,
51 6020, 6012, 5993, 5985, 5979, 5971, 5961, 5953, 5947, 5939, 5917, 5909,
52 5903, 5895, 5885, 5877, 5871, 5863, 5844, 5836, 5830, 5822, 5812, 5804,
53 5798, 5790, 6697, 6689, 6683, 6675, 6665, 6657, 6651, 6643, 6624, 6616,
54 6610, 6602, 6592, 6584, 6578, 6570, 6548, 6540, 6534, 6526, 6516, 6508,
55 6502, 6494, 6475, 6467, 6461, 6453, 6443, 6435, 6429, 6421, 6395, 6387,
56 6381, 6373, 6363, 6355, 6349, 6341, 6322, 6314, 6308, 6300, 6290, 6282,
57 6276, 6268, 6246, 6238, 6232, 6224, 6214, 6206, 6200, 6192, 6173, 6165,
58 6159, 6151, 6141, 6133, 6127, 6119, 6253, 6245, 6239, 6231, 6221, 6213,
59 6207, 6199, 6180, 6172, 6166, 6158, 6148, 6140, 6134, 6126, 6104, 6096,
60 6090, 6082, 6072, 6064, 6058, 6050, 6031, 6023, 6017, 6009, 5999, 5991,
61 5985, 5977, 5951, 5943, 5937, 5929, 5919, 5911, 5905, 5897, 5878, 5870,
62 5864, 5856, 5846, 5838, 5832, 5824, 5802, 5794, 5788, 5780, 5770, 5762,
63 5756, 5748, 5729, 5721, 5715, 5707, 5697, 5689, 5683, 5675, 5877, 5869,
64 5863, 5855, 5845, 5837, 5831, 5823, 5804, 5796, 5790, 5782, 5772, 5764,
65 5758, 5750, 5728, 5720, 5714, 5706, 5696, 5688, 5682, 5674, 5655, 5647,
66 5641, 5633, 5623, 5615, 5609, 5601, 5575, 5567, 5561, 5553, 5543, 5535,
67 5529, 5521, 5502, 5494, 5488, 5480, 5470, 5462, 5456, 5448, 5426, 5418,
68 5412, 5404, 5394, 5386, 5380, 5372, 5353, 5345, 5339, 5331, 5321, 5313,
69 5307, 5299, 5433, 5425, 5419, 5411, 5401, 5393, 5387, 5379, 5360, 5352,
70 5346, 5338, 5328, 5320, 5314, 5306, 5284, 5276, 5270, 5262, 5252, 5244,
71 5238, 5230, 5211, 5203, 5197, 5189, 5179, 5171, 5165, 5157, 5131, 5123,
72 5117, 5109, 5099, 5091, 5085, 5077, 5058, 5050, 5044, 5036, 5026, 5018,
73 5012, 5004, 4982, 4974, 4968, 4960, 4950, 4942, 4936, 4928, 4909, 4901,
74 4895, 4887, 4877, 4869, 4863, 4855, 5586, 5578, 5572, 5564, 5554, 5546,
75 5540, 5532, 5513, 5505, 5499, 5491, 5481, 5473, 5467, 5459, 5437, 5429,
76 5423, 5415, 5405, 5397, 5391, 5383, 5364, 5356, 5350, 5342, 5332, 5324,
77 5318, 5310, 5284, 5276, 5270, 5262, 5252, 5244, 5238, 5230, 5211, 5203,
78 5197, 5189, 5179, 5171, 5165, 5157, 5135, 5127, 5121, 5113, 5103, 5095,
79 5089, 5081, 5062, 5054, 5048, 5040, 5030, 5022, 5016, 5008, 5142, 5134,
80 5128, 5120, 5110, 5102, 5096, 5088, 5069, 5061, 5055, 5047, 5037, 5029,
81 5023, 5015, 4993, 4985, 4979, 4971, 4961, 4953, 4947, 4939, 4920, 4912,
82 4906, 4898, 4888, 4880, 4874, 4866, 4840, 4832, 4826, 4818, 4808, 4800,
83 4794, 4786, 4767, 4759, 4753, 4745, 4735, 4727, 4721, 4713, 4691, 4683,
84 4677, 4669, 4659, 4651, 4645, 4637, 4618, 4610, 4604, 4596, 4586, 4578,
85 4572, 4564, 4766, 4758, 4752, 4744, 4734, 4726, 4720, 4712, 4693, 4685,
86 4679, 4671, 4661, 4653, 4647, 4639, 4617, 4609, 4603, 4595, 4585, 4577,
87 4571, 4563, 4544, 4536, 4530, 4522, 4512, 4504, 4498, 4490, 4464, 4456,
88 4450, 4442, 4432, 4424, 4418, 4410, 4391, 4383, 4377, 4369, 4359, 4351,
89 4345, 4337, 4315, 4307, 4301, 4293, 4283, 4275, 4269, 4261, 4242, 4234,
90 4228, 4220, 4210, 4202, 4196, 4188, 4322, 4314, 4308, 4300, 4290, 4282,
91 4276, 4268, 4249, 4241, 4235, 4227, 4217, 4209, 4203, 4195, 4173, 4165,
92 4159, 4151, 4141, 4133, 4127, 4119, 4100, 4092, 4086, 4078, 4068, 4060,
93 4054, 4046, 4020, 4012, 4006, 3998, 3988, 3980, 3974, 3966, 3947, 3939,
94 3933, 3925, 3915, 3907, 3901, 3893, 3871, 3863, 3857, 3849, 3839, 3831,
95 3825, 3817, 3798, 3790, 3784, 3776, 3766, 3758, 3752, 3744, 6697, 6689,
96 6683, 6675, 6665, 6657, 6651, 6643, 6624, 6616, 6610, 6602, 6592, 6584,
97 6578, 6570, 6548, 6540, 6534, 6526, 6516, 6508, 6502, 6494, 6475, 6467,
98 6461, 6453, 6443, 6435, 6429, 6421, 6395, 6387, 6381, 6373, 6363, 6355,
99 6349, 6341, 6322, 6314, 6308, 6300, 6290, 6282, 6276, 6268, 6246, 6238,
100 6232, 6224, 6214, 6206, 6200, 6192, 6173, 6165, 6159, 6151, 6141, 6133,
101 6127, 6119, 6253, 6245, 6239, 6231, 6221, 6213, 6207, 6199, 6180, 6172,
102 6166, 6158, 6148, 6140, 6134, 6126, 6104, 6096, 6090, 6082, 6072, 6064,
103 6058, 6050, 6031, 6023, 6017, 6009, 5999, 5991, 5985, 5977, 5951, 5943,
104 5937, 5929, 5919, 5911, 5905, 5897, 5878, 5870, 5864, 5856, 5846, 5838,
105 5832, 5824, 5802, 5794, 5788, 5780, 5770, 5762, 5756, 5748, 5729, 5721,
106 5715, 5707, 5697, 5689, 5683, 5675, 5877, 5869, 5863, 5855, 5845, 5837,
107 5831, 5823, 5804, 5796, 5790, 5782, 5772, 5764, 5758, 5750, 5728, 5720,
108 5714, 5706, 5696, 5688, 5682, 5674, 5655, 5647, 5641, 5633, 5623, 5615,
109 5609, 5601, 5575, 5567, 5561, 5553, 5543, 5535, 5529, 5521, 5502, 5494,
110 5488, 5480, 5470, 5462, 5456, 5448, 5426, 5418, 5412, 5404, 5394, 5386,
111 5380, 5372, 5353, 5345, 5339, 5331, 5321, 5313, 5307, 5299, 5433, 5425,
112 5419, 5411, 5401, 5393, 5387, 5379, 5360, 5352, 5346, 5338, 5328, 5320,
113 5314, 5306, 5284, 5276, 5270, 5262, 5252, 5244, 5238, 5230, 5211, 5203,
114 5197, 5189, 5179, 5171, 5165, 5157, 5131, 5123, 5117, 5109, 5099, 5091,
115 5085, 5077, 5058, 5050, 5044, 5036, 5026, 5018, 5012, 5004, 4982, 4974,
116 4968, 4960, 4950, 4942, 4936, 4928, 4909, 4901, 4895, 4887, 4877, 4869,
117 4863, 4855, 5586, 5578, 5572, 5564, 5554, 5546, 5540, 5532, 5513, 5505,
118 5499, 5491, 5481, 5473, 5467, 5459, 5437, 5429, 5423, 5415, 5405, 5397,
119 5391, 5383, 5364, 5356, 5350, 5342, 5332, 5324, 5318, 5310, 5284, 5276,
120 5270, 5262, 5252, 5244, 5238, 5230, 5211, 5203, 5197, 5189, 5179, 5171,
121 5165, 5157, 5135, 5127, 5121, 5113, 5103, 5095, 5089, 5081, 5062, 5054,
122 5048, 5040, 5030, 5022, 5016, 5008, 5142, 5134, 5128, 5120, 5110, 5102,
123 5096, 5088, 5069, 5061, 5055, 5047, 5037, 5029, 5023, 5015, 4993, 4985,
124 4979, 4971, 4961, 4953, 4947, 4939, 4920, 4912, 4906, 4898, 4888, 4880,
125 4874, 4866, 4840, 4832, 4826, 4818, 4808, 4800, 4794, 4786, 4767, 4759,
126 4753, 4745, 4735, 4727, 4721, 4713, 4691, 4683, 4677, 4669, 4659, 4651,
127 4645, 4637, 4618, 4610, 4604, 4596, 4586, 4578, 4572, 4564, 4766, 4758,
128 4752, 4744, 4734, 4726, 4720, 4712, 4693, 4685, 4679, 4671, 4661, 4653,
129 4647, 4639, 4617, 4609, 4603, 4595, 4585, 4577, 4571, 4563, 4544, 4536,
130 4530, 4522, 4512, 4504, 4498, 4490, 4464, 4456, 4450, 4442, 4432, 4424,
131 4418, 4410, 4391, 4383, 4377, 4369, 4359, 4351, 4345, 4337, 4315, 4307,
132 4301, 4293, 4283, 4275, 4269, 4261, 4242, 4234, 4228, 4220, 4210, 4202,
133 4196, 4188, 4322, 4314, 4308, 4300, 4290, 4282, 4276, 4268, 4249, 4241,
134 4235, 4227, 4217, 4209, 4203, 4195, 4173, 4165, 4159, 4151, 4141, 4133,
135 4127, 4119, 4100, 4092, 4086, 4078, 4068, 4060, 4054, 4046, 4020, 4012,
136 4006, 3998, 3988, 3980, 3974, 3966, 3947, 3939, 3933, 3925, 3915, 3907,
137 3901, 3893, 3871, 3863, 3857, 3849, 3839, 3831, 3825, 3817, 3798, 3790,
138 3784, 3776, 3766, 3758, 3752, 3744, 4651, 4643, 4637, 4629, 4619, 4611,
139 4605, 4597, 4578, 4570, 4564, 4556, 4546, 4538, 4532, 4524, 4502, 4494,
140 4488, 4480, 4470, 4462, 4456, 4448, 4429, 4421, 4415, 4407, 4397, 4389,
141 4383, 4375, 4349, 4341, 4335, 4327, 4317, 4309, 4303, 4295, 4276, 4268,
142 4262, 4254, 4244, 4236, 4230, 4222, 4200, 4192, 4186, 4178, 4168, 4160,
143 4154, 4146, 4127, 4119, 4113, 4105, 4095, 4087, 4081, 4073, 4207, 4199,
144 4193, 4185, 4175, 4167, 4161, 4153, 4134, 4126, 4120, 4112, 4102, 4094,
145 4088, 4080, 4058, 4050, 4044, 4036, 4026, 4018, 4012, 4004, 3985, 3977,
146 3971, 3963, 3953, 3945, 3939, 3931, 3905, 3897, 3891, 3883, 3873, 3865,
147 3859, 3851, 3832, 3824, 3818, 3810, 3800, 3792, 3786, 3778, 3756, 3748,
148 3742, 3734, 3724, 3716, 3710, 3702, 3683, 3675, 3669, 3661, 3651, 3643,
149 3637, 3629, 3831, 3823, 3817, 3809, 3799, 3791, 3785, 3777, 3758, 3750,
150 3744, 3736, 3726, 3718, 3712, 3704, 3682, 3674, 3668, 3660, 3650, 3642,
151 3636, 3628, 3609, 3601, 3595, 3587, 3577, 3569, 3563, 3555, 3529, 3521,
152 3515, 3507, 3497, 3489, 3483, 3475, 3456, 3448, 3442, 3434, 3424, 3416,
153 3410, 3402, 3380, 3372, 3366, 3358, 3348, 3340, 3334, 3326, 3307, 3299,
154 3293, 3285, 3275, 3267, 3261, 3253, 3387, 3379, 3373, 3365, 3355, 3347,
155 3341, 3333, 3314, 3306, 3300, 3292, 3282, 3274, 3268, 3260, 3238, 3230,
156 3224, 3216, 3206, 3198, 3192, 3184, 3165, 3157, 3151, 3143, 3133, 3125,
157 3119, 3111, 3085, 3077, 3071, 3063, 3053, 3045, 3039, 3031, 3012, 3004,
158 2998, 2990, 2980, 2972, 2966, 2958, 2936, 2928, 2922, 2914, 2904, 2896,
159 2890, 2882, 2863, 2855, 2849, 2841, 2831, 2823, 2817, 2809, 3540, 3532,
160 3526, 3518, 3508, 3500, 3494, 3486, 3467, 3459, 3453, 3445, 3435, 3427,
161 3421, 3413, 3391, 3383, 3377, 3369, 3359, 3351, 3345, 3337, 3318, 3310,
162 3304, 3296, 3286, 3278, 3272, 3264, 3238, 3230, 3224, 3216, 3206, 3198,
163 3192, 3184, 3165, 3157, 3151, 3143, 3133, 3125, 3119, 3111, 3089, 3081,
164 3075, 3067, 3057, 3049, 3043, 3035, 3016, 3008, 3002, 2994, 2984, 2976,
165 2970, 2962, 3096, 3088, 3082, 3074, 3064, 3056, 3050, 3042, 3023, 3015,
166 3009, 3001, 2991, 2983, 2977, 2969, 2947, 2939, 2933, 2925, 2915, 2907,
167 2901, 2893, 2874, 2866, 2860, 2852, 2842, 2834, 2828, 2820, 2794, 2786,
168 2780, 2772, 2762, 2754, 2748, 2740, 2721, 2713, 2707, 2699, 2689, 2681,
169 2675, 2667, 2645, 2637, 2631, 2623, 2613, 2605, 2599, 2591, 2572, 2564,
170 2558, 2550, 2540, 2532, 2526, 2518, 2720, 2712, 2706, 2698, 2688, 2680,
171 2674, 2666, 2647, 2639, 2633, 2625, 2615, 2607, 2601, 2593, 2571, 2563,
172 2557, 2549, 2539, 2531, 2525, 2517, 2498, 2490, 2484, 2476, 2466, 2458,
173 2452, 2444, 2418, 2410, 2404, 2396, 2386, 2378, 2372, 2364, 2345, 2337,
174 2331, 2323, 2313, 2305, 2299, 2291, 2269, 2261, 2255, 2247, 2237, 2229,
175 2223, 2215, 2196, 2188, 2182, 2174, 2164, 2156, 2150, 2142, 2276, 2268,
176 2262, 2254, 2244, 2236, 2230, 2222, 2203, 2195, 2189, 2181, 2171, 2163,
177 2157, 2149, 2127, 2119, 2113, 2105, 2095, 2087, 2081, 2073, 2054, 2046,
178 2040, 2032, 2022, 2014, 2008, 2000, 1974, 1966, 1960, 1952, 1942, 1934,
179 1928, 1920, 1901, 1893, 1887, 1879, 1869, 1861, 1855, 1847, 1825, 1817,
180 1811, 1803, 1793, 1785, 1779, 1771, 1752, 1744, 1738, 1730, 1720, 1712,
181 1706, 1698, 1897, 1883, 1860, 1846, 1819, 1805, 1782, 1768, 1723, 1709,
182 1686, 1672, 1645, 1631, 1608, 1594, 1574, 1560, 1537, 1523, 1496, 1482,
183 1459, 1445, 1400, 1386, 1363, 1349, 1322, 1308, 1285, 1271, 1608, 1565,
184 1535, 1492, 1446, 1403, 1373, 1330, 1312, 1269, 1239, 1196, 1150, 1107,
185 1077, 1034, 1291, 1218, 1171, 1098, 1015, 942, 895, 822, 953, 850,
186 729, 626, 618, 431, 257, 257, 257, 257, 0, 255, 255, 255,
187 255, 429, 616, 624, 727, 848, 951, 820, 893, 940, 1013, 1096,
188 1169, 1216, 1289, 1032, 1075, 1105, 1148, 1194, 1237, 1267, 1310, 1328,
189 1371, 1401, 1444, 1490, 1533, 1563, 1606, 1269, 1283, 1306, 1320, 1347,
190 1361, 1384, 1398, 1443, 1457, 1480, 1494, 1521, 1535, 1558, 1572, 1592,
191 1606, 1629, 1643, 1670, 1684, 1707, 1721, 1766, 1780, 1803, 1817, 1844,
192 1858, 1881, 1895, 1696, 1704, 1710, 1718, 1728, 1736, 1742, 1750, 1769,
193 1777, 1783, 1791, 1801, 1809, 1815, 1823, 1845, 1853, 1859, 1867, 1877,
194 1885, 1891, 1899, 1918, 1926, 1932, 1940, 1950, 1958, 1964, 1972, 1998,
195 2006, 2012, 2020, 2030, 2038, 2044, 2052, 2071, 2079, 2085, 2093, 2103,
196 2111, 2117, 2125, 2147, 2155, 2161, 2169, 2179, 2187, 2193, 2201, 2220,
197 2228, 2234, 2242, 2252, 2260, 2266, 2274, 2140, 2148, 2154, 2162, 2172,
198 2180, 2186, 2194, 2213, 2221, 2227, 2235, 2245, 2253, 2259, 2267, 2289,
199 2297, 2303, 2311, 2321, 2329, 2335, 2343, 2362, 2370, 2376, 2384, 2394,
200 2402, 2408, 2416, 2442, 2450, 2456, 2464, 2474, 2482, 2488, 2496, 2515,
201 2523, 2529, 2537, 2547, 2555, 2561, 2569, 2591, 2599, 2605, 2613, 2623,
202 2631, 2637, 2645, 2664, 2672, 2678, 2686, 2696, 2704, 2710, 2718, 2516,
203 2524, 2530, 2538, 2548, 2556, 2562, 2570, 2589, 2597, 2603, 2611, 2621,
204 2629, 2635, 2643, 2665, 2673, 2679, 2687, 2697, 2705, 2711, 2719, 2738,
205 2746, 2752, 2760, 2770, 2778, 2784, 2792, 2818, 2826, 2832, 2840, 2850,
206 2858, 2864, 2872, 2891, 2899, 2905, 2913, 2923, 2931, 2937, 2945, 2967,
207 2975, 2981, 2989, 2999, 3007, 3013, 3021, 3040, 3048, 3054, 3062, 3072,
208 3080, 3086, 3094, 2960, 2968, 2974, 2982, 2992, 3000, 3006, 3014, 3033,
209 3041, 3047, 3055, 3065, 3073, 3079, 3087, 3109, 3117, 3123, 3131, 3141,
210 3149, 3155, 3163, 3182, 3190, 3196, 3204, 3214, 3222, 3228, 3236, 3262,
211 3270, 3276, 3284, 3294, 3302, 3308, 3316, 3335, 3343, 3349, 3357, 3367,
212 3375, 3381, 3389, 3411, 3419, 3425, 3433, 3443, 3451, 3457, 3465, 3484,
213 3492, 3498, 3506, 3516, 3524, 3530, 3538, 2807, 2815, 2821, 2829, 2839,
214 2847, 2853, 2861, 2880, 2888, 2894, 2902, 2912, 2920, 2926, 2934, 2956,
215 2964, 2970, 2978, 2988, 2996, 3002, 3010, 3029, 3037, 3043, 3051, 3061,
216 3069, 3075, 3083, 3109, 3117, 3123, 3131, 3141, 3149, 3155, 3163, 3182,
217 3190, 3196, 3204, 3214, 3222, 3228, 3236, 3258, 3266, 3272, 3280, 3290,
218 3298, 3304, 3312, 3331, 3339, 3345, 3353, 3363, 3371, 3377, 3385, 3251,
219 3259, 3265, 3273, 3283, 3291, 3297, 3305, 3324, 3332, 3338, 3346, 3356,
220 3364, 3370, 3378, 3400, 3408, 3414, 3422, 3432, 3440, 3446, 3454, 3473,
221 3481, 3487, 3495, 3505, 3513, 3519, 3527, 3553, 3561, 3567, 3575, 3585,
222 3593, 3599, 3607, 3626, 3634, 3640, 3648, 3658, 3666, 3672, 3680, 3702,
223 3710, 3716, 3724, 3734, 3742, 3748, 3756, 3775, 3783, 3789, 3797, 3807,
224 3815, 3821, 3829, 3627, 3635, 3641, 3649, 3659, 3667, 3673, 3681, 3700,
225 3708, 3714, 3722, 3732, 3740, 3746, 3754, 3776, 3784, 3790, 3798, 3808,
226 3816, 3822, 3830, 3849, 3857, 3863, 3871, 3881, 3889, 3895, 3903, 3929,
227 3937, 3943, 3951, 3961, 3969, 3975, 3983, 4002, 4010, 4016, 4024, 4034,
228 4042, 4048, 4056, 4078, 4086, 4092, 4100, 4110, 4118, 4124, 4132, 4151,
229 4159, 4165, 4173, 4183, 4191, 4197, 4205, 4071, 4079, 4085, 4093, 4103,
230 4111, 4117, 4125, 4144, 4152, 4158, 4166, 4176, 4184, 4190, 4198, 4220,
231 4228, 4234, 4242, 4252, 4260, 4266, 4274, 4293, 4301, 4307, 4315, 4325,
232 4333, 4339, 4347, 4373, 4381, 4387, 4395, 4405, 4413, 4419, 4427, 4446,
233 4454, 4460, 4468, 4478, 4486, 4492, 4500, 4522, 4530, 4536, 4544, 4554,
234 4562, 4568, 4576, 4595, 4603, 4609, 4617, 4627, 4635, 4641, 4649, 3742,
235 3750, 3756, 3764, 3774, 3782, 3788, 3796, 3815, 3823, 3829, 3837, 3847,
236 3855, 3861, 3869, 3891, 3899, 3905, 3913, 3923, 3931, 3937, 3945, 3964,
237 3972, 3978, 3986, 3996, 4004, 4010, 4018, 4044, 4052, 4058, 4066, 4076,
238 4084, 4090, 4098, 4117, 4125, 4131, 4139, 4149, 4157, 4163, 4171, 4193,
239 4201, 4207, 4215, 4225, 4233, 4239, 4247, 4266, 4274, 4280, 4288, 4298,
240 4306, 4312, 4320, 4186, 4194, 4200, 4208, 4218, 4226, 4232, 4240, 4259,
241 4267, 4273, 4281, 4291, 4299, 4305, 4313, 4335, 4343, 4349, 4357, 4367,
242 4375, 4381, 4389, 4408, 4416, 4422, 4430, 4440, 4448, 4454, 4462, 4488,
243 4496, 4502, 4510, 4520, 4528, 4534, 4542, 4561, 4569, 4575, 4583, 4593,
244 4601, 4607, 4615, 4637, 4645, 4651, 4659, 4669, 4677, 4683, 4691, 4710,
245 4718, 4724, 4732, 4742, 4750, 4756, 4764, 4562, 4570, 4576, 4584, 4594,
246 4602, 4608, 4616, 4635, 4643, 4649, 4657, 4667, 4675, 4681, 4689, 4711,
247 4719, 4725, 4733, 4743, 4751, 4757, 4765, 4784, 4792, 4798, 4806, 4816,
248 4824, 4830, 4838, 4864, 4872, 4878, 4886, 4896, 4904, 4910, 4918, 4937,
249 4945, 4951, 4959, 4969, 4977, 4983, 4991, 5013, 5021, 5027, 5035, 5045,
250 5053, 5059, 5067, 5086, 5094, 5100, 5108, 5118, 5126, 5132, 5140, 5006,
251 5014, 5020, 5028, 5038, 5046, 5052, 5060, 5079, 5087, 5093, 5101, 5111,
252 5119, 5125, 5133, 5155, 5163, 5169, 5177, 5187, 5195, 5201, 5209, 5228,
253 5236, 5242, 5250, 5260, 5268, 5274, 5282, 5308, 5316, 5322, 5330, 5340,
254 5348, 5354, 5362, 5381, 5389, 5395, 5403, 5413, 5421, 5427, 5435, 5457,
255 5465, 5471, 5479, 5489, 5497, 5503, 5511, 5530, 5538, 5544, 5552, 5562,
256 5570, 5576, 5584, 4853, 4861, 4867, 4875, 4885, 4893, 4899, 4907, 4926,
257 4934, 4940, 4948, 4958, 4966, 4972, 4980, 5002, 5010, 5016, 5024, 5034,
258 5042, 5048, 5056, 5075, 5083, 5089, 5097, 5107, 5115, 5121, 5129, 5155,
259 5163, 5169, 5177, 5187, 5195, 5201, 5209, 5228, 5236, 5242, 5250, 5260,
260 5268, 5274, 5282, 5304, 5312, 5318, 5326, 5336, 5344, 5350, 5358, 5377,
261 5385, 5391, 5399, 5409, 5417, 5423, 5431, 5297, 5305, 5311, 5319, 5329,
262 5337, 5343, 5351, 5370, 5378, 5384, 5392, 5402, 5410, 5416, 5424, 5446,
263 5454, 5460, 5468, 5478, 5486, 5492, 5500, 5519, 5527, 5533, 5541, 5551,
264 5559, 5565, 5573, 5599, 5607, 5613, 5621, 5631, 5639, 5645, 5653, 5672,
265 5680, 5686, 5694, 5704, 5712, 5718, 5726, 5748, 5756, 5762, 5770, 5780,
266 5788, 5794, 5802, 5821, 5829, 5835, 5843, 5853, 5861, 5867, 5875, 5673,
267 5681, 5687, 5695, 5705, 5713, 5719, 5727, 5746, 5754, 5760, 5768, 5778,
268 5786, 5792, 5800, 5822, 5830, 5836, 5844, 5854, 5862, 5868, 5876, 5895,
269 5903, 5909, 5917, 5927, 5935, 5941, 5949, 5975, 5983, 5989, 5997, 6007,
270 6015, 6021, 6029, 6048, 6056, 6062, 6070, 6080, 6088, 6094, 6102, 6124,
271 6132, 6138, 6146, 6156, 6164, 6170, 6178, 6197, 6205, 6211, 6219, 6229,
272 6237, 6243, 6251, 6117, 6125, 6131, 6139, 6149, 6157, 6163, 6171, 6190,
273 6198, 6204, 6212, 6222, 6230, 6236, 6244, 6266, 6274, 6280, 6288, 6298,
274 6306, 6312, 6320, 6339, 6347, 6353, 6361, 6371, 6379, 6385, 6393, 6419,
275 6427, 6433, 6441, 6451, 6459, 6465, 6473, 6492, 6500, 6506, 6514, 6524,
276 6532, 6538, 6546, 6568, 6576, 6582, 6590, 6600, 6608, 6614, 6622, 6641,
277 6649, 6655, 6663, 6673, 6681, 6687, 6695, 3742, 3750, 3756, 3764, 3774,
278 3782, 3788, 3796, 3815, 3823, 3829, 3837, 3847, 3855, 3861, 3869, 3891,
279 3899, 3905, 3913, 3923, 3931, 3937, 3945, 3964, 3972, 3978, 3986, 3996,
280 4004, 4010, 4018, 4044, 4052, 4058, 4066, 4076, 4084, 4090, 4098, 4117,
281 4125, 4131, 4139, 4149, 4157, 4163, 4171, 4193, 4201, 4207, 4215, 4225,
282 4233, 4239, 4247, 4266, 4274, 4280, 4288, 4298, 4306, 4312, 4320, 4186,
283 4194, 4200, 4208, 4218, 4226, 4232, 4240, 4259, 4267, 4273, 4281, 4291,
284 4299, 4305, 4313, 4335, 4343, 4349, 4357, 4367, 4375, 4381, 4389, 4408,
285 4416, 4422, 4430, 4440, 4448, 4454, 4462, 4488, 4496, 4502, 4510, 4520,
286 4528, 4534, 4542, 4561, 4569, 4575, 4583, 4593, 4601, 4607, 4615, 4637,
287 4645, 4651, 4659, 4669, 4677, 4683, 4691, 4710, 4718, 4724, 4732, 4742,
288 4750, 4756, 4764, 4562, 4570, 4576, 4584, 4594, 4602, 4608, 4616, 4635,
289 4643, 4649, 4657, 4667, 4675, 4681, 4689, 4711, 4719, 4725, 4733, 4743,
290 4751, 4757, 4765, 4784, 4792, 4798, 4806, 4816, 4824, 4830, 4838, 4864,
291 4872, 4878, 4886, 4896, 4904, 4910, 4918, 4937, 4945, 4951, 4959, 4969,
292 4977, 4983, 4991, 5013, 5021, 5027, 5035, 5045, 5053, 5059, 5067, 5086,
293 5094, 5100, 5108, 5118, 5126, 5132, 5140, 5006, 5014, 5020, 5028, 5038,
294 5046, 5052, 5060, 5079, 5087, 5093, 5101, 5111, 5119, 5125, 5133, 5155,
295 5163, 5169, 5177, 5187, 5195, 5201, 5209, 5228, 5236, 5242, 5250, 5260,
296 5268, 5274, 5282, 5308, 5316, 5322, 5330, 5340, 5348, 5354, 5362, 5381,
297 5389, 5395, 5403, 5413, 5421, 5427, 5435, 5457, 5465, 5471, 5479, 5489,
298 5497, 5503, 5511, 5530, 5538, 5544, 5552, 5562, 5570, 5576, 5584, 4853,
299 4861, 4867, 4875, 4885, 4893, 4899, 4907, 4926, 4934, 4940, 4948, 4958,
300 4966, 4972, 4980, 5002, 5010, 5016, 5024, 5034, 5042, 5048, 5056, 5075,
301 5083, 5089, 5097, 5107, 5115, 5121, 5129, 5155, 5163, 5169, 5177, 5187,
302 5195, 5201, 5209, 5228, 5236, 5242, 5250, 5260, 5268, 5274, 5282, 5304,
303 5312, 5318, 5326, 5336, 5344, 5350, 5358, 5377, 5385, 5391, 5399, 5409,
304 5417, 5423, 5431, 5297, 5305, 5311, 5319, 5329, 5337, 5343, 5351, 5370,
305 5378, 5384, 5392, 5402, 5410, 5416, 5424, 5446, 5454, 5460, 5468, 5478,
306 5486, 5492, 5500, 5519, 5527, 5533, 5541, 5551, 5559, 5565, 5573, 5599,
307 5607, 5613, 5621, 5631, 5639, 5645, 5653, 5672, 5680, 5686, 5694, 5704,
308 5712, 5718, 5726, 5748, 5756, 5762, 5770, 5780, 5788, 5794, 5802, 5821,
309 5829, 5835, 5843, 5853, 5861, 5867, 5875, 5673, 5681, 5687, 5695, 5705,
310 5713, 5719, 5727, 5746, 5754, 5760, 5768, 5778, 5786, 5792, 5800, 5822,
311 5830, 5836, 5844, 5854, 5862, 5868, 5876, 5895, 5903, 5909, 5917, 5927,
312 5935, 5941, 5949, 5975, 5983, 5989, 5997, 6007, 6015, 6021, 6029, 6048,
313 6056, 6062, 6070, 6080, 6088, 6094, 6102, 6124, 6132, 6138, 6146, 6156,
314 6164, 6170, 6178, 6197, 6205, 6211, 6219, 6229, 6237, 6243, 6251, 6117,
315 6125, 6131, 6139, 6149, 6157, 6163, 6171, 6190, 6198, 6204, 6212, 6222,
316 6230, 6236, 6244, 6266, 6274, 6280, 6288, 6298, 6306, 6312, 6320, 6339,
317 6347, 6353, 6361, 6371, 6379, 6385, 6393, 6419, 6427, 6433, 6441, 6451,
318 6459, 6465, 6473, 6492, 6500, 6506, 6514, 6524, 6532, 6538, 6546, 6568,
319 6576, 6582, 6590, 6600, 6608, 6614, 6622, 6641, 6649, 6655, 6663, 6673,
320 6681, 6687, 6695, 5788, 5796, 5802, 5810, 5820, 5828, 5834, 5842, 5861,
321 5869, 5875, 5883, 5893, 5901, 5907, 5915, 5937, 5945, 5951, 5959, 5969,
322 5977, 5983, 5991, 6010, 6018, 6024, 6032, 6042, 6050, 6056, 6064, 6090,
323 6098, 6104, 6112, 6122, 6130, 6136, 6144, 6163, 6171, 6177, 6185, 6195,
324 6203, 6209, 6217, 6239, 6247, 6253, 6261, 6271, 6279, 6285, 6293, 6312,
325 6320, 6326, 6334, 6344, 6352, 6358, 6366, 6232, 6240, 6246, 6254, 6264,
326 6272, 6278, 6286, 6305, 6313, 6319, 6327, 6337, 6345, 6351, 6359, 6381,
327 6389, 6395, 6403, 6413, 6421, 6427, 6435, 6454, 6462, 6468, 6476, 6486,
328 6494, 6500, 6508, 6534, 6542, 6548, 6556, 6566, 6574, 6580, 6588, 6607,
329 6615, 6621, 6629, 6639, 6647, 6653, 6661, 6683, 6691, 6697, 6705, 6715,
330 6723, 6729, 6737, 6756, 6764, 6770, 6778, 6788, 6796, 6802, 6810, 6608,
331 6616, 6622, 6630, 6640, 6648, 6654, 6662, 6681, 6689, 6695, 6703, 6713,
332 6721, 6727, 6735, 6757, 6765, 6771, 6779, 6789, 6797, 6803, 6811, 6830,
333 6838, 6844, 6852, 6862, 6870, 6876, 6884, 6910, 6918, 6924, 6932, 6942,
334 6950, 6956, 6964, 6983, 6991, 6997, 7005, 7015, 7023, 7029, 7037, 7059,
335 7067, 7073, 7081, 7091, 7099, 7105, 7113, 7132, 7140, 7146, 7154, 7164,
336 7172, 7178, 7186, 7052, 7060, 7066, 7074, 7084, 7092, 7098, 7106, 7125,
337 7133, 7139, 7147, 7157, 7165, 7171, 7179, 7201, 7209, 7215, 7223, 7233,
338 7241, 7247, 7255, 7274, 7282, 7288, 7296, 7306, 7314, 7320, 7328, 7354,
339 7362, 7368, 7376, 7386, 7394, 7400, 7408, 7427, 7435, 7441, 7449, 7459,
340 7467, 7473, 7481, 7503, 7511, 7517, 7525, 7535, 7543, 7549, 7557, 7576,
341 7584, 7590, 7598, 7608, 7616, 7622, 7630, 6899, 6907, 6913, 6921, 6931,
342 6939, 6945, 6953, 6972, 6980, 6986, 6994, 7004, 7012, 7018, 7026, 7048,
343 7056, 7062, 7070, 7080, 7088, 7094, 7102, 7121, 7129, 7135, 7143, 7153,
344 7161, 7167, 7175, 7201, 7209, 7215, 7223, 7233, 7241, 7247, 7255, 7274,
345 7282, 7288, 7296, 7306, 7314, 7320, 7328, 7350, 7358, 7364, 7372, 7382,
346 7390, 7396, 7404, 7423, 7431, 7437, 7445, 7455, 7463, 7469, 7477, 7343,
347 7351, 7357, 7365, 7375, 7383, 7389, 7397, 7416, 7424, 7430, 7438, 7448,
348 7456, 7462, 7470, 7492, 7500, 7506, 7514, 7524, 7532, 7538, 7546, 7565,
349 7573, 7579, 7587, 7597, 7605, 7611, 7619, 7645, 7653, 7659, 7667, 7677,
350 7685, 7691, 7699, 7718, 7726, 7732, 7740, 7750, 7758, 7764, 7772, 7794,
351 7802, 7808, 7816, 7826, 7834, 7840, 7848, 7867, 7875, 7881, 7889, 7899,
352 7907, 7913, 7921, 7719, 7727, 7733, 7741, 7751, 7759, 7765, 7773, 7792,
353 7800, 7806, 7814, 7824, 7832, 7838, 7846, 7868, 7876, 7882, 7890, 7900,
354 7908, 7914, 7922, 7941, 7949, 7955, 7963, 7973, 7981, 7987, 7995, 8021,
355 8029, 8035, 8043, 8053, 8061, 8067, 8075, 8094, 8102, 8108, 8116, 8126,
356 8134, 8140, 8148, 8170, 8178, 8184, 8192, 8202, 8210, 8216, 8224, 8243,
357 8251, 8257, 8265, 8275
358};
vp8/encoder/dct_value_tokens.h+699−0
@@ -0,0 +1,699 @@
1/*
2 * Copyright (c) 2012 The WebM project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11/* Generated file, included by tokenize.c */
12/* Values generated by fill_value_tokens() */
13
14static const TOKENVALUE dct_value_tokens[2048*2] =
15{
16 {10, 3963}, {10, 3961}, {10, 3959}, {10, 3957}, {10, 3955}, {10, 3953},
17 {10, 3951}, {10, 3949}, {10, 3947}, {10, 3945}, {10, 3943}, {10, 3941},
18 {10, 3939}, {10, 3937}, {10, 3935}, {10, 3933}, {10, 3931}, {10, 3929},
19 {10, 3927}, {10, 3925}, {10, 3923}, {10, 3921}, {10, 3919}, {10, 3917},
20 {10, 3915}, {10, 3913}, {10, 3911}, {10, 3909}, {10, 3907}, {10, 3905},
21 {10, 3903}, {10, 3901}, {10, 3899}, {10, 3897}, {10, 3895}, {10, 3893},
22 {10, 3891}, {10, 3889}, {10, 3887}, {10, 3885}, {10, 3883}, {10, 3881},
23 {10, 3879}, {10, 3877}, {10, 3875}, {10, 3873}, {10, 3871}, {10, 3869},
24 {10, 3867}, {10, 3865}, {10, 3863}, {10, 3861}, {10, 3859}, {10, 3857},
25 {10, 3855}, {10, 3853}, {10, 3851}, {10, 3849}, {10, 3847}, {10, 3845},
26 {10, 3843}, {10, 3841}, {10, 3839}, {10, 3837}, {10, 3835}, {10, 3833},
27 {10, 3831}, {10, 3829}, {10, 3827}, {10, 3825}, {10, 3823}, {10, 3821},
28 {10, 3819}, {10, 3817}, {10, 3815}, {10, 3813}, {10, 3811}, {10, 3809},
29 {10, 3807}, {10, 3805}, {10, 3803}, {10, 3801}, {10, 3799}, {10, 3797},
30 {10, 3795}, {10, 3793}, {10, 3791}, {10, 3789}, {10, 3787}, {10, 3785},
31 {10, 3783}, {10, 3781}, {10, 3779}, {10, 3777}, {10, 3775}, {10, 3773},
32 {10, 3771}, {10, 3769}, {10, 3767}, {10, 3765}, {10, 3763}, {10, 3761},
33 {10, 3759}, {10, 3757}, {10, 3755}, {10, 3753}, {10, 3751}, {10, 3749},
34 {10, 3747}, {10, 3745}, {10, 3743}, {10, 3741}, {10, 3739}, {10, 3737},
35 {10, 3735}, {10, 3733}, {10, 3731}, {10, 3729}, {10, 3727}, {10, 3725},
36 {10, 3723}, {10, 3721}, {10, 3719}, {10, 3717}, {10, 3715}, {10, 3713},
37 {10, 3711}, {10, 3709}, {10, 3707}, {10, 3705}, {10, 3703}, {10, 3701},
38 {10, 3699}, {10, 3697}, {10, 3695}, {10, 3693}, {10, 3691}, {10, 3689},
39 {10, 3687}, {10, 3685}, {10, 3683}, {10, 3681}, {10, 3679}, {10, 3677},
40 {10, 3675}, {10, 3673}, {10, 3671}, {10, 3669}, {10, 3667}, {10, 3665},
41 {10, 3663}, {10, 3661}, {10, 3659}, {10, 3657}, {10, 3655}, {10, 3653},
42 {10, 3651}, {10, 3649}, {10, 3647}, {10, 3645}, {10, 3643}, {10, 3641},
43 {10, 3639}, {10, 3637}, {10, 3635}, {10, 3633}, {10, 3631}, {10, 3629},
44 {10, 3627}, {10, 3625}, {10, 3623}, {10, 3621}, {10, 3619}, {10, 3617},
45 {10, 3615}, {10, 3613}, {10, 3611}, {10, 3609}, {10, 3607}, {10, 3605},
46 {10, 3603}, {10, 3601}, {10, 3599}, {10, 3597}, {10, 3595}, {10, 3593},
47 {10, 3591}, {10, 3589}, {10, 3587}, {10, 3585}, {10, 3583}, {10, 3581},
48 {10, 3579}, {10, 3577}, {10, 3575}, {10, 3573}, {10, 3571}, {10, 3569},
49 {10, 3567}, {10, 3565}, {10, 3563}, {10, 3561}, {10, 3559}, {10, 3557},
50 {10, 3555}, {10, 3553}, {10, 3551}, {10, 3549}, {10, 3547}, {10, 3545},
51 {10, 3543}, {10, 3541}, {10, 3539}, {10, 3537}, {10, 3535}, {10, 3533},
52 {10, 3531}, {10, 3529}, {10, 3527}, {10, 3525}, {10, 3523}, {10, 3521},
53 {10, 3519}, {10, 3517}, {10, 3515}, {10, 3513}, {10, 3511}, {10, 3509},
54 {10, 3507}, {10, 3505}, {10, 3503}, {10, 3501}, {10, 3499}, {10, 3497},
55 {10, 3495}, {10, 3493}, {10, 3491}, {10, 3489}, {10, 3487}, {10, 3485},
56 {10, 3483}, {10, 3481}, {10, 3479}, {10, 3477}, {10, 3475}, {10, 3473},
57 {10, 3471}, {10, 3469}, {10, 3467}, {10, 3465}, {10, 3463}, {10, 3461},
58 {10, 3459}, {10, 3457}, {10, 3455}, {10, 3453}, {10, 3451}, {10, 3449},
59 {10, 3447}, {10, 3445}, {10, 3443}, {10, 3441}, {10, 3439}, {10, 3437},
60 {10, 3435}, {10, 3433}, {10, 3431}, {10, 3429}, {10, 3427}, {10, 3425},
61 {10, 3423}, {10, 3421}, {10, 3419}, {10, 3417}, {10, 3415}, {10, 3413},
62 {10, 3411}, {10, 3409}, {10, 3407}, {10, 3405}, {10, 3403}, {10, 3401},
63 {10, 3399}, {10, 3397}, {10, 3395}, {10, 3393}, {10, 3391}, {10, 3389},
64 {10, 3387}, {10, 3385}, {10, 3383}, {10, 3381}, {10, 3379}, {10, 3377},
65 {10, 3375}, {10, 3373}, {10, 3371}, {10, 3369}, {10, 3367}, {10, 3365},
66 {10, 3363}, {10, 3361}, {10, 3359}, {10, 3357}, {10, 3355}, {10, 3353},
67 {10, 3351}, {10, 3349}, {10, 3347}, {10, 3345}, {10, 3343}, {10, 3341},
68 {10, 3339}, {10, 3337}, {10, 3335}, {10, 3333}, {10, 3331}, {10, 3329},
69 {10, 3327}, {10, 3325}, {10, 3323}, {10, 3321}, {10, 3319}, {10, 3317},
70 {10, 3315}, {10, 3313}, {10, 3311}, {10, 3309}, {10, 3307}, {10, 3305},
71 {10, 3303}, {10, 3301}, {10, 3299}, {10, 3297}, {10, 3295}, {10, 3293},
72 {10, 3291}, {10, 3289}, {10, 3287}, {10, 3285}, {10, 3283}, {10, 3281},
73 {10, 3279}, {10, 3277}, {10, 3275}, {10, 3273}, {10, 3271}, {10, 3269},
74 {10, 3267}, {10, 3265}, {10, 3263}, {10, 3261}, {10, 3259}, {10, 3257},
75 {10, 3255}, {10, 3253}, {10, 3251}, {10, 3249}, {10, 3247}, {10, 3245},
76 {10, 3243}, {10, 3241}, {10, 3239}, {10, 3237}, {10, 3235}, {10, 3233},
77 {10, 3231}, {10, 3229}, {10, 3227}, {10, 3225}, {10, 3223}, {10, 3221},
78 {10, 3219}, {10, 3217}, {10, 3215}, {10, 3213}, {10, 3211}, {10, 3209},
79 {10, 3207}, {10, 3205}, {10, 3203}, {10, 3201}, {10, 3199}, {10, 3197},
80 {10, 3195}, {10, 3193}, {10, 3191}, {10, 3189}, {10, 3187}, {10, 3185},
81 {10, 3183}, {10, 3181}, {10, 3179}, {10, 3177}, {10, 3175}, {10, 3173},
82 {10, 3171}, {10, 3169}, {10, 3167}, {10, 3165}, {10, 3163}, {10, 3161},
83 {10, 3159}, {10, 3157}, {10, 3155}, {10, 3153}, {10, 3151}, {10, 3149},
84 {10, 3147}, {10, 3145}, {10, 3143}, {10, 3141}, {10, 3139}, {10, 3137},
85 {10, 3135}, {10, 3133}, {10, 3131}, {10, 3129}, {10, 3127}, {10, 3125},
86 {10, 3123}, {10, 3121}, {10, 3119}, {10, 3117}, {10, 3115}, {10, 3113},
87 {10, 3111}, {10, 3109}, {10, 3107}, {10, 3105}, {10, 3103}, {10, 3101},
88 {10, 3099}, {10, 3097}, {10, 3095}, {10, 3093}, {10, 3091}, {10, 3089},
89 {10, 3087}, {10, 3085}, {10, 3083}, {10, 3081}, {10, 3079}, {10, 3077},
90 {10, 3075}, {10, 3073}, {10, 3071}, {10, 3069}, {10, 3067}, {10, 3065},
91 {10, 3063}, {10, 3061}, {10, 3059}, {10, 3057}, {10, 3055}, {10, 3053},
92 {10, 3051}, {10, 3049}, {10, 3047}, {10, 3045}, {10, 3043}, {10, 3041},
93 {10, 3039}, {10, 3037}, {10, 3035}, {10, 3033}, {10, 3031}, {10, 3029},
94 {10, 3027}, {10, 3025}, {10, 3023}, {10, 3021}, {10, 3019}, {10, 3017},
95 {10, 3015}, {10, 3013}, {10, 3011}, {10, 3009}, {10, 3007}, {10, 3005},
96 {10, 3003}, {10, 3001}, {10, 2999}, {10, 2997}, {10, 2995}, {10, 2993},
97 {10, 2991}, {10, 2989}, {10, 2987}, {10, 2985}, {10, 2983}, {10, 2981},
98 {10, 2979}, {10, 2977}, {10, 2975}, {10, 2973}, {10, 2971}, {10, 2969},
99 {10, 2967}, {10, 2965}, {10, 2963}, {10, 2961}, {10, 2959}, {10, 2957},
100 {10, 2955}, {10, 2953}, {10, 2951}, {10, 2949}, {10, 2947}, {10, 2945},
101 {10, 2943}, {10, 2941}, {10, 2939}, {10, 2937}, {10, 2935}, {10, 2933},
102 {10, 2931}, {10, 2929}, {10, 2927}, {10, 2925}, {10, 2923}, {10, 2921},
103 {10, 2919}, {10, 2917}, {10, 2915}, {10, 2913}, {10, 2911}, {10, 2909},
104 {10, 2907}, {10, 2905}, {10, 2903}, {10, 2901}, {10, 2899}, {10, 2897},
105 {10, 2895}, {10, 2893}, {10, 2891}, {10, 2889}, {10, 2887}, {10, 2885},
106 {10, 2883}, {10, 2881}, {10, 2879}, {10, 2877}, {10, 2875}, {10, 2873},
107 {10, 2871}, {10, 2869}, {10, 2867}, {10, 2865}, {10, 2863}, {10, 2861},
108 {10, 2859}, {10, 2857}, {10, 2855}, {10, 2853}, {10, 2851}, {10, 2849},
109 {10, 2847}, {10, 2845}, {10, 2843}, {10, 2841}, {10, 2839}, {10, 2837},
110 {10, 2835}, {10, 2833}, {10, 2831}, {10, 2829}, {10, 2827}, {10, 2825},
111 {10, 2823}, {10, 2821}, {10, 2819}, {10, 2817}, {10, 2815}, {10, 2813},
112 {10, 2811}, {10, 2809}, {10, 2807}, {10, 2805}, {10, 2803}, {10, 2801},
113 {10, 2799}, {10, 2797}, {10, 2795}, {10, 2793}, {10, 2791}, {10, 2789},
114 {10, 2787}, {10, 2785}, {10, 2783}, {10, 2781}, {10, 2779}, {10, 2777},
115 {10, 2775}, {10, 2773}, {10, 2771}, {10, 2769}, {10, 2767}, {10, 2765},
116 {10, 2763}, {10, 2761}, {10, 2759}, {10, 2757}, {10, 2755}, {10, 2753},
117 {10, 2751}, {10, 2749}, {10, 2747}, {10, 2745}, {10, 2743}, {10, 2741},
118 {10, 2739}, {10, 2737}, {10, 2735}, {10, 2733}, {10, 2731}, {10, 2729},
119 {10, 2727}, {10, 2725}, {10, 2723}, {10, 2721}, {10, 2719}, {10, 2717},
120 {10, 2715}, {10, 2713}, {10, 2711}, {10, 2709}, {10, 2707}, {10, 2705},
121 {10, 2703}, {10, 2701}, {10, 2699}, {10, 2697}, {10, 2695}, {10, 2693},
122 {10, 2691}, {10, 2689}, {10, 2687}, {10, 2685}, {10, 2683}, {10, 2681},
123 {10, 2679}, {10, 2677}, {10, 2675}, {10, 2673}, {10, 2671}, {10, 2669},
124 {10, 2667}, {10, 2665}, {10, 2663}, {10, 2661}, {10, 2659}, {10, 2657},
125 {10, 2655}, {10, 2653}, {10, 2651}, {10, 2649}, {10, 2647}, {10, 2645},
126 {10, 2643}, {10, 2641}, {10, 2639}, {10, 2637}, {10, 2635}, {10, 2633},
127 {10, 2631}, {10, 2629}, {10, 2627}, {10, 2625}, {10, 2623}, {10, 2621},
128 {10, 2619}, {10, 2617}, {10, 2615}, {10, 2613}, {10, 2611}, {10, 2609},
129 {10, 2607}, {10, 2605}, {10, 2603}, {10, 2601}, {10, 2599}, {10, 2597},
130 {10, 2595}, {10, 2593}, {10, 2591}, {10, 2589}, {10, 2587}, {10, 2585},
131 {10, 2583}, {10, 2581}, {10, 2579}, {10, 2577}, {10, 2575}, {10, 2573},
132 {10, 2571}, {10, 2569}, {10, 2567}, {10, 2565}, {10, 2563}, {10, 2561},
133 {10, 2559}, {10, 2557}, {10, 2555}, {10, 2553}, {10, 2551}, {10, 2549},
134 {10, 2547}, {10, 2545}, {10, 2543}, {10, 2541}, {10, 2539}, {10, 2537},
135 {10, 2535}, {10, 2533}, {10, 2531}, {10, 2529}, {10, 2527}, {10, 2525},
136 {10, 2523}, {10, 2521}, {10, 2519}, {10, 2517}, {10, 2515}, {10, 2513},
137 {10, 2511}, {10, 2509}, {10, 2507}, {10, 2505}, {10, 2503}, {10, 2501},
138 {10, 2499}, {10, 2497}, {10, 2495}, {10, 2493}, {10, 2491}, {10, 2489},
139 {10, 2487}, {10, 2485}, {10, 2483}, {10, 2481}, {10, 2479}, {10, 2477},
140 {10, 2475}, {10, 2473}, {10, 2471}, {10, 2469}, {10, 2467}, {10, 2465},
141 {10, 2463}, {10, 2461}, {10, 2459}, {10, 2457}, {10, 2455}, {10, 2453},
142 {10, 2451}, {10, 2449}, {10, 2447}, {10, 2445}, {10, 2443}, {10, 2441},
143 {10, 2439}, {10, 2437}, {10, 2435}, {10, 2433}, {10, 2431}, {10, 2429},
144 {10, 2427}, {10, 2425}, {10, 2423}, {10, 2421}, {10, 2419}, {10, 2417},
145 {10, 2415}, {10, 2413}, {10, 2411}, {10, 2409}, {10, 2407}, {10, 2405},
146 {10, 2403}, {10, 2401}, {10, 2399}, {10, 2397}, {10, 2395}, {10, 2393},
147 {10, 2391}, {10, 2389}, {10, 2387}, {10, 2385}, {10, 2383}, {10, 2381},
148 {10, 2379}, {10, 2377}, {10, 2375}, {10, 2373}, {10, 2371}, {10, 2369},
149 {10, 2367}, {10, 2365}, {10, 2363}, {10, 2361}, {10, 2359}, {10, 2357},
150 {10, 2355}, {10, 2353}, {10, 2351}, {10, 2349}, {10, 2347}, {10, 2345},
151 {10, 2343}, {10, 2341}, {10, 2339}, {10, 2337}, {10, 2335}, {10, 2333},
152 {10, 2331}, {10, 2329}, {10, 2327}, {10, 2325}, {10, 2323}, {10, 2321},
153 {10, 2319}, {10, 2317}, {10, 2315}, {10, 2313}, {10, 2311}, {10, 2309},
154 {10, 2307}, {10, 2305}, {10, 2303}, {10, 2301}, {10, 2299}, {10, 2297},
155 {10, 2295}, {10, 2293}, {10, 2291}, {10, 2289}, {10, 2287}, {10, 2285},
156 {10, 2283}, {10, 2281}, {10, 2279}, {10, 2277}, {10, 2275}, {10, 2273},
157 {10, 2271}, {10, 2269}, {10, 2267}, {10, 2265}, {10, 2263}, {10, 2261},
158 {10, 2259}, {10, 2257}, {10, 2255}, {10, 2253}, {10, 2251}, {10, 2249},
159 {10, 2247}, {10, 2245}, {10, 2243}, {10, 2241}, {10, 2239}, {10, 2237},
160 {10, 2235}, {10, 2233}, {10, 2231}, {10, 2229}, {10, 2227}, {10, 2225},
161 {10, 2223}, {10, 2221}, {10, 2219}, {10, 2217}, {10, 2215}, {10, 2213},
162 {10, 2211}, {10, 2209}, {10, 2207}, {10, 2205}, {10, 2203}, {10, 2201},
163 {10, 2199}, {10, 2197}, {10, 2195}, {10, 2193}, {10, 2191}, {10, 2189},
164 {10, 2187}, {10, 2185}, {10, 2183}, {10, 2181}, {10, 2179}, {10, 2177},
165 {10, 2175}, {10, 2173}, {10, 2171}, {10, 2169}, {10, 2167}, {10, 2165},
166 {10, 2163}, {10, 2161}, {10, 2159}, {10, 2157}, {10, 2155}, {10, 2153},
167 {10, 2151}, {10, 2149}, {10, 2147}, {10, 2145}, {10, 2143}, {10, 2141},
168 {10, 2139}, {10, 2137}, {10, 2135}, {10, 2133}, {10, 2131}, {10, 2129},
169 {10, 2127}, {10, 2125}, {10, 2123}, {10, 2121}, {10, 2119}, {10, 2117},
170 {10, 2115}, {10, 2113}, {10, 2111}, {10, 2109}, {10, 2107}, {10, 2105},
171 {10, 2103}, {10, 2101}, {10, 2099}, {10, 2097}, {10, 2095}, {10, 2093},
172 {10, 2091}, {10, 2089}, {10, 2087}, {10, 2085}, {10, 2083}, {10, 2081},
173 {10, 2079}, {10, 2077}, {10, 2075}, {10, 2073}, {10, 2071}, {10, 2069},
174 {10, 2067}, {10, 2065}, {10, 2063}, {10, 2061}, {10, 2059}, {10, 2057},
175 {10, 2055}, {10, 2053}, {10, 2051}, {10, 2049}, {10, 2047}, {10, 2045},
176 {10, 2043}, {10, 2041}, {10, 2039}, {10, 2037}, {10, 2035}, {10, 2033},
177 {10, 2031}, {10, 2029}, {10, 2027}, {10, 2025}, {10, 2023}, {10, 2021},
178 {10, 2019}, {10, 2017}, {10, 2015}, {10, 2013}, {10, 2011}, {10, 2009},
179 {10, 2007}, {10, 2005}, {10, 2003}, {10, 2001}, {10, 1999}, {10, 1997},
180 {10, 1995}, {10, 1993}, {10, 1991}, {10, 1989}, {10, 1987}, {10, 1985},
181 {10, 1983}, {10, 1981}, {10, 1979}, {10, 1977}, {10, 1975}, {10, 1973},
182 {10, 1971}, {10, 1969}, {10, 1967}, {10, 1965}, {10, 1963}, {10, 1961},
183 {10, 1959}, {10, 1957}, {10, 1955}, {10, 1953}, {10, 1951}, {10, 1949},
184 {10, 1947}, {10, 1945}, {10, 1943}, {10, 1941}, {10, 1939}, {10, 1937},
185 {10, 1935}, {10, 1933}, {10, 1931}, {10, 1929}, {10, 1927}, {10, 1925},
186 {10, 1923}, {10, 1921}, {10, 1919}, {10, 1917}, {10, 1915}, {10, 1913},
187 {10, 1911}, {10, 1909}, {10, 1907}, {10, 1905}, {10, 1903}, {10, 1901},
188 {10, 1899}, {10, 1897}, {10, 1895}, {10, 1893}, {10, 1891}, {10, 1889},
189 {10, 1887}, {10, 1885}, {10, 1883}, {10, 1881}, {10, 1879}, {10, 1877},
190 {10, 1875}, {10, 1873}, {10, 1871}, {10, 1869}, {10, 1867}, {10, 1865},
191 {10, 1863}, {10, 1861}, {10, 1859}, {10, 1857}, {10, 1855}, {10, 1853},
192 {10, 1851}, {10, 1849}, {10, 1847}, {10, 1845}, {10, 1843}, {10, 1841},
193 {10, 1839}, {10, 1837}, {10, 1835}, {10, 1833}, {10, 1831}, {10, 1829},
194 {10, 1827}, {10, 1825}, {10, 1823}, {10, 1821}, {10, 1819}, {10, 1817},
195 {10, 1815}, {10, 1813}, {10, 1811}, {10, 1809}, {10, 1807}, {10, 1805},
196 {10, 1803}, {10, 1801}, {10, 1799}, {10, 1797}, {10, 1795}, {10, 1793},
197 {10, 1791}, {10, 1789}, {10, 1787}, {10, 1785}, {10, 1783}, {10, 1781},
198 {10, 1779}, {10, 1777}, {10, 1775}, {10, 1773}, {10, 1771}, {10, 1769},
199 {10, 1767}, {10, 1765}, {10, 1763}, {10, 1761}, {10, 1759}, {10, 1757},
200 {10, 1755}, {10, 1753}, {10, 1751}, {10, 1749}, {10, 1747}, {10, 1745},
201 {10, 1743}, {10, 1741}, {10, 1739}, {10, 1737}, {10, 1735}, {10, 1733},
202 {10, 1731}, {10, 1729}, {10, 1727}, {10, 1725}, {10, 1723}, {10, 1721},
203 {10, 1719}, {10, 1717}, {10, 1715}, {10, 1713}, {10, 1711}, {10, 1709},
204 {10, 1707}, {10, 1705}, {10, 1703}, {10, 1701}, {10, 1699}, {10, 1697},
205 {10, 1695}, {10, 1693}, {10, 1691}, {10, 1689}, {10, 1687}, {10, 1685},
206 {10, 1683}, {10, 1681}, {10, 1679}, {10, 1677}, {10, 1675}, {10, 1673},
207 {10, 1671}, {10, 1669}, {10, 1667}, {10, 1665}, {10, 1663}, {10, 1661},
208 {10, 1659}, {10, 1657}, {10, 1655}, {10, 1653}, {10, 1651}, {10, 1649},
209 {10, 1647}, {10, 1645}, {10, 1643}, {10, 1641}, {10, 1639}, {10, 1637},
210 {10, 1635}, {10, 1633}, {10, 1631}, {10, 1629}, {10, 1627}, {10, 1625},
211 {10, 1623}, {10, 1621}, {10, 1619}, {10, 1617}, {10, 1615}, {10, 1613},
212 {10, 1611}, {10, 1609}, {10, 1607}, {10, 1605}, {10, 1603}, {10, 1601},
213 {10, 1599}, {10, 1597}, {10, 1595}, {10, 1593}, {10, 1591}, {10, 1589},
214 {10, 1587}, {10, 1585}, {10, 1583}, {10, 1581}, {10, 1579}, {10, 1577},
215 {10, 1575}, {10, 1573}, {10, 1571}, {10, 1569}, {10, 1567}, {10, 1565},
216 {10, 1563}, {10, 1561}, {10, 1559}, {10, 1557}, {10, 1555}, {10, 1553},
217 {10, 1551}, {10, 1549}, {10, 1547}, {10, 1545}, {10, 1543}, {10, 1541},
218 {10, 1539}, {10, 1537}, {10, 1535}, {10, 1533}, {10, 1531}, {10, 1529},
219 {10, 1527}, {10, 1525}, {10, 1523}, {10, 1521}, {10, 1519}, {10, 1517},
220 {10, 1515}, {10, 1513}, {10, 1511}, {10, 1509}, {10, 1507}, {10, 1505},
221 {10, 1503}, {10, 1501}, {10, 1499}, {10, 1497}, {10, 1495}, {10, 1493},
222 {10, 1491}, {10, 1489}, {10, 1487}, {10, 1485}, {10, 1483}, {10, 1481},
223 {10, 1479}, {10, 1477}, {10, 1475}, {10, 1473}, {10, 1471}, {10, 1469},
224 {10, 1467}, {10, 1465}, {10, 1463}, {10, 1461}, {10, 1459}, {10, 1457},
225 {10, 1455}, {10, 1453}, {10, 1451}, {10, 1449}, {10, 1447}, {10, 1445},
226 {10, 1443}, {10, 1441}, {10, 1439}, {10, 1437}, {10, 1435}, {10, 1433},
227 {10, 1431}, {10, 1429}, {10, 1427}, {10, 1425}, {10, 1423}, {10, 1421},
228 {10, 1419}, {10, 1417}, {10, 1415}, {10, 1413}, {10, 1411}, {10, 1409},
229 {10, 1407}, {10, 1405}, {10, 1403}, {10, 1401}, {10, 1399}, {10, 1397},
230 {10, 1395}, {10, 1393}, {10, 1391}, {10, 1389}, {10, 1387}, {10, 1385},
231 {10, 1383}, {10, 1381}, {10, 1379}, {10, 1377}, {10, 1375}, {10, 1373},
232 {10, 1371}, {10, 1369}, {10, 1367}, {10, 1365}, {10, 1363}, {10, 1361},
233 {10, 1359}, {10, 1357}, {10, 1355}, {10, 1353}, {10, 1351}, {10, 1349},
234 {10, 1347}, {10, 1345}, {10, 1343}, {10, 1341}, {10, 1339}, {10, 1337},
235 {10, 1335}, {10, 1333}, {10, 1331}, {10, 1329}, {10, 1327}, {10, 1325},
236 {10, 1323}, {10, 1321}, {10, 1319}, {10, 1317}, {10, 1315}, {10, 1313},
237 {10, 1311}, {10, 1309}, {10, 1307}, {10, 1305}, {10, 1303}, {10, 1301},
238 {10, 1299}, {10, 1297}, {10, 1295}, {10, 1293}, {10, 1291}, {10, 1289},
239 {10, 1287}, {10, 1285}, {10, 1283}, {10, 1281}, {10, 1279}, {10, 1277},
240 {10, 1275}, {10, 1273}, {10, 1271}, {10, 1269}, {10, 1267}, {10, 1265},
241 {10, 1263}, {10, 1261}, {10, 1259}, {10, 1257}, {10, 1255}, {10, 1253},
242 {10, 1251}, {10, 1249}, {10, 1247}, {10, 1245}, {10, 1243}, {10, 1241},
243 {10, 1239}, {10, 1237}, {10, 1235}, {10, 1233}, {10, 1231}, {10, 1229},
244 {10, 1227}, {10, 1225}, {10, 1223}, {10, 1221}, {10, 1219}, {10, 1217},
245 {10, 1215}, {10, 1213}, {10, 1211}, {10, 1209}, {10, 1207}, {10, 1205},
246 {10, 1203}, {10, 1201}, {10, 1199}, {10, 1197}, {10, 1195}, {10, 1193},
247 {10, 1191}, {10, 1189}, {10, 1187}, {10, 1185}, {10, 1183}, {10, 1181},
248 {10, 1179}, {10, 1177}, {10, 1175}, {10, 1173}, {10, 1171}, {10, 1169},
249 {10, 1167}, {10, 1165}, {10, 1163}, {10, 1161}, {10, 1159}, {10, 1157},
250 {10, 1155}, {10, 1153}, {10, 1151}, {10, 1149}, {10, 1147}, {10, 1145},
251 {10, 1143}, {10, 1141}, {10, 1139}, {10, 1137}, {10, 1135}, {10, 1133},
252 {10, 1131}, {10, 1129}, {10, 1127}, {10, 1125}, {10, 1123}, {10, 1121},
253 {10, 1119}, {10, 1117}, {10, 1115}, {10, 1113}, {10, 1111}, {10, 1109},
254 {10, 1107}, {10, 1105}, {10, 1103}, {10, 1101}, {10, 1099}, {10, 1097},
255 {10, 1095}, {10, 1093}, {10, 1091}, {10, 1089}, {10, 1087}, {10, 1085},
256 {10, 1083}, {10, 1081}, {10, 1079}, {10, 1077}, {10, 1075}, {10, 1073},
257 {10, 1071}, {10, 1069}, {10, 1067}, {10, 1065}, {10, 1063}, {10, 1061},
258 {10, 1059}, {10, 1057}, {10, 1055}, {10, 1053}, {10, 1051}, {10, 1049},
259 {10, 1047}, {10, 1045}, {10, 1043}, {10, 1041}, {10, 1039}, {10, 1037},
260 {10, 1035}, {10, 1033}, {10, 1031}, {10, 1029}, {10, 1027}, {10, 1025},
261 {10, 1023}, {10, 1021}, {10, 1019}, {10, 1017}, {10, 1015}, {10, 1013},
262 {10, 1011}, {10, 1009}, {10, 1007}, {10, 1005}, {10, 1003}, {10, 1001},
263 {10, 999}, {10, 997}, {10, 995}, {10, 993}, {10, 991}, {10, 989},
264 {10, 987}, {10, 985}, {10, 983}, {10, 981}, {10, 979}, {10, 977},
265 {10, 975}, {10, 973}, {10, 971}, {10, 969}, {10, 967}, {10, 965},
266 {10, 963}, {10, 961}, {10, 959}, {10, 957}, {10, 955}, {10, 953},
267 {10, 951}, {10, 949}, {10, 947}, {10, 945}, {10, 943}, {10, 941},
268 {10, 939}, {10, 937}, {10, 935}, {10, 933}, {10, 931}, {10, 929},
269 {10, 927}, {10, 925}, {10, 923}, {10, 921}, {10, 919}, {10, 917},
270 {10, 915}, {10, 913}, {10, 911}, {10, 909}, {10, 907}, {10, 905},
271 {10, 903}, {10, 901}, {10, 899}, {10, 897}, {10, 895}, {10, 893},
272 {10, 891}, {10, 889}, {10, 887}, {10, 885}, {10, 883}, {10, 881},
273 {10, 879}, {10, 877}, {10, 875}, {10, 873}, {10, 871}, {10, 869},
274 {10, 867}, {10, 865}, {10, 863}, {10, 861}, {10, 859}, {10, 857},
275 {10, 855}, {10, 853}, {10, 851}, {10, 849}, {10, 847}, {10, 845},
276 {10, 843}, {10, 841}, {10, 839}, {10, 837}, {10, 835}, {10, 833},
277 {10, 831}, {10, 829}, {10, 827}, {10, 825}, {10, 823}, {10, 821},
278 {10, 819}, {10, 817}, {10, 815}, {10, 813}, {10, 811}, {10, 809},
279 {10, 807}, {10, 805}, {10, 803}, {10, 801}, {10, 799}, {10, 797},
280 {10, 795}, {10, 793}, {10, 791}, {10, 789}, {10, 787}, {10, 785},
281 {10, 783}, {10, 781}, {10, 779}, {10, 777}, {10, 775}, {10, 773},
282 {10, 771}, {10, 769}, {10, 767}, {10, 765}, {10, 763}, {10, 761},
283 {10, 759}, {10, 757}, {10, 755}, {10, 753}, {10, 751}, {10, 749},
284 {10, 747}, {10, 745}, {10, 743}, {10, 741}, {10, 739}, {10, 737},
285 {10, 735}, {10, 733}, {10, 731}, {10, 729}, {10, 727}, {10, 725},
286 {10, 723}, {10, 721}, {10, 719}, {10, 717}, {10, 715}, {10, 713},
287 {10, 711}, {10, 709}, {10, 707}, {10, 705}, {10, 703}, {10, 701},
288 {10, 699}, {10, 697}, {10, 695}, {10, 693}, {10, 691}, {10, 689},
289 {10, 687}, {10, 685}, {10, 683}, {10, 681}, {10, 679}, {10, 677},
290 {10, 675}, {10, 673}, {10, 671}, {10, 669}, {10, 667}, {10, 665},
291 {10, 663}, {10, 661}, {10, 659}, {10, 657}, {10, 655}, {10, 653},
292 {10, 651}, {10, 649}, {10, 647}, {10, 645}, {10, 643}, {10, 641},
293 {10, 639}, {10, 637}, {10, 635}, {10, 633}, {10, 631}, {10, 629},
294 {10, 627}, {10, 625}, {10, 623}, {10, 621}, {10, 619}, {10, 617},
295 {10, 615}, {10, 613}, {10, 611}, {10, 609}, {10, 607}, {10, 605},
296 {10, 603}, {10, 601}, {10, 599}, {10, 597}, {10, 595}, {10, 593},
297 {10, 591}, {10, 589}, {10, 587}, {10, 585}, {10, 583}, {10, 581},
298 {10, 579}, {10, 577}, {10, 575}, {10, 573}, {10, 571}, {10, 569},
299 {10, 567}, {10, 565}, {10, 563}, {10, 561}, {10, 559}, {10, 557},
300 {10, 555}, {10, 553}, {10, 551}, {10, 549}, {10, 547}, {10, 545},
301 {10, 543}, {10, 541}, {10, 539}, {10, 537}, {10, 535}, {10, 533},
302 {10, 531}, {10, 529}, {10, 527}, {10, 525}, {10, 523}, {10, 521},
303 {10, 519}, {10, 517}, {10, 515}, {10, 513}, {10, 511}, {10, 509},
304 {10, 507}, {10, 505}, {10, 503}, {10, 501}, {10, 499}, {10, 497},
305 {10, 495}, {10, 493}, {10, 491}, {10, 489}, {10, 487}, {10, 485},
306 {10, 483}, {10, 481}, {10, 479}, {10, 477}, {10, 475}, {10, 473},
307 {10, 471}, {10, 469}, {10, 467}, {10, 465}, {10, 463}, {10, 461},
308 {10, 459}, {10, 457}, {10, 455}, {10, 453}, {10, 451}, {10, 449},
309 {10, 447}, {10, 445}, {10, 443}, {10, 441}, {10, 439}, {10, 437},
310 {10, 435}, {10, 433}, {10, 431}, {10, 429}, {10, 427}, {10, 425},
311 {10, 423}, {10, 421}, {10, 419}, {10, 417}, {10, 415}, {10, 413},
312 {10, 411}, {10, 409}, {10, 407}, {10, 405}, {10, 403}, {10, 401},
313 {10, 399}, {10, 397}, {10, 395}, {10, 393}, {10, 391}, {10, 389},
314 {10, 387}, {10, 385}, {10, 383}, {10, 381}, {10, 379}, {10, 377},
315 {10, 375}, {10, 373}, {10, 371}, {10, 369}, {10, 367}, {10, 365},
316 {10, 363}, {10, 361}, {10, 359}, {10, 357}, {10, 355}, {10, 353},
317 {10, 351}, {10, 349}, {10, 347}, {10, 345}, {10, 343}, {10, 341},
318 {10, 339}, {10, 337}, {10, 335}, {10, 333}, {10, 331}, {10, 329},
319 {10, 327}, {10, 325}, {10, 323}, {10, 321}, {10, 319}, {10, 317},
320 {10, 315}, {10, 313}, {10, 311}, {10, 309}, {10, 307}, {10, 305},
321 {10, 303}, {10, 301}, {10, 299}, {10, 297}, {10, 295}, {10, 293},
322 {10, 291}, {10, 289}, {10, 287}, {10, 285}, {10, 283}, {10, 281},
323 {10, 279}, {10, 277}, {10, 275}, {10, 273}, {10, 271}, {10, 269},
324 {10, 267}, {10, 265}, {10, 263}, {10, 261}, {10, 259}, {10, 257},
325 {10, 255}, {10, 253}, {10, 251}, {10, 249}, {10, 247}, {10, 245},
326 {10, 243}, {10, 241}, {10, 239}, {10, 237}, {10, 235}, {10, 233},
327 {10, 231}, {10, 229}, {10, 227}, {10, 225}, {10, 223}, {10, 221},
328 {10, 219}, {10, 217}, {10, 215}, {10, 213}, {10, 211}, {10, 209},
329 {10, 207}, {10, 205}, {10, 203}, {10, 201}, {10, 199}, {10, 197},
330 {10, 195}, {10, 193}, {10, 191}, {10, 189}, {10, 187}, {10, 185},
331 {10, 183}, {10, 181}, {10, 179}, {10, 177}, {10, 175}, {10, 173},
332 {10, 171}, {10, 169}, {10, 167}, {10, 165}, {10, 163}, {10, 161},
333 {10, 159}, {10, 157}, {10, 155}, {10, 153}, {10, 151}, {10, 149},
334 {10, 147}, {10, 145}, {10, 143}, {10, 141}, {10, 139}, {10, 137},
335 {10, 135}, {10, 133}, {10, 131}, {10, 129}, {10, 127}, {10, 125},
336 {10, 123}, {10, 121}, {10, 119}, {10, 117}, {10, 115}, {10, 113},
337 {10, 111}, {10, 109}, {10, 107}, {10, 105}, {10, 103}, {10, 101},
338 {10, 99}, {10, 97}, {10, 95}, {10, 93}, {10, 91}, {10, 89},
339 {10, 87}, {10, 85}, {10, 83}, {10, 81}, {10, 79}, {10, 77},
340 {10, 75}, {10, 73}, {10, 71}, {10, 69}, {10, 67}, {10, 65},
341 {10, 63}, {10, 61}, {10, 59}, {10, 57}, {10, 55}, {10, 53},
342 {10, 51}, {10, 49}, {10, 47}, {10, 45}, {10, 43}, {10, 41},
343 {10, 39}, {10, 37}, {10, 35}, {10, 33}, {10, 31}, {10, 29},
344 {10, 27}, {10, 25}, {10, 23}, {10, 21}, {10, 19}, {10, 17},
345 {10, 15}, {10, 13}, {10, 11}, {10, 9}, {10, 7}, {10, 5},
346 {10, 3}, {10, 1}, {9, 63}, {9, 61}, {9, 59}, {9, 57},
347 {9, 55}, {9, 53}, {9, 51}, {9, 49}, {9, 47}, {9, 45},
348 {9, 43}, {9, 41}, {9, 39}, {9, 37}, {9, 35}, {9, 33},
349 {9, 31}, {9, 29}, {9, 27}, {9, 25}, {9, 23}, {9, 21},
350 {9, 19}, {9, 17}, {9, 15}, {9, 13}, {9, 11}, {9, 9},
351 {9, 7}, {9, 5}, {9, 3}, {9, 1}, {8, 31}, {8, 29},
352 {8, 27}, {8, 25}, {8, 23}, {8, 21}, {8, 19}, {8, 17},
353 {8, 15}, {8, 13}, {8, 11}, {8, 9}, {8, 7}, {8, 5},
354 {8, 3}, {8, 1}, {7, 15}, {7, 13}, {7, 11}, {7, 9},
355 {7, 7}, {7, 5}, {7, 3}, {7, 1}, {6, 7}, {6, 5},
356 {6, 3}, {6, 1}, {5, 3}, {5, 1}, {4, 1}, {3, 1},
357 {2, 1}, {1, 1}, {0, 0}, {1, 0}, {2, 0}, {3, 0},
358 {4, 0}, {5, 0}, {5, 2}, {6, 0}, {6, 2}, {6, 4},
359 {6, 6}, {7, 0}, {7, 2}, {7, 4}, {7, 6}, {7, 8},
360 {7, 10}, {7, 12}, {7, 14}, {8, 0}, {8, 2}, {8, 4},
361 {8, 6}, {8, 8}, {8, 10}, {8, 12}, {8, 14}, {8, 16},
362 {8, 18}, {8, 20}, {8, 22}, {8, 24}, {8, 26}, {8, 28},
363 {8, 30}, {9, 0}, {9, 2}, {9, 4}, {9, 6}, {9, 8},
364 {9, 10}, {9, 12}, {9, 14}, {9, 16}, {9, 18}, {9, 20},
365 {9, 22}, {9, 24}, {9, 26}, {9, 28}, {9, 30}, {9, 32},
366 {9, 34}, {9, 36}, {9, 38}, {9, 40}, {9, 42}, {9, 44},
367 {9, 46}, {9, 48}, {9, 50}, {9, 52}, {9, 54}, {9, 56},
368 {9, 58}, {9, 60}, {9, 62}, {10, 0}, {10, 2}, {10, 4},
369 {10, 6}, {10, 8}, {10, 10}, {10, 12}, {10, 14}, {10, 16},
370 {10, 18}, {10, 20}, {10, 22}, {10, 24}, {10, 26}, {10, 28},
371 {10, 30}, {10, 32}, {10, 34}, {10, 36}, {10, 38}, {10, 40},
372 {10, 42}, {10, 44}, {10, 46}, {10, 48}, {10, 50}, {10, 52},
373 {10, 54}, {10, 56}, {10, 58}, {10, 60}, {10, 62}, {10, 64},
374 {10, 66}, {10, 68}, {10, 70}, {10, 72}, {10, 74}, {10, 76},
375 {10, 78}, {10, 80}, {10, 82}, {10, 84}, {10, 86}, {10, 88},
376 {10, 90}, {10, 92}, {10, 94}, {10, 96}, {10, 98}, {10, 100},
377 {10, 102}, {10, 104}, {10, 106}, {10, 108}, {10, 110}, {10, 112},
378 {10, 114}, {10, 116}, {10, 118}, {10, 120}, {10, 122}, {10, 124},
379 {10, 126}, {10, 128}, {10, 130}, {10, 132}, {10, 134}, {10, 136},
380 {10, 138}, {10, 140}, {10, 142}, {10, 144}, {10, 146}, {10, 148},
381 {10, 150}, {10, 152}, {10, 154}, {10, 156}, {10, 158}, {10, 160},
382 {10, 162}, {10, 164}, {10, 166}, {10, 168}, {10, 170}, {10, 172},
383 {10, 174}, {10, 176}, {10, 178}, {10, 180}, {10, 182}, {10, 184},
384 {10, 186}, {10, 188}, {10, 190}, {10, 192}, {10, 194}, {10, 196},
385 {10, 198}, {10, 200}, {10, 202}, {10, 204}, {10, 206}, {10, 208},
386 {10, 210}, {10, 212}, {10, 214}, {10, 216}, {10, 218}, {10, 220},
387 {10, 222}, {10, 224}, {10, 226}, {10, 228}, {10, 230}, {10, 232},
388 {10, 234}, {10, 236}, {10, 238}, {10, 240}, {10, 242}, {10, 244},
389 {10, 246}, {10, 248}, {10, 250}, {10, 252}, {10, 254}, {10, 256},
390 {10, 258}, {10, 260}, {10, 262}, {10, 264}, {10, 266}, {10, 268},
391 {10, 270}, {10, 272}, {10, 274}, {10, 276}, {10, 278}, {10, 280},
392 {10, 282}, {10, 284}, {10, 286}, {10, 288}, {10, 290}, {10, 292},
393 {10, 294}, {10, 296}, {10, 298}, {10, 300}, {10, 302}, {10, 304},
394 {10, 306}, {10, 308}, {10, 310}, {10, 312}, {10, 314}, {10, 316},
395 {10, 318}, {10, 320}, {10, 322}, {10, 324}, {10, 326}, {10, 328},
396 {10, 330}, {10, 332}, {10, 334}, {10, 336}, {10, 338}, {10, 340},
397 {10, 342}, {10, 344}, {10, 346}, {10, 348}, {10, 350}, {10, 352},
398 {10, 354}, {10, 356}, {10, 358}, {10, 360}, {10, 362}, {10, 364},
399 {10, 366}, {10, 368}, {10, 370}, {10, 372}, {10, 374}, {10, 376},
400 {10, 378}, {10, 380}, {10, 382}, {10, 384}, {10, 386}, {10, 388},
401 {10, 390}, {10, 392}, {10, 394}, {10, 396}, {10, 398}, {10, 400},
402 {10, 402}, {10, 404}, {10, 406}, {10, 408}, {10, 410}, {10, 412},
403 {10, 414}, {10, 416}, {10, 418}, {10, 420}, {10, 422}, {10, 424},
404 {10, 426}, {10, 428}, {10, 430}, {10, 432}, {10, 434}, {10, 436},
405 {10, 438}, {10, 440}, {10, 442}, {10, 444}, {10, 446}, {10, 448},
406 {10, 450}, {10, 452}, {10, 454}, {10, 456}, {10, 458}, {10, 460},
407 {10, 462}, {10, 464}, {10, 466}, {10, 468}, {10, 470}, {10, 472},
408 {10, 474}, {10, 476}, {10, 478}, {10, 480}, {10, 482}, {10, 484},
409 {10, 486}, {10, 488}, {10, 490}, {10, 492}, {10, 494}, {10, 496},
410 {10, 498}, {10, 500}, {10, 502}, {10, 504}, {10, 506}, {10, 508},
411 {10, 510}, {10, 512}, {10, 514}, {10, 516}, {10, 518}, {10, 520},
412 {10, 522}, {10, 524}, {10, 526}, {10, 528}, {10, 530}, {10, 532},
413 {10, 534}, {10, 536}, {10, 538}, {10, 540}, {10, 542}, {10, 544},
414 {10, 546}, {10, 548}, {10, 550}, {10, 552}, {10, 554}, {10, 556},
415 {10, 558}, {10, 560}, {10, 562}, {10, 564}, {10, 566}, {10, 568},
416 {10, 570}, {10, 572}, {10, 574}, {10, 576}, {10, 578}, {10, 580},
417 {10, 582}, {10, 584}, {10, 586}, {10, 588}, {10, 590}, {10, 592},
418 {10, 594}, {10, 596}, {10, 598}, {10, 600}, {10, 602}, {10, 604},
419 {10, 606}, {10, 608}, {10, 610}, {10, 612}, {10, 614}, {10, 616},
420 {10, 618}, {10, 620}, {10, 622}, {10, 624}, {10, 626}, {10, 628},
421 {10, 630}, {10, 632}, {10, 634}, {10, 636}, {10, 638}, {10, 640},
422 {10, 642}, {10, 644}, {10, 646}, {10, 648}, {10, 650}, {10, 652},
423 {10, 654}, {10, 656}, {10, 658}, {10, 660}, {10, 662}, {10, 664},
424 {10, 666}, {10, 668}, {10, 670}, {10, 672}, {10, 674}, {10, 676},
425 {10, 678}, {10, 680}, {10, 682}, {10, 684}, {10, 686}, {10, 688},
426 {10, 690}, {10, 692}, {10, 694}, {10, 696}, {10, 698}, {10, 700},
427 {10, 702}, {10, 704}, {10, 706}, {10, 708}, {10, 710}, {10, 712},
428 {10, 714}, {10, 716}, {10, 718}, {10, 720}, {10, 722}, {10, 724},
429 {10, 726}, {10, 728}, {10, 730}, {10, 732}, {10, 734}, {10, 736},
430 {10, 738}, {10, 740}, {10, 742}, {10, 744}, {10, 746}, {10, 748},
431 {10, 750}, {10, 752}, {10, 754}, {10, 756}, {10, 758}, {10, 760},
432 {10, 762}, {10, 764}, {10, 766}, {10, 768}, {10, 770}, {10, 772},
433 {10, 774}, {10, 776}, {10, 778}, {10, 780}, {10, 782}, {10, 784},
434 {10, 786}, {10, 788}, {10, 790}, {10, 792}, {10, 794}, {10, 796},
435 {10, 798}, {10, 800}, {10, 802}, {10, 804}, {10, 806}, {10, 808},
436 {10, 810}, {10, 812}, {10, 814}, {10, 816}, {10, 818}, {10, 820},
437 {10, 822}, {10, 824}, {10, 826}, {10, 828}, {10, 830}, {10, 832},
438 {10, 834}, {10, 836}, {10, 838}, {10, 840}, {10, 842}, {10, 844},
439 {10, 846}, {10, 848}, {10, 850}, {10, 852}, {10, 854}, {10, 856},
440 {10, 858}, {10, 860}, {10, 862}, {10, 864}, {10, 866}, {10, 868},
441 {10, 870}, {10, 872}, {10, 874}, {10, 876}, {10, 878}, {10, 880},
442 {10, 882}, {10, 884}, {10, 886}, {10, 888}, {10, 890}, {10, 892},
443 {10, 894}, {10, 896}, {10, 898}, {10, 900}, {10, 902}, {10, 904},
444 {10, 906}, {10, 908}, {10, 910}, {10, 912}, {10, 914}, {10, 916},
445 {10, 918}, {10, 920}, {10, 922}, {10, 924}, {10, 926}, {10, 928},
446 {10, 930}, {10, 932}, {10, 934}, {10, 936}, {10, 938}, {10, 940},
447 {10, 942}, {10, 944}, {10, 946}, {10, 948}, {10, 950}, {10, 952},
448 {10, 954}, {10, 956}, {10, 958}, {10, 960}, {10, 962}, {10, 964},
449 {10, 966}, {10, 968}, {10, 970}, {10, 972}, {10, 974}, {10, 976},
450 {10, 978}, {10, 980}, {10, 982}, {10, 984}, {10, 986}, {10, 988},
451 {10, 990}, {10, 992}, {10, 994}, {10, 996}, {10, 998}, {10, 1000},
452 {10, 1002}, {10, 1004}, {10, 1006}, {10, 1008}, {10, 1010}, {10, 1012},
453 {10, 1014}, {10, 1016}, {10, 1018}, {10, 1020}, {10, 1022}, {10, 1024},
454 {10, 1026}, {10, 1028}, {10, 1030}, {10, 1032}, {10, 1034}, {10, 1036},
455 {10, 1038}, {10, 1040}, {10, 1042}, {10, 1044}, {10, 1046}, {10, 1048},
456 {10, 1050}, {10, 1052}, {10, 1054}, {10, 1056}, {10, 1058}, {10, 1060},
457 {10, 1062}, {10, 1064}, {10, 1066}, {10, 1068}, {10, 1070}, {10, 1072},
458 {10, 1074}, {10, 1076}, {10, 1078}, {10, 1080}, {10, 1082}, {10, 1084},
459 {10, 1086}, {10, 1088}, {10, 1090}, {10, 1092}, {10, 1094}, {10, 1096},
460 {10, 1098}, {10, 1100}, {10, 1102}, {10, 1104}, {10, 1106}, {10, 1108},
461 {10, 1110}, {10, 1112}, {10, 1114}, {10, 1116}, {10, 1118}, {10, 1120},
462 {10, 1122}, {10, 1124}, {10, 1126}, {10, 1128}, {10, 1130}, {10, 1132},
463 {10, 1134}, {10, 1136}, {10, 1138}, {10, 1140}, {10, 1142}, {10, 1144},
464 {10, 1146}, {10, 1148}, {10, 1150}, {10, 1152}, {10, 1154}, {10, 1156},
465 {10, 1158}, {10, 1160}, {10, 1162}, {10, 1164}, {10, 1166}, {10, 1168},
466 {10, 1170}, {10, 1172}, {10, 1174}, {10, 1176}, {10, 1178}, {10, 1180},
467 {10, 1182}, {10, 1184}, {10, 1186}, {10, 1188}, {10, 1190}, {10, 1192},
468 {10, 1194}, {10, 1196}, {10, 1198}, {10, 1200}, {10, 1202}, {10, 1204},
469 {10, 1206}, {10, 1208}, {10, 1210}, {10, 1212}, {10, 1214}, {10, 1216},
470 {10, 1218}, {10, 1220}, {10, 1222}, {10, 1224}, {10, 1226}, {10, 1228},
471 {10, 1230}, {10, 1232}, {10, 1234}, {10, 1236}, {10, 1238}, {10, 1240},
472 {10, 1242}, {10, 1244}, {10, 1246}, {10, 1248}, {10, 1250}, {10, 1252},
473 {10, 1254}, {10, 1256}, {10, 1258}, {10, 1260}, {10, 1262}, {10, 1264},
474 {10, 1266}, {10, 1268}, {10, 1270}, {10, 1272}, {10, 1274}, {10, 1276},
475 {10, 1278}, {10, 1280}, {10, 1282}, {10, 1284}, {10, 1286}, {10, 1288},
476 {10, 1290}, {10, 1292}, {10, 1294}, {10, 1296}, {10, 1298}, {10, 1300},
477 {10, 1302}, {10, 1304}, {10, 1306}, {10, 1308}, {10, 1310}, {10, 1312},
478 {10, 1314}, {10, 1316}, {10, 1318}, {10, 1320}, {10, 1322}, {10, 1324},
479 {10, 1326}, {10, 1328}, {10, 1330}, {10, 1332}, {10, 1334}, {10, 1336},
480 {10, 1338}, {10, 1340}, {10, 1342}, {10, 1344}, {10, 1346}, {10, 1348},
481 {10, 1350}, {10, 1352}, {10, 1354}, {10, 1356}, {10, 1358}, {10, 1360},
482 {10, 1362}, {10, 1364}, {10, 1366}, {10, 1368}, {10, 1370}, {10, 1372},
483 {10, 1374}, {10, 1376}, {10, 1378}, {10, 1380}, {10, 1382}, {10, 1384},
484 {10, 1386}, {10, 1388}, {10, 1390}, {10, 1392}, {10, 1394}, {10, 1396},
485 {10, 1398}, {10, 1400}, {10, 1402}, {10, 1404}, {10, 1406}, {10, 1408},
486 {10, 1410}, {10, 1412}, {10, 1414}, {10, 1416}, {10, 1418}, {10, 1420},
487 {10, 1422}, {10, 1424}, {10, 1426}, {10, 1428}, {10, 1430}, {10, 1432},
488 {10, 1434}, {10, 1436}, {10, 1438}, {10, 1440}, {10, 1442}, {10, 1444},
489 {10, 1446}, {10, 1448}, {10, 1450}, {10, 1452}, {10, 1454}, {10, 1456},
490 {10, 1458}, {10, 1460}, {10, 1462}, {10, 1464}, {10, 1466}, {10, 1468},
491 {10, 1470}, {10, 1472}, {10, 1474}, {10, 1476}, {10, 1478}, {10, 1480},
492 {10, 1482}, {10, 1484}, {10, 1486}, {10, 1488}, {10, 1490}, {10, 1492},
493 {10, 1494}, {10, 1496}, {10, 1498}, {10, 1500}, {10, 1502}, {10, 1504},
494 {10, 1506}, {10, 1508}, {10, 1510}, {10, 1512}, {10, 1514}, {10, 1516},
495 {10, 1518}, {10, 1520}, {10, 1522}, {10, 1524}, {10, 1526}, {10, 1528},
496 {10, 1530}, {10, 1532}, {10, 1534}, {10, 1536}, {10, 1538}, {10, 1540},
497 {10, 1542}, {10, 1544}, {10, 1546}, {10, 1548}, {10, 1550}, {10, 1552},
498 {10, 1554}, {10, 1556}, {10, 1558}, {10, 1560}, {10, 1562}, {10, 1564},
499 {10, 1566}, {10, 1568}, {10, 1570}, {10, 1572}, {10, 1574}, {10, 1576},
500 {10, 1578}, {10, 1580}, {10, 1582}, {10, 1584}, {10, 1586}, {10, 1588},
501 {10, 1590}, {10, 1592}, {10, 1594}, {10, 1596}, {10, 1598}, {10, 1600},
502 {10, 1602}, {10, 1604}, {10, 1606}, {10, 1608}, {10, 1610}, {10, 1612},
503 {10, 1614}, {10, 1616}, {10, 1618}, {10, 1620}, {10, 1622}, {10, 1624},
504 {10, 1626}, {10, 1628}, {10, 1630}, {10, 1632}, {10, 1634}, {10, 1636},
505 {10, 1638}, {10, 1640}, {10, 1642}, {10, 1644}, {10, 1646}, {10, 1648},
506 {10, 1650}, {10, 1652}, {10, 1654}, {10, 1656}, {10, 1658}, {10, 1660},
507 {10, 1662}, {10, 1664}, {10, 1666}, {10, 1668}, {10, 1670}, {10, 1672},
508 {10, 1674}, {10, 1676}, {10, 1678}, {10, 1680}, {10, 1682}, {10, 1684},
509 {10, 1686}, {10, 1688}, {10, 1690}, {10, 1692}, {10, 1694}, {10, 1696},
510 {10, 1698}, {10, 1700}, {10, 1702}, {10, 1704}, {10, 1706}, {10, 1708},
511 {10, 1710}, {10, 1712}, {10, 1714}, {10, 1716}, {10, 1718}, {10, 1720},
512 {10, 1722}, {10, 1724}, {10, 1726}, {10, 1728}, {10, 1730}, {10, 1732},
513 {10, 1734}, {10, 1736}, {10, 1738}, {10, 1740}, {10, 1742}, {10, 1744},
514 {10, 1746}, {10, 1748}, {10, 1750}, {10, 1752}, {10, 1754}, {10, 1756},
515 {10, 1758}, {10, 1760}, {10, 1762}, {10, 1764}, {10, 1766}, {10, 1768},
516 {10, 1770}, {10, 1772}, {10, 1774}, {10, 1776}, {10, 1778}, {10, 1780},
517 {10, 1782}, {10, 1784}, {10, 1786}, {10, 1788}, {10, 1790}, {10, 1792},
518 {10, 1794}, {10, 1796}, {10, 1798}, {10, 1800}, {10, 1802}, {10, 1804},
519 {10, 1806}, {10, 1808}, {10, 1810}, {10, 1812}, {10, 1814}, {10, 1816},
520 {10, 1818}, {10, 1820}, {10, 1822}, {10, 1824}, {10, 1826}, {10, 1828},
521 {10, 1830}, {10, 1832}, {10, 1834}, {10, 1836}, {10, 1838}, {10, 1840},
522 {10, 1842}, {10, 1844}, {10, 1846}, {10, 1848}, {10, 1850}, {10, 1852},
523 {10, 1854}, {10, 1856}, {10, 1858}, {10, 1860}, {10, 1862}, {10, 1864},
524 {10, 1866}, {10, 1868}, {10, 1870}, {10, 1872}, {10, 1874}, {10, 1876},
525 {10, 1878}, {10, 1880}, {10, 1882}, {10, 1884}, {10, 1886}, {10, 1888},
526 {10, 1890}, {10, 1892}, {10, 1894}, {10, 1896}, {10, 1898}, {10, 1900},
527 {10, 1902}, {10, 1904}, {10, 1906}, {10, 1908}, {10, 1910}, {10, 1912},
528 {10, 1914}, {10, 1916}, {10, 1918}, {10, 1920}, {10, 1922}, {10, 1924},
529 {10, 1926}, {10, 1928}, {10, 1930}, {10, 1932}, {10, 1934}, {10, 1936},
530 {10, 1938}, {10, 1940}, {10, 1942}, {10, 1944}, {10, 1946}, {10, 1948},
531 {10, 1950}, {10, 1952}, {10, 1954}, {10, 1956}, {10, 1958}, {10, 1960},
532 {10, 1962}, {10, 1964}, {10, 1966}, {10, 1968}, {10, 1970}, {10, 1972},
533 {10, 1974}, {10, 1976}, {10, 1978}, {10, 1980}, {10, 1982}, {10, 1984},
534 {10, 1986}, {10, 1988}, {10, 1990}, {10, 1992}, {10, 1994}, {10, 1996},
535 {10, 1998}, {10, 2000}, {10, 2002}, {10, 2004}, {10, 2006}, {10, 2008},
536 {10, 2010}, {10, 2012}, {10, 2014}, {10, 2016}, {10, 2018}, {10, 2020},
537 {10, 2022}, {10, 2024}, {10, 2026}, {10, 2028}, {10, 2030}, {10, 2032},
538 {10, 2034}, {10, 2036}, {10, 2038}, {10, 2040}, {10, 2042}, {10, 2044},
539 {10, 2046}, {10, 2048}, {10, 2050}, {10, 2052}, {10, 2054}, {10, 2056},
540 {10, 2058}, {10, 2060}, {10, 2062}, {10, 2064}, {10, 2066}, {10, 2068},
541 {10, 2070}, {10, 2072}, {10, 2074}, {10, 2076}, {10, 2078}, {10, 2080},
542 {10, 2082}, {10, 2084}, {10, 2086}, {10, 2088}, {10, 2090}, {10, 2092},
543 {10, 2094}, {10, 2096}, {10, 2098}, {10, 2100}, {10, 2102}, {10, 2104},
544 {10, 2106}, {10, 2108}, {10, 2110}, {10, 2112}, {10, 2114}, {10, 2116},
545 {10, 2118}, {10, 2120}, {10, 2122}, {10, 2124}, {10, 2126}, {10, 2128},
546 {10, 2130}, {10, 2132}, {10, 2134}, {10, 2136}, {10, 2138}, {10, 2140},
547 {10, 2142}, {10, 2144}, {10, 2146}, {10, 2148}, {10, 2150}, {10, 2152},
548 {10, 2154}, {10, 2156}, {10, 2158}, {10, 2160}, {10, 2162}, {10, 2164},
549 {10, 2166}, {10, 2168}, {10, 2170}, {10, 2172}, {10, 2174}, {10, 2176},
550 {10, 2178}, {10, 2180}, {10, 2182}, {10, 2184}, {10, 2186}, {10, 2188},
551 {10, 2190}, {10, 2192}, {10, 2194}, {10, 2196}, {10, 2198}, {10, 2200},
552 {10, 2202}, {10, 2204}, {10, 2206}, {10, 2208}, {10, 2210}, {10, 2212},
553 {10, 2214}, {10, 2216}, {10, 2218}, {10, 2220}, {10, 2222}, {10, 2224},
554 {10, 2226}, {10, 2228}, {10, 2230}, {10, 2232}, {10, 2234}, {10, 2236},
555 {10, 2238}, {10, 2240}, {10, 2242}, {10, 2244}, {10, 2246}, {10, 2248},
556 {10, 2250}, {10, 2252}, {10, 2254}, {10, 2256}, {10, 2258}, {10, 2260},
557 {10, 2262}, {10, 2264}, {10, 2266}, {10, 2268}, {10, 2270}, {10, 2272},
558 {10, 2274}, {10, 2276}, {10, 2278}, {10, 2280}, {10, 2282}, {10, 2284},
559 {10, 2286}, {10, 2288}, {10, 2290}, {10, 2292}, {10, 2294}, {10, 2296},
560 {10, 2298}, {10, 2300}, {10, 2302}, {10, 2304}, {10, 2306}, {10, 2308},
561 {10, 2310}, {10, 2312}, {10, 2314}, {10, 2316}, {10, 2318}, {10, 2320},
562 {10, 2322}, {10, 2324}, {10, 2326}, {10, 2328}, {10, 2330}, {10, 2332},
563 {10, 2334}, {10, 2336}, {10, 2338}, {10, 2340}, {10, 2342}, {10, 2344},
564 {10, 2346}, {10, 2348}, {10, 2350}, {10, 2352}, {10, 2354}, {10, 2356},
565 {10, 2358}, {10, 2360}, {10, 2362}, {10, 2364}, {10, 2366}, {10, 2368},
566 {10, 2370}, {10, 2372}, {10, 2374}, {10, 2376}, {10, 2378}, {10, 2380},
567 {10, 2382}, {10, 2384}, {10, 2386}, {10, 2388}, {10, 2390}, {10, 2392},
568 {10, 2394}, {10, 2396}, {10, 2398}, {10, 2400}, {10, 2402}, {10, 2404},
569 {10, 2406}, {10, 2408}, {10, 2410}, {10, 2412}, {10, 2414}, {10, 2416},
570 {10, 2418}, {10, 2420}, {10, 2422}, {10, 2424}, {10, 2426}, {10, 2428},
571 {10, 2430}, {10, 2432}, {10, 2434}, {10, 2436}, {10, 2438}, {10, 2440},
572 {10, 2442}, {10, 2444}, {10, 2446}, {10, 2448}, {10, 2450}, {10, 2452},
573 {10, 2454}, {10, 2456}, {10, 2458}, {10, 2460}, {10, 2462}, {10, 2464},
574 {10, 2466}, {10, 2468}, {10, 2470}, {10, 2472}, {10, 2474}, {10, 2476},
575 {10, 2478}, {10, 2480}, {10, 2482}, {10, 2484}, {10, 2486}, {10, 2488},
576 {10, 2490}, {10, 2492}, {10, 2494}, {10, 2496}, {10, 2498}, {10, 2500},
577 {10, 2502}, {10, 2504}, {10, 2506}, {10, 2508}, {10, 2510}, {10, 2512},
578 {10, 2514}, {10, 2516}, {10, 2518}, {10, 2520}, {10, 2522}, {10, 2524},
579 {10, 2526}, {10, 2528}, {10, 2530}, {10, 2532}, {10, 2534}, {10, 2536},
580 {10, 2538}, {10, 2540}, {10, 2542}, {10, 2544}, {10, 2546}, {10, 2548},
581 {10, 2550}, {10, 2552}, {10, 2554}, {10, 2556}, {10, 2558}, {10, 2560},
582 {10, 2562}, {10, 2564}, {10, 2566}, {10, 2568}, {10, 2570}, {10, 2572},
583 {10, 2574}, {10, 2576}, {10, 2578}, {10, 2580}, {10, 2582}, {10, 2584},
584 {10, 2586}, {10, 2588}, {10, 2590}, {10, 2592}, {10, 2594}, {10, 2596},
585 {10, 2598}, {10, 2600}, {10, 2602}, {10, 2604}, {10, 2606}, {10, 2608},
586 {10, 2610}, {10, 2612}, {10, 2614}, {10, 2616}, {10, 2618}, {10, 2620},
587 {10, 2622}, {10, 2624}, {10, 2626}, {10, 2628}, {10, 2630}, {10, 2632},
588 {10, 2634}, {10, 2636}, {10, 2638}, {10, 2640}, {10, 2642}, {10, 2644},
589 {10, 2646}, {10, 2648}, {10, 2650}, {10, 2652}, {10, 2654}, {10, 2656},
590 {10, 2658}, {10, 2660}, {10, 2662}, {10, 2664}, {10, 2666}, {10, 2668},
591 {10, 2670}, {10, 2672}, {10, 2674}, {10, 2676}, {10, 2678}, {10, 2680},
592 {10, 2682}, {10, 2684}, {10, 2686}, {10, 2688}, {10, 2690}, {10, 2692},
593 {10, 2694}, {10, 2696}, {10, 2698}, {10, 2700}, {10, 2702}, {10, 2704},
594 {10, 2706}, {10, 2708}, {10, 2710}, {10, 2712}, {10, 2714}, {10, 2716},
595 {10, 2718}, {10, 2720}, {10, 2722}, {10, 2724}, {10, 2726}, {10, 2728},
596 {10, 2730}, {10, 2732}, {10, 2734}, {10, 2736}, {10, 2738}, {10, 2740},
597 {10, 2742}, {10, 2744}, {10, 2746}, {10, 2748}, {10, 2750}, {10, 2752},
598 {10, 2754}, {10, 2756}, {10, 2758}, {10, 2760}, {10, 2762}, {10, 2764},
599 {10, 2766}, {10, 2768}, {10, 2770}, {10, 2772}, {10, 2774}, {10, 2776},
600 {10, 2778}, {10, 2780}, {10, 2782}, {10, 2784}, {10, 2786}, {10, 2788},
601 {10, 2790}, {10, 2792}, {10, 2794}, {10, 2796}, {10, 2798}, {10, 2800},
602 {10, 2802}, {10, 2804}, {10, 2806}, {10, 2808}, {10, 2810}, {10, 2812},
603 {10, 2814}, {10, 2816}, {10, 2818}, {10, 2820}, {10, 2822}, {10, 2824},
604 {10, 2826}, {10, 2828}, {10, 2830}, {10, 2832}, {10, 2834}, {10, 2836},
605 {10, 2838}, {10, 2840}, {10, 2842}, {10, 2844}, {10, 2846}, {10, 2848},
606 {10, 2850}, {10, 2852}, {10, 2854}, {10, 2856}, {10, 2858}, {10, 2860},
607 {10, 2862}, {10, 2864}, {10, 2866}, {10, 2868}, {10, 2870}, {10, 2872},
608 {10, 2874}, {10, 2876}, {10, 2878}, {10, 2880}, {10, 2882}, {10, 2884},
609 {10, 2886}, {10, 2888}, {10, 2890}, {10, 2892}, {10, 2894}, {10, 2896},
610 {10, 2898}, {10, 2900}, {10, 2902}, {10, 2904}, {10, 2906}, {10, 2908},
611 {10, 2910}, {10, 2912}, {10, 2914}, {10, 2916}, {10, 2918}, {10, 2920},
612 {10, 2922}, {10, 2924}, {10, 2926}, {10, 2928}, {10, 2930}, {10, 2932},
613 {10, 2934}, {10, 2936}, {10, 2938}, {10, 2940}, {10, 2942}, {10, 2944},
614 {10, 2946}, {10, 2948}, {10, 2950}, {10, 2952}, {10, 2954}, {10, 2956},
615 {10, 2958}, {10, 2960}, {10, 2962}, {10, 2964}, {10, 2966}, {10, 2968},
616 {10, 2970}, {10, 2972}, {10, 2974}, {10, 2976}, {10, 2978}, {10, 2980},
617 {10, 2982}, {10, 2984}, {10, 2986}, {10, 2988}, {10, 2990}, {10, 2992},
618 {10, 2994}, {10, 2996}, {10, 2998}, {10, 3000}, {10, 3002}, {10, 3004},
619 {10, 3006}, {10, 3008}, {10, 3010}, {10, 3012}, {10, 3014}, {10, 3016},
620 {10, 3018}, {10, 3020}, {10, 3022}, {10, 3024}, {10, 3026}, {10, 3028},
621 {10, 3030}, {10, 3032}, {10, 3034}, {10, 3036}, {10, 3038}, {10, 3040},
622 {10, 3042}, {10, 3044}, {10, 3046}, {10, 3048}, {10, 3050}, {10, 3052},
623 {10, 3054}, {10, 3056}, {10, 3058}, {10, 3060}, {10, 3062}, {10, 3064},
624 {10, 3066}, {10, 3068}, {10, 3070}, {10, 3072}, {10, 3074}, {10, 3076},
625 {10, 3078}, {10, 3080}, {10, 3082}, {10, 3084}, {10, 3086}, {10, 3088},
626 {10, 3090}, {10, 3092}, {10, 3094}, {10, 3096}, {10, 3098}, {10, 3100},
627 {10, 3102}, {10, 3104}, {10, 3106}, {10, 3108}, {10, 3110}, {10, 3112},
628 {10, 3114}, {10, 3116}, {10, 3118}, {10, 3120}, {10, 3122}, {10, 3124},
629 {10, 3126}, {10, 3128}, {10, 3130}, {10, 3132}, {10, 3134}, {10, 3136},
630 {10, 3138}, {10, 3140}, {10, 3142}, {10, 3144}, {10, 3146}, {10, 3148},
631 {10, 3150}, {10, 3152}, {10, 3154}, {10, 3156}, {10, 3158}, {10, 3160},
632 {10, 3162}, {10, 3164}, {10, 3166}, {10, 3168}, {10, 3170}, {10, 3172},
633 {10, 3174}, {10, 3176}, {10, 3178}, {10, 3180}, {10, 3182}, {10, 3184},
634 {10, 3186}, {10, 3188}, {10, 3190}, {10, 3192}, {10, 3194}, {10, 3196},
635 {10, 3198}, {10, 3200}, {10, 3202}, {10, 3204}, {10, 3206}, {10, 3208},
636 {10, 3210}, {10, 3212}, {10, 3214}, {10, 3216}, {10, 3218}, {10, 3220},
637 {10, 3222}, {10, 3224}, {10, 3226}, {10, 3228}, {10, 3230}, {10, 3232},
638 {10, 3234}, {10, 3236}, {10, 3238}, {10, 3240}, {10, 3242}, {10, 3244},
639 {10, 3246}, {10, 3248}, {10, 3250}, {10, 3252}, {10, 3254}, {10, 3256},
640 {10, 3258}, {10, 3260}, {10, 3262}, {10, 3264}, {10, 3266}, {10, 3268},
641 {10, 3270}, {10, 3272}, {10, 3274}, {10, 3276}, {10, 3278}, {10, 3280},
642 {10, 3282}, {10, 3284}, {10, 3286}, {10, 3288}, {10, 3290}, {10, 3292},
643 {10, 3294}, {10, 3296}, {10, 3298}, {10, 3300}, {10, 3302}, {10, 3304},
644 {10, 3306}, {10, 3308}, {10, 3310}, {10, 3312}, {10, 3314}, {10, 3316},
645 {10, 3318}, {10, 3320}, {10, 3322}, {10, 3324}, {10, 3326}, {10, 3328},
646 {10, 3330}, {10, 3332}, {10, 3334}, {10, 3336}, {10, 3338}, {10, 3340},
647 {10, 3342}, {10, 3344}, {10, 3346}, {10, 3348}, {10, 3350}, {10, 3352},
648 {10, 3354}, {10, 3356}, {10, 3358}, {10, 3360}, {10, 3362}, {10, 3364},
649 {10, 3366}, {10, 3368}, {10, 3370}, {10, 3372}, {10, 3374}, {10, 3376},
650 {10, 3378}, {10, 3380}, {10, 3382}, {10, 3384}, {10, 3386}, {10, 3388},
651 {10, 3390}, {10, 3392}, {10, 3394}, {10, 3396}, {10, 3398}, {10, 3400},
652 {10, 3402}, {10, 3404}, {10, 3406}, {10, 3408}, {10, 3410}, {10, 3412},
653 {10, 3414}, {10, 3416}, {10, 3418}, {10, 3420}, {10, 3422}, {10, 3424},
654 {10, 3426}, {10, 3428}, {10, 3430}, {10, 3432}, {10, 3434}, {10, 3436},
655 {10, 3438}, {10, 3440}, {10, 3442}, {10, 3444}, {10, 3446}, {10, 3448},
656 {10, 3450}, {10, 3452}, {10, 3454}, {10, 3456}, {10, 3458}, {10, 3460},
657 {10, 3462}, {10, 3464}, {10, 3466}, {10, 3468}, {10, 3470}, {10, 3472},
658 {10, 3474}, {10, 3476}, {10, 3478}, {10, 3480}, {10, 3482}, {10, 3484},
659 {10, 3486}, {10, 3488}, {10, 3490}, {10, 3492}, {10, 3494}, {10, 3496},
660 {10, 3498}, {10, 3500}, {10, 3502}, {10, 3504}, {10, 3506}, {10, 3508},
661 {10, 3510}, {10, 3512}, {10, 3514}, {10, 3516}, {10, 3518}, {10, 3520},
662 {10, 3522}, {10, 3524}, {10, 3526}, {10, 3528}, {10, 3530}, {10, 3532},
663 {10, 3534}, {10, 3536}, {10, 3538}, {10, 3540}, {10, 3542}, {10, 3544},
664 {10, 3546}, {10, 3548}, {10, 3550}, {10, 3552}, {10, 3554}, {10, 3556},
665 {10, 3558}, {10, 3560}, {10, 3562}, {10, 3564}, {10, 3566}, {10, 3568},
666 {10, 3570}, {10, 3572}, {10, 3574}, {10, 3576}, {10, 3578}, {10, 3580},
667 {10, 3582}, {10, 3584}, {10, 3586}, {10, 3588}, {10, 3590}, {10, 3592},
668 {10, 3594}, {10, 3596}, {10, 3598}, {10, 3600}, {10, 3602}, {10, 3604},
669 {10, 3606}, {10, 3608}, {10, 3610}, {10, 3612}, {10, 3614}, {10, 3616},
670 {10, 3618}, {10, 3620}, {10, 3622}, {10, 3624}, {10, 3626}, {10, 3628},
671 {10, 3630}, {10, 3632}, {10, 3634}, {10, 3636}, {10, 3638}, {10, 3640},
672 {10, 3642}, {10, 3644}, {10, 3646}, {10, 3648}, {10, 3650}, {10, 3652},
673 {10, 3654}, {10, 3656}, {10, 3658}, {10, 3660}, {10, 3662}, {10, 3664},
674 {10, 3666}, {10, 3668}, {10, 3670}, {10, 3672}, {10, 3674}, {10, 3676},
675 {10, 3678}, {10, 3680}, {10, 3682}, {10, 3684}, {10, 3686}, {10, 3688},
676 {10, 3690}, {10, 3692}, {10, 3694}, {10, 3696}, {10, 3698}, {10, 3700},
677 {10, 3702}, {10, 3704}, {10, 3706}, {10, 3708}, {10, 3710}, {10, 3712},
678 {10, 3714}, {10, 3716}, {10, 3718}, {10, 3720}, {10, 3722}, {10, 3724},
679 {10, 3726}, {10, 3728}, {10, 3730}, {10, 3732}, {10, 3734}, {10, 3736},
680 {10, 3738}, {10, 3740}, {10, 3742}, {10, 3744}, {10, 3746}, {10, 3748},
681 {10, 3750}, {10, 3752}, {10, 3754}, {10, 3756}, {10, 3758}, {10, 3760},
682 {10, 3762}, {10, 3764}, {10, 3766}, {10, 3768}, {10, 3770}, {10, 3772},
683 {10, 3774}, {10, 3776}, {10, 3778}, {10, 3780}, {10, 3782}, {10, 3784},
684 {10, 3786}, {10, 3788}, {10, 3790}, {10, 3792}, {10, 3794}, {10, 3796},
685 {10, 3798}, {10, 3800}, {10, 3802}, {10, 3804}, {10, 3806}, {10, 3808},
686 {10, 3810}, {10, 3812}, {10, 3814}, {10, 3816}, {10, 3818}, {10, 3820},
687 {10, 3822}, {10, 3824}, {10, 3826}, {10, 3828}, {10, 3830}, {10, 3832},
688 {10, 3834}, {10, 3836}, {10, 3838}, {10, 3840}, {10, 3842}, {10, 3844},
689 {10, 3846}, {10, 3848}, {10, 3850}, {10, 3852}, {10, 3854}, {10, 3856},
690 {10, 3858}, {10, 3860}, {10, 3862}, {10, 3864}, {10, 3866}, {10, 3868},
691 {10, 3870}, {10, 3872}, {10, 3874}, {10, 3876}, {10, 3878}, {10, 3880},
692 {10, 3882}, {10, 3884}, {10, 3886}, {10, 3888}, {10, 3890}, {10, 3892},
693 {10, 3894}, {10, 3896}, {10, 3898}, {10, 3900}, {10, 3902}, {10, 3904},
694 {10, 3906}, {10, 3908}, {10, 3910}, {10, 3912}, {10, 3914}, {10, 3916},
695 {10, 3918}, {10, 3920}, {10, 3922}, {10, 3924}, {10, 3926}, {10, 3928},
696 {10, 3930}, {10, 3932}, {10, 3934}, {10, 3936}, {10, 3938}, {10, 3940},
697 {10, 3942}, {10, 3944}, {10, 3946}, {10, 3948}, {10, 3950}, {10, 3952},
698 {10, 3954}, {10, 3956}, {10, 3958}, {10, 3960}
699};
vp8/encoder/firstpass.c+7−7
@@ -8,23 +8,23 @@ · 7 unmodified lines
8 * be found in the AUTHORS file in the root of the source tree.8 * be found in the AUTHORS file in the root of the source tree.
9 */9 */
10 10
11#include "math.h"11#include <math.h>
12#include "limits.h"12#include <limits.h>
13#include <stdio.h>
14
13#include "block.h"15#include "block.h"
14#include "onyx_int.h"16#include "onyx_int.h"
15#include "vp8/common/variance.h"17#include "vp8/common/variance.h"
16#include "encodeintra.h"18#include "encodeintra.h"
17#include "vp8/common/setupintrarecon.h"19#include "vp8/common/setupintrarecon.h"
20#include "vp8/common/systemdependent.h"
18#include "mcomp.h"21#include "mcomp.h"
19#include "firstpass.h"22#include "firstpass.h"
20#include "vpx_scale/vpxscale.h"23#include "vpx_scale/vpxscale.h"
21#include "encodemb.h"24#include "encodemb.h"
22#include "vp8/common/extend.h"25#include "vp8/common/extend.h"
23#include "vp8/common/systemdependent.h"
24#include "vpx_scale/yv12extend.h"
25#include "vpx_mem/vpx_mem.h"26#include "vpx_mem/vpx_mem.h"
26#include "vp8/common/swapyv12buffer.h"27#include "vp8/common/swapyv12buffer.h"
27#include <stdio.h>
28#include "rdopt.h"28#include "rdopt.h"
29#include "vp8/common/quant_common.h"29#include "vp8/common/quant_common.h"
30#include "encodemv.h"30#include "encodemv.h"
@@ -828,7 +828,7 @@ skip_motion_search: · 797 unmodified lines
828 (cpi->twopass.this_frame_stats.pcnt_inter > 0.20) &&828 (cpi->twopass.this_frame_stats.pcnt_inter > 0.20) &&
829 ((cpi->twopass.this_frame_stats.intra_error / cpi->twopass.this_frame_stats.coded_error) > 2.0))829 ((cpi->twopass.this_frame_stats.intra_error / cpi->twopass.this_frame_stats.coded_error) > 2.0))
830 {830 {
831 vp8_yv12_copy_frame_ptr(lst_yv12, gld_yv12);831 vp8_yv12_copy_frame(lst_yv12, gld_yv12);
832 }832 }
833 833
834 // swap frame pointers so last frame refers to the frame we just compressed834 // swap frame pointers so last frame refers to the frame we just compressed
@@ -838,7 +838,7 @@ skip_motion_search: · 3 unmodified lines
838 // Special case for the first frame. Copy into the GF buffer as a second reference.838 // Special case for the first frame. Copy into the GF buffer as a second reference.
839 if (cm->current_video_frame == 0)839 if (cm->current_video_frame == 0)
840 {840 {
841 vp8_yv12_copy_frame_ptr(lst_yv12, gld_yv12);841 vp8_yv12_copy_frame(lst_yv12, gld_yv12);
842 }842 }
843 843
844 844
vp8/encoder/onyx_if.c+19−33
@@ -23,7 +23,6 @@ · 22 unmodified lines
23#include "ratectrl.h"23#include "ratectrl.h"
24#include "vp8/common/quant_common.h"24#include "vp8/common/quant_common.h"
25#include "segmentation.h"25#include "segmentation.h"
26#include "vpx_scale/yv12extend.h"
27#if CONFIG_POSTPROC26#if CONFIG_POSTPROC
28#include "vp8/common/postproc.h"27#include "vp8/common/postproc.h"
29#endif28#endif
@@ -211,19 +210,6 @@ static const unsigned char inter_minq[QINDEX_RANGE] = · 181 unmodified lines
211 86,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100210 86,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100
212};211};
213 212
214void vp8_initialize()
215{
216 static int init_done = 0;
217
218 if (!init_done)
219 {
220 vp8_scale_machine_specific_config();
221 vp8_initialize_common();
222 vp8_tokenize_initialize();
223
224 init_done = 1;
225 }
226}
227#ifdef PACKET_TESTING213#ifdef PACKET_TESTING
228extern FILE *vpxlogc;214extern FILE *vpxlogc;
229#endif215#endif
@@ -591,7 +577,7 @@ static void set_default_lf_deltas(VP8_COMP *cpi) · 361 unmodified lines
591#define GOOD(x) (x+1)577#define GOOD(x) (x+1)
592#define RT(x) (x+7)578#define RT(x) (x+7)
593 579
594static int speed_map(int speed, int *map)580static int speed_map(int speed, const int *map)
595{581{
596 int res;582 int res;
597 583
@@ -602,73 +588,73 @@ static int speed_map(int speed, int *map) · 4 unmodified lines
602 return res;588 return res;
603}589}
604 590
605static int thresh_mult_map_znn[] = {591static const int thresh_mult_map_znn[] = {
606 /* map common to zero, nearest, and near */592 /* map common to zero, nearest, and near */
607 0, GOOD(2), 1500, GOOD(3), 2000, RT(0), 1000, RT(2), 2000, INT_MAX593 0, GOOD(2), 1500, GOOD(3), 2000, RT(0), 1000, RT(2), 2000, INT_MAX
608};594};
609 595
610static int thresh_mult_map_vhpred[] = {596static const int thresh_mult_map_vhpred[] = {
611 1000, GOOD(2), 1500, GOOD(3), 2000, RT(0), 1000, RT(1), 2000,597 1000, GOOD(2), 1500, GOOD(3), 2000, RT(0), 1000, RT(1), 2000,
612 RT(7), INT_MAX, INT_MAX598 RT(7), INT_MAX, INT_MAX
613};599};
614 600
615static int thresh_mult_map_bpred[] = {601static const int thresh_mult_map_bpred[] = {
616 2000, GOOD(0), 2500, GOOD(2), 5000, GOOD(3), 7500, RT(0), 2500, RT(1), 5000,602 2000, GOOD(0), 2500, GOOD(2), 5000, GOOD(3), 7500, RT(0), 2500, RT(1), 5000,
617 RT(6), INT_MAX, INT_MAX603 RT(6), INT_MAX, INT_MAX
618};604};
619 605
620static int thresh_mult_map_tm[] = {606static const int thresh_mult_map_tm[] = {
621 1000, GOOD(2), 1500, GOOD(3), 2000, RT(0), 0, RT(1), 1000, RT(2), 2000,607 1000, GOOD(2), 1500, GOOD(3), 2000, RT(0), 0, RT(1), 1000, RT(2), 2000,
622 RT(7), INT_MAX, INT_MAX608 RT(7), INT_MAX, INT_MAX
623};609};
624 610
625static int thresh_mult_map_new1[] = {611static const int thresh_mult_map_new1[] = {
626 1000, GOOD(2), 2000, RT(0), 2000, INT_MAX612 1000, GOOD(2), 2000, RT(0), 2000, INT_MAX
627};613};
628 614
629static int thresh_mult_map_new2[] = {615static const int thresh_mult_map_new2[] = {
630 1000, GOOD(2), 2000, GOOD(3), 2500, GOOD(5), 4000, RT(0), 2000, RT(2), 2500,616 1000, GOOD(2), 2000, GOOD(3), 2500, GOOD(5), 4000, RT(0), 2000, RT(2), 2500,
631 RT(5), 4000, INT_MAX617 RT(5), 4000, INT_MAX
632};618};
633 619
634static int thresh_mult_map_split1[] = {620static const int thresh_mult_map_split1[] = {
635 2500, GOOD(0), 1700, GOOD(2), 10000, GOOD(3), 25000, GOOD(4), INT_MAX,621 2500, GOOD(0), 1700, GOOD(2), 10000, GOOD(3), 25000, GOOD(4), INT_MAX,
636 RT(0), 5000, RT(1), 10000, RT(2), 25000, RT(3), INT_MAX, INT_MAX622 RT(0), 5000, RT(1), 10000, RT(2), 25000, RT(3), INT_MAX, INT_MAX
637};623};
638 624
639static int thresh_mult_map_split2[] = {625static const int thresh_mult_map_split2[] = {
640 5000, GOOD(0), 4500, GOOD(2), 20000, GOOD(3), 50000, GOOD(4), INT_MAX,626 5000, GOOD(0), 4500, GOOD(2), 20000, GOOD(3), 50000, GOOD(4), INT_MAX,
641 RT(0), 10000, RT(1), 20000, RT(2), 50000, RT(3), INT_MAX, INT_MAX627 RT(0), 10000, RT(1), 20000, RT(2), 50000, RT(3), INT_MAX, INT_MAX
642};628};
643 629
644static int mode_check_freq_map_zn2[] = {630static const int mode_check_freq_map_zn2[] = {
645 /* {zero,nearest}{2,3} */631 /* {zero,nearest}{2,3} */
646 0, RT(10), 1<<1, RT(11), 1<<2, RT(12), 1<<3, INT_MAX632 0, RT(10), 1<<1, RT(11), 1<<2, RT(12), 1<<3, INT_MAX
647};633};
648 634
649static int mode_check_freq_map_vhbpred[] = {635static const int mode_check_freq_map_vhbpred[] = {
650 0, GOOD(5), 2, RT(0), 0, RT(3), 2, RT(5), 4, INT_MAX636 0, GOOD(5), 2, RT(0), 0, RT(3), 2, RT(5), 4, INT_MAX
651};637};
652 638
653static int mode_check_freq_map_near2[] = {639static const int mode_check_freq_map_near2[] = {
654 0, GOOD(5), 2, RT(0), 0, RT(3), 2, RT(10), 1<<2, RT(11), 1<<3, RT(12), 1<<4,640 0, GOOD(5), 2, RT(0), 0, RT(3), 2, RT(10), 1<<2, RT(11), 1<<3, RT(12), 1<<4,
655 INT_MAX641 INT_MAX
656};642};
657 643
658static int mode_check_freq_map_new1[] = {644static const int mode_check_freq_map_new1[] = {
659 0, RT(10), 1<<1, RT(11), 1<<2, RT(12), 1<<3, INT_MAX645 0, RT(10), 1<<1, RT(11), 1<<2, RT(12), 1<<3, INT_MAX
660};646};
661 647
662static int mode_check_freq_map_new2[] = {648static const int mode_check_freq_map_new2[] = {
663 0, GOOD(5), 4, RT(0), 0, RT(3), 4, RT(10), 1<<3, RT(11), 1<<4, RT(12), 1<<5,649 0, GOOD(5), 4, RT(0), 0, RT(3), 4, RT(10), 1<<3, RT(11), 1<<4, RT(12), 1<<5,
664 INT_MAX650 INT_MAX
665};651};
666 652
667static int mode_check_freq_map_split1[] = {653static const int mode_check_freq_map_split1[] = {
668 0, GOOD(2), 2, GOOD(3), 7, RT(1), 2, RT(2), 7, INT_MAX654 0, GOOD(2), 2, GOOD(3), 7, RT(1), 2, RT(2), 7, INT_MAX
669};655};
670 656
671static int mode_check_freq_map_split2[] = {657static const int mode_check_freq_map_split2[] = {
672 0, GOOD(1), 2, GOOD(2), 4, GOOD(3), 15, RT(1), 4, RT(2), 15, INT_MAX658 0, GOOD(1), 2, GOOD(2), 4, GOOD(3), 15, RT(1), 4, RT(2), 15, INT_MAX
673};659};
674 660
@@ -2521,7 +2507,7 @@ int vp8_get_reference(VP8_COMP *cpi, VP8_REFFRAME ref_frame_flag, YV12_BUFFER_CO · 1846 unmodified lines
2521 else2507 else
2522 return -1;2508 return -1;
2523 2509
2524 vp8_yv12_copy_frame_ptr(&cm->yv12_fb[ref_fb_idx], sd);2510 vp8_yv12_copy_frame(&cm->yv12_fb[ref_fb_idx], sd);
2525 2511
2526 return 0;2512 return 0;
2527}2513}
@@ -2540,7 +2526,7 @@ int vp8_set_reference(VP8_COMP *cpi, VP8_REFFRAME ref_frame_flag, YV12_BUFFER_CO · 12 unmodified lines
2540 else2526 else
2541 return -1;2527 return -1;
2542 2528
2543 vp8_yv12_copy_frame_ptr(sd, &cm->yv12_fb[ref_fb_idx]);2529 vp8_yv12_copy_frame(sd, &cm->yv12_fb[ref_fb_idx]);
2544 2530
2545 return 0;2531 return 0;
2546}2532}
@@ -3158,7 +3144,7 @@ void vp8_loopfilter_frame(VP8_COMP *cpi, VP8_COMMON *cm) · 611 unmodified lines
3158 vp8_loop_filter_frame(cm, &cpi->mb.e_mbd);3144 vp8_loop_filter_frame(cm, &cpi->mb.e_mbd);
3159 }3145 }
3160 3146
3161 vp8_yv12_extend_frame_borders_ptr(cm->frame_to_show);3147 vp8_yv12_extend_frame_borders(cm->frame_to_show);
3162#if CONFIG_TEMPORAL_DENOISING3148#if CONFIG_TEMPORAL_DENOISING
3163 if (cpi->oxcf.noise_sensitivity)3149 if (cpi->oxcf.noise_sensitivity)
3164 {3150 {
vp8/encoder/picklpf.c+3−4
@@ -13,7 +13,6 @@ · 12 unmodified lines
13#include "onyx_int.h"13#include "onyx_int.h"
14#include "quantize.h"14#include "quantize.h"
15#include "vpx_mem/vpx_mem.h"15#include "vpx_mem/vpx_mem.h"
16#include "vpx_scale/yv12extend.h"
17#include "vpx_scale/vpxscale.h"16#include "vpx_scale/vpxscale.h"
18#include "vp8/common/alloccommon.h"17#include "vp8/common/alloccommon.h"
19#include "vp8/common/loopfilter.h"18#include "vp8/common/loopfilter.h"
@@ -302,7 +301,7 @@ void vp8cx_pick_filter_level(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi) · 282 unmodified lines
302 // Get baseline error score301 // Get baseline error score
303 302
304 /* Copy the unfiltered / processed recon buffer to the new buffer */303 /* Copy the unfiltered / processed recon buffer to the new buffer */
305 vp8_yv12_copy_y_ptr(saved_frame, cm->frame_to_show);304 vp8_yv12_copy_y(saved_frame, cm->frame_to_show);
306 305
307 vp8cx_set_alt_lf_level(cpi, filt_mid);306 vp8cx_set_alt_lf_level(cpi, filt_mid);
308 vp8_loop_filter_frame_yonly(cm, &cpi->mb.e_mbd, filt_mid);307 vp8_loop_filter_frame_yonly(cm, &cpi->mb.e_mbd, filt_mid);
@@ -329,7 +328,7 @@ void vp8cx_pick_filter_level(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi) · 20 unmodified lines
329 if(ss_err[filt_low] == 0)328 if(ss_err[filt_low] == 0)
330 {329 {
331 // Get Low filter error score330 // Get Low filter error score
332 vp8_yv12_copy_y_ptr(saved_frame, cm->frame_to_show);331 vp8_yv12_copy_y(saved_frame, cm->frame_to_show);
333 vp8cx_set_alt_lf_level(cpi, filt_low);332 vp8cx_set_alt_lf_level(cpi, filt_low);
334 vp8_loop_filter_frame_yonly(cm, &cpi->mb.e_mbd, filt_low);333 vp8_loop_filter_frame_yonly(cm, &cpi->mb.e_mbd, filt_low);
335 334
@@ -355,7 +354,7 @@ void vp8cx_pick_filter_level(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi) · 19 unmodified lines
355 {354 {
356 if(ss_err[filt_high] == 0)355 if(ss_err[filt_high] == 0)
357 {356 {
358 vp8_yv12_copy_y_ptr(saved_frame, cm->frame_to_show);357 vp8_yv12_copy_y(saved_frame, cm->frame_to_show);
359 vp8cx_set_alt_lf_level(cpi, filt_high);358 vp8cx_set_alt_lf_level(cpi, filt_high);
360 vp8_loop_filter_frame_yonly(cm, &cpi->mb.e_mbd, filt_high);359 vp8_loop_filter_frame_yonly(cm, &cpi->mb.e_mbd, filt_high);
361 360
vp8/encoder/temporal_filter.c+0−1
@@ -22,7 +22,6 @@ · 21 unmodified lines
22#include "ratectrl.h"22#include "ratectrl.h"
23#include "vp8/common/quant_common.h"23#include "vp8/common/quant_common.h"
24#include "segmentation.h"24#include "segmentation.h"
25#include "vpx_scale/yv12extend.h"
26#include "vpx_mem/vpx_mem.h"25#include "vpx_mem/vpx_mem.h"
27#include "vp8/common/swapyv12buffer.h"26#include "vp8/common/swapyv12buffer.h"
28#include "vp8/common/threading.h"27#include "vp8/common/threading.h"
vp8/encoder/tokenize.c+15−14
@@ -26,19 +26,25 @@ _int64 context_counters[BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [MAX_ENTR · 25 unmodified lines
26void vp8_stuff_mb(VP8_COMP *cpi, MACROBLOCKD *x, TOKENEXTRA **t) ;26void vp8_stuff_mb(VP8_COMP *cpi, MACROBLOCKD *x, TOKENEXTRA **t) ;
27void vp8_fix_contexts(MACROBLOCKD *x);27void vp8_fix_contexts(MACROBLOCKD *x);
28 28
29static TOKENVALUE dct_value_tokens[DCT_MAX_VALUE*2];29#include "dct_value_tokens.h"
30const TOKENVALUE *vp8_dct_value_tokens_ptr;30#include "dct_value_cost.h"
31static int dct_value_cost[DCT_MAX_VALUE*2];31
32const int *vp8_dct_value_cost_ptr;32const TOKENVALUE *const vp8_dct_value_tokens_ptr = dct_value_tokens +
33 DCT_MAX_VALUE;
34const short *const vp8_dct_value_cost_ptr = dct_value_cost + DCT_MAX_VALUE;
35
33#if 036#if 0
34int skip_true_count = 0;37int skip_true_count = 0;
35int skip_false_count = 0;38int skip_false_count = 0;
36#endif39#endif
40
41/* function used to generate dct_value_tokens and dct_value_cost tables */
42/*
37static void fill_value_tokens()43static void fill_value_tokens()
38{44{
39 45
40 TOKENVALUE *const t = dct_value_tokens + DCT_MAX_VALUE;46 TOKENVALUE *t = dct_value_tokens + DCT_MAX_VALUE;
41 vp8_extra_bit_struct *const e = vp8_extra_bits;47 const vp8_extra_bit_struct *e = vp8_extra_bits;
42 48
43 int i = -DCT_MAX_VALUE;49 int i = -DCT_MAX_VALUE;
44 int sign = 1;50 int sign = 1;
@@ -70,7 +76,7 @@ static void fill_value_tokens() · 25 unmodified lines
70 // initialize the cost for extra bits for all possible coefficient value.76 // initialize the cost for extra bits for all possible coefficient value.
71 {77 {
72 int cost = 0;78 int cost = 0;
73 vp8_extra_bit_struct *p = vp8_extra_bits + t[i].Token;79 const vp8_extra_bit_struct *p = vp8_extra_bits + t[i].Token;
74 80
75 if (p->base_val)81 if (p->base_val)
76 {82 {
@@ -80,7 +86,7 @@ static void fill_value_tokens() · 3 unmodified lines
80 if (Length)86 if (Length)
81 cost += vp8_treed_cost(p->tree, p->prob, extra >> 1, Length);87 cost += vp8_treed_cost(p->tree, p->prob, extra >> 1, Length);
82 88
83 cost += vp8_cost_bit(vp8_prob_half, extra & 1); /* sign */89 cost += vp8_cost_bit(vp8_prob_half, extra & 1); // sign
84 dct_value_cost[i + DCT_MAX_VALUE] = cost;90 dct_value_cost[i + DCT_MAX_VALUE] = cost;
85 }91 }
86 92
@@ -92,6 +98,7 @@ static void fill_value_tokens() · 5 unmodified lines
92 vp8_dct_value_tokens_ptr = dct_value_tokens + DCT_MAX_VALUE;98 vp8_dct_value_tokens_ptr = dct_value_tokens + DCT_MAX_VALUE;
93 vp8_dct_value_cost_ptr = dct_value_cost + DCT_MAX_VALUE;99 vp8_dct_value_cost_ptr = dct_value_cost + DCT_MAX_VALUE;
94}100}
101*/
95 102
96static void tokenize2nd_order_b103static void tokenize2nd_order_b
97(104(
@@ -476,12 +483,6 @@ void print_context_counters() · 378 unmodified lines
476#endif483#endif
477 484
478 485
479void vp8_tokenize_initialize()
480{
481 fill_value_tokens();
482}
483
484
485static void stuff2nd_order_b486static void stuff2nd_order_b
486(487(
487 TOKENEXTRA **tp,488 TOKENEXTRA **tp,
vp8/encoder/tokenize.h+2−2
@@ -40,11 +40,11 @@ void print_context_counters(); · 39 unmodified lines
40extern _int64 context_counters[BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [MAX_ENTROPY_TOKENS];40extern _int64 context_counters[BLOCK_TYPES] [COEF_BANDS] [PREV_COEF_CONTEXTS] [MAX_ENTROPY_TOKENS];
41#endif41#endif
42 42
43extern const int *vp8_dct_value_cost_ptr;43extern const short *const vp8_dct_value_cost_ptr;
44/* TODO: The Token field should be broken out into a separate char array to44/* TODO: The Token field should be broken out into a separate char array to
45 * improve cache locality, since it's needed for costing when the rest of the45 * improve cache locality, since it's needed for costing when the rest of the
46 * fields are not.46 * fields are not.
47 */47 */
48extern const TOKENVALUE *vp8_dct_value_tokens_ptr;48extern const TOKENVALUE *const vp8_dct_value_tokens_ptr;
49 49
50#endif /* tokenize_h */50#endif /* tokenize_h */
vp8/encoder/x86/vp8_enc_stubs_mmx.c+2−2
@@ -23,11 +23,11 @@ void vp8_short_fdct8x4_mmx(short *input, short *output, int pitch) · 22 unmodified lines
23 23
24int vp8_fast_quantize_b_impl_mmx(short *coeff_ptr, short *zbin_ptr,24int vp8_fast_quantize_b_impl_mmx(short *coeff_ptr, short *zbin_ptr,
25 short *qcoeff_ptr, short *dequant_ptr,25 short *qcoeff_ptr, short *dequant_ptr,
26 short *scan_mask, short *round_ptr,26 const short *scan_mask, short *round_ptr,
27 short *quant_ptr, short *dqcoeff_ptr);27 short *quant_ptr, short *dqcoeff_ptr);
28void vp8_fast_quantize_b_mmx(BLOCK *b, BLOCKD *d)28void vp8_fast_quantize_b_mmx(BLOCK *b, BLOCKD *d)
29{29{
30 short *scan_mask = vp8_default_zig_zag_mask;//d->scan_order_mask_ptr;30 const short *scan_mask = vp8_default_zig_zag_mask;
31 short *coeff_ptr = b->coeff;31 short *coeff_ptr = b->coeff;
32 short *zbin_ptr = b->zbin;32 short *zbin_ptr = b->zbin;
33 short *round_ptr = b->round;33 short *round_ptr = b->round;
vp8/vp8_common.mk+1−1
@@ -59,7 +59,6 @@ VP8_COMMON_SRCS-yes += common/loopfilter.c · 58 unmodified lines
59VP8_COMMON_SRCS-yes += common/loopfilter_filters.c59VP8_COMMON_SRCS-yes += common/loopfilter_filters.c
60VP8_COMMON_SRCS-yes += common/mbpitch.c60VP8_COMMON_SRCS-yes += common/mbpitch.c
61VP8_COMMON_SRCS-yes += common/modecont.c61VP8_COMMON_SRCS-yes += common/modecont.c
62VP8_COMMON_SRCS-yes += common/modecontext.c
63VP8_COMMON_SRCS-yes += common/quant_common.c62VP8_COMMON_SRCS-yes += common/quant_common.c
64VP8_COMMON_SRCS-yes += common/reconinter.c63VP8_COMMON_SRCS-yes += common/reconinter.c
65VP8_COMMON_SRCS-yes += common/reconintra.c64VP8_COMMON_SRCS-yes += common/reconintra.c
@@ -69,6 +68,7 @@ VP8_COMMON_SRCS-yes += common/setupintrarecon.c · 3 unmodified lines
69VP8_COMMON_SRCS-yes += common/swapyv12buffer.c68VP8_COMMON_SRCS-yes += common/swapyv12buffer.c
70VP8_COMMON_SRCS-yes += common/variance_c.c69VP8_COMMON_SRCS-yes += common/variance_c.c
71VP8_COMMON_SRCS-yes += common/variance.h70VP8_COMMON_SRCS-yes += common/variance.h
71VP8_COMMON_SRCS-yes += common/vp8_entropymodedata.h
72 72
73 73
74 74
vp8/vp8_cx_iface.c+0−2
@@ -628,8 +628,6 @@ static vpx_codec_err_t vp8e_init(vpx_codec_ctx_t *ctx, · 627 unmodified lines
628 628
629 priv->deprecated_mode = NO_MODE_SET;629 priv->deprecated_mode = NO_MODE_SET;
630 630
631 vp8_initialize();
632
633 res = validate_config(priv, &priv->cfg, &priv->vp8_cfg, 0);631 res = validate_config(priv, &priv->cfg, &priv->vp8_cfg, 0);
634 632
635 if (!res)633 if (!res)
vp8/vp8_dx_iface.c+0−2
@@ -391,8 +391,6 @@ static vpx_codec_err_t vp8_decode(vpx_codec_alg_priv_t *ctx, · 390 unmodified lines
391 VP8D_CONFIG oxcf;391 VP8D_CONFIG oxcf;
392 struct VP8D_COMP* optr;392 struct VP8D_COMP* optr;
393 393
394 vp8dx_initialize();
395
396 oxcf.Width = ctx->si.w;394 oxcf.Width = ctx->si.w;
397 oxcf.Height = ctx->si.h;395 oxcf.Height = ctx->si.h;
398 oxcf.Version = 9;396 oxcf.Version = 9;
vp8/vp8cx.mk+2−0
@@ -78,6 +78,8 @@ VP8_CX_SRCS-yes += encoder/segmentation.c · 77 unmodified lines
78VP8_CX_SRCS-yes += encoder/segmentation.h78VP8_CX_SRCS-yes += encoder/segmentation.h
79VP8_CX_SRCS-$(CONFIG_INTERNAL_STATS) += encoder/ssim.c79VP8_CX_SRCS-$(CONFIG_INTERNAL_STATS) += encoder/ssim.c
80VP8_CX_SRCS-yes += encoder/tokenize.c80VP8_CX_SRCS-yes += encoder/tokenize.c
81VP8_CX_SRCS-yes += encoder/dct_value_cost.h
82VP8_CX_SRCS-yes += encoder/dct_value_tokens.h
81VP8_CX_SRCS-yes += encoder/treewriter.c83VP8_CX_SRCS-yes += encoder/treewriter.c
82VP8_CX_SRCS-$(CONFIG_INTERNAL_STATS) += common/postproc.h84VP8_CX_SRCS-$(CONFIG_INTERNAL_STATS) += common/postproc.h
83VP8_CX_SRCS-$(CONFIG_INTERNAL_STATS) += common/postproc.c85VP8_CX_SRCS-$(CONFIG_INTERNAL_STATS) += common/postproc.c
vpx_scale/arm/scalesystemdependent.c+0−30
@@ -1,30 +0,0 @@
1/*
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11
12#include "vpx_config.h"
13#include "vpx_ports/arm.h"
14#include "vpx_scale/vpxscale.h"
15#include "vpx_scale/yv12extend.h"
16
17void vp8_arch_arm_vpx_scale_init()
18{
19#if HAVE_NEON
20#if CONFIG_RUNTIME_CPU_DETECT
21 int flags = arm_cpu_caps();
22 if (flags & HAS_NEON)
23#endif
24 {
25 vp8_yv12_extend_frame_borders_ptr = vp8_yv12_extend_frame_borders_neon;
26 vp8_yv12_copy_y_ptr = vp8_yv12_copy_y_neon;
27 vp8_yv12_copy_frame_ptr = vp8_yv12_copy_frame_neon;
28 }
29#endif
30}
vpx_scale/arm/yv12extend_arm.h+0−28
@@ -1,28 +0,0 @@
1/*
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11
12#ifndef YV12_EXTEND_ARM_H
13#define YV12_EXTEND_ARM_H
14
15#include "vpx_config.h"
16#include "vpx_scale/yv12config.h"
17
18#if HAVE_NEON
19 void vp8_yv12_extend_frame_borders_neon(YV12_BUFFER_CONFIG *ybf);
20
21 /* Copy Y,U,V buffer data from src to dst, filling border of dst as well. */
22 void vp8_yv12_copy_frame_neon(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc);
23
24 /* Copy Y buffer data from src_ybc to dst_ybc without filling border data */
25 void vp8_yv12_copy_y_neon(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc);
26#endif
27
28#endif /* YV12_EXTEND_ARM_H */
vpx_scale/generic/gen_scalers.c+40−40
@@ -17,7 +17,7 @@ · 16 unmodified lines
17 17
18/****************************************************************************18/****************************************************************************
19 *19 *
20 * ROUTINE : vp8cx_horizontal_line_4_5_scale_c20 * ROUTINE : vp8_horizontal_line_4_5_scale_c
21 *21 *
22 * INPUTS : const unsigned char *source : Pointer to source data.22 * INPUTS : const unsigned char *source : Pointer to source data.
23 * unsigned int source_width : Stride of source.23 * unsigned int source_width : Stride of source.
@@ -34,7 +34,7 @@ · 10 unmodified lines
34 * SPECIAL NOTES : None.34 * SPECIAL NOTES : None.
35 *35 *
36 ****************************************************************************/36 ****************************************************************************/
37void vp8cx_horizontal_line_4_5_scale_c37void vp8_horizontal_line_4_5_scale_c
38(38(
39 const unsigned char *source,39 const unsigned char *source,
40 unsigned int source_width,40 unsigned int source_width,
@@ -80,7 +80,7 @@ void vp8cx_horizontal_line_4_5_scale_c · 39 unmodified lines
80 80
81/****************************************************************************81/****************************************************************************
82 *82 *
83 * ROUTINE : vp8cx_vertical_band_4_5_scale_c83 * ROUTINE : vp8_vertical_band_4_5_scale_c
84 *84 *
85 * INPUTS : unsigned char *dest : Pointer to destination data.85 * INPUTS : unsigned char *dest : Pointer to destination data.
86 * unsigned int dest_pitch : Stride of destination data.86 * unsigned int dest_pitch : Stride of destination data.
@@ -97,7 +97,7 @@ void vp8cx_horizontal_line_4_5_scale_c · 10 unmodified lines
97 * the current band.97 * the current band.
98 *98 *
99 ****************************************************************************/99 ****************************************************************************/
100void vp8cx_vertical_band_4_5_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)100void vp8_vertical_band_4_5_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)
101{101{
102 unsigned int i;102 unsigned int i;
103 unsigned int a, b, c, d;103 unsigned int a, b, c, d;
@@ -126,7 +126,7 @@ void vp8cx_vertical_band_4_5_scale_c(unsigned char *dest, unsigned int dest_pitc · 22 unmodified lines
126 126
127/****************************************************************************127/****************************************************************************
128 *128 *
129 * ROUTINE : vp8cx_last_vertical_band_4_5_scale_c129 * ROUTINE : vp8_last_vertical_band_4_5_scale_c
130 *130 *
131 * INPUTS : unsigned char *dest : Pointer to destination data.131 * INPUTS : unsigned char *dest : Pointer to destination data.
132 * unsigned int dest_pitch : Stride of destination data.132 * unsigned int dest_pitch : Stride of destination data.
@@ -144,7 +144,7 @@ void vp8cx_vertical_band_4_5_scale_c(unsigned char *dest, unsigned int dest_pitc · 11 unmodified lines
144 * last band.144 * last band.
145 *145 *
146 ****************************************************************************/146 ****************************************************************************/
147void vp8cx_last_vertical_band_4_5_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)147void vp8_last_vertical_band_4_5_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)
148{148{
149 unsigned int i;149 unsigned int i;
150 unsigned int a, b, c, d;150 unsigned int a, b, c, d;
@@ -172,7 +172,7 @@ void vp8cx_last_vertical_band_4_5_scale_c(unsigned char *dest, unsigned int dest · 21 unmodified lines
172 172
173/****************************************************************************173/****************************************************************************
174 *174 *
175 * ROUTINE : vp8cx_horizontal_line_2_3_scale_c175 * ROUTINE : vp8_horizontal_line_2_3_scale_c
176 *176 *
177 * INPUTS : const unsigned char *source : Pointer to source data.177 * INPUTS : const unsigned char *source : Pointer to source data.
178 * unsigned int source_width : Stride of source.178 * unsigned int source_width : Stride of source.
@@ -190,7 +190,7 @@ void vp8cx_last_vertical_band_4_5_scale_c(unsigned char *dest, unsigned int dest · 11 unmodified lines
190 *190 *
191 *191 *
192 ****************************************************************************/192 ****************************************************************************/
193void vp8cx_horizontal_line_2_3_scale_c193void vp8_horizontal_line_2_3_scale_c
194(194(
195 const unsigned char *source,195 const unsigned char *source,
196 unsigned int source_width,196 unsigned int source_width,
@@ -229,7 +229,7 @@ void vp8cx_horizontal_line_2_3_scale_c · 32 unmodified lines
229 229
230/****************************************************************************230/****************************************************************************
231 *231 *
232 * ROUTINE : vp8cx_vertical_band_2_3_scale_c232 * ROUTINE : vp8_vertical_band_2_3_scale_c
233 *233 *
234 * INPUTS : unsigned char *dest : Pointer to destination data.234 * INPUTS : unsigned char *dest : Pointer to destination data.
235 * unsigned int dest_pitch : Stride of destination data.235 * unsigned int dest_pitch : Stride of destination data.
@@ -246,7 +246,7 @@ void vp8cx_horizontal_line_2_3_scale_c · 10 unmodified lines
246 * the current band.246 * the current band.
247 *247 *
248 ****************************************************************************/248 ****************************************************************************/
249void vp8cx_vertical_band_2_3_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)249void vp8_vertical_band_2_3_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)
250{250{
251 unsigned int i;251 unsigned int i;
252 unsigned int a, b, c;252 unsigned int a, b, c;
@@ -266,7 +266,7 @@ void vp8cx_vertical_band_2_3_scale_c(unsigned char *dest, unsigned int dest_pitc · 13 unmodified lines
266 266
267/****************************************************************************267/****************************************************************************
268 *268 *
269 * ROUTINE : vp8cx_last_vertical_band_2_3_scale_c269 * ROUTINE : vp8_last_vertical_band_2_3_scale_c
270 *270 *
271 * INPUTS : unsigned char *dest : Pointer to destination data.271 * INPUTS : unsigned char *dest : Pointer to destination data.
272 * unsigned int dest_pitch : Stride of destination data.272 * unsigned int dest_pitch : Stride of destination data.
@@ -284,7 +284,7 @@ void vp8cx_vertical_band_2_3_scale_c(unsigned char *dest, unsigned int dest_pitc · 11 unmodified lines
284 * last band.284 * last band.
285 *285 *
286 ****************************************************************************/286 ****************************************************************************/
287void vp8cx_last_vertical_band_2_3_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)287void vp8_last_vertical_band_2_3_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)
288{288{
289 unsigned int i;289 unsigned int i;
290 unsigned int a, b;290 unsigned int a, b;
@@ -303,7 +303,7 @@ void vp8cx_last_vertical_band_2_3_scale_c(unsigned char *dest, unsigned int dest · 12 unmodified lines
303 303
304/****************************************************************************304/****************************************************************************
305 *305 *
306 * ROUTINE : vp8cx_horizontal_line_3_5_scale_c306 * ROUTINE : vp8_horizontal_line_3_5_scale_c
307 *307 *
308 * INPUTS : const unsigned char *source : Pointer to source data.308 * INPUTS : const unsigned char *source : Pointer to source data.
309 * unsigned int source_width : Stride of source.309 * unsigned int source_width : Stride of source.
@@ -321,7 +321,7 @@ void vp8cx_last_vertical_band_2_3_scale_c(unsigned char *dest, unsigned int dest · 11 unmodified lines
321 *321 *
322 *322 *
323 ****************************************************************************/323 ****************************************************************************/
324void vp8cx_horizontal_line_3_5_scale_c324void vp8_horizontal_line_3_5_scale_c
325(325(
326 const unsigned char *source,326 const unsigned char *source,
327 unsigned int source_width,327 unsigned int source_width,
@@ -368,7 +368,7 @@ void vp8cx_horizontal_line_3_5_scale_c · 40 unmodified lines
368 368
369/****************************************************************************369/****************************************************************************
370 *370 *
371 * ROUTINE : vp8cx_vertical_band_3_5_scale_c371 * ROUTINE : vp8_vertical_band_3_5_scale_c
372 *372 *
373 * INPUTS : unsigned char *dest : Pointer to destination data.373 * INPUTS : unsigned char *dest : Pointer to destination data.
374 * unsigned int dest_pitch : Stride of destination data.374 * unsigned int dest_pitch : Stride of destination data.
@@ -385,7 +385,7 @@ void vp8cx_horizontal_line_3_5_scale_c · 10 unmodified lines
385 * the current band.385 * the current band.
386 *386 *
387 ****************************************************************************/387 ****************************************************************************/
388void vp8cx_vertical_band_3_5_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)388void vp8_vertical_band_3_5_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)
389{389{
390 unsigned int i;390 unsigned int i;
391 unsigned int a, b, c;391 unsigned int a, b, c;
@@ -411,7 +411,7 @@ void vp8cx_vertical_band_3_5_scale_c(unsigned char *dest, unsigned int dest_pitc · 19 unmodified lines
411 411
412/****************************************************************************412/****************************************************************************
413 *413 *
414 * ROUTINE : vp8cx_last_vertical_band_3_5_scale_c414 * ROUTINE : vp8_last_vertical_band_3_5_scale_c
415 *415 *
416 * INPUTS : unsigned char *dest : Pointer to destination data.416 * INPUTS : unsigned char *dest : Pointer to destination data.
417 * unsigned int dest_pitch : Stride of destination data.417 * unsigned int dest_pitch : Stride of destination data.
@@ -429,7 +429,7 @@ void vp8cx_vertical_band_3_5_scale_c(unsigned char *dest, unsigned int dest_pitc · 11 unmodified lines
429 * last band.429 * last band.
430 *430 *
431 ****************************************************************************/431 ****************************************************************************/
432void vp8cx_last_vertical_band_3_5_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)432void vp8_last_vertical_band_3_5_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)
433{433{
434 unsigned int i;434 unsigned int i;
435 unsigned int a, b, c;435 unsigned int a, b, c;
@@ -455,7 +455,7 @@ void vp8cx_last_vertical_band_3_5_scale_c(unsigned char *dest, unsigned int dest · 19 unmodified lines
455 455
456/****************************************************************************456/****************************************************************************
457 *457 *
458 * ROUTINE : vp8cx_horizontal_line_3_4_scale_c458 * ROUTINE : vp8_horizontal_line_3_4_scale_c
459 *459 *
460 * INPUTS : const unsigned char *source : Pointer to source data.460 * INPUTS : const unsigned char *source : Pointer to source data.
461 * unsigned int source_width : Stride of source.461 * unsigned int source_width : Stride of source.
@@ -473,7 +473,7 @@ void vp8cx_last_vertical_band_3_5_scale_c(unsigned char *dest, unsigned int dest · 11 unmodified lines
473 *473 *
474 *474 *
475 ****************************************************************************/475 ****************************************************************************/
476void vp8cx_horizontal_line_3_4_scale_c476void vp8_horizontal_line_3_4_scale_c
477(477(
478 const unsigned char *source,478 const unsigned char *source,
479 unsigned int source_width,479 unsigned int source_width,
@@ -517,7 +517,7 @@ void vp8cx_horizontal_line_3_4_scale_c · 37 unmodified lines
517 517
518/****************************************************************************518/****************************************************************************
519 *519 *
520 * ROUTINE : vp8cx_vertical_band_3_4_scale_c520 * ROUTINE : vp8_vertical_band_3_4_scale_c
521 *521 *
522 * INPUTS : unsigned char *dest : Pointer to destination data.522 * INPUTS : unsigned char *dest : Pointer to destination data.
523 * unsigned int dest_pitch : Stride of destination data.523 * unsigned int dest_pitch : Stride of destination data.
@@ -534,7 +534,7 @@ void vp8cx_horizontal_line_3_4_scale_c · 10 unmodified lines
534 * the current band.534 * the current band.
535 *535 *
536 ****************************************************************************/536 ****************************************************************************/
537void vp8cx_vertical_band_3_4_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)537void vp8_vertical_band_3_4_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)
538{538{
539 unsigned int i;539 unsigned int i;
540 unsigned int a, b, c;540 unsigned int a, b, c;
@@ -559,7 +559,7 @@ void vp8cx_vertical_band_3_4_scale_c(unsigned char *dest, unsigned int dest_pitc · 18 unmodified lines
559 559
560/****************************************************************************560/****************************************************************************
561 *561 *
562 * ROUTINE : vp8cx_last_vertical_band_3_4_scale_c562 * ROUTINE : vp8_last_vertical_band_3_4_scale_c
563 *563 *
564 * INPUTS : unsigned char *dest : Pointer to destination data.564 * INPUTS : unsigned char *dest : Pointer to destination data.
565 * unsigned int dest_pitch : Stride of destination data.565 * unsigned int dest_pitch : Stride of destination data.
@@ -577,7 +577,7 @@ void vp8cx_vertical_band_3_4_scale_c(unsigned char *dest, unsigned int dest_pitc · 11 unmodified lines
577 * last band.577 * last band.
578 *578 *
579 ****************************************************************************/579 ****************************************************************************/
580void vp8cx_last_vertical_band_3_4_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)580void vp8_last_vertical_band_3_4_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)
581{581{
582 unsigned int i;582 unsigned int i;
583 unsigned int a, b, c;583 unsigned int a, b, c;
@@ -602,7 +602,7 @@ void vp8cx_last_vertical_band_3_4_scale_c(unsigned char *dest, unsigned int dest · 18 unmodified lines
602 602
603/****************************************************************************603/****************************************************************************
604 *604 *
605 * ROUTINE : vp8cx_horizontal_line_1_2_scale_c605 * ROUTINE : vp8_horizontal_line_1_2_scale_c
606 *606 *
607 * INPUTS : const unsigned char *source : Pointer to source data.607 * INPUTS : const unsigned char *source : Pointer to source data.
608 * unsigned int source_width : Stride of source.608 * unsigned int source_width : Stride of source.
@@ -619,7 +619,7 @@ void vp8cx_last_vertical_band_3_4_scale_c(unsigned char *dest, unsigned int dest · 10 unmodified lines
619 * SPECIAL NOTES : None.619 * SPECIAL NOTES : None.
620 *620 *
621 ****************************************************************************/621 ****************************************************************************/
622void vp8cx_horizontal_line_1_2_scale_c622void vp8_horizontal_line_1_2_scale_c
623(623(
624 const unsigned char *source,624 const unsigned char *source,
625 unsigned int source_width,625 unsigned int source_width,
@@ -651,7 +651,7 @@ void vp8cx_horizontal_line_1_2_scale_c · 25 unmodified lines
651 651
652/****************************************************************************652/****************************************************************************
653 *653 *
654 * ROUTINE : vp8cx_vertical_band_1_2_scale_c654 * ROUTINE : vp8_vertical_band_1_2_scale_c
655 *655 *
656 * INPUTS : unsigned char *dest : Pointer to destination data.656 * INPUTS : unsigned char *dest : Pointer to destination data.
657 * unsigned int dest_pitch : Stride of destination data.657 * unsigned int dest_pitch : Stride of destination data.
@@ -668,7 +668,7 @@ void vp8cx_horizontal_line_1_2_scale_c · 10 unmodified lines
668 * the current band.668 * the current band.
669 *669 *
670 ****************************************************************************/670 ****************************************************************************/
671void vp8cx_vertical_band_1_2_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)671void vp8_vertical_band_1_2_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)
672{672{
673 unsigned int i;673 unsigned int i;
674 unsigned int a, b;674 unsigned int a, b;
@@ -687,7 +687,7 @@ void vp8cx_vertical_band_1_2_scale_c(unsigned char *dest, unsigned int dest_pitc · 12 unmodified lines
687 687
688/****************************************************************************688/****************************************************************************
689 *689 *
690 * ROUTINE : vp8cx_last_vertical_band_1_2_scale_c690 * ROUTINE : vp8_last_vertical_band_1_2_scale_c
691 *691 *
692 * INPUTS : unsigned char *dest : Pointer to destination data.692 * INPUTS : unsigned char *dest : Pointer to destination data.
693 * unsigned int dest_pitch : Stride of destination data.693 * unsigned int dest_pitch : Stride of destination data.
@@ -705,7 +705,7 @@ void vp8cx_vertical_band_1_2_scale_c(unsigned char *dest, unsigned int dest_pitc · 11 unmodified lines
705 * last band.705 * last band.
706 *706 *
707 ****************************************************************************/707 ****************************************************************************/
708void vp8cx_last_vertical_band_1_2_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)708void vp8_last_vertical_band_1_2_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)
709{709{
710 unsigned int i;710 unsigned int i;
711 unsigned char *des = dest;711 unsigned char *des = dest;
@@ -723,7 +723,7 @@ void vp8cx_last_vertical_band_1_2_scale_c(unsigned char *dest, unsigned int dest · 11 unmodified lines
723 723
724/****************************************************************************724/****************************************************************************
725 *725 *
726 * ROUTINE : vp8cx_horizontal_line_4_5_scale_c726 * ROUTINE : vp8_horizontal_line_4_5_scale_c
727 *727 *
728 * INPUTS : const unsigned char *source : Pointer to source data.728 * INPUTS : const unsigned char *source : Pointer to source data.
729 * unsigned int source_width : Stride of source.729 * unsigned int source_width : Stride of source.
@@ -740,7 +740,7 @@ void vp8cx_last_vertical_band_1_2_scale_c(unsigned char *dest, unsigned int dest · 10 unmodified lines
740 * SPECIAL NOTES : None.740 * SPECIAL NOTES : None.
741 *741 *
742 ****************************************************************************/742 ****************************************************************************/
743void vp8cx_horizontal_line_5_4_scale_c743void vp8_horizontal_line_5_4_scale_c
744(744(
745 const unsigned char *source,745 const unsigned char *source,
746 unsigned int source_width,746 unsigned int source_width,
@@ -776,7 +776,7 @@ void vp8cx_horizontal_line_5_4_scale_c · 29 unmodified lines
776 776
777 777
778 778
779void vp8cx_vertical_band_5_4_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)779void vp8_vertical_band_5_4_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)
780{780{
781 unsigned int i;781 unsigned int i;
782 unsigned int a, b, c, d, e;782 unsigned int a, b, c, d, e;
@@ -806,7 +806,7 @@ void vp8cx_vertical_band_5_4_scale_c(unsigned char *source, unsigned int src_pit · 23 unmodified lines
806 806
807/*7***************************************************************************807/*7***************************************************************************
808 *808 *
809 * ROUTINE : vp8cx_horizontal_line_3_5_scale_c809 * ROUTINE : vp8_horizontal_line_3_5_scale_c
810 *810 *
811 * INPUTS : const unsigned char *source : Pointer to source data.811 * INPUTS : const unsigned char *source : Pointer to source data.
812 * unsigned int source_width : Stride of source.812 * unsigned int source_width : Stride of source.
@@ -824,7 +824,7 @@ void vp8cx_vertical_band_5_4_scale_c(unsigned char *source, unsigned int src_pit · 11 unmodified lines
824 *824 *
825 *825 *
826 ****************************************************************************/826 ****************************************************************************/
827void vp8cx_horizontal_line_5_3_scale_c827void vp8_horizontal_line_5_3_scale_c
828(828(
829 const unsigned char *source,829 const unsigned char *source,
830 unsigned int source_width,830 unsigned int source_width,
@@ -857,7 +857,7 @@ void vp8cx_horizontal_line_5_3_scale_c · 26 unmodified lines
857 857
858}858}
859 859
860void vp8cx_vertical_band_5_3_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)860void vp8_vertical_band_5_3_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)
861{861{
862 unsigned int i;862 unsigned int i;
863 unsigned int a, b, c, d, e;863 unsigned int a, b, c, d, e;
@@ -885,7 +885,7 @@ void vp8cx_vertical_band_5_3_scale_c(unsigned char *source, unsigned int src_pit · 21 unmodified lines
885 885
886/****************************************************************************886/****************************************************************************
887 *887 *
888 * ROUTINE : vp8cx_horizontal_line_1_2_scale_c888 * ROUTINE : vp8_horizontal_line_1_2_scale_c
889 *889 *
890 * INPUTS : const unsigned char *source : Pointer to source data.890 * INPUTS : const unsigned char *source : Pointer to source data.
891 * unsigned int source_width : Stride of source.891 * unsigned int source_width : Stride of source.
@@ -902,7 +902,7 @@ void vp8cx_vertical_band_5_3_scale_c(unsigned char *source, unsigned int src_pit · 10 unmodified lines
902 * SPECIAL NOTES : None.902 * SPECIAL NOTES : None.
903 *903 *
904 ****************************************************************************/904 ****************************************************************************/
905void vp8cx_horizontal_line_2_1_scale_c905void vp8_horizontal_line_2_1_scale_c
906(906(
907 const unsigned char *source,907 const unsigned char *source,
908 unsigned int source_width,908 unsigned int source_width,
@@ -928,14 +928,14 @@ void vp8cx_horizontal_line_2_1_scale_c · 19 unmodified lines
928 928
929 929
930}930}
931void vp8cx_vertical_band_2_1_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)931void vp8_vertical_band_2_1_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)
932{932{
933 (void) dest_pitch;933 (void) dest_pitch;
934 (void) src_pitch;934 (void) src_pitch;
935 vpx_memcpy(dest, source, dest_width);935 vpx_memcpy(dest, source, dest_width);
936}936}
937 937
938void vp8cx_vertical_band_2_1_scale_i_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)938void vp8_vertical_band_2_1_scale_i_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width)
939{939{
940 int i;940 int i;
941 int temp;941 int temp;
vpx_scale/generic/scalesystemdependent.c+0−74
@@ -1,74 +0,0 @@
1/*
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11
12#include "vpx_config.h"
13#include "vpx_scale/vpxscale.h"
14#include "vpx_scale/yv12extend.h"
15
16void (*vp8_yv12_extend_frame_borders_ptr)(YV12_BUFFER_CONFIG *ybf);
17void (*vp8_yv12_copy_frame_ptr)(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc);
18void (*vp8_yv12_copy_y_ptr)(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc);
19
20extern void vp8_arch_arm_vpx_scale_init();
21
22/****************************************************************************
23 *
24 * ROUTINE : vp8_scale_machine_specific_config
25 *
26 * INPUTS : UINT32 Version : Codec version number.
27 *
28 * OUTPUTS : None.
29 *
30 * RETURNS : void
31 *
32 * FUNCTION : Checks for machine specifc features such as MMX support
33 * sets appropriate flags and function pointers.
34 *
35 * SPECIAL NOTES : None.
36 *
37 ****************************************************************************/
38void vp8_scale_machine_specific_config()
39{
40#if CONFIG_SPATIAL_RESAMPLING
41 vp8_horizontal_line_1_2_scale = vp8cx_horizontal_line_1_2_scale_c;
42 vp8_vertical_band_1_2_scale = vp8cx_vertical_band_1_2_scale_c;
43 vp8_last_vertical_band_1_2_scale = vp8cx_last_vertical_band_1_2_scale_c;
44 vp8_horizontal_line_3_5_scale = vp8cx_horizontal_line_3_5_scale_c;
45 vp8_vertical_band_3_5_scale = vp8cx_vertical_band_3_5_scale_c;
46 vp8_last_vertical_band_3_5_scale = vp8cx_last_vertical_band_3_5_scale_c;
47 vp8_horizontal_line_3_4_scale = vp8cx_horizontal_line_3_4_scale_c;
48 vp8_vertical_band_3_4_scale = vp8cx_vertical_band_3_4_scale_c;
49 vp8_last_vertical_band_3_4_scale = vp8cx_last_vertical_band_3_4_scale_c;
50 vp8_horizontal_line_2_3_scale = vp8cx_horizontal_line_2_3_scale_c;
51 vp8_vertical_band_2_3_scale = vp8cx_vertical_band_2_3_scale_c;
52 vp8_last_vertical_band_2_3_scale = vp8cx_last_vertical_band_2_3_scale_c;
53 vp8_horizontal_line_4_5_scale = vp8cx_horizontal_line_4_5_scale_c;
54 vp8_vertical_band_4_5_scale = vp8cx_vertical_band_4_5_scale_c;
55 vp8_last_vertical_band_4_5_scale = vp8cx_last_vertical_band_4_5_scale_c;
56
57
58 vp8_vertical_band_5_4_scale = vp8cx_vertical_band_5_4_scale_c;
59 vp8_vertical_band_5_3_scale = vp8cx_vertical_band_5_3_scale_c;
60 vp8_vertical_band_2_1_scale = vp8cx_vertical_band_2_1_scale_c;
61 vp8_vertical_band_2_1_scale_i = vp8cx_vertical_band_2_1_scale_i_c;
62 vp8_horizontal_line_2_1_scale = vp8cx_horizontal_line_2_1_scale_c;
63 vp8_horizontal_line_5_3_scale = vp8cx_horizontal_line_5_3_scale_c;
64 vp8_horizontal_line_5_4_scale = vp8cx_horizontal_line_5_4_scale_c;
65#endif
66
67 vp8_yv12_extend_frame_borders_ptr = vp8_yv12_extend_frame_borders;
68 vp8_yv12_copy_y_ptr = vp8_yv12_copy_y_c;
69 vp8_yv12_copy_frame_ptr = vp8_yv12_copy_frame;
70
71#if ARCH_ARM
72 vp8_arch_arm_vpx_scale_init();
73#endif
74}
vpx_scale/generic/vpxscale.c+1−27
@@ -20,37 +20,11 @@ · 19 unmodified lines
20/****************************************************************************20/****************************************************************************
21* Header Files21* Header Files
22****************************************************************************/22****************************************************************************/
23#include "vpx_rtcd.h"
23#include "vpx_mem/vpx_mem.h"24#include "vpx_mem/vpx_mem.h"
24#include "vpx_scale/yv12config.h"25#include "vpx_scale/yv12config.h"
25#include "vpx_scale/scale_mode.h"26#include "vpx_scale/scale_mode.h"
26 27
27/****************************************************************************
28* Exports
29****************************************************************************/
30void (*vp8_vertical_band_4_5_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width) = 0;
31void (*vp8_last_vertical_band_4_5_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width) = 0;
32void (*vp8_vertical_band_2_3_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width) = 0;
33void (*vp8_last_vertical_band_2_3_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width) = 0;
34void (*vp8_vertical_band_3_5_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width) = 0;
35void (*vp8_last_vertical_band_3_5_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width) = 0;
36void (*vp8_vertical_band_3_4_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width) = 0;
37void (*vp8_last_vertical_band_3_4_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width) = 0;
38void (*vp8_horizontal_line_1_2_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width) = 0;
39void (*vp8_horizontal_line_3_5_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width) = 0;
40void (*vp8_horizontal_line_3_4_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width) = 0;
41void (*vp8_horizontal_line_2_3_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width) = 0;
42void (*vp8_horizontal_line_4_5_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width) = 0;
43void (*vp8_vertical_band_1_2_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width) = 0;
44void (*vp8_last_vertical_band_1_2_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width) = 0;
45
46void (*vp8_vertical_band_5_4_scale)(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width) = 0;
47void (*vp8_vertical_band_5_3_scale)(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width) = 0;
48void (*vp8_vertical_band_2_1_scale)(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width) = 0;
49void (*vp8_vertical_band_2_1_scale_i)(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width) = 0;
50void (*vp8_horizontal_line_2_1_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width) = 0;
51void (*vp8_horizontal_line_5_3_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width) = 0;
52void (*vp8_horizontal_line_5_4_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width) = 0;
53
54typedef struct28typedef struct
55{29{
56 int expanded_frame_width;30 int expanded_frame_width;
vpx_scale/generic/yv12extend.c+4−4
@@ -21,7 +21,7 @@ · 20 unmodified lines
21 *21 *
22 ****************************************************************************/22 ****************************************************************************/
23void23void
24vp8_yv12_extend_frame_borders(YV12_BUFFER_CONFIG *ybf)24vp8_yv12_extend_frame_borders_c(YV12_BUFFER_CONFIG *ybf)
25{25{
26 int i;26 int i;
27 unsigned char *src_ptr1, *src_ptr2;27 unsigned char *src_ptr1, *src_ptr2;
@@ -146,7 +146,7 @@ vp8_yv12_extend_frame_borders(YV12_BUFFER_CONFIG *ybf) · 118 unmodified lines
146 146
147 147
148static void148static void
149extend_frame_borders_yonly(YV12_BUFFER_CONFIG *ybf)149extend_frame_borders_yonly_c(YV12_BUFFER_CONFIG *ybf)
150{150{
151 int i;151 int i;
152 unsigned char *src_ptr1, *src_ptr2;152 unsigned char *src_ptr1, *src_ptr2;
@@ -221,7 +221,7 @@ extend_frame_borders_yonly(YV12_BUFFER_CONFIG *ybf) · 68 unmodified lines
221 *221 *
222 ****************************************************************************/222 ****************************************************************************/
223void223void
224vp8_yv12_copy_frame(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc)224vp8_yv12_copy_frame_c(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc)
225{225{
226 int row;226 int row;
227 unsigned char *source, *dest;227 unsigned char *source, *dest;
@@ -256,7 +256,7 @@ vp8_yv12_copy_frame(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc) · 28 unmodified lines
256 dest += dst_ybc->uv_stride;256 dest += dst_ybc->uv_stride;
257 }257 }
258 258
259 vp8_yv12_extend_frame_borders_ptr(dst_ybc);259 vp8_yv12_extend_frame_borders_c(dst_ybc);
260}260}
261 261
262void vp8_yv12_copy_y_c(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc)262void vp8_yv12_copy_y_c(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc)
vpx_scale/vpx_scale.mk+0−6
@@ -1,19 +1,13 @@
1SCALE_SRCS-yes += vpx_scale.mk1SCALE_SRCS-yes += vpx_scale.mk
2SCALE_SRCS-yes += scale_mode.h2SCALE_SRCS-yes += scale_mode.h
3SCALE_SRCS-yes += yv12extend.h
4SCALE_SRCS-yes += yv12config.h3SCALE_SRCS-yes += yv12config.h
5SCALE_SRCS-yes += vpxscale.h4SCALE_SRCS-yes += vpxscale.h
6SCALE_SRCS-yes += generic/vpxscale.c5SCALE_SRCS-yes += generic/vpxscale.c
7SCALE_SRCS-yes += generic/yv12config.c6SCALE_SRCS-yes += generic/yv12config.c
8SCALE_SRCS-yes += generic/yv12extend.c7SCALE_SRCS-yes += generic/yv12extend.c
9SCALE_SRCS-yes += generic/yv12extend_generic.h8SCALE_SRCS-yes += generic/yv12extend_generic.h
10SCALE_SRCS-yes += generic/scalesystemdependent.c
11SCALE_SRCS-$(CONFIG_SPATIAL_RESAMPLING) += generic/gen_scalers.c9SCALE_SRCS-$(CONFIG_SPATIAL_RESAMPLING) += generic/gen_scalers.c
12 10
13#arm
14SCALE_SRCS-$(ARCH_ARM) += arm/yv12extend_arm.h
15SCALE_SRCS-$(ARCH_ARM) += arm/scalesystemdependent.c
16
17#neon11#neon
18SCALE_SRCS-$(HAVE_NEON) += arm/neon/vp8_vpxyv12_copyframe_func_neon$(ASM)12SCALE_SRCS-$(HAVE_NEON) += arm/neon/vp8_vpxyv12_copyframe_func_neon$(ASM)
19SCALE_SRCS-$(HAVE_NEON) += arm/neon/vp8_vpxyv12_copy_y_neon$(ASM)13SCALE_SRCS-$(HAVE_NEON) += arm/neon/vp8_vpxyv12_copy_y_neon$(ASM)
vpx_scale/vpxscale.h+0−48
@@ -13,53 +13,6 @@ · 12 unmodified lines
13#define VPXSCALE_H13#define VPXSCALE_H
14 14
15#include "vpx_scale/yv12config.h"15#include "vpx_scale/yv12config.h"
16#include "vpx_scale/yv12extend.h"
17void vp8cx_horizontal_line_4_5_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
18void vp8cx_vertical_band_4_5_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
19void vp8cx_last_vertical_band_4_5_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
20void vp8cx_horizontal_line_2_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
21void vp8cx_vertical_band_2_3_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
22void vp8cx_last_vertical_band_2_3_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
23void vp8cx_horizontal_line_3_5_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
24void vp8cx_vertical_band_3_5_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
25void vp8cx_last_vertical_band_3_5_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
26void vp8cx_horizontal_line_3_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
27void vp8cx_vertical_band_3_4_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
28void vp8cx_last_vertical_band_3_4_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
29void vp8cx_horizontal_line_1_2_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
30void vp8cx_vertical_band_1_2_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
31void vp8cx_last_vertical_band_1_2_scale_c(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
32void vp8cx_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
33void vp8cx_vertical_band_5_4_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
34void vp8cx_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
35void vp8cx_vertical_band_5_3_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
36void vp8cx_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
37void vp8cx_vertical_band_2_1_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
38void vp8cx_vertical_band_2_1_scale_i_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
39
40
41extern void (*vp8_vertical_band_4_5_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
42extern void (*vp8_last_vertical_band_4_5_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
43extern void (*vp8_vertical_band_2_3_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
44extern void (*vp8_last_vertical_band_2_3_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
45extern void (*vp8_vertical_band_3_5_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
46extern void (*vp8_last_vertical_band_3_5_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
47extern void (*vp8_vertical_band_3_4_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
48extern void (*vp8_last_vertical_band_3_4_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
49extern void (*vp8_horizontal_line_1_2_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
50extern void (*vp8_horizontal_line_3_4_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
51extern void (*vp8_horizontal_line_3_5_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
52extern void (*vp8_horizontal_line_2_3_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
53extern void (*vp8_horizontal_line_4_5_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
54extern void (*vp8_vertical_band_1_2_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
55extern void (*vp8_last_vertical_band_1_2_scale)(unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
56extern void (*vp8_vertical_band_5_4_scale)(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
57extern void (*vp8_vertical_band_5_3_scale)(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
58extern void (*vp8_vertical_band_2_1_scale)(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
59extern void (*vp8_vertical_band_2_1_scale_i)(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
60extern void (*vp8_horizontal_line_2_1_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
61extern void (*vp8_horizontal_line_5_3_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
62extern void (*vp8_horizontal_line_5_4_scale)(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
63 16
64extern void vp8_yv12_scale_or_center17extern void vp8_yv12_scale_or_center
65(18(
@@ -85,6 +38,5 @@ extern void vp8_scale_frame · 19 unmodified lines
85 unsigned int vratio,38 unsigned int vratio,
86 unsigned int interlaced39 unsigned int interlaced
87);40);
88extern void vp8_scale_machine_specific_config(void);
89 41
90#endif42#endif
vpx_scale/yv12extend.h+0−40
@@ -1,40 +0,0 @@
1/*
2 * Copyright (c) 2010 The WebM project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11
12#ifndef YV12_EXTEND_H
13#define YV12_EXTEND_H
14
15#include "vpx_config.h"
16#include "vpx_scale/yv12config.h"
17#include "vpx_scale/generic/yv12extend_generic.h"
18
19#if HAVE_NEON
20#include "vpx_scale/arm/yv12extend_arm.h"
21#endif
22
23#ifdef __cplusplus
24extern "C"
25{
26#endif
27
28 extern void (*vp8_yv12_extend_frame_borders_ptr)(YV12_BUFFER_CONFIG *ybf);
29
30 /* Copy Y,U,V buffer data from src to dst, filling border of dst as well. */
31 extern void (*vp8_yv12_copy_frame_ptr)(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc);
32
33 /* Copy Y buffer data from src_ybc to dst_ybc without filling border data */
34 extern void (*vp8_yv12_copy_y_ptr)(YV12_BUFFER_CONFIG *src_ybc, YV12_BUFFER_CONFIG *dst_ybc);
35
36#ifdef __cplusplus
37}
38#endif
39
40#endif

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t